import { Repository } from 'typeorm';
import { BaseService } from 'src/services/base.service';
import { TransactionEntity, TransactionRequirementEntity } from 'src/modules/product/transaction.entity';
import { TransactionQueryDTO } from 'src/dtos/transaction.dto';
import { BuyProductDTO, ProductRequirementDTO } from 'src/modules/product/products.dto';
import { ProviderService } from '../../services/provider.service';
import { WebhookService } from './webhook.service';
import { EProvider } from 'src/enums/provider.enum';
export declare class TransactionService extends BaseService<TransactionEntity, TransactionQueryDTO> {
    protected readonly repo: Repository<TransactionEntity>;
    protected readonly repositoryValue: Repository<TransactionRequirementEntity>;
    providerService: ProviderService;
    webhookService: WebhookService;
    static path: string;
    constructor(repo: Repository<TransactionEntity>, repositoryValue: Repository<TransactionRequirementEntity>, providerService: ProviderService, webhookService: WebhookService);
    create(param: BuyProductDTO & Partial<TransactionEntity>, requirementValues: ProductRequirementDTO, providerKey: EProvider): Promise<TransactionEntity>;
    notifyParties({ provider, ...trans }: TransactionEntity): Promise<void>;
    getByRef(ref: string): Promise<{
        requirement: object;
        productPackageKey: import("./product.enum").EProductPackage;
        productKey: import("./product.enum").EProduct;
        providerKey?: EProvider;
        groupKey: import("./product.enum").EProductGroup;
        ref?: string;
        clientPaymentRef: string;
        recipientName?: string;
        client?: import("../../entities/client.entity").ClientEntity;
        status: import("./product.enum").ETransactionStatus;
        errorCode?: import("./product.enum").EProductPurchaseErrorCode;
        error?: any;
        response?: any;
        price: number;
        provider?: import("../../entities/provider.entity").ProviderEntity;
        active?: boolean;
        id?: string;
        meta?: object;
        createdAt?: string;
        updatedAt?: string;
        creatorId?: string;
        updaterId?: string;
        creator?: import("@serene-dev/la-nest-library").SDKAuthEntity;
        updater?: import("@serene-dev/la-nest-library").SDKAuthEntity;
    }>;
    update(id: string, data: Partial<TransactionEntity>): Promise<TransactionEntity>;
}
