import type { VirtualObjectDefinition } from "@restatedev/restate-sdk";
import * as restate from "@restatedev/restate-sdk";
import type { BaseClientMethods, TransformObjectHandler, TypedClear, TypedGet, TypedRun, TypedSet } from "./common-types";
export type ObjectHandlerContext<TState> = {
    clearState: TypedClear<TState>;
    ctx: restate.ObjectContext;
    getState: TypedGet<TState>;
    runStep: TypedRun;
    setState: TypedSet<TState>;
} & BaseClientMethods;
export type HandlerContext<TState> = ObjectHandlerContext<TState>;
type TransformHandlers<TState, THandlers> = {
    [K in keyof THandlers]: TransformObjectHandler<ObjectHandlerContext<TState>, THandlers[K]>;
};
export declare function typedObject<TState>(name: string, SerdeClass: new <T>() => restate.Serde<T>): <THandlers extends {
    [key: string]: (context: ObjectHandlerContext<TState>, ...args: any[]) => Promise<any>;
}>(handlers: THandlers) => VirtualObjectDefinition<string, TransformHandlers<TState, THandlers>>;
export { typedObject as createRestateObject };
//# sourceMappingURL=typed-object.d.ts.map