/**
 * Naming strategy interface following AdonisJS Lucid conventions
 */
export interface NamingStrategyContract {
    /**
     * Convert property name to database column name
     */
    columnName(model: any, propertyName: string): string;
    /**
     * Convert property name to serialized name for JSON output
     */
    serializedName(model: any, propertyName: string): string;
    /**
     * Convert model name to collection/table name
     */
    tableName(model: any): string;
    /**
     * Generate foreign key name for relationships
     */
    relationForeignKey(relation: string, model: any, relatedModel: any): string;
    /**
     * Generate local key name for relationships
     */
    relationLocalKey(relation: string, model: any, relatedModel: any): string;
    /**
     * Generate pivot table name for many-to-many relationships
     */
    relationPivotTable(relation: 'manyToMany', model: any, relatedModel: any): string;
    /**
     * Generate pivot foreign key name for many-to-many relationships
     */
    relationPivotForeignKey(relation: 'manyToMany', model: any): string;
    /**
     * Generate pagination meta keys
     */
    paginationMetaKeys(): Record<string, string>;
}
/**
 * String helper functions for naming conversions
 */
export declare class StringHelper {
    /**
     * Convert camelCase to snake_case
     */
    static snakeCase(str: string): string;
    /**
     * Convert snake_case to camelCase
     */
    static camelCase(str: string): string;
    /**
     * Convert string to singular form (basic implementation)
     */
    static singular(str: string): string;
    /**
     * Convert string to plural form (basic implementation)
     */
    static plural(str: string): string;
}
/**
 * Default naming strategy following AdonisJS Lucid conventions
 * This strategy converts camelCase properties to snake_case for serialization
 */
export declare class CamelCaseNamingStrategy implements NamingStrategyContract {
    /**
     * Convert property name to database column name
     * By default, converts camelCase to snake_case
     */
    columnName(_model: any, propertyName: string): string;
    /**
     * Convert property name to serialized name for JSON output
     * By default, converts camelCase to snake_case
     */
    serializedName(_model: any, propertyName: string): string;
    /**
     * Convert model name to collection/table name
     * Converts to singular snake_case
     */
    tableName(model: any): string;
    /**
     * Generate foreign key name for relationships
     */
    relationForeignKey(relation: string, model: any, relatedModel: any): string;
    /**
     * Generate local key name for relationships
     */
    relationLocalKey(relation: string, model: any, relatedModel: any): string;
    /**
     * Generate pivot table name for many-to-many relationships
     */
    relationPivotTable(_relation: 'manyToMany', model: any, relatedModel: any): string;
    /**
     * Generate pivot foreign key name for many-to-many relationships
     */
    relationPivotForeignKey(_relation: 'manyToMany', model: any): string;
    /**
     * Generate pagination meta keys
     */
    paginationMetaKeys(): Record<string, string>;
}
/**
 * Snake case naming strategy that keeps everything in snake_case
 */
export declare class SnakeCaseNamingStrategy implements NamingStrategyContract {
    /**
     * Convert property name to database column name
     * Keeps snake_case as-is
     */
    columnName(_model: any, propertyName: string): string;
    /**
     * Convert property name to serialized name for JSON output
     * Keeps snake_case as-is
     */
    serializedName(_model: any, propertyName: string): string;
    /**
     * Convert model name to collection/table name
     */
    tableName(model: any): string;
    /**
     * Generate foreign key name for relationships
     */
    relationForeignKey(relation: string, model: any, relatedModel: any): string;
    /**
     * Generate local key name for relationships
     */
    relationLocalKey(relation: string, model: any, relatedModel: any): string;
    /**
     * Generate pivot table name for many-to-many relationships
     */
    relationPivotTable(_relation: 'manyToMany', model: any, relatedModel: any): string;
    /**
     * Generate pivot foreign key name for many-to-many relationships
     */
    relationPivotForeignKey(_relation: 'manyToMany', model: any): string;
    /**
     * Generate pagination meta keys
     */
    paginationMetaKeys(): Record<string, string>;
}
//# sourceMappingURL=naming_strategy.d.ts.map