/// <reference path="../src/lib/abstract-logging.d.ts" />
import { AbstractLogger } from 'abstract-logging';
export type Migration<Input, Output = Input> = {
    version: string;
    toVersion?: string;
    up: (input: Input) => Promise<Output> | Output;
};
interface BaseSemgratorParams<Input> {
    version: string;
    input: Input;
    logger?: AbstractLogger;
}
interface SemgratorParamsWithMigrations<Input, Output> extends BaseSemgratorParams<Input> {
    migrations: Migration<Input, Output>[] | AsyncGenerator<Migration<Input, Output>>;
}
interface SemgratorParamsWithPath<Input> extends BaseSemgratorParams<Input> {
    path: string;
}
interface SemgratorResult<Output> {
    version: string;
    changed: boolean;
    result: Output;
}
interface ThenableAsyncIterator<T> extends PromiseLike<T> {
    [Symbol.asyncIterator](): AsyncIterator<T, T>;
}
export declare function loadMigrationsFromPath<Input, Output = Input>(path: string): AsyncGenerator<Migration<Input, Output>>;
export declare function semgrator<Input = unknown, Output = unknown>(params: SemgratorParamsWithPath<Input> | SemgratorParamsWithMigrations<Input, Output>): ThenableAsyncIterator<SemgratorResult<Output>>;
export {};
//# sourceMappingURL=semgrator.d.ts.map