import * as utils from '@prismamedia/graphql-platform-utils';
import type { ForeignKey, FullTextIndex, LeafColumn, PlainIndex, ReferenceColumn, Table, UniqueIndex } from './table.js';
/**
* @see https://mariadb.com/kb/en/identifier-names/
*/
export type IdentifierName = string;
export declare function assertIdentifierName(maybeIdentifierName: unknown, path?: utils.Path): asserts maybeIdentifierName is IdentifierName;
export declare function ensureIdentifierName(maybeIdentifierName: unknown, path?: utils.Path): IdentifierName;
export interface SchemaNamingStrategyConfig {
table?: (table: Table) => utils.Nillable
;
leaf?: (column: LeafColumn) => utils.Nillable;
reference?: (column: ReferenceColumn) => utils.Nillable;
foreignKey?: (index: ForeignKey) => utils.Nillable;
uniqueIndex?: (index: UniqueIndex) => utils.Nillable;
plainIndex?: (index: PlainIndex) => utils.Nillable;
fullTextIndex?: (index: FullTextIndex) => utils.Nillable;
}
export declare class SchemaNamingStrategy {
readonly config?: SchemaNamingStrategyConfig | undefined;
readonly configPath?: utils.Path | undefined;
constructor(config?: SchemaNamingStrategyConfig | undefined, configPath?: utils.Path | undefined);
getTableName(table: Table): Table['name'];
getLeafColumnName(column: LeafColumn): LeafColumn['name'];
getReferenceColumnName(column: ReferenceColumn): ReferenceColumn['name'];
getForeignKeyName(index: ForeignKey): ForeignKey['name'];
getUniqueIndexName(index: UniqueIndex): UniqueIndex['name'];
getPlainIndexName(index: PlainIndex): PlainIndex['name'];
getFullTextIndexName(index: FullTextIndex): FullTextIndex['name'];
}
//# sourceMappingURL=naming-strategy.d.ts.map