import { type KakaoChannel, type KakaoChannelCategories, type KakaoChannelProvider, KMsgError, KMsgErrorCode, type MessageType, type Provider, type Result, type SendOptions, type SendResult, type Template, type TemplateContext, type TemplateCreateInput, type TemplateInspectionProvider, type TemplateProvider, type TemplateUpdateInput } from "@k-msg/core";
type MockSendScenarioStep = {
    outcome: "success" | "failure" | "timeout" | "delay";
    code?: KMsgErrorCode | string;
    message?: string;
    providerErrorCode?: string;
    providerErrorText?: string;
    httpStatus?: number;
    retryAfterMs?: number;
    causeChain?: unknown[];
    durationMs?: number;
};
export declare class MockProvider implements Provider, TemplateProvider, TemplateInspectionProvider, KakaoChannelProvider {
    readonly id = "mock";
    readonly name = "Mock Provider";
    readonly supportedTypes: readonly MessageType[];
    calls: SendOptions[];
    private failureCount;
    private scenario;
    private scenarioCursor;
    private templates;
    private templateSeq;
    private channelSeq;
    private kakaoChannels;
    getOnboardingSpec(): import("@k-msg/core").ProviderOnboardingSpec;
    constructor();
    healthCheck(): Promise<{
        healthy: boolean;
        issues: never[];
    }>;
    send(params: SendOptions): Promise<Result<SendResult, KMsgError>>;
    mockSuccess(): void;
    mockFailure(count: number): void;
    mockScenario(steps: MockSendScenarioStep[]): void;
    clearScenario(): void;
    private nextScenarioOutcome;
    getHistory(): SendOptions[];
    clearHistory(): void;
    createTemplate(input: TemplateCreateInput, _ctx?: TemplateContext): Promise<Result<Template, KMsgError>>;
    updateTemplate(code: string, patch: TemplateUpdateInput, _ctx?: TemplateContext): Promise<Result<Template, KMsgError>>;
    deleteTemplate(code: string, _ctx?: TemplateContext): Promise<Result<void, KMsgError>>;
    getTemplate(code: string, _ctx?: TemplateContext): Promise<Result<Template, KMsgError>>;
    listTemplates(params?: {
        status?: string;
        page?: number;
        limit?: number;
    }, _ctx?: TemplateContext): Promise<Result<Template[], KMsgError>>;
    requestTemplateInspection(code: string, _ctx?: TemplateContext): Promise<Result<void, KMsgError>>;
    listKakaoChannels(params?: {
        plusId?: string;
        senderKey?: string;
    }): Promise<Result<KakaoChannel[], KMsgError>>;
    listKakaoChannelCategories(): Promise<Result<KakaoChannelCategories, KMsgError>>;
    requestKakaoChannelAuth(params: {
        plusId: string;
        phoneNumber: string;
    }): Promise<Result<void, KMsgError>>;
    addKakaoChannel(params: {
        plusId: string;
        authNum: string;
        phoneNumber: string;
        categoryCode: string;
    }): Promise<Result<KakaoChannel, KMsgError>>;
}
export {};
