import type { Auth } from '@/types/auth';

export interface AdminNavSharedProps {
    forex_import_pending: boolean;
    adjustments_enabled?: boolean;
}

export interface ImpersonationSharedProps {
    active: boolean;
    readonly: boolean;
    impersonator: { id: number; name: string; email: string } | null;
    user?: { id: number; name: string; email: string } | null;
}

export interface KycSharedProps {
    investor_portal_unlocked: boolean;
    status_value: string | null;
    rejection_reason: string | null;
    require_kyc_for_invest: boolean;
    require_kyc_for_withdraw: boolean;
}

declare module '@inertiajs/core' {
    export interface InertiaConfig {
        sharedPageProps: {
            name: string;
            auth: Auth;
            sidebarOpen: boolean;
            isMobile: boolean;
            adminNav: AdminNavSharedProps;
            impersonation: ImpersonationSharedProps;
            kyc: KycSharedProps;
            [key: string]: unknown;
        };
    }
}
