import { Axios } from 'axios';
import { Control } from './control';
import { BulkTransferInitiated, FetchTransfer, FinalizeTransfer, InitiateBulkTransfer, InitiateTransfer, ListTransferQueryParams, ListTransfers, TransferInitiated, VerifyTransfer } from './interface';
interface BadRequest {
    status: boolean;
    message: string;
}
export declare class Transfer {
    private http;
    control: Control;
    constructor(http: Axios);
    /**
     * # Initiate Transfer
     * Status of transfer object returned will be `pending` if OTP is disabled.
     * In the event that an OTP is required, status will read `otp`.
     */
    initiate(data: InitiateTransfer): Promise<TransferInitiated | BadRequest>;
    /**
     * # Finalize Transfer
     * Finalize an initiated transfer
     */
    finalize(transferCode: string, otp: string): Promise<FinalizeTransfer | BadRequest>;
    bulk(data: InitiateBulkTransfer): Promise<BulkTransferInitiated | BadRequest>;
    list(queryParams?: ListTransferQueryParams): Promise<ListTransfers | BadRequest>;
    fetch(idOrCode: string): Promise<FetchTransfer | BadRequest>;
    verify(reference: string): Promise<VerifyTransfer | BadRequest>;
}
export {};
