import { Amount, CashbackDetailSelectorView, ChargeCardBulkActionView, ChargeCardListSelectorView, ChargeCardListUIState, ChargeCardRowActionView, ChargeCardViewSortKey, CreditLimitFrequency, DepositAccountListWithDebitCardIssued, ID, LoggedInUser, Person, SortOrder } from '@zeniai/client-epic-state';
import { ChargeCardPromoType } from './helpers/ChargeCardUtils';
import { ChargeCardTypeOption } from './helpers/IssueChargeCardUtils';
export interface ChargeCardListPageProps {
    admins: Person[];
    bulkActionView: ChargeCardBulkActionView;
    cashbackRate: number;
    chargeCardCashbackDetailState: CashbackDetailSelectorView;
    chargeCardListView: ChargeCardListSelectorView;
    companyChargeCardInfoCreditAccountLimit: number;
    companyLegalName: string;
    controllerEmails: string[];
    creditCardPayNowThreshold: number;
    creditLimit: Amount;
    depositAccountListWithDebitCardIssued: DepositAccountListWithDebitCardIssued;
    isCardControlsEnabled: boolean;
    isCardsCommentingEnabled: boolean;
    isCashbackFeatureEnabled: boolean;
    isChargeCardFeatureEnabled: boolean;
    isChargeCardPaymentHistoryFeatureEnabled: boolean;
    isChargeCardSetupEnabled: boolean;
    isCompanyInterestedInChargeCard: boolean;
    isCreditCardProductVisibleForExpressInterest: boolean;
    isDebitCardFeatureEnabled: boolean;
    isDebitCardSetupEnabled: boolean;
    isEarlyPayEnabled: boolean;
    rowActionView: ChargeCardRowActionView;
    searchText: string;
    showPayNowInfoTooltip: boolean;
    signedInUser: LoggedInUser;
    uiState: ChargeCardListUIState;
    /**
     * Optional Cards AI CFO hero element rendered above the credit / debit /
     * cashback row when the user has no cards yet and AI CFO access is enabled.
     * The hero is owned by the host screen, so this component stays presentational.
     */
    cardsAiCfoHero?: React.ReactNode;
    isAiCfoAccessEnabled?: boolean;
    /** Company-level charge card product flag; defaults true for story hosts. */
    isChargeCardEnabledOnCompany?: boolean;
    /** Company-level debit card product flag; defaults true for story hosts. */
    isDebitCardEnabledOnCompany?: boolean;
    /**
     * When true, renders the fixed "INTRODUCING — Cards Policy" callout
     * anchored to the policy icon in the navbar. Visibility (feature gate,
     * role, "seen" persistence) is computed by the host screen; this
     * component is purely presentational.
     */
    isPolicyIntroTooltipVisible?: boolean;
    /**
     * Number of AI-CFO-triggered card creations currently in flight. When > 0,
     * the page renders that many `ChargeCardListSkeletonRow`s at the top of
     * the table as placeholders for the cards being issued. The real cards
     * land in `chargeCardListView.cards` once the bulk POST succeeds (via the
     * existing `updateChargeCardList({keepExistingListItems: true})` epic
     * action) and the host clears this back to 0.
     */
    pendingCreationCount?: number;
    navigateToCreditCardPaymentHistoryPage: () => void;
    navigateToCreditCardPaymentPage: (source: string, clickItem: string) => void;
    onBackClick: () => void;
    onChargeCardResendInviteClick: (id: ID) => void;
    onChargeCardRevokeInviteClick: (id: ID) => void;
    onChargeCardRowClick: (id: ID, index: number) => void;
    onClickSetupIcon: () => void;
    onClickStatementsIcon: () => void;
    onCloseChargeCard: (cardId: ID, reason?: string) => void;
    onCloseChargeCardList: (cardIds: ID[], reason?: string) => void;
    onColumnSortConfigChanged: (sortKey: ChargeCardViewSortKey, sortOrder: SortOrder) => void;
    onCreateNowClick: (cardType: ChargeCardTypeOption) => void;
    onFetchChargeCardsRecurringExpenses: (cardIds: ID[]) => void;
    onFetchDepositAccountLimit: (connectedAccountId: ID, cardId: ID) => void;
    onIssueCardClick: () => void;
    onLockChargeCard: (cardId: ID, reason?: string) => void;
    onLockChargeCardList: (cardIds: ID[], reason?: string) => void;
    onPromoCardClick: (cardType: ChargeCardPromoType) => void;
    onReloadCards: () => void;
    onRevokeChargeCardList: (cardIds: ID[]) => void;
    onSearchTextChanged: (searchText: string) => void;
    onSetBulkActionCardIds: (cardIds: ID[]) => void;
    onSetRowActionCardId: (cardId: ID | undefined) => void;
    onTotalCashbackClick: () => void;
    onUnlockChargeCard: (id: ID) => void;
    onUnlockChargeCardList: (cardIds: ID[]) => void;
    onUpdateSpendLimit: (cardId: ID, spendLimit: Amount, frequency: CreditLimitFrequency, formattedAmount: string) => void;
    shouldShowPayNowInfoTooltip: (show: boolean) => void;
    updateChargeCardListSpendLimit: (cardIds: ID[], spendLimit: Amount, frequency: CreditLimitFrequency) => void;
    updateChargeCardName: (cardId: ID, name: string) => void;
    onAskAiCfoClick?: () => void;
    onClickMenuIcon?: () => void;
    /**
     * Invoked when the admin clicks the toolbar "Card policy" icon between the
     * search and more icons. Host wires this to navigate to the card policy
     * page; presentation owns no admin/role checks beyond what the host gates.
     */
    onClickPolicyIcon?: () => void;
    /**
     * Invoked when the user dismisses the policy intro callout (via the X
     * button or by clicking its CTA). Hosts persist a per-tenant "seen" flag
     * so the callout does not re-appear on subsequent visits.
     */
    onPolicyIntroTooltipClose?: () => void;
}
declare const ChargeCardListPage: ({ chargeCardListView, searchText, admins, companyLegalName, onFetchChargeCardsRecurringExpenses, onFetchDepositAccountLimit, onCloseChargeCard, onCloseChargeCardList, onLockChargeCard, onLockChargeCardList, onUnlockChargeCardList, updateChargeCardListSpendLimit, onUpdateSpendLimit, isCardControlsEnabled, isCardsCommentingEnabled, isCashbackFeatureEnabled, creditCardPayNowThreshold, isChargeCardFeatureEnabled, isCompanyInterestedInChargeCard, isCreditCardProductVisibleForExpressInterest, isDebitCardFeatureEnabled, isDebitCardSetupEnabled, isChargeCardSetupEnabled, isChargeCardEnabledOnCompany, isDebitCardEnabledOnCompany, companyChargeCardInfoCreditAccountLimit, controllerEmails, onRevokeChargeCardList, depositAccountListWithDebitCardIssued, chargeCardCashbackDetailState, uiState, signedInUser, creditLimit, cashbackRate, onSearchTextChanged, navigateToCreditCardPaymentHistoryPage, onClickSetupIcon, isChargeCardPaymentHistoryFeatureEnabled, isEarlyPayEnabled, onClickStatementsIcon, onChargeCardRowClick, updateChargeCardName, onChargeCardResendInviteClick, onChargeCardRevokeInviteClick, onUnlockChargeCard, onIssueCardClick, onBackClick, onReloadCards, onTotalCashbackClick, onColumnSortConfigChanged, onClickMenuIcon, onPromoCardClick, onCreateNowClick, showPayNowInfoTooltip, navigateToCreditCardPaymentPage, shouldShowPayNowInfoTooltip, rowActionView, bulkActionView, onSetRowActionCardId, onSetBulkActionCardIds, isAiCfoAccessEnabled, onAskAiCfoClick, cardsAiCfoHero, onClickPolicyIcon, isPolicyIntroTooltipVisible, onPolicyIntroTooltipClose, pendingCreationCount, }: ChargeCardListPageProps) => import("react/jsx-runtime").JSX.Element;
export default ChargeCardListPage;
export declare const getPromoSlidingTextList: (cardType: ChargeCardPromoType, cashbackRate: number, creditLimit?: Amount) => string[];
