export interface GeneratePaymentLinkResponse {
  status: boolean;
  message: string;
  data: {
    authorization_url: string;
    access_code: string;
    reference: string;
  };
}
export interface CreateTransferRecipientResponse {
  status: boolean;
  message: string;
  data: {
    active: boolean;
    createdAt: Date | string;
    currency: string;
    domain: string;
    id: number;
    integration: number;
    name: string;
    recipient_code: string;
    type: string;
    updatedAt: Date | string;
    is_deleted: boolean;
    details: {
      authorization_code: string | null;
      account_number: string;
      account_name: string;
      bank_code: string;
      bank_name: string;
    };
  };
}
declare class PaystackPaymentModule {
  private $;
  constructor(secret?: string);
  generatePaymentLink(
    userId: string,
    amount: number,
    email: string,
    currency?: string,
    customerRequest?: Record<string, any>
  ): Promise<
    | import("../../utils/http").ResponseInterface<string>
    | import("../../utils/http").ResponseInterface<GeneratePaymentLinkResponse>
  >;
  verifyTransaction(
    reference: string
  ): Promise<import("../../utils/http").ResponseInterface<string> | import("../../utils/http").ResponseInterface<any>>;
  createTransferRecipient(
    type: "nuban" | "mobile_money" | "basa" | "ghipss",
    name: string,
    accountNumber: string,
    bankCode: string,
    currency?: string
  ): Promise<
    | import("../../utils/http").ResponseInterface<string>
    | import("../../utils/http").ResponseInterface<CreateTransferRecipientResponse>
  >;
  bulkCreateTransferRecipient(
    batch: {
      type: "nuban" | "mobile_money" | "basa" | "ghipss";
      name: string;
      accountNumber: string;
      bankCode: string;
      currency?: string;
    }[]
  ): Promise<import("../../utils/http").ResponseInterface<string> | import("../../utils/http").ResponseInterface<any>>;
  initiateTransfer(
    amount: number,
    recipient: string,
    reason?: string,
    currency?: string,
    reference?: string
  ): Promise<import("../../utils/http").ResponseInterface<string> | import("../../utils/http").ResponseInterface<any>>;
  initiateBulkTransfer(
    transfers: {
      amount: number;
      recipient: string;
      reason?: string;
      reference?: string;
    }[],
    currency?: string
  ): Promise<import("../../utils/http").ResponseInterface<string> | import("../../utils/http").ResponseInterface<any>>;
}
/**
 *
 * @param secret Paystack secret key
 * @returns
 */
export declare const initPaystackPaymentModule: (secret?: string) => PaystackPaymentModule;
export {};
//# sourceMappingURL=paystack.d.ts.map
