import { Repository } from 'typeorm';
import { BaseService } from 'src/services/base.service';
import { TransactionEntity } from 'src/modules/product/transaction.entity';
import { PartialTE, TransactionQueryDTO } from 'src/dtos/transaction.dto';
import { ProviderService } from '../../services/provider.service';
import { ISearchResponse, SDKWalletTransactionService } from '@serene-dev/la-nest-library';
import { WebhookService } from './webhook.service';
import { ETelco } from 'src/enums/telco.enum';
import { EServiceKey } from './product.enum';
import { IAuthParam } from '../authentication/interfaces/authentication.interface';
import { ClientWebhookConfigEntity } from 'src/entities/client-webhook.entity';
export declare class TransactionService extends BaseService<TransactionEntity, TransactionQueryDTO> {
    protected readonly repo: Repository<TransactionEntity>;
    webhookRepo: Repository<ClientWebhookConfigEntity>;
    providerService: ProviderService;
    webhookService: WebhookService;
    walletTransactionService: SDKWalletTransactionService;
    static path: string;
    constructor(repo: Repository<TransactionEntity>, webhookRepo: Repository<ClientWebhookConfigEntity>, providerService: ProviderService, webhookService: WebhookService, walletTransactionService: SDKWalletTransactionService);
    private readonly sensitiveFields;
    private readonly freeResponseCodes;
    formatTransaction<T extends PartialTE>(_trans: T, auth?: IAuthParam, fields?: (keyof T)[]): T;
    create(param: Partial<TransactionEntity>, requestPayload: object, telco: ETelco, serviceKey: EServiceKey): Promise<TransactionEntity>;
    notifyParties({ ...trans }: TransactionEntity): Promise<void>;
    private mapTransactionToResponseCode;
    getByRef(ref: string, auth: IAuthParam): Promise<TransactionEntity>;
    update(id: string, data: Partial<TransactionEntity>): Promise<TransactionEntity>;
    search(query: TransactionQueryDTO, auth?: IAuthParam): Promise<ISearchResponse<TransactionEntity>>;
}
