/** * Resolves cards visibility state for the caller's tenant via the * `zeni_cards_visibility_config` Statsig dynamic config. * * Expected JSON shape (Statsig configValue): * ``` * { * "hide_tenant_ids": ["tenant_abc", ...], * "shutting_down_tenant_ids": ["tenant_xyz", ...], * "shutdown_date": "July 01, 2026", * "default_support_email": "team@zeni.ai", * "cardswitcher_url": "https://...", * "is_hide_enabled_for_all_tenants": false, * "is_shutting_down_for_all_tenants": false * } * ``` * * Two independent modes (product ensures a tenant is only in one list at a time): * - **Hide mode** (`hide_tenant_ids`): cards enabled but no cards issued — hide cards * nav tab, card roles in People, charge-card section in BankConnections. * - **Shutdown banner mode** (`shutting_down_tenant_ids`): cards issued but being * sunset — keep full cards UI, show amber shutdown banner on the Cards page. * * `tenantId` and `receiverEmails` are passed in (not read inside the hook) because * they live in the host app's Redux state, which `web-components` does not depend on * directly. The support email shown in the shutdown drawer is sourced from * `receiverEmails[0]` when available, falling back to `default_support_email` from * the Statsig config. */ export interface CardsShutdownContent { cardswitcherUrl: string; shutdownDate: string; supportEmail: string; } export interface ZeniCardsVisibilityConfig { isCardsHidden: boolean; isCardsShuttingDown: boolean; isLoading: boolean; shutdownContent: CardsShutdownContent | null; } export declare function useZeniCardsVisibilityConfig(tenantId: string | undefined, receiverEmails?: string[]): ZeniCardsVisibilityConfig;