/** Aurora YAML schema types — wire format for the Sheets sync. */
export interface AuroraRelationship {
    aggregateName: string;
    avoidConstraint?: boolean;
    field?: string;
    key?: string;
    modulePath: string;
    pivot?: AuroraPivot;
    singularName?: string;
    type: 'many-to-many' | 'many-to-one' | 'one-to-many' | 'one-to-one';
}
export interface AuroraPivot {
    aggregateName: string;
    aggregateProperties: AuroraProperty[];
    boundedContextName: string;
    excludedOperations?: string[];
    hasAuditing?: boolean;
    hasOAuth?: boolean;
    hasTenant?: boolean;
    moduleName: string;
    moduleNames: string;
}
export interface AuroraArrayOptions {
    enumOptions?: string[];
    maxLength?: number;
    type: string;
}
export interface AuroraWidget {
    type: string;
}
export interface AuroraProperty {
    arrayOptions?: AuroraArrayOptions;
    autoIncrement?: boolean;
    decimals?: [number, number];
    defaultValue?: unknown;
    description?: string;
    enumOptions?: string[];
    example?: unknown;
    index?: string;
    indexUsing?: string;
    isI18n?: boolean;
    length?: number;
    maxLength?: number;
    name: string;
    nullable?: boolean;
    primaryKey?: boolean;
    relationship?: AuroraRelationship;
    type: string;
    widget?: AuroraWidget;
}
export interface AuroraFront {
    /**
     * Grammatical gender of the module's singular noun, used by the code
     * generator when composing gendered translation strings (e.g. Spanish
     * "Nueva etiqueta" vs "Nuevo permiso"). The global i18n JSON exposes
     * variants under `F`/`M` keys (e.g. `"New": { "F": "Nueva", "M": "Nuevo" }`);
     * this field tells the generator which variant to pick.
     *
     * Applies only to languages with grammatical gender; languages without
     * it (English, Turkish, etc.) ignore this field.
     */
    gender?: 'feminine' | 'masculine';
    outlineIcon?: string;
    solidIcon?: string;
}
export interface AuroraAdditionalApi {
    httpMethod: string;
    path: string;
    resolverType: string;
}
export interface AuroraSchema {
    additionalApis?: AuroraAdditionalApi[];
    aggregateName: string;
    aggregateProperties: AuroraProperty[];
    boundedContextName: string;
    description?: string;
    excludedFiles?: string[];
    excludedOperations?: string[];
    front?: AuroraFront;
    hasAuditing?: boolean;
    hasOAuth?: boolean;
    hasTenant?: boolean;
    moduleName: string;
    moduleNames: string;
    version: string;
}
export interface SheetPropertyRow {
    'arrayOptions.enumOptions': string;
    'arrayOptions.maxLength': string;
    'arrayOptions.type': string;
    autoIncrement: string;
    decimals: string;
    defaultValue: string;
    description: string;
    enumOptions: string;
    example: string;
    index: string;
    indexUsing: string;
    isI18n: string;
    master: string;
    'maxLength/length': string;
    name: string;
    nullable: string;
    primaryKey: string;
    'rel.aggregateName': string;
    'rel.avoidConstraint': string;
    'rel.field': string;
    'rel.key': string;
    'rel.modulePath': string;
    'rel.singularName': string;
    'rel.type': string;
    relationship: string;
    subtype: string;
    type: string;
    values: string;
}
export interface SheetMetadata {
    aggregateName: string;
    boundedContextName: string;
    description: string;
    hasAuditing: string;
    hasOAuth: string;
    hasTenant: string;
    moduleName: string;
    moduleNames: string;
    outlineIcon: string;
    solidIcon: string;
    version: string;
}
/** Dynamic index row — headers are read from the spreadsheet. */
export type SheetIndexRow = Record<string, string>;
export interface SheetPivotData {
    metadata: {
        aggregateName: string;
        boundedContextName: string;
        hasAuditing: string;
        hasOAuth: string;
        hasTenant: string;
        moduleName: string;
        moduleNames: string;
    };
    pivotName: string;
    properties: SheetPropertyRow[];
}
export interface ModuleSheetData {
    metadata: SheetMetadata;
    pivots: SheetPivotData[];
    properties: SheetPropertyRow[];
}
export declare const PROPERTY_HEADERS: (keyof SheetPropertyRow)[];
export declare const METADATA_LABELS: string[];
/** Header \u2192 schema path remap for special cases. Headers use `:` as nested-path separator. */
export declare const HEADER_TO_SCHEMA_MAP: Record<string, string>;
export declare function getSchemaPath(header: string): string;
export declare const CHECKMARK = "\u2713";
/** Parse a boolean cell. Accepts both 'TRUE' (case-insensitive) and the checkmark character. */
export declare function parseBooleanValue(value: string | undefined): boolean;
