import { z } from 'zod';
import { AdapterType } from './adapters/types.js';
export declare const baseAdapterConfigSchema: z.ZodObject<{
    id: z.ZodString;
    type: z.ZodNativeEnum<typeof AdapterType>;
    enabled: z.ZodDefault<z.ZodBoolean>;
    debug: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    type: AdapterType;
    id: string;
    enabled: boolean;
    debug: boolean;
}, {
    type: AdapterType;
    id: string;
    enabled?: boolean | undefined;
    debug?: boolean | undefined;
}>;
export declare const authConfigSchema: z.ZodObject<{
    id: z.ZodString;
    enabled: z.ZodDefault<z.ZodBoolean>;
    debug: z.ZodDefault<z.ZodBoolean>;
} & {
    type: z.ZodLiteral<AdapterType.AUTH>;
    secret: z.ZodString;
    session: z.ZodOptional<z.ZodObject<{
        maxAge: z.ZodDefault<z.ZodNumber>;
        updateAge: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        maxAge: number;
        updateAge: number;
    }, {
        maxAge?: number | undefined;
        updateAge?: number | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: AdapterType.AUTH;
    id: string;
    enabled: boolean;
    debug: boolean;
    secret: string;
    session?: {
        maxAge: number;
        updateAge: number;
    } | undefined;
}, {
    type: AdapterType.AUTH;
    id: string;
    secret: string;
    session?: {
        maxAge?: number | undefined;
        updateAge?: number | undefined;
    } | undefined;
    enabled?: boolean | undefined;
    debug?: boolean | undefined;
}>;
export declare const databaseConfigSchema: z.ZodObject<{
    id: z.ZodString;
    enabled: z.ZodDefault<z.ZodBoolean>;
    debug: z.ZodDefault<z.ZodBoolean>;
} & {
    type: z.ZodLiteral<AdapterType.DATABASE>;
    url: z.ZodString;
    ssl: z.ZodDefault<z.ZodBoolean>;
    pool: z.ZodOptional<z.ZodObject<{
        min: z.ZodDefault<z.ZodNumber>;
        max: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        min: number;
        max: number;
    }, {
        min?: number | undefined;
        max?: number | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: AdapterType.DATABASE;
    id: string;
    url: string;
    enabled: boolean;
    debug: boolean;
    ssl: boolean;
    pool?: {
        min: number;
        max: number;
    } | undefined;
}, {
    type: AdapterType.DATABASE;
    id: string;
    url: string;
    enabled?: boolean | undefined;
    debug?: boolean | undefined;
    ssl?: boolean | undefined;
    pool?: {
        min?: number | undefined;
        max?: number | undefined;
    } | undefined;
}>;
export declare const storageConfigSchema: z.ZodObject<{
    id: z.ZodString;
    enabled: z.ZodDefault<z.ZodBoolean>;
    debug: z.ZodDefault<z.ZodBoolean>;
} & {
    type: z.ZodLiteral<AdapterType.STORAGE>;
    bucket: z.ZodString;
    region: z.ZodOptional<z.ZodString>;
    endpoint: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: AdapterType.STORAGE;
    id: string;
    enabled: boolean;
    debug: boolean;
    bucket: string;
    region?: string | undefined;
    endpoint?: string | undefined;
}, {
    type: AdapterType.STORAGE;
    id: string;
    bucket: string;
    enabled?: boolean | undefined;
    debug?: boolean | undefined;
    region?: string | undefined;
    endpoint?: string | undefined;
}>;
export declare const adapterConfigSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
    id: z.ZodString;
    enabled: z.ZodDefault<z.ZodBoolean>;
    debug: z.ZodDefault<z.ZodBoolean>;
} & {
    type: z.ZodLiteral<AdapterType.AUTH>;
    secret: z.ZodString;
    session: z.ZodOptional<z.ZodObject<{
        maxAge: z.ZodDefault<z.ZodNumber>;
        updateAge: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        maxAge: number;
        updateAge: number;
    }, {
        maxAge?: number | undefined;
        updateAge?: number | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: AdapterType.AUTH;
    id: string;
    enabled: boolean;
    debug: boolean;
    secret: string;
    session?: {
        maxAge: number;
        updateAge: number;
    } | undefined;
}, {
    type: AdapterType.AUTH;
    id: string;
    secret: string;
    session?: {
        maxAge?: number | undefined;
        updateAge?: number | undefined;
    } | undefined;
    enabled?: boolean | undefined;
    debug?: boolean | undefined;
}>, z.ZodObject<{
    id: z.ZodString;
    enabled: z.ZodDefault<z.ZodBoolean>;
    debug: z.ZodDefault<z.ZodBoolean>;
} & {
    type: z.ZodLiteral<AdapterType.DATABASE>;
    url: z.ZodString;
    ssl: z.ZodDefault<z.ZodBoolean>;
    pool: z.ZodOptional<z.ZodObject<{
        min: z.ZodDefault<z.ZodNumber>;
        max: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        min: number;
        max: number;
    }, {
        min?: number | undefined;
        max?: number | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    type: AdapterType.DATABASE;
    id: string;
    url: string;
    enabled: boolean;
    debug: boolean;
    ssl: boolean;
    pool?: {
        min: number;
        max: number;
    } | undefined;
}, {
    type: AdapterType.DATABASE;
    id: string;
    url: string;
    enabled?: boolean | undefined;
    debug?: boolean | undefined;
    ssl?: boolean | undefined;
    pool?: {
        min?: number | undefined;
        max?: number | undefined;
    } | undefined;
}>, z.ZodObject<{
    id: z.ZodString;
    enabled: z.ZodDefault<z.ZodBoolean>;
    debug: z.ZodDefault<z.ZodBoolean>;
} & {
    type: z.ZodLiteral<AdapterType.STORAGE>;
    bucket: z.ZodString;
    region: z.ZodOptional<z.ZodString>;
    endpoint: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    type: AdapterType.STORAGE;
    id: string;
    enabled: boolean;
    debug: boolean;
    bucket: string;
    region?: string | undefined;
    endpoint?: string | undefined;
}, {
    type: AdapterType.STORAGE;
    id: string;
    bucket: string;
    enabled?: boolean | undefined;
    debug?: boolean | undefined;
    region?: string | undefined;
    endpoint?: string | undefined;
}>]>;
export declare function isAuthConfig(config: unknown): config is z.infer<typeof authConfigSchema>;
export declare function isDatabaseConfig(config: unknown): config is z.infer<typeof databaseConfigSchema>;
export declare function isStorageConfig(config: unknown): config is z.infer<typeof storageConfigSchema>;
export declare function validateConfig<T extends z.ZodTypeAny>(schema: T, config: unknown): z.infer<T>;
//# sourceMappingURL=schemas.d.ts.map