import type { NamingStrategy } from './NamingStrategy.js';
import { type ReferenceKind } from '../enums.js';
/** Base class for naming strategies, providing default implementations for common naming conventions. */
export declare abstract class AbstractNamingStrategy implements NamingStrategy {
    getClassName(file: string, separator?: string): string;
    classToMigrationName(timestamp: string, customMigrationName?: string): string;
    indexName(tableName: string, columns: string[], type: 'primary' | 'foreign' | 'unique' | 'index' | 'sequence' | 'check' | 'default' | 'trigger'): string;
    /**
     * @inheritDoc
     */
    getEntityName(tableName: string, schemaName?: string): string;
    columnNameToProperty(columnName: string): string;
    /**
     * @inheritDoc
     */
    getEnumClassName(columnName: string, tableName: string | undefined, schemaName?: string): string;
    /**
     * @inheritDoc
     */
    getEnumTypeName(columnName: string, tableName: string | undefined, schemaName?: string): string;
    /**
     * @inheritDoc
     */
    enumValueToEnumProperty(enumValue: string, columnName: string, tableName: string, schemaName?: string): string;
    aliasName(entityName: string, index: number): string;
    /**
     * @inheritDoc
     */
    inverseSideName(entityName: string, propertyName: string, kind: ReferenceKind): string;
    /**
     * @inheritDoc
     */
    manyToManyPropertyName(ownerEntityName: string, targetEntityName: string, pivotTableName: string, ownerTableName: string, schemaName?: string): string;
    /**
     * @inheritDoc
     */
    discriminatorColumnName(baseName: string): string;
    abstract classToTableName(entityName: string, tableName?: string): string;
    abstract joinColumnName(propertyName: string): string;
    abstract joinKeyColumnName(entityName: string, referencedColumnName?: string, composite?: boolean, tableName?: string): string;
    abstract joinTableName(sourceEntity: string, targetEntity: string, propertyName?: string, tableName?: string): string;
    abstract propertyToColumnName(propertyName: string, object?: boolean): string;
    abstract referenceColumnName(): string;
}
