import { ConfigService } from '@nestjs/config';
export interface PaystackInitializeResponse {
    status: boolean;
    message: string;
    data: {
        authorization_url: string;
        access_code: string;
        reference: string;
    };
}
export interface PaystackVerifyResponse {
    status: boolean;
    message: string;
    data: {
        id: number;
        domain: string;
        status: string;
        reference: string;
        amount: number;
        message: string | null;
        gateway_response: string;
        paid_at: string | null;
        created_at: string;
        channel: string;
        currency: string;
        ip_address: string;
        metadata: Record<string, any>;
        customer: {
            id: number;
            email: string;
            customer_code: string;
            first_name: string | null;
            last_name: string | null;
            phone: string | null;
        };
        plan: string | null;
        authorization: {
            authorization_code: string;
            bin: string;
            last4: string;
            exp_month: string;
            exp_year: string;
            channel: string;
            card_type: string;
            bank: string;
            country_code: string;
            brand: string;
            reusable: boolean;
            signature: string;
        };
    };
}
export interface PaystackWebhookEvent {
    event: string;
    data: {
        id: number;
        domain: string;
        status: string;
        reference: string;
        amount: number;
        gateway_response: string;
        paid_at: string | null;
        created_at: string;
        channel: string;
        currency: string;
        customer: {
            id: number;
            email: string;
            customer_code: string;
        };
        metadata: Record<string, any>;
    };
}
export declare class PaystackService {
    private configService;
    private readonly logger;
    private readonly apiClient;
    private readonly secretKey;
    constructor(configService: ConfigService);
    initializeTransaction(data: {
        email: string;
        amount: number;
        reference?: string;
        callback_url?: string;
        metadata?: Record<string, any>;
        plan?: string;
        channels?: string[];
    }): Promise<PaystackInitializeResponse['data']>;
    verifyTransaction(reference: string): Promise<PaystackVerifyResponse['data']>;
    isPaymentSuccessful(status: string): boolean;
    validateWebhookSignature(body: string, signature: string): boolean;
    listBanks(): Promise<any[]>;
    createRefund(data: {
        transaction: string;
        amount?: number;
    }): Promise<any>;
    getTransaction(id: number): Promise<any>;
    listTransactions(params?: {
        perPage?: number;
        page?: number;
        status?: string;
        from?: string;
        to?: string;
    }): Promise<any>;
}
