/**
 * The resulting data from a generated field.
 */
export interface MySQLSchemaFieldResult {
    /**
     * The field to be entered.
     */
    field?: string;
    /**
     * The primary key to be added.
     */
    primaryKey?: string;
    /**
     * The key to be added.
     */
    key?: string;
    /**
     * The constraint to be added.
     */
    constraint?: string;
    /**
     * The foreign key to be added.
     */
    foreignKey?: string;
}
/**
 * The database field.
 */
export interface IMySQLSchemaField {
    /**
     * The name of the field.
     */
    name: string;
    /**
     * The data type, be sure to include the length of the
     * data type here as well.
     */
    dataType: string;
    /**
     * Set as a primary key.
     */
    primaryKey?: boolean;
    /**
     * Set as a not null.
     */
    notNull?: boolean;
    /**
     * Set as a unique index.
     */
    uniqueIndex?: boolean;
    /**
     * Set as a binary column.
     */
    binaryColumn?: boolean;
    /**
     * Set as an unsigned data type.
     */
    unsignedDataType?: boolean;
    /**
     * If this column is a number, fill with zeroes.
     */
    fillZeroes?: boolean;
    /**
     * Set as an auto incrementing column.
     */
    autoIncrement?: boolean;
    /**
     * Set as a generated column.
     */
    generatedColumn?: boolean;
    /**
     * Set the default value. If this is set to null, a
     * MySQL NULL value will be used.
     */
    defaultValue?: string;
    /**
     * Set the string to be used when setting the default
     * value. The default is: '
     */
    strAroundDefaultValue?: string;
}
/**
 * The database field.
 */
export declare class MySQLSchemaField implements IMySQLSchemaField {
    /**
     * The name of the field.
     */
    name: string;
    /**
     * The data type, be sure to include the length of the
     * data type here as well.
     */
    dataType: string;
    /**
     * Set as a primary key.
     */
    primaryKey: boolean;
    /**
     * Set as a not null.
     */
    notNull: boolean;
    /**
     * Set as a unique index.
     */
    uniqueIndex: boolean;
    /**
     * Set as a binary column.
     */
    binaryColumn: boolean;
    /**
     * Set as an unsigned data type.
     */
    unsignedDataType: boolean;
    /**
     * If this column is a number, fill with zeroes.
     */
    fillZeroes: boolean;
    /**
     * Set as an auto incrementing column.
     */
    autoIncrement: boolean;
    /**
     * Set as a generated column.
     */
    generatedColumn: boolean;
    /**
     * Set the default value. If this is set to null, a
     * MySQL NULL value will be used.
     */
    defaultValue: string;
    /**
     * Set the string to be used when setting the default
     * value. The default is: '
     */
    strAroundDefaultValue: string;
    constructor(name: string | IMySQLSchemaField, dataType?: string, defaultValue?: string, primaryKey?: boolean, notNull?: boolean, uniqueIndex?: boolean, binaryColumn?: boolean, unsignedDataType?: boolean, fillZeroes?: boolean, autoIncrement?: boolean, generatedColumn?: boolean, strAroundDefaultValue?: string);
    /**
     * Compare two different fields. This will iterate through all keys in each field. Any
     * string values found will have stringFilter applied to it, removing everything that
     * is in that stringFilter regex. Additionally for any empty strings found it will
     * compare to any undefined/null on the other side, and treat them as the same.
     *
     * @param field1 The first field to compare.
     * @param field2 The second field to compare.
     * @param onlyKeys Only compare using the provided keys. If set to null, this will compare
     * using all of the keys in these objects.
     * @param stringFilter The regex to be used to help make any filters on any detected
     * strings. The default regex provided will remove any whitespaces, single/doube quotes,
     * back ticks, and parenthesis. If this is set to null, it will not be used.
     */
    static compare(field1: MySQLSchemaField, field2: MySQLSchemaField, onlyKeys?: string[], stringFilter?: RegExp): boolean;
    /**
     * Parse a JSON object and get a MySQLSchemaField object from it.
     * Warning! This is only partially implemented. This will not check
     * the following fields:
     * * Binary column
     * * unique
     * * zero-filled
     * * generated column
     */
    static parse(json: any): MySQLSchemaField;
    /**
     * Generate the db command.
     */
    generate(): Promise<MySQLSchemaFieldResult>;
}
//# sourceMappingURL=MySQLSchemaField.d.ts.map