import { a as BackendType, p as IntrospectionSnapshot, o as SchemaIntrospectionProvider } from './types-BnzoaNRC.cjs';

/**
 * Supported case transformations for generated symbols and path token variants.
 */
type NamingStyle = 'preserve' | 'camel' | 'pascal' | 'snake' | 'kebab';
/**
 * Naming configuration for generated TypeScript identifiers.
 */
interface GeneratorNamingConfig {
    modelType: NamingStyle;
    modelConst: NamingStyle;
    schemaConst: NamingStyle;
    databaseConst: NamingStyle;
    registryConst: NamingStyle;
}
/**
 * Stable feature flags for generator output behavior.
 */
interface GeneratorFeatureFlags {
    emitRelations: boolean;
    emitRegistry: boolean;
}
/**
 * Experimental toggles for optional/forward-compatible generator behavior.
 */
interface GeneratorExperimentalFlags {
    /**
     * Legacy compatibility toggle from the initial scaffold.
     * Gateway introspection is now implemented; this flag is retained for additive config compatibility.
     */
    postgresGatewayIntrospection: boolean;
    /**
     * Enables contract placeholders for future Scylla provider work.
     */
    scyllaProviderContracts: boolean;
}
/**
 * Path templates for each generated artifact category.
 */
interface GeneratorOutputTargets {
    model: string;
    schema: string;
    database: string;
    registry: string;
}
/**
 * Output configuration including dynamic placeholder aliases.
 */
interface GeneratorOutputConfig {
    targets: GeneratorOutputTargets;
    placeholderMap: Record<string, string>;
}
/**
 * Schemas selected for PostgreSQL introspection. Strings may be comma-separated
 * to support env-driven configs such as `process.env.GENERATOR_SCHEMAS`.
 */
type GeneratorSchemaSelection = string | readonly string[];
/**
 * Direct PostgreSQL introspection mode (implemented).
 */
interface PostgresDirectProviderConfig {
    kind: 'postgres';
    mode: 'direct';
    connectionString: string;
    database?: string;
    schemas?: GeneratorSchemaSelection;
}
/**
 * Athena gateway-backed PostgreSQL introspection mode using `/gateway/query`.
 */
interface PostgresGatewayProviderConfig {
    kind: 'postgres';
    mode: 'gateway';
    gatewayUrl: string;
    apiKey: string;
    database: string;
    schemas?: GeneratorSchemaSelection;
    backend?: BackendType;
}
/**
 * Scylla introspection provider contract placeholder (phase-two scaffold).
 */
interface ScyllaDirectProviderConfig {
    kind: 'scylla';
    mode: 'direct';
    contactPoints: string[];
    keyspace: string;
    datacenter?: string;
}
type GeneratorProviderConfig = PostgresDirectProviderConfig | PostgresGatewayProviderConfig | ScyllaDirectProviderConfig;
/**
 * Root config contract loaded from `athena.config.ts`.
 */
interface AthenaGeneratorConfig {
    provider: GeneratorProviderConfig;
    output: GeneratorOutputConfig;
    naming?: Partial<GeneratorNamingConfig>;
    features?: Partial<GeneratorFeatureFlags>;
    experimental?: Partial<GeneratorExperimentalFlags>;
}
/**
 * Normalized generator config with defaults applied.
 */
interface NormalizedAthenaGeneratorConfig {
    provider: GeneratorProviderConfig;
    output: GeneratorOutputConfig;
    naming: GeneratorNamingConfig;
    features: GeneratorFeatureFlags;
    experimental: GeneratorExperimentalFlags;
}
/**
 * Config loader options for CLI/programmatic usage.
 */
interface LoadGeneratorConfigOptions {
    cwd?: string;
    configPath?: string;
}
/**
 * Fully loaded config result including resolved file path.
 */
interface LoadedGeneratorConfig {
    configPath: string;
    config: NormalizedAthenaGeneratorConfig;
}
type GeneratorArtifactKind = 'model' | 'schema' | 'database' | 'registry';
/**
 * One generated output file.
 */
interface GeneratedArtifact {
    kind: GeneratorArtifactKind;
    path: string;
    content: string;
}
/**
 * In-memory generator output payload.
 */
interface GeneratedArtifacts {
    snapshot: IntrospectionSnapshot;
    files: GeneratedArtifact[];
}
/**
 * Runtime options for executing the generator pipeline.
 */
interface RunGeneratorOptions {
    cwd?: string;
    configPath?: string;
    dryRun?: boolean;
    provider?: SchemaIntrospectionProvider;
}
/**
 * Generator execution result including files written to disk.
 */
interface RunGeneratorResult extends GeneratedArtifacts {
    configPath: string;
    writtenFiles: string[];
}

/**
 * End-to-end generator execution: load config, introspect, render, and optionally write files.
 */
declare function runSchemaGenerator(options?: RunGeneratorOptions): Promise<RunGeneratorResult>;

export { type AthenaGeneratorConfig as A, type GeneratedArtifacts as G, type LoadGeneratorConfigOptions as L, type NormalizedAthenaGeneratorConfig as N, type RunGeneratorOptions as R, type LoadedGeneratorConfig as a, type GeneratorProviderConfig as b, type GeneratorExperimentalFlags as c, type GeneratorSchemaSelection as d, type GeneratedArtifact as e, type GeneratorArtifactKind as f, type GeneratorFeatureFlags as g, type GeneratorNamingConfig as h, type GeneratorOutputConfig as i, type GeneratorOutputTargets as j, type NamingStyle as k, type RunGeneratorResult as l, runSchemaGenerator as r };
