import { ChainvineCampaignResponseForUser, ChainvineUser, ChainvineUserWidgetAndStatsResponse, ChainvineWidgetResponse, ClientConfig, TableColumns, UserHistoryResponse } from "@chainvine/sdk";
import { UserReferralsResponse } from "@chainvine/sdk/lib/types";
import { ThemeConfig } from "antd";
export type ChainvineWallet = {
    address: string;
    network: "ethereum";
};
export type ChainvineUserType = {
    wallet?: ChainvineWallet;
    email?: string;
    identifier?: string | number;
};
/**
 * Tabs
 */
export type ChainvineTabContainerProps = {
    title?: string;
};
export type StatsCardProps = {
    title: string;
    value: string;
    prefix?: string;
    suffix?: string;
};
export type StatsTabProps = {
    statistics?: StatsCardProps[];
};
/**
 * Utility
 */
export type ChainvineWidgetControlProps = {
    onClose?: () => void;
    theme?: "Light" | "Dark";
    themeConfig?: ThemeConfig;
    mode?: "Popup" | "Inline";
};
/**
 * Configuration
 */
export type ChainvineWidgetDisplayAdminConfiguration = {
    hide_referral_link?: boolean;
    referral_link?: string;
    remove_tabs?: string[];
};
export type ChainvineWidgetDisplayConfiguration = ChainvineWidgetDisplayAdminConfiguration & {
    user?: ChainvineUserType;
};
/**
 * Dictates where the widget should be placed around its child anchor component.
 *
 * Extension of Tooltip.TooltipPlacement type from @antd.'
 * https://ant.design/components/tooltip#api
 *
 */
export type ChainvineWidgetPlacement = "top" | "left" | "right" | "bottom" | "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom";
/**
 * Integration Props
 */
export type ChainvineWidgetProps = {
    /**
     * The wallet address of the user.
     */
    userWalletAddress: string;
    clientConfig?: ClientConfig;
    campaignId: string;
    isOpen?: boolean;
    onClose?: () => void;
    onOpen?: () => void;
    onError?: (error: Error) => void;
    /**
     * Controls the `z-index` of the widget.
     */
    zIndex?: number;
    /**
     * @deprecated
     */
    placement?: ChainvineWidgetPlacement;
    theme?: "Light" | "Dark";
    themeConfig?: ThemeConfig;
    mode?: "Popup" | "Inline";
};
/**
 * State
 */
export type ChainvineWidgetState = {
    campaign_id?: string;
    userClient?: ChainvineUser;
    campaign?: ChainvineCampaignResponseForUser;
    config?: ChainvineWidgetResponse;
    user?: ChainvineUserType;
    referral_link?: string;
    stats?: ChainvineUserWidgetAndStatsResponse;
    referrals?: UserReferralsResponse["referrals"];
    events?: UserHistoryResponse["events"];
    referral_columns?: TableColumns[];
    history_columns?: TableColumns[];
    clientConfig: ClientConfig;
    toggle_open: boolean;
};
