import { z } from "./zod.cjs";
import { ModuleFederationError, PluginRuntimeError, ValidationError, extractFromFiberFailure, formatORPCError, isRetryableORPCCode, toPluginRuntimeError, wrapORPCError } from "./runtime/errors.cjs";

//#region src/errors.d.ts
/**
 * Error pattern constants for categorizing infrastructure errors
 */
declare const ERROR_PATTERNS: {
  readonly CONNECTION_REFUSED: readonly ["ECONNREFUSED"];
  readonly HOST_NOT_FOUND: readonly ["ENOTFOUND", "EHOSTUNREACH"];
  readonly TIMEOUT: readonly ["ETIMEDOUT", "ESOCKETTIMEDOUT", "timeout"];
  readonly CONNECTION_RESET: readonly ["ECONNRESET", "EPIPE"];
  readonly PERMISSION: readonly ["EACCES", "EPERM", "permission denied"];
  readonly AUTH: readonly ["401", "unauthorized", "authentication failed"];
  readonly RATE_LIMITED: readonly ["429", "too many requests", "rate limit"];
  readonly SERVICE_UNAVAILABLE: readonly ["503", "service unavailable"];
};
/**
 * Common error schemas for plugin contracts.
 * Import individually or use the grouped PluginErrors export.
 *
 * @example
 * ```typescript
 * import { NOT_FOUND, FORBIDDEN, UNAUTHORIZED } from "every-plugin/errors";
 *
 * export const contract = oc.router({
 *   getData: oc.route(...)
 *     .errors({ NOT_FOUND, FORBIDDEN, UNAUTHORIZED })
 * });
 * ```
 */
