import { ConfigService } from '@nestjs/config';
export interface CreatePaymentPackageDto {
    name: string;
    description: string;
    amount?: number;
    fixed_amount: boolean;
    apiKey?: string;
}
export interface PaymentPackageResponse {
    code: string;
    name: string;
    description: string;
    amount: number;
    fixed_amount: boolean;
    images: string[];
    is_active: boolean;
}
export interface InitiateTransactionDto {
    firstName: string;
    lastName: string;
    email: string;
    phone?: string;
    amount?: number;
    reference?: string;
    paymentCode: string;
    callbackUrl: string;
    apiKey?: string;
}
export interface InitiateTransactionResponse {
    reference: string;
    checkoutUrl: string;
}
export interface VerifyTransactionResponse {
    payment_name: string;
    reference: string;
    type: string;
    amount: number;
    phone: string;
    description: string;
    status: string;
    created_at: string;
    email: string;
    customer_name: string;
    callback_url: string;
    metadata: Record<string, any>;
}
export interface WebhookPayload {
    event: 'payment.success' | 'payment.failed';
    data: {
        reference: string;
        amount: string;
        metadata: Record<string, any> | null;
    };
}
export declare class PaymentsService {
    private configService;
    private readonly logger;
    private readonly apiClient;
    private readonly apiUrl;
    private readonly apiKey;
    constructor(configService: ConfigService);
    createPaymentPackage(data: CreatePaymentPackageDto): Promise<PaymentPackageResponse>;
    private createClientWithApiKey;
    initiateTransaction(data: InitiateTransactionDto): Promise<InitiateTransactionResponse>;
    verifyTransaction(reference: string, apiKey?: string): Promise<VerifyTransactionResponse>;
    isPaymentSuccessful(status: string): boolean;
    parseWebhookPayload(payload: WebhookPayload): {
        event: string;
        isSuccess: boolean;
        reference: string;
        amount: string;
        metadata: Record<string, any> | null;
    };
}
