import { AdminCopyDescriptor, LiteralCopy } from "../i18n/types.mjs";
import { LogTransport } from "../logger/types.mjs";
import { KVAdapterInstance } from "../kv/types.mjs";
import { MediaAdapterInstance } from "../media/types.mjs";
import { QueueAdapterInstance } from "../queue/types.mjs";
import { HttpExtensionRegister, LucidRouteDefinition } from "../http/types.mjs";
import { ImageProcessorInstance } from "../image-processor/types.mjs";
import { EmailAdapterInstance } from "../email/types.mjs";
import { ExternalMigrationFn } from "../db/types.mjs";
import z from "zod";

//#region src/libs/config/config-schema.d.ts
declare const ConfigSchema: z.ZodObject<{
  db: z.ZodUnknown;
  host: z.ZodOptional<z.ZodString>;
  http: z.ZodOptional<z.ZodObject<{
    security: z.ZodOptional<z.ZodObject<{
      trustProxyHeaders: z.ZodOptional<z.ZodBoolean>;
      cors: z.ZodOptional<z.ZodObject<{
        origin: z.ZodOptional<z.ZodArray<z.ZodString>>;
        allowHeaders: z.ZodOptional<z.ZodArray<z.ZodString>>;
      }, z.z.core.$strip>>;
      headers: z.ZodOptional<z.ZodObject<{
        contentSecurityPolicy: z.ZodOptional<z.ZodObject<{
          defaultSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          baseUri: z.ZodOptional<z.ZodArray<z.ZodString>>;
          childSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          connectSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          fontSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          formAction: z.ZodOptional<z.ZodArray<z.ZodString>>;
          frameAncestors: z.ZodOptional<z.ZodArray<z.ZodString>>;
          frameSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          imgSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          manifestSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          mediaSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          objectSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          sandbox: z.ZodOptional<z.ZodArray<z.ZodString>>;
          scriptSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          scriptSrcAttr: z.ZodOptional<z.ZodArray<z.ZodString>>;
          scriptSrcElem: z.ZodOptional<z.ZodArray<z.ZodString>>;
          styleSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          styleSrcAttr: z.ZodOptional<z.ZodArray<z.ZodString>>;
          styleSrcElem: z.ZodOptional<z.ZodArray<z.ZodString>>;
          upgradeInsecureRequests: z.ZodOptional<z.ZodArray<z.ZodString>>;
          workerSrc: z.ZodOptional<z.ZodArray<z.ZodString>>;
          requireTrustedTypesFor: z.ZodOptional<z.ZodArray<z.ZodString>>;
          trustedTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
        }, z.z.core.$strip>>;
        strictTransportSecurity: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
        xFrameOptions: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
        referrerPolicy: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
        crossOriginResourcePolicy: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
        crossOriginOpenerPolicy: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
        crossOriginEmbedderPolicy: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
      }, z.z.core.$strip>>;
    }, z.z.core.$strip>>;
    openAPI: z.ZodOptional<z.ZodObject<{
      enabled: z.ZodBoolean;
    }, z.z.core.$strip>>;
    routes: z.ZodOptional<z.ZodArray<z.ZodCustom<LucidRouteDefinition, LucidRouteDefinition>>>;
    extensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
      name: z.ZodString;
      priority: z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>, z.ZodLiteral<2>]>;
      register: z.ZodCustom<HttpExtensionRegister, HttpExtensionRegister>;
    }, z.z.core.$strip>>>;
  }, z.z.core.$strip>>;
  secrets: z.ZodObject<{
    encryption: z.ZodString;
    cookie: z.ZodString;
    accessToken: z.ZodString;
    refreshToken: z.ZodString;
  }, z.z.core.$strip>;
  logger: z.ZodObject<{
    level: z.ZodUnion<readonly [z.ZodLiteral<"error">, z.ZodLiteral<"warn">, z.ZodLiteral<"info">, z.ZodLiteral<"debug">, z.ZodLiteral<"silent">]>;
    transport: z.ZodOptional<z.ZodCustom<LogTransport, LogTransport>>;
  }, z.z.core.$strip>;
  auth: z.ZodOptional<z.ZodObject<{
    password: z.ZodObject<{
      enabled: z.ZodOptional<z.ZodBoolean>;
    }, z.z.core.$strip>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
      key: z.ZodString;
      name: z.ZodString;
      icon: z.ZodOptional<z.ZodString>;
      enabled: z.ZodBoolean;
      type: z.ZodEnum<{
        oidc: "oidc";
      }>;
      config: z.ZodDiscriminatedUnion<[z.ZodObject<{
        type: z.ZodLiteral<"oidc">;
        clientId: z.ZodString;
        clientSecret: z.ZodString;
        issuer: z.ZodURL;
        authorizationEndpoint: z.ZodURL;
        scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
        tokenEndpoint: z.ZodOptional<z.ZodURL>;
        userinfoEndpoint: z.ZodOptional<z.ZodURL>;
        additionalAuthParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        mappers: z.ZodOptional<z.ZodObject<{
          userInfo: z.ZodOptional<z.ZodAny>;
        }, z.z.core.$strip>>;
      }, z.z.core.$strip>], "type">;
    }, z.z.core.$strip>>>;
  }, z.z.core.$strip>>;
  ai: z.ZodObject<{
    enabled: z.ZodBoolean;
    features: z.ZodObject<{
      imageGeneration: z.ZodBoolean;
      altGeneration: z.ZodBoolean;
      customFieldGeneration: z.ZodBoolean;
    }, z.z.core.$strip>;
  }, z.z.core.$strip>;
  localization: z.ZodOptional<z.ZodObject<{
    locales: z.ZodArray<z.ZodObject<{
      label: z.ZodString;
      code: z.ZodString;
      direction: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
        ltr: "ltr";
        rtl: "rtl";
      }>>>;
    }, z.z.core.$strip>>;
    defaultLocale: z.ZodString;
  }, z.z.core.$strip>>;
  tenants: z.ZodOptional<z.ZodArray<z.ZodObject<{
    key: z.ZodString;
    name: z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
      type: z.ZodLiteral<"lucid.copy">;
      key: z.ZodString;
      values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>>;
      defaultMessage: z.ZodOptional<z.ZodString>;
      scope: z.ZodLiteral<"admin">;
    }, z.z.core.$strict>, z.ZodObject<{
      type: z.ZodLiteral<"lucid.literal">;
      value: z.ZodString;
      values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>>;
    }, z.z.core.$strict>]>, z.ZodTransform<string | AdminCopyDescriptor | LiteralCopy, string | {
      type: "lucid.copy";
      key: string;
      scope: "admin";
      values?: Record<string, string | number | undefined> | undefined;
      defaultMessage?: string | undefined;
    } | {
      type: "lucid.literal";
      value: string;
      values?: Record<string, string | number | undefined> | undefined;
    }>>;
    default: z.ZodOptional<z.ZodBoolean>;
  }, z.z.core.$strip>>>;
  i18n: z.ZodOptional<z.ZodObject<{
    locales: z.ZodArray<z.ZodObject<{
      label: z.ZodString;
      code: z.ZodString;
      direction: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
        ltr: "ltr";
        rtl: "rtl";
      }>>>;
    }, z.z.core.$strip>>;
    defaultLocale: z.ZodString;
    sources: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<URL, URL>]>>>;
  }, z.z.core.$strip>>;
  migrations: z.ZodOptional<z.ZodObject<{
    sources: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<URL, URL>, z.ZodObject<{
      name: z.ZodString;
      migration: z.ZodCustom<ExternalMigrationFn, ExternalMigrationFn>;
    }, z.z.core.$strip>]>>>;
  }, z.z.core.$strip>>;
  email: z.ZodOptional<z.ZodObject<{
    from: z.ZodOptional<z.ZodObject<{
      email: z.ZodString;
      name: z.ZodString;
    }, z.z.core.$strip>>;
    simulate: z.ZodOptional<z.ZodBoolean>;
    resendWindowDays: z.ZodOptional<z.ZodNumber>;
    adapter: z.ZodOptional<z.ZodCustom<EmailAdapterInstance | Promise<EmailAdapterInstance> | (() => EmailAdapterInstance | Promise<EmailAdapterInstance>), EmailAdapterInstance | Promise<EmailAdapterInstance> | (() => EmailAdapterInstance | Promise<EmailAdapterInstance>)>>;
    templates: z.ZodOptional<z.ZodObject<{
      directory: z.ZodOptional<z.ZodString>;
      rendered: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, z.z.core.$strip>>;
  }, z.z.core.$strip>>;
  media: z.ZodObject<{
    adapter: z.ZodOptional<z.ZodCustom<MediaAdapterInstance | (() => MediaAdapterInstance | Promise<MediaAdapterInstance>) | Promise<MediaAdapterInstance>, MediaAdapterInstance | (() => MediaAdapterInstance | Promise<MediaAdapterInstance>) | Promise<MediaAdapterInstance>>>;
    limits: z.ZodObject<{
      storageBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<false>]>;
      uploadBytes: z.ZodNumber;
      processedImagesPerFile: z.ZodNumber;
    }, z.z.core.$strip>;
    images: z.ZodObject<{
      processor: z.ZodOptional<z.ZodCustom<ImageProcessorInstance | Promise<ImageProcessorInstance> | (() => ImageProcessorInstance | Promise<ImageProcessorInstance>), ImageProcessorInstance | Promise<ImageProcessorInstance> | (() => ImageProcessorInstance | Promise<ImageProcessorInstance>)>>;
      presets: z.ZodRecord<z.ZodString, z.ZodObject<{
        width: z.ZodOptional<z.ZodNumber>;
        height: z.ZodOptional<z.ZodNumber>;
        fit: z.ZodOptional<z.ZodEnum<{
          fill: "fill";
          cover: "cover";
          contain: "contain";
          inside: "inside";
          outside: "outside";
        }>>;
        format: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"webp">, z.ZodLiteral<"avif">, z.ZodLiteral<"jpeg">, z.ZodLiteral<"png">]>>;
        quality: z.ZodOptional<z.ZodNumber>;
      }, z.z.core.$strip>>;
      storeProcessed: z.ZodBoolean;
      allowFormatQuery: z.ZodBoolean;
      fallbackUrl: z.ZodOptional<z.ZodString>;
    }, z.z.core.$strip>;
    video: z.ZodObject<{
      fallbackUrl: z.ZodOptional<z.ZodString>;
    }, z.z.core.$strip>;
  }, z.z.core.$strip>;
  hooks: z.ZodArray<z.ZodObject<{
    service: z.ZodString;
    event: z.ZodString;
    priority: z.ZodOptional<z.ZodNumber>;
    handler: z.ZodUnknown;
  }, z.z.core.$strip>>;
  queue: z.ZodOptional<z.ZodObject<{
    adapter: z.ZodOptional<z.ZodCustom<QueueAdapterInstance | Promise<QueueAdapterInstance> | (() => QueueAdapterInstance | Promise<QueueAdapterInstance>), QueueAdapterInstance | Promise<QueueAdapterInstance> | (() => QueueAdapterInstance | Promise<QueueAdapterInstance>)>>;
  }, z.z.core.$strip>>;
  kv: z.ZodOptional<z.ZodObject<{
    adapter: z.ZodOptional<z.ZodCustom<KVAdapterInstance | Promise<KVAdapterInstance> | (() => KVAdapterInstance | Promise<KVAdapterInstance>), KVAdapterInstance | Promise<KVAdapterInstance> | (() => KVAdapterInstance | Promise<KVAdapterInstance>)>>;
    namespace: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
  }, z.z.core.$strip>>;
  collections: z.ZodArray<z.ZodUnknown>;
  plugins: z.ZodArray<z.ZodUnknown>;
  build: z.ZodOptional<z.ZodObject<{
    paths: z.ZodOptional<z.ZodObject<{
      outDir: z.ZodOptional<z.ZodString>;
      copyPublic: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
        input: z.ZodString;
        output: z.ZodOptional<z.ZodString>;
      }, z.z.core.$strip>]>>>;
    }, z.z.core.$strip>>;
    watch: z.ZodOptional<z.ZodObject<{
      ignore: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.z.core.$strip>>;
  }, z.z.core.$strip>>;
  retention: z.ZodOptional<z.ZodObject<{
    defaultPurgeAfterDays: z.ZodOptional<z.ZodNumber>;
    purgeAfterDays: z.ZodOptional<z.ZodObject<{
      removedLocales: z.ZodOptional<z.ZodNumber>;
      deletedUsers: z.ZodOptional<z.ZodNumber>;
      deletedMedia: z.ZodOptional<z.ZodNumber>;
      removedCollections: z.ZodOptional<z.ZodNumber>;
      deletedDocuments: z.ZodOptional<z.ZodNumber>;
    }, z.z.core.$strip>>;
  }, z.z.core.$strip>>;
  brand: z.ZodOptional<z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
  }, z.z.core.$strip>>;
}, z.z.core.$strip>;
//#endregion
export { ConfigSchema as default };
//# sourceMappingURL=config-schema.d.mts.map