import { P_ALTER_TABLE } from '../../../../../typings';
import { TableModelInterface, DatabaseModelInterface, RuleHandler } from '../typings';
/**
 * Formatter for P_ALTER_TABLE rule's parsed JSON.
 */
export declare class AlterTable implements RuleHandler {
    database: DatabaseModelInterface;
    /**
     * Get table with given name.
     *
     * @param name Table name.
     */
    getTable(name: string): TableModelInterface | undefined;
    /**
     * Setter for database.
     *
     * @param database Database instance.
     */
    setDatabase(database: DatabaseModelInterface): void;
    /**
     * Alters one of the tables.
     *
     * @param json JSON format parsed from SQL.
     */
    handleDef(json: P_ALTER_TABLE): void;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static addColumn;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static addColumns;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static addIndex;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static addPrimaryKey;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static addUniqueKey;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static addFulltextIndex;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static addSpatialIndex;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static addForeignKey;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static setDefaultColumnValue;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static dropDefaultColumnValue;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static changeColumn;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static dropColumn;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static dropIndex;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static dropPrimaryKey;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static dropForeignKey;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static renameIndex;
    /**
     * Performs action in ALTER TABLE statement.
     *
     * @param json O_ALTER_TABLE_SPEC def object in JSON.
     * @param table Table to be altered.
     */
    private static rename;
}
