import type { ApiInternal } from '../../api/api-internal';
import type { EventEmitter } from '../../helper/event-emitter';
import type { Checkout } from '../checkout';
export type Instruction = new (selector: string, formSelector: string, api: ApiInternal, checkoutWidget: Checkout) => InstructionHandler & InstructionDestroyable & InstructionDecorated;
export interface InstructionHandleable {
    handle(payload: object, eventEmitter: EventEmitter): void;
}
export interface InstructionDecorated {
    instruction: string;
}
export interface InstructionDestroyable {
    destroy(): void;
}
export declare abstract class InstructionHandler implements InstructionHandleable, InstructionDestroyable, InstructionDecorated {
    selector: string;
    formSelector: string;
    api: ApiInternal;
    protected checkoutWidget?: Checkout;
    constructor(selector: string, formSelector: string, api: ApiInternal, checkoutWidget?: Checkout);
    instruction: string;
    abstract handle(context: object, eventEmitter?: any): void;
    abstract destroy(): void;
    getEnv(instruction_token: string): string;
}
//# sourceMappingURL=instruction-handler.d.ts.map