import type { ReleaseType } from 'semver';
import type { TShipManifest, TShipRelease, TShipVersionBumpResults } from './ship.types';
interface TOperationInterface {
    input?: NodeJS.ReadableStream | NodeJS.ReadStream | false;
    output?: NodeJS.WritableStream | NodeJS.WriteStream | false;
    [key: string]: unknown;
}
interface TOperationState extends TShipManifest {
    release: ReleaseType | undefined;
    oldVersionSource: string;
    oldVersion: string;
    oldBuild?: number;
    newVersion: string;
    newBuild?: number;
    commitMessage: string;
    tagName: string;
    updatedFiles: string[];
    skippedFiles: string[];
}
interface TOperationOptions {
    release: TShipRelease;
    commit?: {
        message: string;
        noVerify: boolean;
        all: boolean;
    };
    tag?: {
        name: string;
    };
    push: boolean;
    files: string[];
    cwd: string;
    interface: TOperationInterface;
    ignoreScripts: boolean;
    execute?: string;
}
export declare class Operation {
    options: TOperationOptions;
    readonly state: Readonly<TOperationState>;
    get results(): TShipVersionBumpResults;
    private constructor();
    static start(options: TOperationOptions): Promise<Operation>;
    update(newState: Partial<TOperationState>): this;
}
export {};
