export type TodosStorageMode = "local" | "remote" | "hybrid";
export type TodosStorageEnv = Record<string, string | undefined>;
export declare const TODOS_STORAGE_TABLES: readonly ["todos_sync_records", "todos_sync_cursors"];
export declare const STORAGE_TABLES: readonly ["todos_sync_records", "todos_sync_cursors"];
export type TodosStorageTable = typeof TODOS_STORAGE_TABLES[number];
export interface TodosPostgresStorageConfig {
    provider: "postgres";
    url: string;
    ssl: boolean;
    schema?: string;
}
export interface TodosS3StorageConfig {
    provider: "s3";
    bucket: string;
    prefix: string;
    region?: string;
    endpoint?: string;
    forcePathStyle: boolean;
}
export interface TodosSyncConfig {
    batchSize: number;
    dryRun: boolean;
}
export interface TodosStorageConfig {
    service: "todos";
    mode: TodosStorageMode;
    database?: TodosPostgresStorageConfig;
    objectStorage?: TodosS3StorageConfig;
    sync: TodosSyncConfig;
}
export declare const TODOS_STORAGE_ENV: {
    readonly mode: "HASNA_TODOS_STORAGE_MODE";
    readonly databaseUrl: "HASNA_TODOS_DATABASE_URL";
    readonly databaseSsl: "HASNA_TODOS_DATABASE_SSL";
    readonly databaseSchema: "HASNA_TODOS_DATABASE_SCHEMA";
    readonly s3Bucket: "HASNA_TODOS_S3_BUCKET";
    readonly s3Prefix: "HASNA_TODOS_S3_PREFIX";
    readonly awsRegion: "HASNA_TODOS_AWS_REGION";
    readonly s3Endpoint: "HASNA_TODOS_S3_ENDPOINT";
    readonly s3ForcePathStyle: "HASNA_TODOS_S3_FORCE_PATH_STYLE";
    readonly s3AccessKeyId: "HASNA_TODOS_S3_ACCESS_KEY_ID";
    readonly s3SecretAccessKey: "HASNA_TODOS_S3_SECRET_ACCESS_KEY";
    readonly s3SessionToken: "HASNA_TODOS_S3_SESSION_TOKEN";
    readonly syncBatchSize: "HASNA_TODOS_SYNC_BATCH_SIZE";
    readonly syncDryRun: "HASNA_TODOS_SYNC_DRY_RUN";
};
export declare const TODOS_STORAGE_FALLBACK_ENV: {
    readonly mode: "TODOS_STORAGE_MODE";
    readonly databaseUrl: "TODOS_DATABASE_URL";
    readonly databaseSsl: "TODOS_DATABASE_SSL";
    readonly databaseSchema: "TODOS_DATABASE_SCHEMA";
    readonly s3Bucket: "TODOS_S3_BUCKET";
    readonly s3Prefix: "TODOS_S3_PREFIX";
    readonly awsRegion: "TODOS_AWS_REGION";
    readonly s3Endpoint: "TODOS_S3_ENDPOINT";
    readonly s3ForcePathStyle: "TODOS_S3_FORCE_PATH_STYLE";
    readonly s3AccessKeyId: "TODOS_S3_ACCESS_KEY_ID";
    readonly s3SecretAccessKey: "TODOS_S3_SECRET_ACCESS_KEY";
    readonly s3SessionToken: "TODOS_S3_SESSION_TOKEN";
    readonly syncBatchSize: "TODOS_SYNC_BATCH_SIZE";
    readonly syncDryRun: "TODOS_SYNC_DRY_RUN";
};
export declare const CANONICAL_TODOS_RDS_CLUSTER = "hasna-xyz-infra-apps-prod-postgres";
export declare const CANONICAL_TODOS_RDS_DATABASE = "todos";
export declare const CANONICAL_TODOS_RDS_RUNTIME_PATH = "hasna/xyz/opensource/todos/prod/rds";
export interface CanonicalTodosRdsConfig {
    cluster: typeof CANONICAL_TODOS_RDS_CLUSTER;
    database: typeof CANONICAL_TODOS_RDS_DATABASE;
    runtimeSecretPath: typeof CANONICAL_TODOS_RDS_RUNTIME_PATH;
    primaryEnv: typeof TODOS_STORAGE_ENV.databaseUrl;
    fallbackEnv: typeof TODOS_STORAGE_FALLBACK_ENV.databaseUrl;
}
export declare function getCanonicalTodosRdsConfig(): CanonicalTodosRdsConfig;
export declare function loadTodosStorageConfig(env?: TodosStorageEnv): TodosStorageConfig;
export declare function loadStorageConfig(env?: TodosStorageEnv): TodosStorageConfig;
export declare function isTodosRemoteStorageEnabled(config: TodosStorageConfig): boolean;
export declare function assertTodosRemoteStorageConfig(config: TodosStorageConfig): void;
export declare function parseStorageMode(value: string | undefined): TodosStorageMode;
export declare function getTodosStorageMode(env?: TodosStorageEnv): TodosStorageMode;
export declare function getStorageMode(env?: TodosStorageEnv): TodosStorageMode;
export declare function getTodosStorageDatabaseEnv(env?: TodosStorageEnv): string;
export declare function getStorageDatabaseEnv(env?: TodosStorageEnv): string;
export declare function getTodosStorageDatabaseUrl(env?: TodosStorageEnv): string | undefined;
export declare function getStorageDatabaseUrl(env?: TodosStorageEnv): string | undefined;
export declare function getTodosStorageEnvName(env: TodosStorageEnv, key: keyof typeof TODOS_STORAGE_ENV): string;
//# sourceMappingURL=config.d.ts.map