@usirin/spellcaster
Version:
Remote execution of spells defined in spellbooks
61 lines • 2.08 kB
TypeScript
import type { Spellbook } from "@usirin/spellbook";
import { type ServerTransport } from "./transport";
/**
* Options for creating a SpellbookServer
*/
export interface SpellbookServerOptions {
/**
* Transport to use for communication
*/
transport: ServerTransport;
/**
* Configuration options
*/
config?: {
/**
* Whether to validate parameters (default: true)
*/
validateParameters?: boolean;
};
}
/**
* Simple function to serve a spellbook on a transport
*
* @param spellbook - The spellbook to serve
* @param transport - The transport to serve on
* @returns A promise that resolves when the server stops
*/
export declare function serve<TSpellbook extends Spellbook>(spellbook: TSpellbook, transport: ServerTransport): Promise<void>;
/**
* Create a SpellbookServer for a specific spellbook
*
* @param spellbook - The spellbook to serve
* @param options - Server options
* @returns A SpellbookServer instance
*/
export declare const createSpellbookServer: <TSpellbook extends Spellbook>(spellbook: TSpellbook, options: SpellbookServerOptions) => import("@usirin/forge").Entity<"server"> & {
start(): void;
stop(): void;
isRunning(): boolean;
getSpellbook(): TSpellbook;
getTransport(): import("@usirin/forge").Entity<"xports"> & {
incoming: ReadableStream<import("@usirin/forge").Entity<"req"> & {
name: string;
parameters: any;
}>;
outgoing: WritableStream<import("@usirin/forge").Entity<"resp"> & {
request: import("@usirin/forge").Entity<"req"> & {
name: string;
parameters: any;
};
result: Promise<any> | undefined;
error: {
message: string;
code?: string;
details?: unknown;
} | undefined;
}>;
};
};
export type SpellbookServer<TSpellbook extends Spellbook = Spellbook> = ReturnType<typeof createSpellbookServer<TSpellbook>>;
//# sourceMappingURL=server.d.ts.map