import { IDisposable } from '@lumino/disposable';
import { ISignal } from '@lumino/signaling';
import { VirtualElement } from '@lumino/virtualdom';
/**
 * An object which holds data related to an object's title.
 *
 * #### Notes
 * A title object is intended to hold the data necessary to display a
 * header for a particular object. A common example is the `TabPanel`,
 * which uses the widget title to populate the tab for a child widget.
 *
 * It is the responsibility of the owner to call the title disposal.
 */
export declare class Title<T> implements IDisposable {
    /**
     * Construct a new title.
     *
     * @param options - The options for initializing the title.
     */
    constructor(options: Title.IOptions<T>);
    /**
     * A signal emitted when the state of the title changes.
     */
    get changed(): ISignal<this, void>;
    /**
     * The object which owns the title.
     */
    readonly owner: T;
    /**
     * Get the label for the title.
     *
     * #### Notes
     * The default value is an empty string.
     */
    get label(): string;
    /**
     * Set the label for the title.
     */
    set label(value: string);
    /**
     * Get the mnemonic index for the title.
     *
     * #### Notes
     * The default value is `-1`.
     */
    get mnemonic(): number;
    /**
     * Set the mnemonic index for the title.
     */
    set mnemonic(value: number);
    /**
     * Get the icon renderer for the title.
     *
     * #### Notes
     * The default value is undefined.
     */
    get icon(): VirtualElement.IRenderer | undefined;
    /**
     * Set the icon renderer for the title.
     *
     * #### Notes
     * A renderer is an object that supplies a render and unrender function.
     */
    set icon(value: VirtualElement.IRenderer | undefined);
    /**
     * Get the icon class name for the title.
     *
     * #### Notes
     * The default value is an empty string.
     */
    get iconClass(): string;
    /**
     * Set the icon class name for the title.
     *
     * #### Notes
     * Multiple class names can be separated with whitespace.
     */
    set iconClass(value: string);
    /**
     * Get the icon label for the title.
     *
     * #### Notes
     * The default value is an empty string.
     */
    get iconLabel(): string;
    /**
     * Set the icon label for the title.
     *
     * #### Notes
     * Multiple class names can be separated with whitespace.
     */
    set iconLabel(value: string);
    /**
     * Get the caption for the title.
     *
     * #### Notes
     * The default value is an empty string.
     */
    get caption(): string;
    /**
     * Set the caption for the title.
     */
    set caption(value: string);
    /**
     * Get the extra class name for the title.
     *
     * #### Notes
     * The default value is an empty string.
     */
    get className(): string;
    /**
     * Set the extra class name for the title.
     *
     * #### Notes
     * Multiple class names can be separated with whitespace.
     */
    set className(value: string);
    /**
     * Get the closable state for the title.
     *
     * #### Notes
     * The default value is `false`.
     */
    get closable(): boolean;
    /**
     * Set the closable state for the title.
     *
     * #### Notes
     * This controls the presence of a close icon when applicable.
     */
    set closable(value: boolean);
    /**
     * Get the dataset for the title.
     *
     * #### Notes
     * The default value is an empty dataset.
     */
    get dataset(): Title.Dataset;
    /**
     * Set the dataset for the title.
     *
     * #### Notes
     * This controls the data attributes when applicable.
     */
    set dataset(value: Title.Dataset);
    /**
     * Test whether the title has been disposed.
     */
    get isDisposed(): boolean;
    /**
     * Dispose of the resources held by the title.
     *
     * #### Notes
     * It is the responsibility of the owner to call the title disposal.
     */
    dispose(): void;
    private _label;
    private _caption;
    private _mnemonic;
    private _icon;
    private _iconClass;
    private _iconLabel;
    private _className;
    private _closable;
    private _dataset;
    private _changed;
    private _isDisposed;
}
/**
 * The namespace for the `Title` class statics.
 */
export declare namespace Title {
    /**
     * A type alias for a simple immutable string dataset.
     */
    type Dataset = {
        readonly [key: string]: string;
    };
    /**
     * An options object for initializing a title.
     */
    interface IOptions<T> {
        /**
         * The object which owns the title.
         */
        owner: T;
        /**
         * The label for the title.
         */
        label?: string;
        /**
         * The mnemonic index for the title.
         */
        mnemonic?: number;
        /**
         * The icon renderer for the title.
         */
        icon?: VirtualElement.IRenderer;
        /**
         * The icon class name for the title.
         */
        iconClass?: string;
        /**
         * The icon label for the title.
         */
        iconLabel?: string;
        /**
         * The caption for the title.
         */
        caption?: string;
        /**
         * The extra class name for the title.
         */
        className?: string;
        /**
         * The closable state for the title.
         */
        closable?: boolean;
        /**
         * The dataset for the title.
         */
        dataset?: Dataset;
    }
}
