import { DefaultNamingStrategy, NamingStrategyInterface } from 'typeorm';
export type BetterNamingStrategyOptions = {
    snakeCase?: boolean;
    betterConstraintAndIndexNames?: boolean;
};
export declare class BetterNamingStrategy extends DefaultNamingStrategy implements NamingStrategyInterface {
    private readonly snakeCase;
    private readonly betterConstraintAndIndexNames;
    constructor(options?: BetterNamingStrategyOptions);
    tableName(className: string, customName: string): string;
    columnName(propertyName: string, customName: string, embeddedPrefixes: string[]): string;
    relationName(propertyName: string): string;
    primaryKeyName(tableOrName: string | any, columnNames: string[]): string;
    uniqueConstraintName(tableOrName: string | any, columnNames: string[]): string;
    indexName(tableOrName: string | any, columnNames: string[], where?: string): string;
    foreignKeyName(tableOrName: string | any, columnNames: string[], referencedTablePath?: string, referencedColumnNames?: string[]): string;
    joinColumnName(relationName: string, referencedColumnName: string): string;
    joinTableName(firstTableName: string, secondTableName: string, firstPropertyName: string, secondPropertyName: string): string;
    joinTableColumnName(tableName: string, propertyName: string, columnName?: string): string;
}
