import type { ProposalExecutionResult } from './executor';
import { ProposalExecutor } from './executor';
import type { ProposalSink, RegenerationContext, SpecChangeProposal } from './types';
export interface ExecutorResultPayload {
    context: RegenerationContext;
    proposal: SpecChangeProposal;
    result: ProposalExecutionResult;
}
export interface ExecutorSinkLogger {
    info?: (message: string, meta?: Record<string, unknown>) => void;
    error?: (message: string, error: Error, meta?: Record<string, unknown>) => void;
}
export interface ExecutorSinkOptions {
    dryRun?: boolean;
    onResult?: (payload: ExecutorResultPayload) => void | Promise<void>;
    logger?: ExecutorSinkLogger;
}
export declare class ExecutorProposalSink implements ProposalSink {
    private readonly executor;
    private readonly options;
    constructor(executor: ProposalExecutor, options?: ExecutorSinkOptions);
    submit(context: RegenerationContext, proposal: SpecChangeProposal): Promise<void>;
}
