/** * Does this recipe bind the wallet its package says it binds? * * Deploy's pre-money check, run here too — the SAME `unboundWalletInstances` `runDeploy` calls, not * a second implementation. The author should never first learn about a package-derivable fault from * the money path, which is what `senpi validate` green followed by `senpi deploy` refused means. * * ## Why this is a STATIC-depth check * * It reads the package's own bytes and nothing else: no exchange, no gateway, no credentials. That * puts it at the shallowest depth, where `depthsUpTo` makes it run at every depth above — so an * offline CI run with no MCP server reachable still catches it. The universe check next door is * live-depth only because its verdict needs the exchange's instrument list; this one has no such * excuse and should not borrow the latency. * * ## Why it never fires on a recipe an author is pinning deliberately * * `resolveWallet` accepts a well-formed address in `strategy.wallet` as a real wallet to validate * against — pinning is how you make a live run read a real book instead of the empty placeholder * one. That is a supported workflow and this check must not take it away. It cannot: the fault * requires a manifest that declares `wallet_env` for THIS instance, which is exactly the state * where a pinned address contradicts the package's own promise. A recipe with no package around it, * or one the manifest does not declare, is silent here. * * ## The three states of "no package" * * Same rule as `universe-stage.ts`, for the same reason. `pkg` set is the checkable one. * `packageUnreadable` means a `strategy.yaml` exists and would not load — the check could not run, * which is reported rather than passed over, because "I could not read it" is never "there is * nothing there". Neither set is the genuine no-package case (a recipe being authored before its * manifest exists), and nothing is reported there. */ import type { ResolvedTarget } from "./target.js"; import type { Finding } from "./types.js"; /** * The check, as findings. * * Scoped to the instance this run is validating, not to the whole package. `target.ts` resolves a * package ROOT to a refusal ("pick an instance"), so every run that gets here is about exactly one * recipe — and reporting a sibling's fault would be telling the author to edit a file this command * did not look at. */ export declare function walletBindingFindings(target: ResolvedTarget): Finding[]; //# sourceMappingURL=wallet-binding-stage.d.ts.map