import type { Db, BalanceEntryType, MarketplacePluginOptions } from "../types.js"; export declare class PayoutService { private db; private options; constructor(db: Db, options: MarketplacePluginOptions); addLedgerEntry(data: { vendorId: string; type: BalanceEntryType; amountCents: number; referenceType?: string; referenceId?: string; description?: string; }): Promise<{ id: string; type: string; createdAt: Date; description: string | null; vendorId: string; referenceId: string | null; referenceType: string | null; amountCents: number; runningBalanceCents: number; } | undefined>; getBalance(vendorId: string): Promise; getLedger(vendorId: string, limit?: number): Promise<{ id: string; vendorId: string; type: string; amountCents: number; runningBalanceCents: number; referenceType: string | null; referenceId: string | null; description: string | null; createdAt: Date; }[]>; getPayoutById(id: string): Promise<{ id: string; vendorId: string; subOrderId: string | null; amount: number; status: string; payoutMethod: string | null; externalReference: string | null; periodStart: Date | null; periodEnd: Date | null; grossAmount: number | null; deductions: { type: string; amount: number; reference?: string; }[] | null; netAmount: number | null; failedAt: Date | null; failureReason: string | null; retryCount: number; processedAt: Date | null; metadata: Record | null; createdAt: Date; } | null>; listPayouts(filters?: { vendorId?: string; status?: string; }): Promise<{ id: string; vendorId: string; subOrderId: string | null; amount: number; status: string; payoutMethod: string | null; externalReference: string | null; periodStart: Date | null; periodEnd: Date | null; grossAmount: number | null; deductions: { type: string; amount: number; reference?: string; }[] | null; netAmount: number | null; failedAt: Date | null; failureReason: string | null; retryCount: number; processedAt: Date | null; metadata: Record | null; createdAt: Date; }[]>; /** * Run payout cycle for eligible vendors. * Per RFC ยง5.5: * 1. Find vendors with matching payout_schedule * 2. Check balance >= payout_minimum_cents * 3. Only include deliveries older than holdback_days * 4. Calculate deductions (refunds, adjustments) * 5. Create payout record + balance ledger debit */ runPayoutCycle(): Promise>; retryPayout(payoutId: string): Promise<{ id: string; vendorId: string; subOrderId: string | null; amount: number; status: string; payoutMethod: string | null; externalReference: string | null; periodStart: Date | null; periodEnd: Date | null; grossAmount: number | null; deductions: { type: string; amount: number; reference?: string; }[] | null; netAmount: number | null; failedAt: Date | null; failureReason: string | null; retryCount: number; processedAt: Date | null; metadata: Record | null; createdAt: Date; } | undefined>; } //# sourceMappingURL=payout.d.ts.map