import { Being, type Answer, type Asker, type AskSpec, type BeingClass, type Blueprint, type Invitation, type JsonObject, type Stance } from '../being/index.ts'; export interface Steward { pk(): string; classOf(name: string, registry?: string): BeingClass | undefined; beings(): Record; boot(key: string, className: string, registry?: string): Promise<'booted' | 'key taken' | 'no such class' | 'threw at birth'>; stand(key: string): 'booted' | 'stands' | 'no such being' | 'no such class' | 'threw at birth'; unboot(key: string): boolean; publish(key: string | null): boolean; invite(being: string, id: string, notes: JsonObject): Promise; ask(being: string | null, method: string | undefined, args: JsonObject): Promise; become(kind: string, registry?: string): string | null; } export type WardStance = Stance & { readonly steward: Steward; }; export declare const pilots: (asker: Asker, notes: JsonObject | undefined) => boolean; export declare const ownerAsk: (description: string, input?: JsonObject) => AskSpec; export declare const rootAsk: (description: string, input?: JsonObject) => AskSpec; export declare const HELD = "held:"; export declare abstract class Ward extends Being { static readonly kind: string; static asks: Record; readonly steward: Steward; constructor(stance: Stance); static fulfils(C: unknown): C is BeingClass; become(args: JsonObject): JsonObject; describe(asker: Asker): Blueprint; own(args: JsonObject): Promise; disown(args: JsonObject): JsonObject; boot(args: JsonObject): Promise; unboot(args: JsonObject): JsonObject | Promise; public(args: JsonObject): JsonObject; invite(args: JsonObject): Promise; ask(args: JsonObject): Promise; hold(args: JsonObject): Promise; pilot(args: JsonObject): Promise; drop(args: JsonObject): JsonObject; }