/**
 * Frontend Template Data Interfaces
 *
 * Type definitions for the data passed to templates
 * during frontend module generation.
 */
/**
 * Name transformations for different naming conventions
 */
export interface NameTransforms {
    pascalCase: string;
    camelCase: string;
    kebabCase: string;
    pluralPascal: string;
    pluralCamel: string;
    pluralKebab: string;
    titleCase: string;
    pluralTitleCase: string;
}
/**
 * Frontend field representation
 */
export interface FrontendField {
    name: string;
    type: string;
    tsType: string;
    zodSchema: string;
    formComponent: FormComponentType;
    nullable: boolean;
    isContentField: boolean;
}
/**
 * Form component types
 */
export type FormComponentType = "FormInput" | "FormTextarea" | "BlockNoteEditor" | "Checkbox" | "DatePicker" | "FormInputNumber";
/**
 * Frontend relationship representation
 */
export interface FrontendRelationship {
    name: string;
    variant?: string;
    directory: string;
    single: boolean;
    nullable: boolean;
    isFoundation: boolean;
    formFieldId: string;
    formFieldIdPlural: string;
    payloadFieldId: string;
    selectorComponent: string;
    zodSchema: string;
    importPath: string;
    interfaceImportPath: string;
    serviceImportPath: string;
    interfaceName: string;
    modelKebab: string;
    fields?: FrontendField[];
}
/**
 * i18n key structure
 */
export interface I18nKeySet {
    moduleName: string;
    fields: Record<string, {
        label: string;
        placeholder: string;
        error: string;
    }>;
    relationships: Record<string, {
        label: string;
        placeholder: string;
        error: string;
        list: string;
        fields?: Record<string, {
            label: string;
            placeholder: string;
            error: string;
        }>;
    }>;
    type: {
        singular: string;
        plural: string;
        icuPlural: string;
    };
}
/**
 * Import statement groups
 */
export interface ImportStatements {
    models: string[];
    selectors: string[];
    library: string[];
}
/**
 * Complete template data passed to all templates
 */
export interface FrontendTemplateData {
    names: NameTransforms;
    moduleId: string;
    endpoint: string;
    targetDir: string;
    extendsContent: boolean;
    fields: FrontendField[];
    relationships: FrontendRelationship[];
    i18nKeys: I18nKeySet;
    imports: ImportStatements;
    tableFieldNames: string[];
    relationshipServiceMethods: RelationshipServiceMethod[];
}
/**
 * Service method for relationship queries
 */
export interface RelationshipServiceMethod {
    methodName: string;
    paramName: string;
    relationshipName: string;
    relationshipEndpoint: string;
}
/**
 * Options for the generator
 */
export interface GenerateWebModuleOptions {
    jsonPath: string;
    dryRun?: boolean;
    force?: boolean;
    noRegister?: boolean;
}
/**
 * Generated file info
 */
export interface GeneratedFile {
    path: string;
    content: string;
    type: "data" | "component" | "context" | "hook" | "module" | "page" | "project-setup";
}
//# sourceMappingURL=template-data.interface.d.ts.map