UNPKG

restate-for-dummies

Version:

Type-safe Restate SDK wrapper with simplified API

39 lines 3.61 kB
import type { Serde, ServiceDefinition, VirtualObjectDefinition, WorkflowDefinition } from "@restatedev/restate-sdk"; import type { IngressClient, IngressSendClient, IngressWorkflowClient } from "@restatedev/restate-sdk-clients"; import type { EventSourcedState } from "./typed-event-object"; export declare class RestateClient { private SerdeClass; private url; constructor({ SerdeClass, restateUrl, }?: { SerdeClass?: new <T>() => Serde<T>; restateUrl?: string; }); createObject: <T>(name: string) => <THandlers extends { [key: string]: (context: import("./typed-object").ObjectHandlerContext<T>, ...args: any[]) => Promise<any>; }>(handlers: THandlers) => VirtualObjectDefinition<string, { [K in keyof THandlers]: import("./common-types").TransformObjectHandler<import("./typed-object").ObjectHandlerContext<T>, THandlers[K]>; }>; createService: (name: string) => <THandlers extends { [key: string]: (context: import("./typed-service").ServiceHandlerContext, ...args: any[]) => Promise<any>; }>(handlers: THandlers) => ServiceDefinition<string, { [K in keyof THandlers]: import("./common-types").TransformServiceHandler<import("./typed-service").ServiceHandlerContext, THandlers[K]>; }>; createWorkflow: <T>(name: string) => <THandlers extends { [K in Exclude<keyof THandlers, "run">]: (context: import("./typed-workflow").WorkflowSharedHandlerContext<T>, ...args: any[]) => Promise<any>; } & { run: (context: import("./typed-workflow").WorkflowHandlerContext<T>, ...args: any[]) => Promise<any>; }>(inputHandlers: THandlers) => WorkflowDefinition<string, { run: import("./common-types").TransformWorkflowHandler<import("./typed-workflow").WorkflowHandlerContext<T>, THandlers["run"]>; } & (Omit<THandlers, "run"> extends infer T_1 ? { [K_1 in keyof T_1]: import("./common-types").TransformWorkflowSharedHandler<import("./typed-workflow").WorkflowSharedHandlerContext<T>, Omit<THandlers, "run">[K_1]>; } : never)>; createEventHandler: <T extends Record<string, any>, U extends Record<string, any> = {}>(name: string) => <THandlers extends { [K in keyof T]: (context: { clearState: import("./common-types").TypedClear<EventSourcedState<T> & Omit<U, "events">>; ctx: import("@restatedev/restate-sdk").ObjectContext; getState: import("./common-types").TypedGet<EventSourcedState<T> & Omit<U, "events">>; runStep: import("./common-types").TypedRun; setState: import("./common-types").TypedSet<EventSourcedState<T> & Omit<U, "events">>; } & import("./common-types").BaseClientMethods & { eventUuid: string; eventTimestamp: number; }, data: T[K]) => Promise<any>; }>(handlers: THandlers) => VirtualObjectDefinition<string, { [K_1 in keyof THandlers]: THandlers[K_1] extends (context: any, data: infer D) => Promise<infer R> ? (ctx: import("@restatedev/restate-sdk").ObjectContext, data: D) => Promise<R> : never; }>; serviceClient: <T>(service: ServiceDefinition<string, T>) => IngressClient<T>; serviceSendClient: <T>(service: ServiceDefinition<string, T>) => IngressSendClient<T>; objectClient: <T>(object: VirtualObjectDefinition<string, T>, key: string) => IngressClient<T>; objectSendClient: <T>(object: VirtualObjectDefinition<string, T>, key: string) => IngressSendClient<T>; workflowClient: <T>(workflow: WorkflowDefinition<string, T>, key: string) => IngressWorkflowClient<T>; workflowSendClient: <T>(workflow: WorkflowDefinition<string, T>, key: string) => IngressWorkflowClient<T>; } //# sourceMappingURL=factory.d.ts.map