import { z } from 'zod';
/** Default data directory — used when CAMSTACK_DATA env var is not set */
export declare const DEFAULT_DATA_PATH = "camstack-data";
/** Bootstrap config -- loaded from config.yaml ONLY at startup.
 *  All other settings live in SQL (system_settings table). */
export declare const bootstrapSchema: z.ZodObject<{
    mode: z.ZodDefault<z.ZodEnum<{
        hub: "hub";
        agent: "agent";
    }>>;
    server: z.ZodDefault<z.ZodObject<{
        port: z.ZodDefault<z.ZodNumber>;
        host: z.ZodDefault<z.ZodString>;
        dataPath: z.ZodDefault<z.ZodString>;
    }, z.core.$strip>>;
    auth: z.ZodDefault<z.ZodObject<{
        jwtSecret: z.ZodDefault<z.ZodNullable<z.ZodString>>;
        adminUsername: z.ZodDefault<z.ZodString>;
        adminPassword: z.ZodDefault<z.ZodString>;
    }, z.core.$strip>>;
    hub: z.ZodDefault<z.ZodObject<{
        url: z.ZodDefault<z.ZodString>;
        token: z.ZodDefault<z.ZodString>;
    }, z.core.$strip>>;
    agent: z.ZodDefault<z.ZodObject<{
        name: z.ZodDefault<z.ZodString>;
        statusPort: z.ZodDefault<z.ZodNumber>;
    }, z.core.$strip>>;
    tls: z.ZodDefault<z.ZodObject<{
        enabled: z.ZodDefault<z.ZodBoolean>;
        certPath: z.ZodOptional<z.ZodString>;
        keyPath: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type BootstrapConfig = z.infer<typeof bootstrapSchema>;
/**
 * Runtime defaults — re-exported from @camstack/types (canonical location).
 * Kept here for backward compatibility with existing kernel consumers.
 */
export { RUNTIME_DEFAULTS } from '@camstack/types';
export type ServerMode = 'hub' | 'agent';
export type AppConfig = BootstrapConfig & {
    features: {
        streaming: boolean;
        notifications: boolean;
        objectDetection: boolean;
        remoteAccess: boolean;
        agentCluster: boolean;
        smartHome: boolean;
        recordings: boolean;
        backup: boolean;
        repl: boolean;
    };
    storage: {
        provider: string;
        locations: Record<string, string>;
    };
    logging: {
        level: string;
        retentionDays: number;
    };
    eventBus: {
        ringBufferSize: number;
    };
    retention: {
        detectionEventsDays: number;
        audioLevelsDays: number;
    };
    providers: Array<{
        id: string;
        type: string;
        name: string;
        url?: string;
        username?: string;
        password?: string;
        mqtt?: {
            brokerUrl: string;
            username?: string;
            password?: string;
            topicPrefix: string;
        };
    }>;
};
//# sourceMappingURL=config-schema.d.ts.map