import { TNode, Value, type Signal } from '@tempots/dom'; export type ToggleStatus = 'closed' | 'start-opening' | 'opening' | 'opened' | 'closing' | 'start-closing'; export type AnimatedToggleOptions = { initialStatus?: ToggleStatus; openedAfter: (cb: () => void) => () => void; closedAfter: (cb: () => void) => () => void; /** When true, skips animation delays and transitions instantly. */ reducedMotion?: Signal; }; export declare function useAnimatedToggle({ initialStatus, openedAfter, closedAfter, reducedMotion, }: AnimatedToggleOptions): { status: Signal; open: () => void; close: () => void; toggle: () => void; setOpen: (v: boolean) => void; display: import("@tempots/core").Computed; isClosed: import("@tempots/core").Computed; isStartOpening: import("@tempots/core").Computed; isOpening: import("@tempots/core").Computed; isOpened: import("@tempots/core").Computed; isClosing: import("@tempots/core").Computed; isStartClosing: import("@tempots/core").Computed; dispose: () => void; listenOnClosed: (fn: () => void) => void; }; export type TimedToggleOptions = { initialStatus?: ToggleStatus; openDuration?: number; closeDuration?: number; duration?: number; /** When true, skips animation delays and transitions instantly. */ reducedMotion?: Signal; }; export declare function useTimedToggle({ initialStatus, duration, openDuration, closeDuration, reducedMotion, }?: TimedToggleOptions): { status: Signal; open: () => void; close: () => void; toggle: () => void; setOpen: (v: boolean) => void; display: import("@tempots/core").Computed; isClosed: import("@tempots/core").Computed; isStartOpening: import("@tempots/core").Computed; isOpening: import("@tempots/core").Computed; isOpened: import("@tempots/core").Computed; isClosing: import("@tempots/core").Computed; isStartClosing: import("@tempots/core").Computed; dispose: () => void; listenOnClosed: (fn: () => void) => void; }; export type AnimatedElementToggleOptions = { initialStatus?: ToggleStatus; element?: HTMLElement; /** When true, skips animation delays and transitions instantly. */ reducedMotion?: Signal; }; export declare function useAnimatedElementToggle({ initialStatus, element, reducedMotion, }?: AnimatedElementToggleOptions): { status: Signal; open: () => void; close: () => void; toggle: () => void; setOpen: (v: boolean) => void; display: import("@tempots/core").Computed; isClosed: import("@tempots/core").Computed; isStartOpening: import("@tempots/core").Computed; isOpening: import("@tempots/core").Computed; isOpened: import("@tempots/core").Computed; isClosing: import("@tempots/core").Computed; isStartClosing: import("@tempots/core").Computed; dispose: () => void; listenOnClosed: (fn: () => void) => void; setElement: (value: HTMLElement) => void; }; export type SlideDirection = 'up' | 'down' | 'left' | 'right'; export type TransformOrigin = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; export type ComposableAnimation = { fade?: boolean; slide?: SlideDirection; scale?: boolean | number; transformOrigin?: TransformOrigin; duration?: number; easing?: string; }; export type AnimationConfig = { enter?: ComposableAnimation; exit?: ComposableAnimation; } | ComposableAnimation; export declare function AnimatedToggleClass({ animation, status, }: { animation?: Value; status: Signal; }): import("@tempots/core").Renderable; export declare function AnimatedToggle({ initialStatus, animation, reducedMotion, }: { initialStatus?: ToggleStatus; animation?: Value; /** When true, skips animation delays and transitions instantly. */ reducedMotion?: Signal; }, render: (options: { status: Signal; open: () => void; close: () => void; toggle: () => void; setOpen: (v: boolean) => void; display: Signal; isClosed: Signal; isStartOpening: Signal; isOpening: Signal; isOpened: Signal; isClosing: Signal; isStartClosing: Signal; listenOnClosed: (fn: () => void) => void; }) => TNode): import("@tempots/dom").Renderable;