import type { ClientBase, ClientConfig, QueryArrayConfig, QueryArrayResult, QueryConfig, QueryResult } from 'pg';
import type * as casts from './operations/casts';
import type * as domains from './operations/domains';
import type * as extensions from './operations/extensions';
import type * as functions from './operations/functions';
import type { Name } from './operations/generalTypes';
import type * as grants from './operations/grants';
import type * as indexes from './operations/indexes';
import type * as mViews from './operations/materializedViews';
import type * as operators from './operations/operators';
import type * as policies from './operations/policies';
import type * as roles from './operations/roles';
import type * as schemas from './operations/schemas';
import type * as sequences from './operations/sequences';
import type * as sql from './operations/sql';
import type * as tables from './operations/tables';
import type * as triggers from './operations/triggers';
import type * as types from './operations/types';
import type * as views from './operations/views';
import type { PgLiteral } from './utils/PgLiteral';
export type { ClientConfig, ConnectionConfig } from 'pg';
export interface DB {
    query(queryConfig: QueryArrayConfig, values?: any[]): Promise<QueryArrayResult>;
    query(queryConfig: QueryConfig): Promise<QueryResult>;
    query(queryTextOrConfig: string | QueryConfig, values?: any[]): Promise<QueryResult>;
    select(queryConfig: QueryArrayConfig, values?: any[]): Promise<any[]>;
    select(queryConfig: QueryConfig): Promise<any[]>;
    select(queryTextOrConfig: string | QueryConfig, values?: any[]): Promise<any[]>;
}
export interface MigrationBuilder {
    /**
     * Install an extension.
     *
     * @alias addExtension
     *
     * @see https://www.postgresql.org/docs/current/sql-createextension.html
     */
    createExtension: (...args: Parameters<extensions.CreateExtension>) => void;
    /**
     * Remove an extension.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropextension.html
     */
    dropExtension: (...args: Parameters<extensions.DropExtension>) => void;
    /**
     * Install an extension.
     *
     * @alias createExtension
     *
     * @see https://www.postgresql.org/docs/current/sql-createextension.html
     */
    addExtension: (...args: Parameters<extensions.CreateExtension>) => void;
    /**
     * Define a new table.
     *
     * @see https://www.postgresql.org/docs/current/sql-createtable.html
     */
    createTable: (...args: Parameters<tables.CreateTable>) => void;
    /**
     * Remove a table.
     *
     * @see https://www.postgresql.org/docs/current/sql-droptable.html
     */
    dropTable: (...args: Parameters<tables.DropTable>) => void;
    /**
     * Rename a table.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    renameTable: (...args: Parameters<tables.RenameTable>) => void;
    /**
     * Change the definition of a table.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    alterTable: (...args: Parameters<tables.AlterTable>) => void;
    /**
     * Add columns to a table.
     *
     * @alias addColumn
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    addColumns: (...args: Parameters<tables.AddColumns>) => void;
    /**
     * Remove columns from a table.
     *
     * @alias dropColumn
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    dropColumns: (...args: Parameters<tables.DropColumns>) => void;
    /**
     * Rename a column.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    renameColumn: (...args: Parameters<tables.RenameColumn>) => void;
    /**
     * Change the definition of a column.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    alterColumn: (...args: Parameters<tables.AlterColumn>) => void;
    /**
     * Add a column to a table.
     *
     * @alias addColumns
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    addColumn: (...args: Parameters<tables.AddColumns>) => void;
    /**
     * Remove a column from a table.
     *
     * @alias dropColumns
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    dropColumn: (...args: Parameters<tables.DropColumns>) => void;
    /**
     * Add a constraint to a table.
     *
     * @alias createConstraint
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    addConstraint: (...args: Parameters<tables.CreateConstraint>) => void;
    /**
     * Remove a constraint from a table.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    dropConstraint: (...args: Parameters<tables.DropConstraint>) => void;
    /**
     * Rename a constraint.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    renameConstraint: (...args: Parameters<tables.RenameConstraint>) => void;
    /**
     * Add a constraint to a table.
     *
     * @alias addConstraint
     *
     * @see https://www.postgresql.org/docs/current/sql-altertable.html
     */
    createConstraint: (...args: Parameters<tables.CreateConstraint>) => void;
    /**
     * Define a new data type.
     *
     * @alias addType
     *
     * @see https://www.postgresql.org/docs/current/sql-createtype.html
     */
    createType: (...args: Parameters<types.CreateType>) => void;
    /**
     * Remove a data type.
     *
     * @see https://www.postgresql.org/docs/current/sql-droptype.html
     */
    dropType: (...args: Parameters<types.DropType>) => void;
    /**
     * Define a new data type.
     *
     * @alias createType
     *
     * @see https://www.postgresql.org/docs/current/sql-createtype.html
     */
    addType: (...args: Parameters<types.CreateType>) => void;
    /**
     * Rename a data type.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertype.html
     */
    renameType: (...args: Parameters<types.RenameType>) => void;
    /**
     * Rename a data type attribute.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertype.html
     */
    renameTypeAttribute: (...args: Parameters<types.RenameTypeAttribute>) => void;
    /**
     * Rename a data type value.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertype.html
     */
    renameTypeValue: (...args: Parameters<types.RenameTypeValue>) => void;
    /**
     * Add an attribute to a data type.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertype.html
     */
    addTypeAttribute: (...args: Parameters<types.AddTypeAttribute>) => void;
    /**
     * Remove an attribute from a data type.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertype.html
     */
    dropTypeAttribute: (...args: Parameters<types.DropTypeAttribute>) => void;
    /**
     * Set an attribute of a data type.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertype.html
     */
    setTypeAttribute: (...args: Parameters<types.SetTypeAttribute>) => void;
    /**
     * Add a value to a data type.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertype.html
     */
    addTypeValue: (...args: Parameters<types.AddTypeValue>) => void;
    /**
     * Define a new index.
     *
     * @alias addIndex
     *
     * @see https://www.postgresql.org/docs/current/sql-createindex.html
     */
    createIndex: (...args: Parameters<indexes.CreateIndex>) => void;
    /**
     * Remove an index.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropindex.html
     */
    dropIndex: (...args: Parameters<indexes.DropIndex>) => void;
    /**
     * Define a new index.
     *
     * @alias createIndex
     *
     * @see https://www.postgresql.org/docs/current/sql-createindex.html
     */
    addIndex: (...args: Parameters<indexes.CreateIndex>) => void;
    /**
     * Define a new database role.
     *
     * @see https://www.postgresql.org/docs/current/sql-createrole.html
     */
    createRole: (...args: Parameters<roles.CreateRole>) => void;
    /**
     * Remove a database role.
     *
     * @see https://www.postgresql.org/docs/current/sql-droprole.html
     */
    dropRole: (...args: Parameters<roles.DropRole>) => void;
    /**
     * Change a database role.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterrole.html
     */
    alterRole: (...args: Parameters<roles.AlterRole>) => void;
    /**
     * Rename a database role.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterrole.html
     */
    renameRole: (...args: Parameters<roles.RenameRole>) => void;
    /**
     * Define a new function.
     *
     * @see https://www.postgresql.org/docs/current/sql-createfunction.html
     */
    createFunction: (...args: Parameters<functions.CreateFunction>) => void;
    /**
     * Remove a function.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropfunction.html
     */
    dropFunction: (...args: Parameters<functions.DropFunction>) => void;
    /**
     * Rename a function.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterfunction.html
     */
    renameFunction: (...args: Parameters<functions.RenameFunction>) => void;
    /**
     * Define a new trigger.
     *
     * @see https://www.postgresql.org/docs/current/sql-createtrigger.html
     */
    createTrigger: (...args: Parameters<triggers.CreateTrigger>) => void;
    /**
     * Remove a trigger.
     *
     * @see https://www.postgresql.org/docs/current/sql-droptrigger.html
     */
    dropTrigger: (...args: Parameters<triggers.DropTrigger>) => void;
    /**
     * Rename a trigger.
     *
     * @see https://www.postgresql.org/docs/current/sql-altertrigger.html
     */
    renameTrigger: (...args: Parameters<triggers.RenameTrigger>) => void;
    /**
     * Define a new schema.
     *
     * @see https://www.postgresql.org/docs/current/sql-createschema.html
     */
    createSchema: (...args: Parameters<schemas.CreateSchema>) => void;
    /**
     * Remove a schema.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropschema.html
     */
    dropSchema: (...args: Parameters<schemas.DropSchema>) => void;
    /**
     * Rename a schema.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterschema.html
     */
    renameSchema: (...args: Parameters<schemas.RenameSchema>) => void;
    /**
     * Define a new domain.
     *
     * @see https://www.postgresql.org/docs/current/sql-createdomain.html
     */
    createDomain: (...args: Parameters<domains.CreateDomain>) => void;
    /**
     * Remove a domain.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropdomain.html
     */
    dropDomain: (...args: Parameters<domains.DropDomain>) => void;
    /**
     * Change the definition of a domain.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterdomain.html
     */
    alterDomain: (...args: Parameters<domains.AlterDomain>) => void;
    /**
     * Rename a domain.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterdomain.html
     */
    renameDomain: (...args: Parameters<domains.RenameDomain>) => void;
    /**
     * Define a new sequence generator.
     *
     * @see https://www.postgresql.org/docs/current/sql-createsequence.html
     */
    createSequence: (...args: Parameters<sequences.CreateSequence>) => void;
    /**
     * Remove a sequence.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropsequence.html
     */
    dropSequence: (...args: Parameters<sequences.DropSequence>) => void;
    /**
     * Change the definition of a sequence generator.
     *
     * @see https://www.postgresql.org/docs/current/sql-altersequence.html
     */
    alterSequence: (...args: Parameters<sequences.AlterSequence>) => void;
    /**
     * Rename a sequence.
     *
     * @see https://www.postgresql.org/docs/current/sql-altersequence.html
     */
    renameSequence: (...args: Parameters<sequences.RenameSequence>) => void;
    /**
     * Define a new operator.
     *
     * @see https://www.postgresql.org/docs/current/sql-createoperator.html
     */
    createOperator: (...args: Parameters<operators.CreateOperator>) => void;
    /**
     * Remove an operator.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropoperator.html
     */
    dropOperator: (...args: Parameters<operators.DropOperator>) => void;
    /**
     * Define a new operator class.
     *
     * @see https://www.postgresql.org/docs/current/sql-createopclass.html
     */
    createOperatorClass: (...args: Parameters<operators.CreateOperatorClass>) => void;
    /**
     * Remove an operator class.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropopclass.html
     */
    dropOperatorClass: (...args: Parameters<operators.DropOperatorClass>) => void;
    /**
     * Rename an operator class.
     *
     * @see https://www.postgresql.org/docs/current/sql-alteropclass.html
     */
    renameOperatorClass: (...args: Parameters<operators.RenameOperatorClass>) => void;
    /**
     * Define a new operator family.
     *
     * @see https://www.postgresql.org/docs/current/sql-createopfamily.html
     */
    createOperatorFamily: (...args: Parameters<operators.CreateOperatorFamily>) => void;
    /**
     * Remove an operator family.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropopfamily.html
     */
    dropOperatorFamily: (...args: Parameters<operators.DropOperatorFamily>) => void;
    /**
     * Rename an operator family.
     *
     * @see https://www.postgresql.org/docs/current/sql-alteropfamily.html
     */
    renameOperatorFamily: (...args: Parameters<operators.RenameOperatorFamily>) => void;
    /**
     * Add an operator to an operator family.
     *
     * @see https://www.postgresql.org/docs/current/sql-alteropfamily.html
     */
    addToOperatorFamily: (...args: Parameters<operators.AddToOperatorFamily>) => void;
    /**
     * Remove an operator from an operator family.
     *
     * @see https://www.postgresql.org/docs/current/sql-alteropfamily.html
     */
    removeFromOperatorFamily: (...args: Parameters<operators.RemoveFromOperatorFamily>) => void;
    /**
     * Define a new row-level security policy for a table.
     *
     * @see https://www.postgresql.org/docs/current/sql-createpolicy.html
     */
    createPolicy: (...args: Parameters<policies.CreatePolicy>) => void;
    /**
     * Remove a row-level security policy from a table.
     *
     * @see https://www.postgresql.org/docs/current/sql-droppolicy.html
     */
    dropPolicy: (...args: Parameters<policies.DropPolicy>) => void;
    /**
     * Change the definition of a row-level security policy.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterpolicy.html
     */
    alterPolicy: (...args: Parameters<policies.AlterPolicy>) => void;
    /**
     * Rename a row-level security policy.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterpolicy.html
     */
    renamePolicy: (...args: Parameters<policies.RenamePolicy>) => void;
    /**
     * Define a new view.
     *
     * @see https://www.postgresql.org/docs/current/sql-createview.html
     */
    createView: (...args: Parameters<views.CreateView>) => void;
    /**
     * Remove a view.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropview.html
     */
    dropView: (...args: Parameters<views.DropView>) => void;
    /**
     * Change the definition of a view.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterview.html
     */
    alterView: (...args: Parameters<views.AlterView>) => void;
    /**
     * Change the definition of a view column.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterview.html
     */
    alterViewColumn: (...args: Parameters<views.AlterViewColumn>) => void;
    /**
     * Rename a view.
     *
     * @see https://www.postgresql.org/docs/current/sql-alterview.html
     */
    renameView: (...args: Parameters<views.RenameView>) => void;
    /**
     * Define a new materialized view.
     *
     * @see https://www.postgresql.org/docs/current/sql-creatematerializedview.html
     */
    createMaterializedView: (...args: Parameters<mViews.CreateMaterializedView>) => void;
    /**
     * Remove a materialized view.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropmaterializedview.html
     */
    dropMaterializedView: (...args: Parameters<mViews.DropMaterializedView>) => void;
    /**
     * Change the definition of a materialized view.
     *
     * @see https://www.postgresql.org/docs/current/sql-altermaterializedview.html
     */
    alterMaterializedView: (...args: Parameters<mViews.AlterMaterializedView>) => void;
    /**
     * Rename a materialized view.
     *
     * @see https://www.postgresql.org/docs/current/sql-altermaterializedview.html
     */
    renameMaterializedView: (...args: Parameters<mViews.RenameMaterializedView>) => void;
    /**
     * Rename a materialized view column.
     *
     * @see https://www.postgresql.org/docs/current/sql-altermaterializedview.html
     */
    renameMaterializedViewColumn: (...args: Parameters<mViews.RenameMaterializedViewColumn>) => void;
    /**
     * Replace the contents of a materialized view.
     *
     * @see https://www.postgresql.org/docs/current/sql-refreshmaterializedview.html
     */
    refreshMaterializedView: (...args: Parameters<mViews.RefreshMaterializedView>) => void;
    /**
     * Define access privileges.
     *
     * @see https://www.postgresql.org/docs/current/sql-grant.html
     */
    grantRoles: (...args: Parameters<grants.GrantRoles>) => void;
    /**
     * Remove access privileges.
     *
     * @see https://www.postgresql.org/docs/current/sql-revoke.html
     */
    revokeRoles: (...args: Parameters<grants.RevokeRoles>) => void;
    /**
     * Define access privileges.
     *
     * @see https://www.postgresql.org/docs/current/sql-grant.html
     */
    grantOnSchemas: (...args: Parameters<grants.GrantOnSchemas>) => void;
    /**
     * Remove access privileges.
     *
     * @see https://www.postgresql.org/docs/current/sql-revoke.html
     */
    revokeOnSchemas: (...args: Parameters<grants.RevokeOnSchemas>) => void;
    /**
     * Define access privileges.
     *
     * @see https://www.postgresql.org/docs/current/sql-grant.html
     */
    grantOnTables: (...args: Parameters<grants.GrantOnTables>) => void;
    /**
     * Remove access privileges.
     *
     * @see https://www.postgresql.org/docs/current/sql-revoke.html
     */
    revokeOnTables: (...args: Parameters<grants.RevokeOnTables>) => void;
    /**
     * Define a new cast.
     *
     * @see https://www.postgresql.org/docs/current/sql-createcast.html
     */
    createCast: (...args: Parameters<casts.CreateCast>) => void;
    /**
     * Remove a cast.
     *
     * @see https://www.postgresql.org/docs/current/sql-dropcast.html
     */
    dropCast: (...args: Parameters<casts.DropCast>) => void;
    /**
     * Run raw SQL, with some optional _[very basic](http://mir.aculo.us/2011/03/09/little-helpers-a-tweet-sized-javascript-templating-engine/)_ mustache templating.
     *
     * This is a low-level operation, and you should use the higher-level operations whenever possible.
     *
     * @param sql SQL query to run.
     * @param args Optional `key/val` of arguments to replace.
     *
     * @see https://www.postgresql.org/docs/current/sql-commands.html
     */
    sql: (...args: Parameters<sql.Sql>) => void;
    /**
     * Inserts raw string, **which is not escaped**.
     *
     * @param sql String to **not escaped**.
     *
     * @example
     * { default: pgm.func('CURRENT_TIMESTAMP') }
     */
    func: (sql: string) => PgLiteral;
    /**
     * By default, all migrations are run in one transaction, but some DB
     * operations like add type value (`pgm.addTypeValue`) does not work if the
     * type is not created in the same transaction.
     * e.g. if it is created in previous migration. You need to run specific
     * migration outside a transaction (`pgm.noTransaction`).
     * Be aware that this means that you can have some migrations applied and some
     * not applied, if there is some error during migrating (leading to `ROLLBACK`).
     */
    noTransaction: () => void;
    /**
     * The `db` client instance.
     *
     * Can be used to run queries directly.
     */
    db: DB;
}
export type MigrationAction = (pgm: MigrationBuilder, run?: () => void) => Promise<void> | void;
export type Literal = (v: Name) => string;
export type LogFn = (msg: string) => void;
export type Logger = {
    debug?: LogFn;
    info: LogFn;
    warn: LogFn;
    error: LogFn;
};
export interface MigrationBuilderActions {
    up?: MigrationAction | false;
    down?: MigrationAction | false;
    shorthands?: tables.ColumnDefinitions;
}
export interface MigrationOptions {
    typeShorthands?: tables.ColumnDefinitions;
    schemalize: Literal;
    literal: Literal;
    logger: Logger;
}
export declare enum PgType {
    BIGINT = "bigint",// signed eight-byte integer
    INT8 = "int8",// alias for bigint
    BIGSERIAL = "bigserial",// autoincrementing eight-byte integer
    BIT_1 = "bit",// fixed-length bit string
    BIT_VARYING = "bit varying",// variable-length bit string
    VARBIT = "varbit",// alias for bit varying
    SERIAL8 = "serial8",// alias for bigserial
    BOOLEAN = "boolean",// logical Boolean (true/false)
    BOOL = "bool",// alias for boolean
    BOX = "box",// rectangular box on a plane
    BYTEA = "bytea",// binary data ("byte array")
    CHARACTER = "character",// fixed-length character string
    CHAR = "char",// alias for character
    CHARACTER_VARYING = "character varying",// variable-length character string
    VARCHAR = "varchar",// alias for character varying
    CIDR = "cidr",// IPv4 or IPv6 network address
    CIRCLE = "circle",// circle on a plane
    DATE = "date",// calendar date (year, month, day)
    DOUBLE_PRECISION = "double precision",// float8	double precision floating-point number (8 bytes)
    INET = "inet",// IPv4 or IPv6 host address
    INTEGER = "integer",// signed four-byte integer
    INT = "int",// alias for int
    INT4 = "int4",// alias for int
    INTERVAL = "interval",// time span
    JSON = "json",// textual JSON data
    JSONB = "jsonb",// binary JSON data, decomposed
    LINE = "line",// infinite line on a plane
    LSEG = "lseg",// line segment on a plane
    MACADDR = "macaddr",// MAC (Media Access Control) address
    MONEY = "money",// currency amount
    NUMERIC = "numeric",// exact numeric of selectable precision
    PATH = "path",// geometric path on a plane
    PG_LSN = "pg_lsn",// PostgreSQL Log Sequence Number
    POINT = "point",// geometric point on a plane
    POLYGON = "polygon",// closed geometric path on a plane
    REAL = "real",// single precision floating-point number (4 bytes)
    FLOAT4 = "float4",// alias for REAL
    SMALLINT = "smallint",// signed two-byte integer
    INT2 = "int2",// alias for smallint
    SMALLSERIAL = "smallserial",// autoincrementing two-byte integer
    SERIAL2 = "serial2",// alias for smallserial
    SERIAL = "serial",// autoincrementing four-byte integer
    SERIAL4 = "serial4",// alias for serial
    TEXT = "text",// variable-length character string
    TIME = "time",// time of day (no time zone)
    TIME_WITHOUT_TIME_ZONE = "without time zone",// alias of time
    TIME_WITH_TIME_ZONE = "time with time zone",// time of day, including time zone
    TIMETZ = "timetz",// alias of time with time zone
    TIMESTAMP = "timestamp",// date and time (no time zone)
    TIMESTAMP_WITHOUT_TIME_ZONE = "timestamp without time zone",// alias of timestamp
    TIMESTAMP_WITH_TIME_ZONE = "timestamp with time zone",// date and time, including time zone
    TIMESTAMPTZ = "timestamptz",// alias of timestamp with time zone
    TSQUERY = "tsquery",// text search query
    TSVECTOR = "tsvector",// text search document
    TXID_SNAPSHOT = "txid_snapshot",// user-level transaction ID snapshot
    UUID = "uuid",// universally unique identifier
    XML = "xml"
}
export type MigrationDirection = 'up' | 'down';
export interface RunnerOptionConfig {
    /**
     * The table storing which migrations have been run.
     */
    migrationsTable: string;
    /**
     * The schema storing table which migrations have been run.
     *
     * (defaults to same value as `schema`)
     */
    migrationsSchema?: string;
    /**
     * The schema on which migration will be run.
     *
     * @default 'public'
     */
    schema?: string | string[];
    /**
     * The directory containing your migration files. This path is resolved from `cwd()`.
     * Alternatively, provide a [glob](https://www.npmjs.com/package/glob) pattern or
     * an array of glob patterns and set `useGlob = true`
     *
     * Note: enabling glob will read both, `dir` _and_ `ignorePattern` as glob patterns
     */
    dir: string | string[];
    /**
     * Use [glob](https://www.npmjs.com/package/glob) to find migration files.
     * This will use `dir` _and_ `ignorePattern` to glob-search for migration files.
     *
     * Note: enabling glob will read both, `dir` _and_ `ignorePattern` as glob patterns
     *
     * @default false
     */
    useGlob?: boolean;
    /**
     * Check order of migrations before running them.
     */
    checkOrder?: boolean;
    /**
     * Direction of migration-run.
     */
    direction: MigrationDirection;
    /**
     * Number of migration to run.
     */
    count?: number;
    /**
     * Treats `count` as timestamp.
     */
    timestamp?: boolean;
    /**
     * Regex pattern for file names to ignore (ignores files starting with `.` by default).
     * Alternatively, provide a [glob](https://www.npmjs.com/package/glob) pattern or
     * an array of glob patterns and set `isGlob = true`
     *
     * Note: enabling glob will read both, `dir` _and_ `ignorePattern` as glob patterns
     */
    ignorePattern?: string | string[];
    /**
     * Run only migration with this name.
     */
    file?: string;
    dryRun?: boolean;
    /**
     * Creates the configured schema if it doesn't exist.
     */
    createSchema?: boolean;
    /**
     * Creates the configured migration schema if it doesn't exist.
     */
    createMigrationsSchema?: boolean;
    /**
     * Combines all pending migrations into a single transaction so that if any migration fails, all will be rolled back.
     *
     * @default true
     */
    singleTransaction?: boolean;
    /**
     * Disables locking mechanism and checks.
     */
    noLock?: boolean;
    /**
     * Mark migrations as run without actually performing them (use with caution!).
     */
    fake?: boolean;
    /**
     * Runs [`decamelize`](https://github.com/sindresorhus/decamelize) on table/column/etc. names.
     */
    decamelize?: boolean;
    /**
     * Redirect log messages to this function, rather than `console`.
     */
    log?: LogFn;
    /**
     * Redirect messages to this logger object, rather than `console`.
     */
    logger?: Logger;
    /**
     * Print all debug messages like DB queries run (if you switch it on, it will disable `logger.debug` method).
     */
    verbose?: boolean;
}
export interface RunnerOptionUrl {
    /**
     * Connection string or client config which is passed to [new pg.Client](https://node-postgres.com/api/client#constructor)
     */
    databaseUrl: string | ClientConfig;
}
export interface RunnerOptionClient {
    /**
     * Instance of [new pg.Client](https://node-postgres.com/api/client).
     *
     * Instance should be connected to DB and after finishing migration, user is responsible to close connection.
     */
    dbClient: ClientBase;
}
export type RunnerOption = RunnerOptionConfig & (RunnerOptionClient | RunnerOptionUrl);