declare const UNAUTHORIZED: {
  readonly status: 401;
  readonly data: z.ZodObject<{
    apiKeyProvided: z.ZodBoolean;
    provider: z.ZodOptional<z.ZodString>;
    authType: z.ZodOptional<z.ZodEnum<{
      apiKey: "apiKey";
      oauth: "oauth";
      token: "token";
    }>>;
  }, z.core.$strip>;
};
declare const RATE_LIMITED: {
  readonly status: 429;
  readonly data: z.ZodObject<{
    retryAfter: z.ZodNumber;
    remainingRequests: z.ZodOptional<z.ZodNumber>;
    resetTime: z.ZodOptional<z.ZodString>;
    limitType: z.ZodOptional<z.ZodEnum<{
      requests: "requests";
      tokens: "tokens";
      bandwidth: "bandwidth";
    }>>;
  }, z.core.$strip>;
};
declare const SERVICE_UNAVAILABLE: {
  readonly status: 503;
  readonly data: z.ZodObject<{
    retryAfter: z.ZodOptional<z.ZodNumber>;
    maintenanceWindow: z.ZodDefault<z.ZodBoolean>;
    estimatedUptime: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
};
declare const BAD_REQUEST: {
  readonly status: 400;
  readonly data: z.ZodObject<{
    invalidFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
    validationErrors: z.ZodOptional<z.ZodArray<z.ZodObject<{
      field: z.ZodString;
      message: z.ZodString;
      code: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
  }, z.core.$strip>;
};
declare const NOT_FOUND: {
  readonly status: 404;
  readonly data: z.ZodObject<{
    resource: z.ZodOptional<z.ZodString>;
    resourceId: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
};
declare const FORBIDDEN: {
  readonly status: 403;
  readonly data: z.ZodObject<{
    requiredPermissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
    action: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
};
declare const TIMEOUT: {
  readonly status: 504;
  readonly data: z.ZodObject<{
    timeoutMs: z.ZodOptional<z.ZodNumber>;
    operation: z.ZodOptional<z.ZodString>;
    retryable: z.ZodDefault<z.ZodBoolean>;
  }, z.core.$strip>;
};
declare const CONNECTION_ERROR: {
  readonly status: 502;
  readonly data: z.ZodObject<{
    errorCode: z.ZodOptional<z.ZodString>;
    host: z.ZodOptional<z.ZodString>;
    port: z.ZodOptional<z.ZodNumber>;
    suggestion: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
};
/**
 * Grouped export for all plugin errors.
 * Use individual imports for cleaner code.
 */
declare const PluginErrors: {
  readonly UNAUTHORIZED: {
    readonly status: 401;
    readonly data: z.ZodObject<{
      apiKeyProvided: z.ZodBoolean;
      provider: z.ZodOptional<z.ZodString>;
      authType: z.ZodOptional<z.ZodEnum<{
        apiKey: "apiKey";
        oauth: "oauth";
        token: "token";
      }>>;
    }, z.core.$strip>;
  };
  readonly RATE_LIMITED: {
    readonly status: 429;
    readonly data: z.ZodObject<{
      retryAfter: z.ZodNumber;
      remainingRequests: z.ZodOptional<z.ZodNumber>;
      resetTime: z.ZodOptional<z.ZodString>;
      limitType: z.ZodOptional<z.ZodEnum<{
        requests: "requests";
        tokens: "tokens";
        bandwidth: "bandwidth";
      }>>;
    }, z.core.$strip>;
  };
  readonly SERVICE_UNAVAILABLE: {
    readonly status: 503;
    readonly data: z.ZodObject<{
      retryAfter: z.ZodOptional<z.ZodNumber>;
      maintenanceWindow: z.ZodDefault<z.ZodBoolean>;
      estimatedUptime: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
  };
  readonly BAD_REQUEST: {
    readonly status: 400;
    readonly data: z.ZodObject<{
      invalidFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
      validationErrors: z.ZodOptional<z.ZodArray<z.ZodObject<{
        field: z.ZodString;
        message: z.ZodString;
        code: z.ZodOptional<z.ZodString>;
      }, z.core.$strip>>>;
    }, z.core.$strip>;
  };
  readonly NOT_FOUND: {
    readonly status: 404;
    readonly data: z.ZodObject<{
      resource: z.ZodOptional<z.ZodString>;
      resourceId: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
  };
  readonly FORBIDDEN: {
    readonly status: 403;
    readonly data: z.ZodObject<{
      requiredPermissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
      action: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
  };
  readonly TIMEOUT: {
    readonly status: 504;
    readonly data: z.ZodObject<{
      timeoutMs: z.ZodOptional<z.ZodNumber>;
      operation: z.ZodOptional<z.ZodString>;
      retryable: z.ZodDefault<z.ZodBoolean>;
    }, z.core.$strip>;
  };
  readonly CONNECTION_ERROR: {
    readonly status: 502;
    readonly data: z.ZodObject<{
      errorCode: z.ZodOptional<z.ZodString>;
      host: z.ZodOptional<z.ZodString>;
      port: z.ZodOptional<z.ZodNumber>;
      suggestion: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
  };
};
/**
 * @deprecated Use individual imports or PluginErrors instead
 */
declare const CommonPluginErrors: {
  readonly UNAUTHORIZED: {
    readonly status: 401;
    readonly data: z.ZodObject<{
      apiKeyProvided: z.ZodBoolean;
      provider: z.ZodOptional<z.ZodString>;
      authType: z.ZodOptional<z.ZodEnum<{
        apiKey: "apiKey";
        oauth: "oauth";
        token: "token";
      }>>;
    }, z.core.$strip>;
  };
  readonly RATE_LIMITED: {
    readonly status: 429;
    readonly data: z.ZodObject<{
      retryAfter: z.ZodNumber;
      remainingRequests: z.ZodOptional<z.ZodNumber>;
      resetTime: z.ZodOptional<z.ZodString>;
      limitType: z.ZodOptional<z.ZodEnum<{
        requests: "requests";
        tokens: "tokens";
        bandwidth: "bandwidth";
      }>>;
    }, z.core.$strip>;
  };
  readonly SERVICE_UNAVAILABLE: {
    readonly status: 503;
    readonly data: z.ZodObject<{
      retryAfter: z.ZodOptional<z.ZodNumber>;
      maintenanceWindow: z.ZodDefault<z.ZodBoolean>;
      estimatedUptime: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
  };
  readonly BAD_REQUEST: {
    readonly status: 400;
    readonly data: z.ZodObject<{
      invalidFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
      validationErrors: z.ZodOptional<z.ZodArray<z.ZodObject<{
        field: z.ZodString;
        message: z.ZodString;
        code: z.ZodOptional<z.ZodString>;
      }, z.core.$strip>>>;
    }, z.core.$strip>;
  };
  readonly NOT_FOUND: {
    readonly status: 404;
    readonly data: z.ZodObject<{
      resource: z.ZodOptional<z.ZodString>;
      resourceId: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
  };
  readonly FORBIDDEN: {
    readonly status: 403;
    readonly data: z.ZodObject<{
      requiredPermissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
      action: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
  };
  readonly TIMEOUT: {
    readonly status: 504;
    readonly data: z.ZodObject<{
      timeoutMs: z.ZodOptional<z.ZodNumber>;
      operation: z.ZodOptional<z.ZodString>;
      retryable: z.ZodDefault<z.ZodBoolean>;
    }, z.core.$strip>;
  };
  readonly CONNECTION_ERROR: {
    readonly status: 502;
    readonly data: z.ZodObject<{
      errorCode: z.ZodOptional<z.ZodString>;
      host: z.ZodOptional<z.ZodString>;
      port: z.ZodOptional<z.ZodNumber>;
      suggestion: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
  };
};
//#endregion
export { BAD_REQUEST, CONNECTION_ERROR, CommonPluginErrors, ERROR_PATTERNS, FORBIDDEN, ModuleFederationError, NOT_FOUND, PluginErrors, PluginRuntimeError, RATE_LIMITED, SERVICE_UNAVAILABLE, TIMEOUT, UNAUTHORIZED, ValidationError, extractFromFiberFailure, formatORPCError, isRetryableORPCCode, toPluginRuntimeError, wrapORPCError };
//# sourceMappingURL=errors.d.cts.map