import { BankAccountService } from './bank-account.service';
import { CreateTransferDto, ListAppointmentPayoutsQueryDto, OnboardingLinkDto } from './dto/payout-account.dto';
export declare class BankAccountController {
    private readonly bankAccountService;
    constructor(bankAccountService: BankAccountService);
    private getSalonId;
    createPayoutAccount(req: any, dto: OnboardingLinkDto): Promise<{
        businessType: string;
        payoutsEnabled: boolean;
        detailsSubmitted: boolean;
        requirementsCurrentlyDue: string[];
        disabledReason: string;
        url: string;
        expiresAt: Date;
    }>;
    getPayoutAccount(req: any): Promise<{
        configured: boolean;
    } | {
        bankAccounts: {
            id: string;
            bankName: string | null;
            last4: string;
            country: string;
            currency: string;
            accountHolderName: string | null;
            isDefault: boolean;
            status: string;
        }[];
        businessType: string;
        payoutsEnabled: boolean;
        detailsSubmitted: boolean;
        requirementsCurrentlyDue: string[];
        disabledReason: string;
        configured: boolean;
        requirementErrors: string[];
        stripeAccountId: string;
        country: string;
        currency: string;
    }>;
    refreshOnboardingLink(req: any, dto: OnboardingLinkDto): Promise<{
        businessType: string;
        payoutsEnabled: boolean;
        detailsSubmitted: boolean;
        requirementsCurrentlyDue: string[];
        disabledReason: string;
        url: string;
        expiresAt: Date;
    }>;
    createDashboardLink(req: any): Promise<{
        url: string;
    }>;
    adminGetPayoutAccount(salonId: string): Promise<{
        configured: boolean;
    } | {
        bankAccounts: {
            id: string;
            bankName: string | null;
            last4: string;
            country: string;
            currency: string;
            accountHolderName: string | null;
            isDefault: boolean;
            status: string;
        }[];
        businessType: string;
        payoutsEnabled: boolean;
        detailsSubmitted: boolean;
        requirementsCurrentlyDue: string[];
        disabledReason: string;
        configured: boolean;
        requirementErrors: string[];
        stripeAccountId: string;
        country: string;
        currency: string;
    }>;
    adminCreateTransfer(salonId: string, dto: CreateTransferDto): Promise<{
        transferId: string;
        amount: number;
        currency: string;
        destination: string | import("stripe").Stripe.Account | null;
        created: Date;
    }>;
    adminListAppointmentPayouts(query: ListAppointmentPayoutsQueryDto): Promise<{
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
        summary: {
            totalPaid: number;
            totalTransferred: number;
            pendingAmount: number;
            counts: {
                pending: number;
                processing: number;
                transferred: number;
            };
        };
        data: {
            _id: any;
            salon: any;
            client: any;
            service: any;
            start: any;
            status: any;
            appointmentFee: any;
            depositAmount: any;
            remainingAmount: any;
            paymentStatus: any;
            paymentIntentId: any;
            amountPaid: any;
            payoutStatus: any;
            payoutAmount: any;
            payoutCurrency: any;
            payoutTransferId: any;
            payoutAt: any;
            payoutError: any;
            createdAt: any;
        }[];
    }>;
    adminRunPayouts(): Promise<{
        appointments: number;
        transferred: number;
        failed: number;
        skippedSalons: {
            salonId: string;
            reason: string;
        }[];
        totalAmount: number;
    }>;
}
