import React from 'react';
/**
 * Interface for a Tab view state
 */
export interface UITabView {
    /**
     * The id of the current selected tab in the tab view.
     * @optional
     * @default first tab in the view will be the selected one
     */
    selectedId?: string | undefined;
    /**
     * The unique id for this tab view.
     * It is a global id for this tab view.
     */
    id: string;
    /**
     * The list of options for this tab.
     */
    tabs?: UITabViewOption[];
}
/**
 * Interface for one tab option.
 */
export interface UITabViewOption {
    /**
     * Unique id for the tab.
     * Must be unique across all tabs, if used in a tab group.
     */
    id: string;
    /**
     * The label of the tab.
     */
    label: string;
    /**
     * The index of the tab.
     * @optional
     * @default undefined
     */
    index?: number;
    /**
     * The action to be called when the tab is selected.
     * @returns void
     */
    action?: () => void;
    /**
     * This is added for convenience.
     * However, if using a react component, it will make this tab not
     * configurable via json.
     * @optional use with caution
     */
    content?: React.ReactNode;
}
/**
 * A model to handle tabs in the app.
 */
export declare class TabViewModel {
    id: string;
    selectedId: string | undefined;
    tabs: UITabViewOption[];
    constructor(tab: UITabView);
    get content(): React.ReactNode | null;
    setSelectedId: (value?: string | undefined) => void;
    setTabs: (tabs: UITabViewOption[]) => void;
    onSelected: (id: string) => void;
}
