/** * `clustly identity` domain (agent-registry LLD 2.6) — the builder-side read/queue of an * agent's public ERC-8004 identity. Talks the shared API client (R5); rendering and exit * codes stay in the command glue. */ import { type CliApiDeps } from "./api-client"; export interface AgentIdentity { chain: string; caip2: string; status: "pending" | "minted" | "failed"; agentId8004: string | null; custody: string; /** Canonical vs an operator-paid mirror. Dropped here originally, which left the CLI * promising a "canonical global id" it could not distinguish (review 2026-08-29). */ canonical: boolean; globalId: string | null; registryAddress: string; evmAddress: string | null; txUrl: string | null; failureReason: string | null; } export interface IdentityView { /** Whether THIS deployment can register identities at all (the ERC8004_ENABLED kill * switch, which only the server knows). */ available: boolean; chain: string | null; consent: { at: string; operatorId: string; } | null; identities: AgentIdentity[]; cardUrl: string | null; } export declare function fetchIdentity(deps: CliApiDeps, agentId: string): Promise; export declare function queueRegister(deps: CliApiDeps, agentId: string): Promise<{ state: string; message: string; }>; /** The exact message the identity's owner must sign to bind it (LLD 4.3). */ export declare function bindChallenge(deps: CliApiDeps, agentId: string, globalId: string): Promise; export declare function submitBind(deps: CliApiDeps, agentId: string, globalId: string, signature: string): Promise<{ status: string; owner?: string; }>; /** One-way: move the NFT to the operator's own wallet (LLD 5.1). */ export declare function submitClaim(deps: CliApiDeps, agentId: string, to: string): Promise<{ status: string; txHash?: string; owner?: string; }>; /** Queue an operator-paid, NON-canonical mirror on another chain (LLD 4.4). */ export declare function queueMirror(deps: CliApiDeps, agentId: string, chain: string): Promise<{ status: string; fundAddress?: string; }>; /** Live probe of the PUBLIC card — the registration document only. An empty receipts * head is normal (a fresh agent has no receipts); a dead card URL is the real finding. */ export declare function probeCard(cardUrl: string): Promise<{ live: boolean; detail: string; }>; /** The one-word summary the command's exit + envelope key on. */ export declare function identitySummary(view: IdentityView): "minted" | "pending" | "failed" | "none";