@cfxlabsinc/b2b-services
    Preparing search index...

    Reads the deployed state of the mintfx and escrow programs, and the releases they could be running.

    Read-only by construction. It holds no signer and starts no workflow — the dashboard's entire write capability against these programs is a workflow start, and that workflow does not exist yet (PROGRAM_DEPLOYS.md § 2.4).

    Chain reads and GitHub reads are separate methods rather than one combined call, because § 4.5 requires them to fail independently: GitHub being down must not blank the program ids and hashes that resolved fine.

    Index
    • Loader buffers authority can close, and the rent they are holding.

      Listed by buffer authority rather than by deploy payer. The deploy payer the handoff calls for does not exist yet, and the buffers stranded today were written by the local deploy path, which signs with the upgrade authority — so passing a row's on-chain authority is what finds them. Once a dedicated payer exists, that is the address to pass instead.

      Paginated, and not optionally: the owner here is the upgradeable loader, which owns a loader account for every program on the cluster. The memcmp filters narrow what comes back but not what the node scans, so the single-shot V1 call ran the account index out of budget and Helius answered -32603 instead of a list.

      Parameters

      Returns Promise<ProgramBuffer[]>

    • Every release for a pair, newest first, each with its executable's hash.

      The hash comes from the .so asset rather than from a manifest. The handoff's <program>-<network>.manifest.json (§ 7) has not shipped — the .json asset attached to these releases today is the Anchor IDL — so a register that waited for it would have no State column at all. Hashing the binary is the same measurement one step earlier in the chain of custody; the manifest's value when it lands is that it is signed at build time, which matters for the deploy gate and not for this read.

      Parameters

      Returns Promise<{ releases: ProgramRelease[]; totalCount: number }>

    • Who pays for a deploy, what they can spend, and whether the platform holds the authority the upgrade will be signed by.

      A separate read from readChainFacts rather than more fields on it, for the reason § 4.5 separates chain from GitHub: this one also depends on the database, so folding it in would let a wallet row nobody seeded blank the program id and the deployed hash — facts that resolved fine.

      get rather than search: a missing wallet row is a deployment that was never seeded, and the throw names which key is absent. search would hand back an undefined address and send it to the node as a balance query.

      Parameters

      Returns Promise<ProgramDeployWallets>