import { PrismaService } from '../../database/prisma.service';
import { EasebuzzService } from './easebuzz.service';
import { Prisma } from '@prisma/client';
import { ConfigService } from '@nestjs/config';
export declare class WalletService {
    private readonly prisma;
    private readonly easebuzz;
    private readonly config;
    constructor(prisma: PrismaService, easebuzz: EasebuzzService, config: ConfigService);
    private publicUrl;
    private normalizeOrigin;
    private easebuzzReturnUrl;
    private easebuzzEmailFromUser;
    private portalOrigin;
    private easebuzzPhoneFromUser;
    getWalletSummaryForShop(args: {
        shopId: string;
        take: number;
    }): Promise<{
        shopId: string;
        balance: number;
        currency: string;
        updatedAt: Date;
        recentTransactions: {
            id: string;
            createdAt: Date;
            type: import("@prisma/client").$Enums.WalletTxnType;
            amount: number;
            status: import("@prisma/client").$Enums.WalletTxnStatus;
            currency: string;
            purpose: string | null;
            referenceId: string | null;
            meta: Prisma.JsonValue;
        }[];
    }>;
    listWalletTransactionsForShop(args: {
        shopId: string;
        page: number;
        limit: number;
    }): Promise<{
        page: number;
        limit: number;
        total: number;
        items: {
            id: string;
            createdAt: Date;
            type: import("@prisma/client").$Enums.WalletTxnType;
            amount: number;
            status: import("@prisma/client").$Enums.WalletTxnStatus;
            currency: string;
            purpose: string | null;
            referenceId: string | null;
            meta: Prisma.JsonValue;
        }[];
    }>;
    createWalletTopupCheckout(args: {
        userId: string;
        shopId: string;
        amountToTopupInr: number;
        portalPublicUrl?: string | null;
    }): Promise<{
        checkoutUrl: string;
        attemptId: string;
        txnid: string;
    }>;
    createPlanPurchaseCheckout(args: {
        adminUserId: string;
        shopId: string;
        planCode: string;
        amountToTopupInr: number;
        portalPublicUrl?: string | null;
    }): Promise<{
        checkoutUrl: string;
        attemptId: string;
        txnid: string;
    }>;
    applyWalletTopupOnSuccess(args: {
        attemptId: string;
        easebuzzPayload: Record<string, any>;
    }): Promise<{
        ok: boolean;
    } | {
        ok: boolean;
        alreadyProcessed: boolean;
    }>;
    applyPlanPurchaseOnSuccess(args: {
        attemptId: string;
        easebuzzPayload: Record<string, any>;
    }): Promise<{
        ok: boolean;
        attempt: {
            id: string;
        };
    } | {
        ok: boolean;
        alreadyProcessed: boolean;
    }>;
    debitWalletForPlanIfEnough(args: {
        adminUserId: string;
        shopId: string;
        planCode: string;
    }): Promise<{
        ok: boolean;
        needed: number;
        price: number;
    }>;
    getPaymentAttemptPortalOrigin(attemptId: string): Promise<string>;
}
