import { WritingCaseContract } from '../../core';
import type { MultiTestInvoker, Trigger } from '../../core/executeExample/types';
import type { CaseConfig } from '../../core/types';
import type { AnyCaseNodeType, AnyData, AnyMockDescriptorType, AnyState, CaseMockDescriptorFor, ContractDescription, DataOrCaseNodeFor, SetupInfoFor } from '../../entities/types';
export type DefinitionSuccessExample<T extends AnyMockDescriptorType, R = unknown> = MultiTestInvoker<T, R> & {
    states?: Array<AnyState>;
    definition: CaseMockDescriptorFor<T>;
    trigger?: Trigger<T, R>;
    testResponse?: (data: R, config: SetupInfoFor<T>) => unknown;
};
export type DefinitionFailingExample<T extends AnyMockDescriptorType, R = unknown> = MultiTestInvoker<T, R> & {
    states?: Array<AnyState>;
    definition: CaseMockDescriptorFor<T>;
    trigger?: Trigger<T, R>;
    testErrorResponse?: (err: Error, config: SetupInfoFor<T>) => unknown;
};
export declare class ContractDefinerConnector<M extends AnyMockDescriptorType> {
    contract: WritingCaseContract;
    invoker: MultiTestInvoker<M>;
    config: CaseConfig;
    constructor(description: ContractDescription, config: CaseConfig, invoker: MultiTestInvoker<M>, dependencies?: import("../../core/types").WriterDependencies);
    runExample<T extends AnyMockDescriptorType, R>({ states, definition, trigger, triggers, testResponse, stateHandlers, }: DefinitionSuccessExample<T, R>, runConfig?: CaseConfig): Promise<unknown>;
    runRejectingExample<T extends AnyMockDescriptorType, R>({ states, definition, trigger, triggers, testErrorResponse, stateHandlers, }: DefinitionFailingExample<T, R>, runConfig?: CaseConfig): Promise<unknown>;
    endRecord(): Promise<unknown>;
    stripMatchers<T extends AnyCaseNodeType>(matcherOrData: DataOrCaseNodeFor<T>): AnyData;
}
