import { ColumnDefinition, DefaultSchemaGrammar, SchemaCommand } from '../../schema'; /** * MySQL schema grammar. Differs from the standard grammar in identifier quoting * (backticks), UNSIGNED/AUTO_INCREMENT syntax, TINYINT(1) booleans, JSON in * place of native arrays, and the single-statement MODIFY COLUMN / DROP FOREIGN * KEY / DROP PRIMARY KEY forms. * * Unlike PostgreSQL and SQLite, MySQL's `CREATE INDEX` has no `IF NOT EXISTS` * clause, so `createIndexSql` ignores that flag here: a `Schema.createIfNotExists` * table re-run against MySQL is idempotent for the table itself, but re-running * it after the index already exists still fails with a duplicate-key-name error. * Track applied migrations (skip `up()` once it already ran) rather than relying * on index-level idempotency on this engine. */ export declare class MysqlSchemaGrammar extends DefaultSchemaGrammar { protected createIndexSql(table: string, columns: string[], name?: string, unique?: boolean): string; protected wrap(name: string): string; protected getAutoIncrementType(column: ColumnDefinition): string; protected modifyUnsigned(column: ColumnDefinition): string; protected booleanLiteral(value: boolean): string; protected arrayLiteral(value: any[]): string; protected getType(column: ColumnDefinition): string; protected compileChangeColumn(table: string, column: ColumnDefinition): string[]; protected compileDropIndex(table: string, index: string): string; protected compileCommand(table: string, command: SchemaCommand): string[]; compileRename(from: string, to: string): string; compileTableExists(table: string): { sql: string; bindings: any[]; }; }