UNPKG

1.62 kBTypeScriptView Raw
1import type { AnyStateMachine, AreAllImplementationsAssumedToBeProvided, EventObject, InternalMachineOptions, InterpreterFrom, InterpreterOptions, Prop, StateConfig, StateFrom } from 'xstate';
2import type { Getter, WritableAtom } from 'jotai';
3export declare const RESTART: unique symbol;
4export interface MachineAtomOptions<TContext, TEvent extends EventObject> {
5 /**
6 * If provided, will be merged with machine's `context`.
7 */
8 context?: Partial<TContext>;
9 /**
10 * The state to rehydrate the machine to. The machine will
11 * start at this state instead of its `initialState`.
12 */
13 state?: StateConfig<TContext, TEvent>;
14}
15declare type Options<TMachine extends AnyStateMachine> = AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends false ? InterpreterOptions & MachineAtomOptions<TMachine['__TContext'], TMachine['__TEvent']> & InternalMachineOptions<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta'], true> : InterpreterOptions & MachineAtomOptions<TMachine['__TContext'], TMachine['__TEvent']> & InternalMachineOptions<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta']>;
16declare type MaybeParam<T> = T extends (v: infer V) => unknown ? V : never;
17export declare function atomWithMachine<TMachine extends AnyStateMachine, TInterpreter = InterpreterFrom<TMachine>>(getMachine: TMachine | ((get: Getter) => TMachine), getOptions?: Options<TMachine> | ((get: Getter) => Options<TMachine>)): WritableAtom<StateFrom<TMachine>, MaybeParam<Prop<TInterpreter, 'send'>> | typeof RESTART, void>;
18export {};