export { Key } from '@solid-primitives/keyed';
import { MachineSchema, Machine, Service } from '@zag-js/core';
import { Accessor, JSX } from 'solid-js';
import * as _zag_js_types from '@zag-js/types';

declare function useMachine<T extends MachineSchema>(machine: Machine<T>, userProps?: Partial<T["props"]> | Accessor<Partial<T["props"]>>): Service<T>;

type MaybeAccessor<T> = T | (() => T);
declare function mergeProps<T>(source: MaybeAccessor<T>): T;
declare function mergeProps<T, U>(source: MaybeAccessor<T>, source1: MaybeAccessor<U>): T & U;
declare function mergeProps<T, U, V>(source: MaybeAccessor<T>, source1: MaybeAccessor<U>, source2: MaybeAccessor<V>): T & U & V;
declare function mergeProps<T, U, V, W>(source: MaybeAccessor<T>, source1: MaybeAccessor<U>, source2: MaybeAccessor<V>, source3: MaybeAccessor<W>): T & U & V & W;

type PropTypes = JSX.IntrinsicElements & {
    element: JSX.HTMLAttributes<any>;
    style: JSX.CSSProperties;
};
declare const normalizeProps: _zag_js_types.NormalizeProps<PropTypes>;

export { type PropTypes, mergeProps, normalizeProps, useMachine };
