import { Repository } from 'typeorm';
import { SDKWalletService, SDKWalletTransactionService } from '@serene-dev/la-nest-library';
import { TransactionEntity } from './transaction.entity';
import { ClientEntity } from 'src/entities/client.entity';
import { IAuthParam } from '../authentication/interfaces/authentication.interface';
import { TelcoApiResponseDTO, TelcoDataBundleRequestDTO, TelcoTopupRequestDTO, TelcoVoucherRequestDTO, TelcoVoiceBundleRequestDTO } from 'src/dtos/telco.dto';
import { TelcoAdapterRegistry } from './telco.adapter.registry';
import { TelcoWebhookService } from './telco-webhook.service';
import { EProductPurchaseResponseCode } from './product.enum';
import { PricingService } from 'src/modules/pricing/pricing.service';
import { TransactionService } from 'src/modules/product/transaction.service';
import { ProductPlanService } from '../product-plan/product-plan.service';
export declare class ProductService {
    private readonly adapterRegistry;
    private readonly walletService;
    private readonly walletTransactionService;
    private readonly webhookService;
    private readonly transactionRepo;
    private readonly clientRepo;
    private readonly pricingService;
    private readonly transactionService;
    private readonly productPlanService;
    static path: string;
    constructor(adapterRegistry: TelcoAdapterRegistry, walletService: SDKWalletService, walletTransactionService: SDKWalletTransactionService, webhookService: TelcoWebhookService, transactionRepo: Repository<TransactionEntity>, clientRepo: Repository<ClientEntity>, pricingService: PricingService, transactionService: TransactionService, productPlanService: ProductPlanService);
    topup(body: TelcoTopupRequestDTO, auth: IAuthParam, ipAddress?: string): Promise<TelcoApiResponseDTO>;
    data(body: TelcoDataBundleRequestDTO, auth: IAuthParam, ipAddress?: string): Promise<TelcoApiResponseDTO>;
    voice(body: TelcoVoiceBundleRequestDTO, auth: IAuthParam, ipAddress?: string): Promise<TelcoApiResponseDTO>;
    vot(body: TelcoVoucherRequestDTO, auth: IAuthParam, ipAddress?: string): Promise<TelcoApiResponseDTO>;
    vos(body: TelcoVoucherRequestDTO, auth: IAuthParam, ipAddress?: string): Promise<TelcoApiResponseDTO>;
    protected readonly transactionResponseFields: (keyof TransactionEntity)[];
    status(ref: string, auth: IAuthParam): Promise<TelcoApiResponseDTO>;
    getCodes(): Promise<Record<EProductPurchaseResponseCode, string>>;
    private processPurchase;
    private roundMoney;
    private executeWithRetry;
    private respond;
    getWalletBalance(clientId: string): Promise<{
        balance: number;
    }>;
    private getClientWallet;
    private creditWallet;
    private isAllowedIp;
    private mapTransactionStatus;
}
