import { CardsPromoClickType, ReferrerType } from '@zeniai/client-analytics';
import { AccountingMethod, BillTab, BillsSubTabType, COABalanceTimeFrame, FetchState, ID, RemiSubTabType, RemiTabType, ReportID, TimeSpanIdForAverage, TopExTimePeriod } from '@zeniai/client-epic-state';
export type CardType = ReportID | "information_card" | "zeni_promo_card" | "expense_automation_card" | "rewards_card" | "treasury_promo_card" | "ai_cfo_dashboard_card";
export declare class CardData {
    dimension: CardDimension;
    cardIndex: number;
    cardType: CardType;
    fetchState: FetchState;
    disableAnimations: boolean;
    /** When true, the card spans the full dashboard row (all columns), not a single column. */
    spansFullDashboardWidth: boolean;
    constructor(dimension: CardDimension, cardIndex: number, cardType: CardType, fetchState: FetchState, disableAnimations?: boolean, 
    /** When true, the card spans the full dashboard row (all columns), not a single column. */
    spansFullDashboardWidth?: boolean);
}
/** Note that card dimensions should be numbers representing absolute pixels.
 * Do not use percentage
 * Do not use 'px' suffix
 */
export declare class CardDimension {
    width: number;
    height: number;
    marginTop: number;
    marginRight: number;
    marginBottom: number;
    marginLeft: number;
    constructor(width: number, height: number, marginTop: number, marginRight: number, marginBottom: number, marginLeft: number);
    /** Dimension in css units */
    get widthCss(): string;
    get heightCss(): string;
    get marginTopCss(): string;
    get marginRightCss(): string;
    get marginBottomCss(): string;
    get marginLeftCss(): string;
    /**
     * returns total width including the horizontal margins
     */
    get totalWidth(): number;
    set totalWidth(totalWidth: number);
    /**
     * returns total height including the vertical margins
     */
    get totalHeight(): number;
    set totalHeight(totalHeight: number);
}
export type CardAction = (cardIndex: number, cardType: CardType, referrer?: ReferrerType, clickType?: CardsPromoClickType) => void;
export type BalanceTimeframe = COABalanceTimeFrame | TopExTimePeriod;
export interface CardActions {
    onCardClick: CardAction;
    onReloadData: CardAction;
    onCloseClick?: CardAction;
    onCardBtnClick?: (type: CardType, targetId?: ID) => void;
    onCategoryClick?: (category: string, tab?: BillTab | RemiTabType, subTab?: BillsSubTabType | RemiSubTabType) => void;
    onDontShowAgainClick?: () => void;
    onIntroOutsideClick?: () => void;
    onRemindMeLaterClick?: () => void;
    onSaveClick?: (reportID: CardType, accountingMethod: AccountingMethod, timeSpanIdForAverage: TimeSpanIdForAverage) => void;
    onTimeframeChange?: (reportID: CardType, newTimeframe: BalanceTimeframe) => void;
    onUpdateSelectedInsightIndex?: (targetIndex: number) => void;
    onVideoPlay?: () => void;
}
