import { AnyActorSystem } from "../system.js"; import { ActorLogic, ActorRefFrom, EventObject, NonReducibleUnknown, Snapshot } from "../types.js"; export type PromiseSnapshot = Snapshot & { input: TInput | undefined; }; export type PromiseActorLogic = ActorLogic, { type: string; [k: string]: unknown; }, TInput, // input AnyActorSystem, EventObject>; export type PromiseActorRef = ActorRefFrom>; /** * An actor logic creator which returns promise logic as defined by an async process that resolves or rejects after some time. * * Actors created from promise actor logic (“promise actors”) can: * - Emit the resolved value of the promise * - Output the resolved value of the promise * * Sending events to promise actors will have no effect. * * @param promiseCreator * A function which returns a Promise, and accepts an object with the following properties: * - `input` - Data that was provided to the promise actor * - `self` - The parent actor of the promise actor * - `system` - The actor system to which the promise actor belongs * @see {@link https://stately.ai/docs/input | Input docs} for more information about how input is passed * * @example * ```ts * const promiseLogic = fromPromise(async () => { * const result = await fetch('https://example.com/...') * .then((data) => data.json()); * * return result; * }); * * const promiseActor = createActor(promiseLogic); * promiseActor.subscribe((snapshot) => { * console.log(snapshot); * }); * promiseActor.start(); * // => { * // output: undefined, * // status: 'active' * // ... * // } * * // After promise resolves * // => { * // output: { ... }, * // status: 'done', * // ... * // } * ``` */ export declare function fromPromise(promiseCreator: ({ input, system }: { /** * Data that was provided to the promise actor */ input: TInput; /** * The actor system to which the promise actor belongs */ system: AnyActorSystem; /** * The parent actor of the promise actor */ self: PromiseActorRef; }) => PromiseLike): PromiseActorLogic;