import type { GameModelAPI } from '../domains/gameModel.js'; import type { Scalars, SeedPropertyInput } from '../generated/graphql.js'; import type { EngineDetector } from './engine.js'; /** Options for {@link PetsKit}. Must match the deployed npc engine. */ export interface PetsKitOptions { /** The compute module serving summon/dismiss/rename. Defaults to `'npc-engine'`. */ moduleName?: string; /** The pet container type. Defaults to `'Pet'`. */ typeName?: string; } /** A parsed pet container. */ export interface KitPet { containerId: string; displayName: string; species: string; name: string; ownerUserId: string | null; bond: number; active: boolean; actorUuid: string; x: number; y: number; z: number; properties: Record; } /** An engine verdict for a pet invoke. */ export interface KitPetResult { success: boolean; reason?: string; } /** * Runtime helpers for engine-driven pets (the Wave 1 npc-engine template): * `Pet` containers hold species/name/owner/bond; the engine walks active * pets after their owner (kit-ai `follow_owner`) and streams FLAG_NPC actor * poses with the pet's container id as the payload suffix — decode the lane * with `kit/wire` and match `pose.suffix` to the container id. * * Obtained via `client.kit(appId).pets`. */ export declare class PetsKit { private readonly appId; private readonly gameModel; private readonly engines; private readonly moduleName; private readonly typeName; constructor(appId: Scalars['BigInt']['input'], gameModel: GameModelAPI, engines: EngineDetector, options?: PetsKitOptions); /** Is the pet-driving npc engine deployed + enabled (cached per session)? */ engineAvailable(): Promise; /** * Adopt a pet: creates the caller-owned Pet container (active). Member * instantiation defaults the owner to the caller; admin tokens must pass * `ownerUserId` explicitly (the engine validates ownership on every * summon/dismiss/rename). */ adopt(input: { species: string; name: string; ownerUserId?: Scalars['BigInt']['input']; position?: { x: number; y: number; z: number; }; properties?: SeedPropertyInput[]; }): Promise<{ __typename?: "GmContainer"; containerId: string; appId: string; sessionId: string | null; typeName: string; displayName: string; description: string | null; ownerUserId: string | null; metadataJson: string; }>; /** List pets (all, or one owner's with `ownerUserId`). */ list(ownerUserId?: Scalars['BigInt']['input']): Promise; /** Summon your pet: it starts following you (owner-validated engine-side). */ summon(containerId: string): Promise; /** Dismiss your pet: it stops simulating until summoned again. */ dismiss(containerId: string): Promise; /** Rename your pet (1-32 chars; owner-validated engine-side). */ rename(containerId: string, name: string): Promise; } //# sourceMappingURL=pets.d.ts.map