UNPKG

@usirin/spellcaster

Version:

Remote execution of spells defined in spellbooks

38 lines 1.72 kB
import type { Spellbook } from "@usirin/spellbook"; import { type ClientTransport } from "./transport"; /** * Options for creating a SpellCaster */ export interface SpellCasterOptions { /** * Transport to use for communication */ transport: ClientTransport; } /** * Type-safe interface for casting spells */ export interface SpellCasterSpec<TSpellbook extends Spellbook> { /** * Cast a spell using the provided transport * * @param name - The name of the spell to cast * @param parameters - The parameters to pass to the spell * @returns A promise that resolves to the result of the spell */ cast<TName extends keyof TSpellbook["spells"]>(name: TName, parameters: Parameters<TSpellbook["spells"][TName]["execute"]>[0]): Promise<ReturnType<TSpellbook["spells"][TName]["execute"]>>; /** * Get the current transport */ getTransport(): ClientTransport; } /** * Create a SpellCaster for a specific spellbook type * * @param options - SpellCaster options * @returns A SpellCaster instance */ export declare const createSpellCaster: <TSpellbook extends Spellbook>(options: SpellCasterOptions) => import("@usirin/forge").Entity<"caster"> & SpellCasterSpec<TSpellbook>; export type SpellCaster<TSpellbook extends Spellbook = Spellbook> = ReturnType<typeof createSpellCaster<TSpellbook>>; export declare function cast<TSpellbook extends Spellbook, TSpellName extends keyof TSpellbook["spells"] = keyof TSpellbook["spells"]>(transport: ClientTransport, name: TSpellName, parameters: Parameters<TSpellbook["spells"][TSpellName]["execute"]>[0]): Promise<ReturnType<TSpellbook["spells"][TSpellName]["execute"]>>; //# sourceMappingURL=caster.d.ts.map