import { type KakaoChannel, type KakaoChannelCategories, type KakaoChannelProvider, type KMsgError, type MessageType, type Provider, type ProviderHealthStatus, type ProviderRequestContext, type Result, type SendOptions, type SendResult } from "@k-msg/core";
import type { AligoRuntimeContext } from "./aligo.internal.types";
import type { AligoConfig } from "./types/aligo";
export declare function resolveDefaultAligoConfig(): AligoConfig;
export declare class AligoSendProvider implements Provider, KakaoChannelProvider {
    readonly id = "aligo";
    readonly name = "Aligo Smart SMS";
    readonly supportedTypes: readonly MessageType[];
    readonly transportCapabilities: {
        readonly abortSignal: "supported";
        readonly injectableFetch: "supported";
    };
    protected readonly config: AligoConfig;
    protected readonly smsHost: string;
    protected readonly alimtalkHost: string;
    getOnboardingSpec(): import("@k-msg/core").ProviderOnboardingSpec;
    constructor(config: AligoConfig);
    protected getRuntimeContext(requestContext?: ProviderRequestContext): AligoRuntimeContext;
    healthCheck(): Promise<ProviderHealthStatus>;
    send(options: SendOptions, context?: ProviderRequestContext): Promise<Result<SendResult, 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 declare const createAligoSendProvider: (config: AligoConfig) => AligoSendProvider;
export declare const createDefaultAligoSendProvider: () => AligoSendProvider;
export declare class AligoSendProviderFactory {
    static create(config: AligoConfig): AligoSendProvider;
    static createDefault(): AligoSendProvider;
}
