import { PoolClient } from "pg"; import { Runtype, Static, String } from "runtypes"; import { RunContextI } from "../runners"; export declare const PgIdentifier: import("runtypes").Constraint, string, unknown>, string, unknown>; export declare type PgIdentifierI = Static; interface ObjectProviderCore { record: Runtype; reconcile: (desired: ObjectType, current: ObjectType | undefined) => Promise; toStatement: (context: RunContextI) => (operation: OperationType) => string; identityFn: IdentityFunction; } export interface SingleObjectProvider extends ObjectProviderCore { type: "single"; introspect: (client: PoolClient, identifier: PgIdentifierI, context: RunContextI) => Promise; } export interface ManyObjectProvider extends ObjectProviderCore { type: "many"; introspectMany: (client: PoolClient, context: RunContextI) => Promise; } export declare type ObjectProvider = SingleObjectProvider | ManyObjectProvider; interface NameableObject { name: string; previous_name?: string; } declare type IdentityFunction = (desired: T, current: T) => boolean; export declare const identityFunctionForNameableObject: IdentityFunction; export declare const createOperationsForNameableObject: (desiredObjects: (NameableObject & ObjectType)[] | undefined, currentObjects: (NameableObject & ObjectType)[] | undefined, reconcileFn: (desired: ObjectType | undefined, current: ObjectType | undefined) => Promise, opts?: CreateOperationsOpts | undefined) => Promise; interface CreateOperationsOpts { dropObjects: boolean; } export declare const createOperationsForObjectWithIdentityFunction: (desiredObjects: ObjectType[] | undefined, currentObjects: ObjectType[] | undefined, reconcileFn: (desired: ObjectType | undefined, current: ObjectType | undefined) => Promise, identityFunction: IdentityFunction, opts?: CreateOperationsOpts | undefined) => Promise; export {};