import { Auth } from './auth';
interface PayoutResponse {
    ConversationID: string;
    OriginatorConversationID: string;
    ResponseCode: string;
    ResponseDescription: string;
}
interface PayoutPayload {
    OriginatorConversationID: string;
    InitiatorName: string;
    SecurityCredential: string;
    CommandID: 'BusinessPayment' | 'SalaryPayment' | 'PromotionPayment';
    PartyA: string;
    PartyB: string;
    Amount: number;
    Remarks: string;
    Occassion?: string;
    QueueTimeOutURL: string;
    ResultURL: string;
}
export declare class Payout {
    private readonly baseUrl;
    private readonly auth;
    private readonly initiatorName;
    private readonly securityCredential;
    private readonly rateLimiter;
    /**
     * Creates an instance of Payout
     * @param auth - Instance of Auth class for token generation
     * @param initiatorName - Name of the initiator making the request
     * @param securityCredential - Encrypted security credential
     * @param sandbox - Whether to use sandbox environment
     */
    constructor(auth: Auth, initiatorName?: string, securityCredential?: string, sandbox?: boolean);
    /**
     * Validates the URLs are HTTPS
     * @param queueTimeoutUrl - URL for timeout notifications
     * @param resultUrl - URL for result notifications
     */
    private validateUrls;
    private validatePhoneNumber;
    private validateAmount;
    /**
     * Builds the payload for payout request
     */
    private buildPayload;
    send(amount: number, remarks: string, occasion?: string, commandId?: PayoutPayload['CommandID'], shortCode?: string, phoneNumber?: string, queueTimeoutUrl?: string, resultUrl?: string): Promise<PayoutResponse>;
}
export {};
