import { Observable } from 'rxjs';
/**
 * The configuration object of the tabs
 */
export interface QdPageTabsConfig {
    /**
     * Config for save button
     *
     * @default enabled with label "Save"
     */
    submitButton?: QdPageTabsSubmitButtonConfig;
    /**
     * Configure the tab that is selected initially here
     *
     * @default first not disabled tab
     */
    selectedIndex?: number;
    /**
     * Determines whether tabs are horizontally scrollable on screens smaller than md (960px).
     *
     * @default false
     */
    scrollabe?: boolean;
    /**
     * Enables synchronization of the active tab with the Angular Router.
     *
     * - When enabled, the query parameter `?tab=<tabName>` will be parsed on load.
     * - If a matching tab name is found, it will be activated.
     * - When a tab is changed, the query parameter will be updated.
     *
     * Requires each tab to define a unique `name`.
     *
     * @default false
     */
    connectWithRouter?: boolean;
}
/**
 * Configuration model for the page tabs save button
 */
interface QdPageTabsSubmitButtonConfig {
    /**
     * Translation key for save button
     */
    i18n?: string;
    /**
     * A click handler, fired on click
     */
    handler?: (tabControlValues: any[]) => void;
    /**
     * Whether the save button is disabled or not
     *
     * * @default false
     */
    isDisabled?: boolean;
    /**
     * Whether the save button is hidden or not
     *
     * * @default false
     */
    isHidden?: boolean;
}
/**
 * Interface for the configuration of a page tab.
 */
export interface QdPageTabConfig {
    /**
     * @description Renders a label.
     */
    label: {
        i18n: string;
    };
    /**
     * Whether the tab is disabled or not
     *
     * * @default false
     */
    isDisabled?: boolean;
    /**
     * Defines the id of the tab. Can be used for direct tab jumping.
     */
    id?: string;
    /**
     * Represents up to two numeric counters displayed as a badge, either as a static object or an `Observable`.
     *
     * Possible states:
     * - `"positive"` (green)
     * - `"critical"` (red)
     *
     * #### Reactivity
     * Using an `Observable` ensures that updates are detected **without requiring a new object reference**.
     *
     * #### Usage
     * ```ts
     * // Synchronous (static values)
     * tabConfig = { ..., counters: { positive: 5, critical: 2 } };
     *
     * // Asynchronous (reactive values)
     * tabConfig = { ..., counters: of({ positive: 3, critical: 1 }) };
     * ```
     */
    counters?: QdPageTabCounters | Observable<QdPageTabCounters>;
    /**
     * Unique name of this tab.
     *
     * - Used for query param routing via `?tab=<tabName>`.
     * - Required when `connectWithRouter` is enabled.
     */
    name?: string;
}
/**
 * Represents up to two numeric counters.
 */
export interface QdPageTabCounters {
    /**
     * Counter for a "positive" state.
     * Displays a numeric value if greater than 0.
     */
    positive?: number;
    /**
     * Counter for a "critical" state.
     * Displays a numeric value if greater than 0.
     */
    critical?: number;
}
export {};
//# sourceMappingURL=page-tabs-config.d.ts.map