import { type BalanceProvider, type BalanceQuery, type BalanceResult, type DeliveryStatusQuery, type DeliveryStatusResult, KMsgError, type MessageType, type Provider, type ProviderHealthStatus, type Result, type SendOptions, type SendResult, type Template, type TemplateContext, type TemplateCreateInput, type TemplateProvider, type TemplateUpdateInput } from "@k-msg/core";
import type { IWINVConfig } from "./types/iwinv";
export declare class IWINVProvider implements Provider, BalanceProvider, TemplateProvider {
    readonly id = "iwinv";
    readonly name = "IWINV Messaging Provider";
    readonly supportedTypes: readonly MessageType[];
    private readonly config;
    getOnboardingSpec(): import("@k-msg/core").ProviderOnboardingSpec;
    constructor(config: IWINVConfig);
    healthCheck(): Promise<ProviderHealthStatus>;
    send(options: SendOptions): Promise<Result<SendResult, KMsgError>>;
    getDeliveryStatus(query: DeliveryStatusQuery): Promise<Result<DeliveryStatusResult | null, KMsgError>>;
    getBalance(query?: BalanceQuery): Promise<Result<BalanceResult, KMsgError>>;
    private getAlimTalkBalance;
    private getSmsBalance;
    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>>;
}
export declare const createIWINVProvider: (config: IWINVConfig) => IWINVProvider;
export declare const createDefaultIWINVProvider: () => IWINVProvider;
export declare class IWINVProviderFactory {
    static create(config: IWINVConfig): IWINVProvider;
    static createDefault(): IWINVProvider;
}
export declare function initializeIWINV(): void;
