import { type ReadSignal, type WriteSignal } from 'maverick.js';
import { Component, ComponentInstance, type HTMLCustomElement, type PropDeclarations } from 'maverick.js/element';
import type { MediaKeyShortcut } from '../../core/keyboard/types';
export declare const toggleButtonProps: PropDeclarations<ToggleButtonProps>;
/**
 * A toggle button is a two-state button that can be either off (not pressed) or on (pressed).
 *
 * @docs {@link https://www.vidstack.io/docs/player/components/buttons/toggle-button}
 * @slot - Used to passing in content for showing pressed and not pressed states.
 * @example
 * ```html
 * <media-toggle-button aria-label="...">
 *   <svg slot="on">...</svg>
 *   <svg slot="off">...</svg>
 * </media-toggle-button>
 * ```
 */
export declare class ToggleButton<T extends ToggleButtonAPI = ToggleButtonAPI> extends Component<T> {
    static el: import("maverick.js/element").CustomElementDefinition<ToggleButtonAPI>;
    protected _pressed: ReadSignal<boolean> | WriteSignal<boolean>;
    protected _keyShortcut?: MediaKeyShortcut;
    constructor(instance: ComponentInstance<T>);
    /**
     * Whether the toggle is currently in a `pressed` state.
     */
    get pressed(): boolean;
    protected onAttach(el: HTMLElement): void;
    protected onConnect(el: HTMLElement): void;
    protected _isARIAPressed(): "true" | "false";
    protected _onPress(event: Event): void;
    protected _onMaybePress(event: Event): void;
}
export interface ToggleButtonAPI {
    props: ToggleButtonProps;
}
export interface ToggleButtonProps {
    /**
     * Whether the button should be disabled (non-interactive).
     */
    disabled: boolean;
    /**
     * Whether the default button appearance should stay visible when elements have been passed inside
     * it.
     */
    defaultAppearance: boolean;
    /**
     * Whether it should start in the on (pressed) state. This prop is only available on the base
     * `<media-toggle-button>`.
     */
    defaultPressed: boolean;
}
export interface MediaToggleButtonElement extends HTMLCustomElement<ToggleButton> {
}
declare global {
    interface MaverickElements {
        'media-toggle-button': MediaToggleButtonElement;
    }
}
