import { APIService } from '../../services/api.service';
import { BuyProductDTO, ProductRequirementDTO } from '../product/products.dto';
import { TransactionEntity } from '../product/transaction.entity';
import { ICPCustomerLookup, ICPResp, ICPVendValue } from './coralpay.interface';
import { EProductPackage, EProductPurchaseErrorCode } from '../product/product.enum';
import { CPCustomerLookup, CPVerification } from './coralpay.dto';
import { Repository } from 'typeorm';
import { CoralPayTransactionEntity } from './coralpay.entity';
import { Observable } from 'rxjs';
export declare class CoralPayService {
    protected apiS: APIService;
    protected readonly repo: Repository<CoralPayTransactionEntity>;
    baseAPI: string;
    get username(): string;
    get password(): string;
    get headers(): {
        Authorization: string;
    };
    constructor(apiS: APIService, repo: Repository<CoralPayTransactionEntity>);
    crawlAllPackages(): Promise<{
        packages: {
            id: number;
            name: string;
            slug: string;
            amount: number;
            billerId: number;
            sequenceNumber: number;
        }[];
        biller: {
            id: number;
            name: string;
            slug: string;
            groupId: number;
            skipValidation: boolean;
            handleWithProductCode: boolean;
            isRestricted: boolean;
            hideInstitution: boolean;
        };
        group: {
            id: number;
            name: string;
            slug: string;
        };
    }[]>;
    readonly packageMap: (ppackage: EProductPackage) => {
        cProductPackage: import("./coralpay.enum").ECPProductPackage;
        cBiller: import("./coralpay.enum").ECPBiller;
        price?: number;
        inactive?: boolean;
    };
    protected createTransactionRecord(data: CoralPayTransactionEntity): Observable<CoralPayTransactionEntity>;
    protected updateTransactionRecord(transactionID: string, data: Partial<CoralPayTransactionEntity>): Observable<boolean>;
    getTransactionRecordByID(transactionID: string): Promise<CoralPayTransactionEntity>;
    getRecentTransactionRecords(): Promise<CoralPayTransactionEntity[]>;
    getBillerGroups(): Promise<{
        id: number;
        name: string;
        slug: string;
    }[]>;
    protected getBillersByGroup(groupSlug: string): Promise<{
        id: number;
        name: string;
        slug: string;
        groupId: number;
        skipValidation: boolean;
        handleWithProductCode: boolean;
        isRestricted: boolean;
        hideInstitution: boolean;
    }[]>;
    protected getPackagesByBiller(billerSlug: string): Promise<{
        id: number;
        name: string;
        slug: string;
        amount: number;
        billerId: number;
        sequenceNumber: number;
    }[]>;
    verification(data: CPVerification): {
        message: string;
    };
    customerEnquiry(data: CPCustomerLookup): Observable<{
        needsLookup?: boolean;
        errorCode?: EProductPurchaseErrorCode;
        userData?: ICPCustomerLookup['responseData'];
        raw?: ICPCustomerLookup;
        error?: any;
    }>;
    protected vendValue(data: ICPVendValue): Observable<ICPResp<any>>;
    buyPackage(transE: TransactionEntity, param: BuyProductDTO, requestInfo: ProductRequirementDTO): Observable<PartialTE>;
}
type PartialTE = Partial<TransactionEntity>;
export {};
