import { CardStatusCodeType, ChargeCardWithUser } from '@zeniai/client-epic-state';
export declare const CHARGE_CARD_BULK_SELECTION_LIMIT = 20;
export type BulkActionType = "lock" | "unlock" | "close" | "update_limit" | "revoke_invite";
export interface CardBulkSelectInfo {
    isSelectableForBulkAction: boolean;
    isSelectableForBulkActionSelectAll: boolean;
    reason?: string;
}
/**
 * Returns `true` when the given status code marks the card as closed
 * (either bank-initiated `closed` or customer-initiated
 * `closed_by_customer`). Closed cards can't be acted on by bulk
 * operations or assigned to a card policy, so consumers use this as a
 * single source of truth for the "is this card terminated" rule.
 */
export declare const isClosedCardStatus: (code: CardStatusCodeType) => boolean;
/**
 * Determines if a card is selectable for a bulk action based on:
 * 1. Card status matching (must match first selected card's status)
 * 2. Action-specific rules
 */
export declare const isCardSelectableForBulkAction: (card: ChargeCardWithUser, actionType: BulkActionType | undefined, firstSelectedCardStatus?: CardStatusCodeType) => boolean;
/**
 * Filters cards to only those selectable for the given action
 */
export declare const getSelectableCardsForAction: (cards: ChargeCardWithUser[], actionType: BulkActionType, firstSelectedCardStatus?: CardStatusCodeType) => ChargeCardWithUser[];
/**
 * Gets the exception message to display for non-selectable cards
 */
export declare const getExceptionMessage: (card: ChargeCardWithUser, actionType: BulkActionType | undefined, firstSelectedCardStatus?: CardStatusCodeType) => string;
/**
 * Determines which bulk actions are available for the selected cards
 */
export declare const getAvailableBulkActions: (selectedCards: ChargeCardWithUser[]) => BulkActionType[];
