/** * Commitment-bond types — motebit/bond@1.0. * * Permissive floor (Apache-2.0), Layer 0. The interoperable format for an * agent's anti-sybil **commitment bond** — a self-signed proof-of-funds at the * agent's OWN sovereign Solana address. Any implementation can produce and * verify a `BondCommitment` with these types + `@motebit/crypto`. * * Phase 1 is an anti-sybil staked **signal**, NOT collateral / escrow / * recourse — see [`docs/doctrine/commitment-bond.md`]. The recourse-half * artifacts (`BondCall` / `BondDefault`) are deliberately NOT defined here: * fixing a wire shape for an unproduced mechanism is speculative. They land * with the recourse phase, designed to fit that implementation. * * The load-bearing anti-sybil binding lives in the verifier, not the type: a * `BondCommitment` is valid only if `bonded_address` equals * `deriveSolanaAddress(bonded_public_key)` — base58btc of the 32-byte key — so * the bond is proof-of-funds at the agent's OWN sovereign wallet and one wallet * cannot back many identities. `@motebit/crypto`'s `verifyBondCommitment` * enforces it; `check-bond-address-binding` locks that the enforcement cannot * be silently removed. */ import type { SettlementAsset } from "./settlement-asset.js"; /** Spec identifier for the commitment-bond artifact family. */ export declare const BOND_COMMITMENT_SPEC_ID: "motebit/bond@1.0"; /** * An agent's self-signed commitment bond — a proof that, at `issued_at`, the * agent had committed `bond_amount_micro` of `asset` at `bonded_address` on * `chain`. The relay RPC-verifies the live backing balance and NEVER custodies * the capital (the bond is read, never held). The artifact is self-anchoring: * it is signed by `bonded_public_key`, and `bonded_address` is derived from * that same key, so the bond proves control of the address it names. Binding * the bond to a claimed `motebit_id` (the key→id check) is the verifying * relay's separate responsibility — the `verifySovereignBinding` shape — not * this artifact's. */ export interface BondCommitment { /** UUID v7, generated by the bonding agent. */ bond_id: string; /** MotebitId of the bonding agent. */ motebit_id: string; /** * Hex of the 32-byte Ed25519 identity public key that signs this bond. The * agent's identity key — the same key whose base58btc encoding IS * `bonded_address`. */ bonded_public_key: string; /** * The base58 sovereign address holding the backing capital. MUST equal * `deriveSolanaAddress(bonded_public_key)` — the verifier rejects any * commitment where it does not. This is the anti-sybil binding. */ bonded_address: string; /** Committed amount in integer USDC micro-units (1 USD = 1,000,000). */ bond_amount_micro: number; /** The settlement asset backing the bond. USDC at land. */ asset: SettlementAsset; /** * CAIP-2 chain identifier the `bonded_address` lives on * (e.g. `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`). */ chain: string; /** Unix ms — when the bond was issued. */ issued_at: number; /** Unix ms — when the bond commitment expires and must be re-issued. */ expires_at: number; /** * Cryptosuite discriminator. Always `"motebit-jcs-ed25519-b64-v1"` — JCS * canonicalization, Ed25519 primitive, base64url signature. Verifiers reject * missing or unknown values fail-closed. */ suite: "motebit-jcs-ed25519-b64-v1"; /** Ed25519 over canonical JSON of all fields except signature. */ signature: string; } /** * Structural type guard — shape only, NOT signature or binding validity. A * `true` result means the fields are present and well-typed; it does NOT mean * the bond verifies. Cryptographic validity (signature + the address binding) * is `@motebit/crypto`'s `verifyBondCommitment`; backing solvency is the * relay's RPC read. */ export declare function isBondCommitment(value: unknown): value is BondCommitment; //# sourceMappingURL=bond.d.ts.map