import type { GameModelAPI } from '../domains/gameModel.js'; import type { Scalars } from '../generated/graphql.js'; import type { EngineDetector } from './engine.js'; import { type AbilityEvent } from './wire.js'; /** Options for {@link AbilitiesKit}. */ export interface AbilitiesKitOptions { /** The abilities engine module name. Defaults to `'abilities-engine'`. */ moduleName?: string; /** The ability-definition container type. Defaults to `'AbilityDef'`. */ defTypeName?: string; } /** One ability as the engine's loadout reports it. */ export interface KitAbility { abilityId: string; cooldownMs: number; resourceCost: number; range: number; kind: 'instant' | 'projectile' | 'aoe' | string; } /** * Runtime helpers for the abilities engine (Wave 3): realtime casts with * server-side cooldown/resource/range books, tick-stepped projectiles, and * delayed AoEs. The caster's position is their live pose — `cast()` only * carries the TARGET; the server decides everything else. Type-94 * cast/impact events carry the visuals. * * Obtained via `client.kit(appId).abilities`. */ export declare class AbilitiesKit { private readonly appId; private readonly gameModel; private readonly engines; private readonly moduleName; private readonly defTypeName; constructor(appId: Scalars['BigInt']['input'], gameModel: GameModelAPI, engines: EngineDetector, options?: AbilitiesKitOptions); /** Is the abilities engine deployed + enabled (cached per session)? */ engineAvailable(): Promise; /** STUDIO (admin) — create an ability definition container. */ defineAbility(input: { abilityId: string; displayName?: string; spec: Record; }): Promise<{ __typename?: "GmContainer"; containerId: string; appId: string; sessionId: string | null; typeName: string; displayName: string; description: string | null; ownerUserId: string | null; metadataJson: string; }>; /** Cast at a target point (your position comes from your live pose). */ cast(abilityId: string, targetX: number, targetZ: number): Promise>; /** The deployed ability loadout. */ loadout(): Promise; /** YOUR caster book: resource pool + live cooldowns. */ book(): Promise>; /** Engine totals (casters, live projectiles, hits). */ status(): Promise>; /** Parse a type-94 cast/impact server event. */ parseAbilityEvent(bytes: Uint8Array): AbilityEvent | null; private invoke; } //# sourceMappingURL=abilities.d.ts.map