import { Adapter } from '../Adapter';
import { MigrationBuilder } from './';
declare type ChangeMigrationDefinition<DBAdapter extends Adapter> = {
    change: (m: MigrationBuilder<DBAdapter>, t: DBAdapter['ColumnTypes']) => MigrationBuilder<any, false>;
};
export declare type ChangeMigrationShorthand<DBAdapter extends Adapter> = (m: MigrationBuilder<DBAdapter>, t: DBAdapter['ColumnTypes']) => MigrationBuilder<any, false>;
declare type UpDownMigrationDefinition<DBAdapter extends Adapter> = {
    up: (m: MigrationBuilder<DBAdapter>, t: DBAdapter['ColumnTypes']) => MigrationBuilder;
    down: (m: MigrationBuilder<DBAdapter>, t: DBAdapter['ColumnTypes']) => MigrationBuilder;
};
declare type IrreversibleMigrationDefinition<DBAdapter extends Adapter> = {
    up: (m: MigrationBuilder<DBAdapter>, t: DBAdapter['ColumnTypes']) => MigrationBuilder;
    irreversible: true;
};
declare type TaggedChangeMigrationDefinition<DBAdapter extends Adapter> = ChangeMigrationDefinition<DBAdapter> & {
    type: 'change';
};
declare type TaggedUpDownMigrationDefinition<DBAdapter extends Adapter> = UpDownMigrationDefinition<DBAdapter> & {
    type: 'updown';
};
declare type TaggedIrreversibleMigrationDefinition<DBAdapter extends Adapter> = IrreversibleMigrationDefinition<DBAdapter> & {
    type: 'irreversible';
};
export declare type MigrationDefinition<DBAdapter extends Adapter = any> = ChangeMigrationDefinition<DBAdapter> | UpDownMigrationDefinition<DBAdapter> | IrreversibleMigrationDefinition<DBAdapter>;
export declare type TaggedMigrationDefinition<DBAdapter extends Adapter = any> = TaggedChangeMigrationDefinition<DBAdapter> | TaggedUpDownMigrationDefinition<DBAdapter> | TaggedIrreversibleMigrationDefinition<DBAdapter>;
export {};
