import { ConfigService } from '@nestjs/config';
import { IntegrationConfigService } from '../integrations/integration-config.service';
import { OtpDeliveryProvider } from './otp.types';
type RuntimeOtpConfig = {
    provider?: OtpDeliveryProvider;
    enabledProviders?: OtpDeliveryProvider[];
    providerPriority?: OtpDeliveryProvider[];
    codeLength?: number;
    ttlSeconds?: number;
    maxAttempts?: number;
    exposeDevCode?: boolean;
    termiiBaseUrl?: string;
    termiiApiKey?: string;
    termiiSenderId?: string;
    termiiChannel?: string;
    africasTalkingBaseUrl?: string;
    africasTalkingUsername?: string;
    africasTalkingApiKey?: string;
    africasTalkingSenderId?: string;
    customHttpUrl?: string;
    customHttpMethod?: string;
    customHttpHeadersJson?: string;
    customHttpBodyTemplate?: string;
};
export type UpdateOtpRuntimeConfig = RuntimeOtpConfig;
export declare class OtpService {
    private readonly config;
    private readonly integrations;
    private readonly challenges;
    private readonly runtime;
    constructor(config: ConfigService, integrations: IntegrationConfigService);
    sendOtp(phone: string, name?: string): Promise<{
        devOtp?: string | undefined;
        message: string;
        provider: OtpDeliveryProvider;
        providerPriority: OtpDeliveryProvider[];
        expiresInSeconds: number;
    }>;
    verifyOtp(phone: string, otp: string): boolean;
    getRuntimeConfig(): {
        provider: OtpDeliveryProvider;
        enabledProviders: OtpDeliveryProvider[];
        providerPriority: OtpDeliveryProvider[];
        availableProviders: OtpDeliveryProvider[];
        providers: {
            provider: OtpDeliveryProvider;
            enabled: boolean;
            priority: number | null;
            configured: boolean;
            activePrimary: boolean;
        }[];
        codeLength: number;
        expiresInSeconds: number;
        maxAttempts: number;
        devOtpExposed: boolean;
        termii: {
            configured: boolean;
            baseUrl: string;
            senderId: string;
            channel: string;
        };
        africasTalking: {
            configured: boolean;
            baseUrl: string;
            username: string;
            senderId: string;
        };
        customHttp: {
            configured: boolean;
            url: string;
            method: string;
            hasHeaders: boolean;
            hasBodyTemplate: boolean;
        };
        note: string;
    };
    updateRuntimeConfig(dto: UpdateOtpRuntimeConfig): {
        provider: OtpDeliveryProvider;
        enabledProviders: OtpDeliveryProvider[];
        providerPriority: OtpDeliveryProvider[];
        availableProviders: OtpDeliveryProvider[];
        providers: {
            provider: OtpDeliveryProvider;
            enabled: boolean;
            priority: number | null;
            configured: boolean;
            activePrimary: boolean;
        }[];
        codeLength: number;
        expiresInSeconds: number;
        maxAttempts: number;
        devOtpExposed: boolean;
        termii: {
            configured: boolean;
            baseUrl: string;
            senderId: string;
            channel: string;
        };
        africasTalking: {
            configured: boolean;
            baseUrl: string;
            username: string;
            senderId: string;
        };
        customHttp: {
            configured: boolean;
            url: string;
            method: string;
            hasHeaders: boolean;
            hasBodyTemplate: boolean;
        };
        note: string;
    };
    private provider;
    private configuredPrimaryProvider;
    private enabledProviders;
    private providerPriority;
    private providerOrder;
    private parseProviders;
    private uniqueProviders;
    private toProvider;
    private assertProviders;
    private ttlSeconds;
    private codeLength;
    private maxAttempts;
    private positiveInt;
    private devCode;
    private shouldExposeDevCode;
    private generateCode;
    private hash;
    private messageFor;
    private sendWithProvider;
    private sendViaTermii;
    private sendViaAfricasTalking;
    private sendViaCustomHttp;
    private postJson;
    private fetchOrThrow;
    private renderCustomBody;
    private parseHeaders;
    private renderTemplate;
    private termiiBaseUrl;
    private termiiApiKey;
    private termiiSenderId;
    private termiiChannel;
    private africasTalkingBaseUrl;
    private africasTalkingUsername;
    private africasTalkingApiKey;
    private africasTalkingSenderId;
    private customHttpUrl;
    private customHttpMethod;
    private customHttpHeadersJson;
    private customHttpBodyTemplate;
    private hasValue;
    private providerConfigured;
    private errorMessage;
    private maskUrl;
}
export {};
