@oracle-agent/oracle 0.35.39 → 0.35.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/agent-sessions.mjs +11 -11
  2. package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
  3. package/dist/bin/desk-server.mjs +28 -28
  4. package/dist/bin/oracle-data-mcp.mjs +19 -19
  5. package/dist/bin/oracle-gateway.mjs +43 -43
  6. package/dist/bin/oracle-investigate.mjs +5 -5
  7. package/dist/bin/oracle-launch-radar-shadow.mjs +6 -6
  8. package/dist/bin/oracle-mev-arb-shadow.mjs +6 -6
  9. package/dist/bin/oracle-mev-shadow.mjs +6 -6
  10. package/dist/bin/oracle-public-server.mjs +5 -5
  11. package/dist/bin/oracle-route.mjs +18 -18
  12. package/dist/bin/oracle-scan.mjs +11 -11
  13. package/dist/cli/commands/agent-session.mjs +18 -18
  14. package/dist/cli/commands/airdrop.mjs +8 -8
  15. package/dist/cli/commands/chat.mjs +207 -207
  16. package/dist/cli/commands/doctor.mjs +9 -9
  17. package/dist/cli/commands/eval.mjs +147 -197
  18. package/dist/cli/commands/farm.mjs +17 -17
  19. package/dist/cli/commands/follow.mjs +17 -17
  20. package/dist/cli/commands/mint.mjs +10 -10
  21. package/dist/cli/commands/model.mjs +211 -211
  22. package/dist/cli/commands/quickstart.mjs +6 -6
  23. package/dist/cli/commands/receipt.mjs +12 -12
  24. package/dist/cli/commands/resolve.mjs +7 -7
  25. package/dist/cli/commands/sign.mjs +4 -4
  26. package/dist/cli/commands/signer.mjs +14 -14
  27. package/dist/cli/commands/snipe.mjs +9 -9
  28. package/dist/cli/commands/strategy.mjs +4 -4
  29. package/dist/cli/commands/swap.mjs +14 -14
  30. package/dist/cli/commands/venues.mjs +2 -2
  31. package/dist/data/desk-data.mjs +26 -26
  32. package/dist/data/names.mjs +3 -3
  33. package/dist/data/providers/farming.mjs +2 -2
  34. package/dist/data/providers/lp-destination-discovery.mjs +4 -4
  35. package/dist/index.mjs +44 -44
  36. package/dist/investigator/index.mjs +2 -2
  37. package/dist/launch-radar/index.mjs +5 -5
  38. package/dist/local-signer/anvil-attestation-worker.mjs +1 -1
  39. package/dist/local-signer/index.mjs +2 -2
  40. package/dist/local-signer/runtime.mjs +8 -8
  41. package/dist/nft/universal-mint-router.mjs +4 -4
  42. package/dist/notifications/index.mjs +7 -7
  43. package/dist/router/index.mjs +3 -3
  44. package/dist/router/prepare-bridge.mjs +2 -2
  45. package/dist/router/prepare-route.mjs +3 -3
  46. package/dist/scanner/index.mjs +4 -4
  47. package/dist/strategy/index.mjs +3 -3
  48. package/dist/teams/index.mjs +6 -6
  49. package/dist/tui/standalone-client.mjs +82 -82
  50. package/package.json +4 -4
  51. package/public/eval-report.json +3 -3
  52. package/public/oracle-splash/_variants/ice.html +2 -4
  53. package/public/oracle-splash/_variants/ivory.html +2 -4
  54. package/public/oracle-splash/assets/fonts/LICENSE-Cormorant-Garamond.txt +93 -0
  55. package/public/oracle-splash/assets/fonts/LICENSE-IBM-Plex-Mono.txt +93 -0
  56. package/public/oracle-splash/assets/fonts/LICENSE-Outfit.txt +93 -0
  57. package/public/oracle-splash/assets/fonts/LICENSE-UnifrakturCook.txt +94 -0
  58. package/public/oracle-splash/assets/fonts/font-provenance.json +426 -0
  59. package/public/oracle-splash/assets/fonts/oracle-font-00.woff2 +0 -0
  60. package/public/oracle-splash/assets/fonts/oracle-font-01.woff2 +0 -0
  61. package/public/oracle-splash/assets/fonts/oracle-font-02.woff2 +0 -0
  62. package/public/oracle-splash/assets/fonts/oracle-font-03.woff2 +0 -0
  63. package/public/oracle-splash/assets/fonts/oracle-font-04.woff2 +0 -0
  64. package/public/oracle-splash/assets/fonts/oracle-font-05.woff2 +0 -0
  65. package/public/oracle-splash/assets/fonts/oracle-font-06.woff2 +0 -0
  66. package/public/oracle-splash/assets/fonts/oracle-font-07.woff2 +0 -0
  67. package/public/oracle-splash/assets/fonts/oracle-font-08.woff2 +0 -0
  68. package/public/oracle-splash/assets/fonts/oracle-font-09.woff2 +0 -0
  69. package/public/oracle-splash/assets/fonts/oracle-font-10.woff2 +0 -0
  70. package/public/oracle-splash/assets/fonts/oracle-font-11.woff2 +0 -0
  71. package/public/oracle-splash/assets/fonts/oracle-font-12.woff2 +0 -0
  72. package/public/oracle-splash/assets/fonts/oracle-font-13.woff2 +0 -0
  73. package/public/oracle-splash/assets/fonts/oracle-font-14.woff2 +0 -0
  74. package/public/oracle-splash/assets/fonts/oracle-font-15.woff2 +0 -0
  75. package/public/oracle-splash/assets/fonts/oracle-font-16.woff2 +0 -0
  76. package/public/oracle-splash/assets/fonts/oracle-font-17.woff2 +0 -0
  77. package/public/oracle-splash/assets/fonts/oracle-font-18.woff2 +0 -0
  78. package/public/oracle-splash/assets/fonts/oracle-font-19.woff2 +0 -0
  79. package/public/oracle-splash/assets/fonts/oracle-font-20.woff2 +0 -0
  80. package/public/oracle-splash/assets/fonts/oracle-font-21.woff2 +0 -0
  81. package/public/oracle-splash/assets/fonts/oracle-font-22.woff2 +0 -0
  82. package/public/oracle-splash/assets/fonts/oracle-font-23.woff2 +0 -0
  83. package/public/oracle-splash/assets/fonts/oracle-font-24.woff2 +0 -0
  84. package/public/oracle-splash/assets/fonts/oracle-font-25.woff2 +0 -0
  85. package/public/oracle-splash/assets/fonts/oracle-font-26.woff2 +0 -0
  86. package/public/oracle-splash/assets/fonts/oracle-font-27.woff2 +0 -0
  87. package/public/oracle-splash/assets/fonts/oracle-fonts.css +504 -0
  88. package/public/oracle-splash/assets/transport-probe-sw.js +2 -0
  89. package/public/oracle-splash/docs/browser-and-web/index.html +6 -6
  90. package/public/oracle-splash/docs/connectors/index.html +5 -5
  91. package/public/oracle-splash/docs/docs.css +4 -4
  92. package/public/oracle-splash/docs/docs.js +119 -7
  93. package/public/oracle-splash/docs/getting-started/index.html +5 -5
  94. package/public/oracle-splash/docs/index.html +6 -6
  95. package/public/oracle-splash/docs/reference/index.html +5 -5
  96. package/public/oracle-splash/docs/security/index.html +5 -5
  97. package/public/oracle-splash/docs/using-oracle/index.html +5 -5
  98. package/public/oracle-splash/download/index.html +8 -10
  99. package/public/oracle-splash/downloads/index.html +3 -5
  100. package/public/oracle-splash/eval/index.html +96 -0
  101. package/public/oracle-splash/index.html +16 -18
  102. package/public/oracle-splash/mesh-graph.svg +1 -1
  103. package/public/oracle-splash/pricing/index.html +6 -8
  104. package/public/oracle-splash/security/index.html +3 -5
  105. package/public/oracle-splash/what-it-does/index.html +4 -6
  106. package/public/oracle-splash/where-it-works/index.html +3 -5
  107. package/server.json +2 -2
@@ -1,2 +1,2 @@
1
- import Bt from"node:fs";import{JsonRpcProvider as Dt}from"ethers";import{Interface as re,keccak256 as Rt}from"ethers";import{Transaction as Zu}from"@scure/btc-signer";import{ed25519 as el}from"@noble/curves/ed25519.js";import{base58 as mi}from"@scure/base";import{Interface as pe}from"ethers";import{Interface as je,MaxUint256 as hr,isAddress as gr,keccak256 as yr,toUtf8Bytes as br}from"ethers";import{Interface as De,isAddress as Xt}from"ethers";import{isAddress as Ut}from"ethers";var tr=new De(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as Fe,isAddress as or}from"ethers";var cr=new Fe(["function approve(address spender,uint256 amount) returns (bool)"]),ur=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Ir=new je(["function approve(address spender,uint256 amount) returns (bool)"]);var Or=300*1e3,Tr=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})();import{Address as Rr,NETWORK as $r,OutScript as Pr,RawTx as Br,SigHash as Dr,TEST_NETWORK as Fr,Transaction as jr}from"@scure/btc-signer";import{createHash as qe}from"node:crypto";import{base58 as zr}from"@scure/base";import{getCompiledTransactionMessageDecoder as Ur}from"@solana/transaction-messages";var ce=e=>qe("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Vr=new Map([[ce("route"),{name:"route",prefixBytes:0}],[ce("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);var en=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,tn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,rn=AbortSignal.prototype.throwIfAborted,nn=EventTarget.prototype.addEventListener,on=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null;var sn=64*1024,an=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});var gn=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var Sn=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"leverage","perp-isolated-margin":"margin","builder-fee-approval":"approveBuilder","hype-stake-deposit":"stake","hype-stake-withdraw":"unstake","hype-delegate":"delegate","hype-undelegate":"delegate"}),An=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"updateLeverage","perp-isolated-margin":"updateIsolatedMargin","builder-fee-approval":"approveBuilderFee","hype-stake-deposit":"cDeposit","hype-stake-withdraw":"cWithdraw","hype-delegate":"tokenDelegate","hype-undelegate":"tokenDelegate"});var kn="0x"+"00".repeat(32);var He=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),_n=Object.freeze(He.map(e=>e[0]));import{TypedDataEncoder as co,getAddress as uo}from"ethers";import{TypedDataEncoder as Bn,getAddress as Dn,isAddress as Fn}from"ethers";var We=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Ue=Object.freeze({Order:[{name:"salt",type:"uint256"},{name:"maker",type:"address"},{name:"receiver",type:"address"},{name:"makerAsset",type:"address"},{name:"takerAsset",type:"address"},{name:"makingAmount",type:"uint256"},{name:"takingAmount",type:"uint256"},{name:"makerTraits",type:"uint256"}]});import{TypedDataEncoder as Gn,getAddress as Yn,isAddress as Xn}from"ethers";var Mn=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});var Ve=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),oo=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Je=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),io=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var po=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var Qe=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var Co=Object.freeze({swap:5,bridge:5,perps:0,nft:0,mint:0,transfer:0,approve:0,delegate:0,identity:0,order:0,cancel:0,leverage:0,margin:0,approveBuilder:0,stake:0,unstake:0});var et=Object.freeze({"0x04e45aaf":{provider:"uniswap-v3",action:"swap",layout:"router02-exact-input-single"},"0x414bf389":{provider:"uniswap-v3",action:"swap",layout:"swap-router-exact-input-single"},"0xc04b8d59":{provider:"uniswap-v3",action:"swap",layout:"exact-input-deadline"},"0xb858183f":{provider:"uniswap-v3",action:"swap",layout:"exact-input"},"0x5ae401dc":{provider:"uniswap-v3",action:"swap",layout:"multicall-deadline"},"0xa026383e":{provider:"aerodrome",action:"swap",layout:"aerodrome-exact-input-single"},"0x7b939232":{provider:"across-v3",action:"bridge",layout:"across-deposit-v3"}}),_o=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Lo=new pe(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Ro=new pe(["function mintAllowList(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity,(uint80 mintPrice,uint48 maxTotalMintableByWallet,uint48 startTime,uint48 endTime,uint48 dropStageIndex,uint32 maxTokenSupplyForStage,uint16 feeBps,bool restrictFeeRecipients) mintParams,bytes32[] proof) payable"]),$o=Object.freeze({"0xa0712d68":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0x1249c58b":{provider:"nft-mint",action:"mint",layout:"mint-no-args"},"0x2db11544":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xefef39a1":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xa6f2ae3a":{provider:"nft-mint",action:"mint",layout:"mint-no-args"}});var tt=Object.freeze([...Qe]),Po=Object.freeze({...et});import{ed25519 as Xo}from"@noble/curves/ed25519.js";import{base58 as Qo}from"@scure/base";import{RawTx as ti,SigHash as ri,Transaction as ni}from"@scure/btc-signer";import{Transaction as ii,keccak256 as si,verifyTypedData as ai}from"ethers";import{encode as Fo}from"@msgpack/msgpack";import{keccak256 as qo,verifyTypedData as Mo}from"ethers";var Ho=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),zo=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as Ci,constants as it,fchmodSync as _i,fsyncSync as Li,lstatSync as Ri,mkdirSync as $i,openSync as Pi,readFileSync as Bi,renameSync as Di,rmSync as Fi,writeFileSync as ji}from"node:fs";import{wordlists as Oi}from"ethers";var Hi=it.O_NOFOLLOW??0;import{wordlists as Ui}from"ethers";var me=64*1024;var Ji=32*1024;var ct=["schemaVersion","buildVersion","recordType","execution","custody"],Yi=[...ct,"recordHash"];var Xi=Object.freeze({signed:new Set(["workflow.signed","legacy.signed"]),submitted:new Set(["workflow.submitted","legacy.broadcast"]),finalized:new Set(["workflow.finalized"]),reorged:new Set(["workflow.reorged"]),orphaned:new Set(["workflow.orphaned"]),compensating:new Set(["workflow.compensating"]),compensated:new Set(["workflow.compensated"])});var ut=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Ae=Object.freeze(["workflow.drafted","workflow.checked","workflow.approval_requested","workflow.approval_granted","workflow.signed","workflow.submitted","workflow.finalized","workflow.reorged","workflow.orphaned","workflow.compensating","workflow.compensated","workflow.failed","workflow.cancelled","workflow.annotated"]),rs=new Set(Ae);var wt=64*1024*1024;var us=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),ls=Object.freeze(["read","simulate"]);var ds=1440*60;var Es=Object.freeze(["privkey","wif","xprv","seed"]);var xs=Object.freeze([{rule:"raw-32-byte-hex-key",re:/^0x[0-9a-fA-F]{64}$/},{rule:"raw-32-byte-hex-bare",re:/^[0-9a-fA-F]{64}$/},{rule:"extended-private-key",re:/\b(?:xprv|tprv|yprv|zprv)[1-9A-HJ-NP-Za-km-z]{107}\b/},{rule:"bitcoin-wif",re:/\b[59KLc][1-9A-HJ-NP-Za-km-z]{50,51}\b/},{rule:"bip39-mnemonic",re:/\b(?:[a-z]{3,8}\s+){11,23}[a-z]{3,8}\b/},{rule:"bearer-token",re:/bearer\s+[A-Za-z0-9._~+/=-]+/i},{rule:"pem-private-key",re:/-----BEGIN[A-Z ]*PRIVATE KEY-----/},{rule:"keystore-path",re:/keystore/i},{rule:"signer-url",re:/https?:\/\/\S*sign/i},{rule:"authorization-header",re:/authorization\s*:/i}]),Ss=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);var X=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),ks=Object.freeze(Object.fromEntries(X.map((e,t)=>[e,Object.freeze(t+1<X.length?[X[t+1]]:[])])));var ht=Object.freeze({intent:"draft",quote_comparison:"draft",simulation:"draft",prepared:"checked",approval:"approval",signed:"signed",broadcast:"submitted",settlement:"finalized",balance_delta:"compensated",position:"compensated"});var yt=Object.freeze(["owner","operator","agent","viewer"]),bt=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),Et=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),la=Object.freeze(["owner"]),da=Object.freeze({ALLOW_ROLE_PERMISSION:"allow.role_permission",DENY_MISSING_CONTEXT:"deny.missing_context",DENY_INVALID_CONTEXT:"deny.invalid_context",DENY_INVALID_REQUEST:"deny.invalid_request",DENY_UNKNOWN_RESOURCE:"deny.unknown_resource",DENY_UNKNOWN_ACTION:"deny.unknown_action",DENY_UNBOUND_OBJECT:"deny.unbound_object",DENY_TENANT_MISMATCH:"deny.tenant_mismatch",DENY_RESOURCE_MISMATCH:"deny.resource_mismatch",DENY_ROLE_PERMISSION:"deny.role_permission",DENY_POLICY_NOT_APPROVER:"deny.policy_not_approver"}),fa=new Set(yt),pa=new Set(bt),ma=new Set(Object.values(Et));var xt=Object.freeze({owner:Object.freeze(["tenant:read","tenant:manage","config:read","config:manage","policy:read","policy:manage","grant:read","grant:create","grant:update","grant:delete","grant:manage","workflow:read","workflow:create","workflow:update","workflow:delete","workflow:cancel","workflow:approve","trade:read","trade:prepare","receipt:read","receipt:export","audit:read","audit:export","telemetry:read","telemetry:create","telemetry:export","context:read","context:create","context:update","context:delete","context:manage","context:export","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:delete","lifecycle:manage","lifecycle:approve","lifecycle:export"]),operator:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","workflow:cancel","trade:read","trade:prepare","receipt:read","audit:read","telemetry:read","telemetry:create","context:read","context:create","context:update","context:delete","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:manage"]),agent:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","trade:read","trade:prepare","receipt:read","telemetry:create","context:read","context:create","context:update","lifecycle:read"]),viewer:Object.freeze(["tenant:read","config:read","grant:read","workflow:read","trade:read","receipt:read","audit:read","telemetry:read","context:read","lifecycle:read"])}),wa=Object.freeze(Object.fromEntries(Object.entries(xt).map(([e,t])=>[e,Object.freeze([...t])])));var St=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),At=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),vt=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var ba=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),Ea=new Set(St),xa=new Set(At),Sa=new Set(vt);var Aa=Object.freeze(["authorization","bearer","cookie","credential","password","passphrase","secret","token","privatekey","privkey","seed","mnemonic","keystore","signature","prompt","systemmessage","usermessage","assistantmessage","rawtransaction","signedtransaction","serializedtransaction","transactionbytes","calldata","callbytes","inputdata"]);var va=Object.freeze({taskId:"x-oracle-task-id",intentId:"x-oracle-intent-id",planId:"x-oracle-plan-id",runId:"x-oracle-run-id",eventId:"x-oracle-event-id"});var Ca=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var Ba=32*1024*1024;var Fa=Object.freeze({N:1<<17,r:8,p:1}),ja=256*1024*1024,qa=16*1024;var Ha=Object.freeze({1:{name:"ethereum",mode:"mempool-private",endpoints:["https://rpc.flashbots.net/fast","https://rpc.mevblocker.io"]},8453:{name:"base",mode:"sequencer",endpoints:["https://mainnet-sequencer.base.org"]},10:{name:"optimism",mode:"sequencer",endpoints:["https://mainnet-sequencer.optimism.io"]},42161:{name:"arbitrum",mode:"sequencer",endpoints:["https://arb1-sequencer.arbitrum.io/rpc"]},56:{name:"bsc",mode:"mempool-private",endpoints:["https://rpc.48.club","https://bsc.rpc.blxrbdn.com"]},137:{name:"polygon",mode:"mempool-private",endpoints:["https://polygon-bor-rpc.publicnode.com"]},43114:{name:"avalanche",mode:"public-only",endpoints:[]},999:{name:"hyperevm",mode:"public-only",endpoints:[]}});import{homedir as Z}from"node:os";import{join as Q}from"node:path";var ve=process.env.ORACLE_PUBLIC_DESKTOP==="1",It=ve?process.env.ORACLE_CONFIG_DIR||Q(Z(),".config","oracle"):Q(Z(),".config","oracle"),Va=ve?It:Q(Z(),".config","mad-desk");var Xa="0".repeat(64),Za=Object.freeze({PREPARE:"exec.prepare",SIGN:"exec.sign",BROADCAST:"exec.broadcast",POLICY_REJECT:"policy.reject",AUTH_GRANT:"auth.grant",AUTH_OK:"auth.verify.ok",AUTH_FAIL:"auth.verify.fail"});var Qa=Promise.resolve();import{readFileSync as lc,readdirSync as dc,existsSync as kt}from"node:fs";import{dirname as Ot,join as x}from"node:path";import{fileURLToPath as Tt}from"node:url";var S=Ot(Tt(import.meta.url));function Nt(){let e=[x(S,"descriptors"),x(S,"clear-sign","descriptors"),x(S,"..","clear-sign","descriptors"),x(S,"..","..","clear-sign","descriptors"),x(S,"..","..","..","clear-sign","descriptors")];for(let t of e)if(kt(t))return t;return e[0]}var wc=Nt();var hc=(1n<<256n)-1n;import{Wallet as Ic}from"ethers";import{base58 as Oc}from"@scure/base";import{ed25519 as Nc}from"@noble/curves/ed25519.js";import{NETWORK as _c,TEST_NETWORK as Lc,WIF as Rc,p2wpkh as $c}from"@scure/btc-signer";import{pubECDSA as Bc}from"@scure/btc-signer/utils.js";var jc=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),qc=Object.freeze(["binance","bybit","okx","coinbase"]),Mc=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),Hc=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),zc=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Wc=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),Uc=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Vc=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),Jc=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),Kc=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),Gc=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var Lt=Object.freeze({binance:Object.freeze({create:["POST","/api/v3/order"],cancel:["DELETE","/api/v3/order"],status:["GET","/api/v3/order"]}),bybit:Object.freeze({create:["POST","/v5/order/create"],cancel:["POST","/v5/order/cancel"],status:["GET","/v5/order/realtime"]}),okx:Object.freeze({create:["POST","/api/v5/trade/order"],cancel:["POST","/api/v5/trade/cancel-order"],status:["GET","/api/v5/trade/order"]}),coinbase:Object.freeze({create:["POST","/orders"],cancel:["DELETE","/orders/{order_id}"],status:["GET","/orders/{order_id}"]})}),ke=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var iu=256*1024;var u=new re(["function collection() view returns (address)","function token() view returns (address)","function robinhoodSwapFeeWei() view returns (uint256)","function quoteSpecificBuy(uint256 tokenId) view returns (uint256 totalCost,uint256 baseCost,uint256 fee,uint256 protocolFee,bool available)","function quoteSellNFT() view returns (uint256 netPayout,uint256 grossPayout,uint256 fee,uint256 protocolFee)","function inventory(uint256 tokenId) view returns (bool)","function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Oe=new re(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),te=new re(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"]);function c(e,t){let r=String(e||"").toLowerCase();if(!/^0x[0-9a-f]{40}$/.test(r))throw new Error(`signer: invalid ${t}`);return r}function Te(e,t){return Object.entries(e||{}).find(([r])=>r.toLowerCase()===t)?.[1]}function $t(e,t){let r=e?.anvilQuote;if(!r||typeof r!="object"||Array.isArray(r))throw new Error("signer: exact prepared Anvil quote is required");if(!e?.artifact?.anvilQuote||JSON.stringify(e.artifact.anvilQuote)!==JSON.stringify(r))throw new Error("signer: exact prepared Anvil quote artifact mismatch");return Object.freeze(t==="buy"?{totalCostRaw:BigInt(r.totalCostRaw).toString(),baseCostRaw:BigInt(r.baseCostRaw).toString(),feeRaw:BigInt(r.feeRaw).toString(),protocolFeeRaw:BigInt(r.protocolFeeRaw).toString(),available:r.available===!0}:{netPayoutRaw:BigInt(r.netPayoutRaw).toString(),grossPayoutRaw:BigInt(r.grossPayoutRaw).toString(),feeRaw:BigInt(r.feeRaw).toString(),protocolFeeRaw:BigInt(r.protocolFeeRaw).toString()})}function Pt(e,t,r){if(e.preconditions?.exactQuoteConfirmed!==!0)throw new Error("signer: exact prepared Anvil quote confirmation required");let s=e.artifact,p=t==="buy"?[r.totalCostRaw,e.maxPaymentTokenAmountRaw,s?.maxPaymentTokenAmountRaw,e.exactQuoteTotalCostRaw,s?.exactQuoteTotalCostRaw,e.preconditions?.confirmedTotalCostRaw]:[r.netPayoutRaw,e.minPayoutRaw,s?.minPayoutRaw,e.exactQuoteNetPayoutRaw,s?.exactQuoteNetPayoutRaw,e.preconditions?.confirmedNetPayoutRaw],n;try{n=BigInt(p[0]);for(let g of p.slice(1))if(BigInt(g)!==n)throw new Error("mismatch")}catch{throw new Error(`signer: exact Anvil ${t} settlement limit mismatch`)}let d=s?.transactions;if(!Array.isArray(d)||d.length!==1)throw new Error("signer: exact Anvil action transaction required");let h=t==="buy"?"buySpecificNFT":"sellNFT",f;try{if(f=u.decodeFunctionData(h,d[0].data),u.encodeFunctionData(h,[f[0],f[1]]).toLowerCase()!==String(d[0].data).toLowerCase())throw new Error("non-canonical")}catch{throw new Error(`signer: exact Anvil ${t} calldata required`)}if(BigInt(f[0])!==BigInt(e.tokenId)||BigInt(f[1])!==n)throw new Error(`signer: exact Anvil ${t} calldata limit mismatch`);return n}async function l(e,t,r,s,p,n=[]){let d=await e.send("eth_call",[{to:t,data:r.encodeFunctionData(s,n)},p]);return r.decodeFunctionResult(s,d)[0]}async function Ne(e,t,r,{nowMs:s=Date.now(),signerAddress:p}={}){if(t?.surface!=="evm-nft"||String(t?.provider).toLowerCase()!=="anvil-nft")return null;if(!e||typeof e.send!="function")throw new Error("signer: trusted RPC cannot attest Anvil market");let n=c(t.destination,"Anvil market"),d=c(t.contract,"Anvil collection"),h=c(t.paymentToken,"Anvil payment token"),f=BigInt(t.nativeSwapFeeWei),g=Number(t.paymentTokenDecimals),y=c(p,"Anvil signer identity"),Ce=c(t.owner,"Anvil envelope owner");if(y!==Ce)throw new Error("signer: Anvil signer identity mismatch");let m=BigInt(t.tokenId);if(m<0n)throw new Error("signer: invalid Anvil tokenId");let w=String(t.nftAction||"").toLowerCase();if(w!=="buy"&&w!=="sell")throw new Error("signer: unsupported Anvil NFT action");let _=$t(t,w),L=Pt(t,w,_),A=t.anvilAttestation;if(!A||typeof A!="object"||Number(A.snapshotExpiresAtMs)<=Number(s))throw new Error("signer: fresh provider Anvil attestation required");let R=String(Te(r.anvilRuntimeCodeHashes,n)||"").toLowerCase();if(!/^0x[0-9a-f]{64}$/.test(R)||R!==String(A.runtimeCodeHash||"").toLowerCase())throw new Error("signer: Anvil runtime is not reviewed by policy");let ne=Te(r.nftPaymentTokenCaps,h);if(!ne||Number(ne.decimals)!==g)throw new Error("signer: Anvil payment token decimals are not reviewed by policy");let oe=String(await e.send("eth_chainId",[])).toLowerCase();if(!/^0x(?:0|[1-9a-f][0-9a-f]*)$/.test(oe)||BigInt(oe)!==4663n)throw new Error("signer: trusted RPC Anvil chain mismatch");let v=String(await e.send("eth_blockNumber",[])).toLowerCase();if(!/^0x(?:0|[1-9a-f][0-9a-f]*)$/.test(v))throw new Error("signer: trusted RPC returned an invalid Anvil block number");let _e=BigInt(v),ie=await e.send("eth_getBlockByNumber",[v,!1]),$=String(ie?.hash||"").toLowerCase();if(String(ie?.number||"").toLowerCase()!==v||!/^0x[0-9a-f]{64}$/.test($))throw new Error("signer: trusted RPC returned an invalid Anvil block attestation");let i=Object.freeze({blockHash:$,requireCanonical:!0}),P=String(await e.send("eth_getCode",[n,i])).toLowerCase();if(!/^0x[0-9a-f]+$/.test(P)||P==="0x")throw new Error("signer: Anvil market runtime is empty");let se=Rt(P).toLowerCase();if(se!==R)throw new Error("signer: Anvil market runtime mismatch with reviewed policy");let[Le,Re,$e]=await Promise.all([l(e,n,u,"collection",i),l(e,n,u,"token",i),l(e,n,u,"robinhoodSwapFeeWei",i)]),b=c(Le,"live Anvil collection"),I=c(Re,"live Anvil payment token"),ae=BigInt($e).toString();if(b!==d)throw new Error("signer: live Anvil collection mismatch");if(I!==h)throw new Error("signer: live Anvil payment token mismatch");if(ae!==f.toString())throw new Error("signer: live Anvil native swap fee mismatch");let B=Number(await l(e,I,Oe,"decimals",i));if(!Number.isSafeInteger(B)||B!==g)throw new Error("signer: live Anvil payment token decimals mismatch");let D=c(await l(e,b,te,"ownerOf",i,[m]),"live Anvil token owner"),F=null,k=null,O=null,T=null,o;if(w==="buy"){let[j,q,M]=await Promise.all([l(e,n,u,"inventory",i,[m]),l(e,I,Oe,"allowance",i,[y,n]),e.send("eth_call",[{to:n,data:u.encodeFunctionData("quoteSpecificBuy",[m])},i])]);F=!!j,k=BigInt(q).toString();let a=u.decodeFunctionResult("quoteSpecificBuy",M);if(o=Object.freeze({totalCostRaw:BigInt(a[0]).toString(),baseCostRaw:BigInt(a[1]).toString(),feeRaw:BigInt(a[2]).toString(),protocolFeeRaw:BigInt(a[3]).toString(),available:!!a[4]}),JSON.stringify(o)!==JSON.stringify(_))throw new Error("signer: exact Anvil buy quote changed after preparation");if(D!==n)throw new Error("signer: exact Anvil token owner is not the market");if(!F)throw new Error("signer: exact Anvil token is not in market inventory");if(BigInt(k)!==BigInt(t.preconditions?.allowanceRaw))throw new Error("signer: live Anvil ERC20 allowance changed after preparation");if(BigInt(k)<L)throw new Error("signer: live Anvil ERC20 allowance is insufficient");if(!o.available)throw new Error("signer: exact Anvil buy quote is unavailable");if(BigInt(o.totalCostRaw)!==L)throw new Error("signer: live Anvil buy quote does not equal exact payment limit");if(BigInt(o.totalCostRaw)!==BigInt(o.baseCostRaw)+BigInt(o.feeRaw)+BigInt(o.protocolFeeRaw))throw new Error("signer: exact Anvil buy quote fee arithmetic mismatch")}else{let[j,q,M]=await Promise.all([l(e,b,te,"getApproved",i,[m]),l(e,b,te,"isApprovedForAll",i,[y,n]),e.send("eth_call",[{to:n,data:u.encodeFunctionData("quoteSellNFT")},i])]);O=c(j,"live Anvil token approval"),T=!!q;let a=u.decodeFunctionResult("quoteSellNFT",M);if(o=Object.freeze({netPayoutRaw:BigInt(a[0]).toString(),grossPayoutRaw:BigInt(a[1]).toString(),feeRaw:BigInt(a[2]).toString(),protocolFeeRaw:BigInt(a[3]).toString()}),JSON.stringify(o)!==JSON.stringify(_))throw new Error("signer: exact Anvil sell quote changed after preparation");if(D!==y)throw new Error("signer: exact Anvil token owner does not match signer");if(O!==n&&!T)throw new Error("signer: live Anvil NFT approval is insufficient");if(O!==c(t.preconditions?.approvedAddress,"prepared Anvil token approval")||T!==!!t.preconditions?.approvedForAll)throw new Error("signer: live Anvil NFT approval changed after preparation");if(BigInt(o.netPayoutRaw)!==L)throw new Error("signer: live Anvil sell quote does not equal exact payout limit");if(BigInt(o.netPayoutRaw)+BigInt(o.feeRaw)+BigInt(o.protocolFeeRaw)!==BigInt(o.grossPayoutRaw))throw new Error("signer: exact Anvil sell quote fee arithmetic mismatch")}return Object.freeze({source:"local-signer-trusted-rpc",chainId:4663,market:n,collection:b,paymentToken:I,paymentTokenDecimals:B,nativeSwapFeeWei:ae,signerAddress:y,nftAction:w,tokenId:m.toString(),tokenOwner:D,inventoryMember:F,allowanceRaw:k,approvedAddress:O,approvedForAll:T,quote:o,blockNumber:_e.toString(),blockHash:$,runtimeCodeHash:se,verifiedAtMs:Number(s)})}try{let e=JSON.parse(Bt.readFileSync(0,"utf8")),t=new Dt(e.rpcUrl,Number(e.chainId)),r=await Ne(t,e.envelope,e.policy,{nowMs:Number(e.nowMs),signerAddress:e.signerAddress});process.stdout.write(JSON.stringify(r))}catch(e){process.stderr.write(`Anvil attestation failed: ${String(e?.message||e)}
1
+ import Bt from"node:fs";import{JsonRpcProvider as Dt}from"ethers";import{Interface as re,keccak256 as Lt}from"ethers";import{Transaction as Qu}from"@scure/btc-signer";import{ed25519 as tl}from"@noble/curves/ed25519.js";import{base58 as wi}from"@scure/base";import{Interface as pe}from"ethers";import{Interface as je,MaxUint256 as hr,isAddress as gr,keccak256 as yr,toUtf8Bytes as br}from"ethers";import{Interface as De,isAddress as Xt}from"ethers";import{isAddress as Ut}from"ethers";var tr=new De(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as Fe,isAddress as or}from"ethers";var cr=new Fe(["function approve(address spender,uint256 amount) returns (bool)"]),ur=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var Ir=new je(["function approve(address spender,uint256 amount) returns (bool)"]);var Or=300*1e3,Tr=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})();import{Address as Lr,NETWORK as $r,OutScript as Pr,RawTx as Br,SigHash as Dr,TEST_NETWORK as Fr,Transaction as jr}from"@scure/btc-signer";import{createHash as qe}from"node:crypto";import{base58 as zr}from"@scure/base";import{getCompiledTransactionMessageDecoder as Ur}from"@solana/transaction-messages";var ce=e=>qe("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Vr=new Map([[ce("route"),{name:"route",prefixBytes:0}],[ce("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);var en=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"aborted")?.get,tn=Object.getOwnPropertyDescriptor(AbortSignal.prototype,"reason")?.get,rn=AbortSignal.prototype.throwIfAborted,nn=EventTarget.prototype.addEventListener,on=EventTarget.prototype.removeEventListener,sn=typeof AbortSignal.any=="function"?AbortSignal.any.bind(AbortSignal):null;var an=64*1024,cn=Object.freeze({depth:32,nodes:1e4,fields:1e4,arrayLength:1e4,bytes:1024*1024});var yn=Object.freeze({tradexyz:"xyz",ventuals:"vntl",hypernova:"hyna",paradex:"para",entropy:"io",entropyio:"io"});var An=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"leverage","perp-isolated-margin":"margin","builder-fee-approval":"approveBuilder","hype-stake-deposit":"stake","hype-stake-withdraw":"unstake","hype-delegate":"delegate","hype-undelegate":"delegate"}),vn=Object.freeze({"perp-order":"order","hip3-order":"order","hip4-order":"order","perp-bracket":"order","perp-cancel":"cancel","perp-leverage":"updateLeverage","perp-isolated-margin":"updateIsolatedMargin","builder-fee-approval":"approveBuilderFee","hype-stake-deposit":"cDeposit","hype-stake-withdraw":"cWithdraw","hype-delegate":"tokenDelegate","hype-undelegate":"tokenDelegate"});var On="0x"+"00".repeat(32);var He=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),Rn=Object.freeze(He.map(e=>e[0]));import{TypedDataEncoder as uo,getAddress as lo}from"ethers";import{TypedDataEncoder as Dn,getAddress as Fn,isAddress as jn}from"ethers";var We=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),Ue=Object.freeze({Order:[{name:"salt",type:"uint256"},{name:"maker",type:"address"},{name:"receiver",type:"address"},{name:"makerAsset",type:"address"},{name:"takerAsset",type:"address"},{name:"makingAmount",type:"uint256"},{name:"takingAmount",type:"uint256"},{name:"makerTraits",type:"uint256"}]});import{TypedDataEncoder as Yn,getAddress as Xn,isAddress as Zn}from"ethers";var Hn=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});var Ve=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),io=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var Je=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),so=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var mo=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var Qe=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var _o=Object.freeze({swap:5,bridge:5,perps:0,nft:0,mint:0,transfer:0,approve:0,delegate:0,identity:0,order:0,cancel:0,leverage:0,margin:0,approveBuilder:0,stake:0,unstake:0});var et=Object.freeze({"0x04e45aaf":{provider:"uniswap-v3",action:"swap",layout:"router02-exact-input-single"},"0x414bf389":{provider:"uniswap-v3",action:"swap",layout:"swap-router-exact-input-single"},"0xc04b8d59":{provider:"uniswap-v3",action:"swap",layout:"exact-input-deadline"},"0xb858183f":{provider:"uniswap-v3",action:"swap",layout:"exact-input"},"0x5ae401dc":{provider:"uniswap-v3",action:"swap",layout:"multicall-deadline"},"0xa026383e":{provider:"aerodrome",action:"swap",layout:"aerodrome-exact-input-single"},"0x7b939232":{provider:"across-v3",action:"bridge",layout:"across-deposit-v3"}}),Ro=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),Lo=new pe(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),$o=new pe(["function mintAllowList(address nftContract,address feeRecipient,address minterIfNotPayer,uint256 quantity,(uint80 mintPrice,uint48 maxTotalMintableByWallet,uint48 startTime,uint48 endTime,uint48 dropStageIndex,uint32 maxTokenSupplyForStage,uint16 feeBps,bool restrictFeeRecipients) mintParams,bytes32[] proof) payable"]),Po=Object.freeze({"0xa0712d68":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0x1249c58b":{provider:"nft-mint",action:"mint",layout:"mint-no-args"},"0x2db11544":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xefef39a1":{provider:"nft-mint",action:"mint",layout:"mint-quantity"},"0xa6f2ae3a":{provider:"nft-mint",action:"mint",layout:"mint-no-args"}});var tt=Object.freeze([...Qe]),Bo=Object.freeze({...et});import{ed25519 as Zo}from"@noble/curves/ed25519.js";import{base58 as ei}from"@scure/base";import{RawTx as ri,SigHash as ni,Transaction as oi}from"@scure/btc-signer";import{Transaction as si,keccak256 as ai,verifyTypedData as ci}from"ethers";import{encode as jo}from"@msgpack/msgpack";import{keccak256 as Mo,verifyTypedData as Ho}from"ethers";var zo=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),Wo=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{closeSync as _i,constants as it,fchmodSync as Ri,fsyncSync as Li,lstatSync as $i,mkdirSync as Pi,openSync as Bi,readFileSync as Di,renameSync as Fi,rmSync as ji,writeFileSync as qi}from"node:fs";import{wordlists as Ti}from"ethers";var zi=it.O_NOFOLLOW??0;import{wordlists as Vi}from"ethers";var me=64*1024;var Ki=32*1024;var ct=["schemaVersion","buildVersion","recordType","execution","custody"],Xi=[...ct,"recordHash"];var Zi=Object.freeze({signed:new Set(["workflow.signed","legacy.signed"]),submitted:new Set(["workflow.submitted","legacy.broadcast"]),finalized:new Set(["workflow.finalized"]),reorged:new Set(["workflow.reorged"]),orphaned:new Set(["workflow.orphaned"]),compensating:new Set(["workflow.compensating"]),compensated:new Set(["workflow.compensated"])});var ut=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Ae=Object.freeze(["workflow.drafted","workflow.checked","workflow.approval_requested","workflow.approval_granted","workflow.signed","workflow.submitted","workflow.finalized","workflow.reorged","workflow.orphaned","workflow.compensating","workflow.compensated","workflow.failed","workflow.cancelled","workflow.annotated"]),ns=new Set(Ae);var wt=64*1024*1024;var ls=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),ds=Object.freeze(["read","simulate"]);var fs=1440*60;var xs=Object.freeze(["privkey","wif","xprv","seed"]);var Ss=Object.freeze([{rule:"raw-32-byte-hex-key",re:/^0x[0-9a-fA-F]{64}$/},{rule:"raw-32-byte-hex-bare",re:/^[0-9a-fA-F]{64}$/},{rule:"extended-private-key",re:/\b(?:xprv|tprv|yprv|zprv)[1-9A-HJ-NP-Za-km-z]{107}\b/},{rule:"bitcoin-wif",re:/\b[59KLc][1-9A-HJ-NP-Za-km-z]{50,51}\b/},{rule:"bip39-mnemonic",re:/\b(?:[a-z]{3,8}\s+){11,23}[a-z]{3,8}\b/},{rule:"bearer-token",re:/bearer\s+[A-Za-z0-9._~+/=-]+/i},{rule:"pem-private-key",re:/-----BEGIN[A-Z ]*PRIVATE KEY-----/},{rule:"keystore-path",re:/keystore/i},{rule:"signer-url",re:/https?:\/\/\S*sign/i},{rule:"authorization-header",re:/authorization\s*:/i}]),As=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);var X=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Os=Object.freeze(Object.fromEntries(X.map((e,t)=>[e,Object.freeze(t+1<X.length?[X[t+1]]:[])])));var ht=Object.freeze({intent:"draft",quote_comparison:"draft",simulation:"draft",prepared:"checked",approval:"approval",signed:"signed",broadcast:"submitted",settlement:"finalized",balance_delta:"compensated",position:"compensated"});var yt=Object.freeze(["owner","operator","agent","viewer"]),bt=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),Et=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),da=Object.freeze(["owner"]),fa=Object.freeze({ALLOW_ROLE_PERMISSION:"allow.role_permission",DENY_MISSING_CONTEXT:"deny.missing_context",DENY_INVALID_CONTEXT:"deny.invalid_context",DENY_INVALID_REQUEST:"deny.invalid_request",DENY_UNKNOWN_RESOURCE:"deny.unknown_resource",DENY_UNKNOWN_ACTION:"deny.unknown_action",DENY_UNBOUND_OBJECT:"deny.unbound_object",DENY_TENANT_MISMATCH:"deny.tenant_mismatch",DENY_RESOURCE_MISMATCH:"deny.resource_mismatch",DENY_ROLE_PERMISSION:"deny.role_permission",DENY_POLICY_NOT_APPROVER:"deny.policy_not_approver"}),pa=new Set(yt),ma=new Set(bt),wa=new Set(Object.values(Et));var xt=Object.freeze({owner:Object.freeze(["tenant:read","tenant:manage","config:read","config:manage","policy:read","policy:manage","grant:read","grant:create","grant:update","grant:delete","grant:manage","workflow:read","workflow:create","workflow:update","workflow:delete","workflow:cancel","workflow:approve","trade:read","trade:prepare","receipt:read","receipt:export","audit:read","audit:export","telemetry:read","telemetry:create","telemetry:export","context:read","context:create","context:update","context:delete","context:manage","context:export","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:delete","lifecycle:manage","lifecycle:approve","lifecycle:export"]),operator:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","workflow:cancel","trade:read","trade:prepare","receipt:read","audit:read","telemetry:read","telemetry:create","context:read","context:create","context:update","context:delete","lifecycle:read","lifecycle:create","lifecycle:update","lifecycle:manage"]),agent:Object.freeze(["tenant:read","config:read","policy:read","grant:read","workflow:read","workflow:create","workflow:update","trade:read","trade:prepare","receipt:read","telemetry:create","context:read","context:create","context:update","lifecycle:read"]),viewer:Object.freeze(["tenant:read","config:read","grant:read","workflow:read","trade:read","receipt:read","audit:read","telemetry:read","context:read","lifecycle:read"])}),ha=Object.freeze(Object.fromEntries(Object.entries(xt).map(([e,t])=>[e,Object.freeze([...t])])));var St=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),At=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),vt=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var Ea=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),xa=new Set(St),Sa=new Set(At),Aa=new Set(vt);var va=Object.freeze(["authorization","bearer","cookie","credential","password","passphrase","secret","token","privatekey","privkey","seed","mnemonic","keystore","signature","prompt","systemmessage","usermessage","assistantmessage","rawtransaction","signedtransaction","serializedtransaction","transactionbytes","calldata","callbytes","inputdata"]);var Ia=Object.freeze({taskId:"x-oracle-task-id",intentId:"x-oracle-intent-id",planId:"x-oracle-plan-id",runId:"x-oracle-run-id",eventId:"x-oracle-event-id"});var _a=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var Da=32*1024*1024;var ja=Object.freeze({N:1<<17,r:8,p:1}),qa=256*1024*1024,Ma=16*1024;var za=Object.freeze({1:{name:"ethereum",mode:"mempool-private",endpoints:["https://rpc.flashbots.net/fast","https://rpc.mevblocker.io"]},8453:{name:"base",mode:"sequencer",endpoints:["https://mainnet-sequencer.base.org"]},10:{name:"optimism",mode:"sequencer",endpoints:["https://mainnet-sequencer.optimism.io"]},42161:{name:"arbitrum",mode:"sequencer",endpoints:["https://arb1-sequencer.arbitrum.io/rpc"]},56:{name:"bsc",mode:"mempool-private",endpoints:["https://rpc.48.club","https://bsc.rpc.blxrbdn.com"]},137:{name:"polygon",mode:"mempool-private",endpoints:["https://polygon-bor-rpc.publicnode.com"]},43114:{name:"avalanche",mode:"public-only",endpoints:[]},999:{name:"hyperevm",mode:"public-only",endpoints:[]}});import{homedir as Z}from"node:os";import{join as Q}from"node:path";var ve=process.env.ORACLE_PUBLIC_DESKTOP==="1",It=ve?process.env.ORACLE_CONFIG_DIR||Q(Z(),".config","oracle"):Q(Z(),".config","oracle"),Ja=ve?It:Q(Z(),".config","mad-desk");var Za="0".repeat(64),Qa=Object.freeze({PREPARE:"exec.prepare",SIGN:"exec.sign",BROADCAST:"exec.broadcast",POLICY_REJECT:"policy.reject",AUTH_GRANT:"auth.grant",AUTH_OK:"auth.verify.ok",AUTH_FAIL:"auth.verify.fail"});var ec=Promise.resolve();import{readFileSync as dc,readdirSync as fc,existsSync as kt}from"node:fs";import{dirname as Ot,join as x}from"node:path";import{fileURLToPath as Tt}from"node:url";var S=Ot(Tt(import.meta.url));function Nt(){let e=[x(S,"descriptors"),x(S,"clear-sign","descriptors"),x(S,"..","clear-sign","descriptors"),x(S,"..","..","clear-sign","descriptors"),x(S,"..","..","..","clear-sign","descriptors")];for(let t of e)if(kt(t))return t;return e[0]}var hc=Nt();var gc=(1n<<256n)-1n;import{Wallet as kc}from"ethers";import{base58 as Tc}from"@scure/base";import{ed25519 as Cc}from"@noble/curves/ed25519.js";import{NETWORK as Rc,TEST_NETWORK as Lc,WIF as $c,p2wpkh as Pc}from"@scure/btc-signer";import{pubECDSA as Dc}from"@scure/btc-signer/utils.js";var qc=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),Mc=Object.freeze(["binance","bybit","okx","coinbase"]),Hc=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),zc=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),Wc=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Uc=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),Vc=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Jc=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),Kc=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),Gc=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),Yc=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var Rt=Object.freeze({binance:Object.freeze({create:["POST","/api/v3/order"],cancel:["DELETE","/api/v3/order"],status:["GET","/api/v3/order"]}),bybit:Object.freeze({create:["POST","/v5/order/create"],cancel:["POST","/v5/order/cancel"],status:["GET","/v5/order/realtime"]}),okx:Object.freeze({create:["POST","/api/v5/trade/order"],cancel:["POST","/api/v5/trade/cancel-order"],status:["GET","/api/v5/trade/order"]}),coinbase:Object.freeze({create:["POST","/orders"],cancel:["DELETE","/orders/{order_id}"],status:["GET","/orders/{order_id}"]})}),ke=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var su=256*1024;var u=new re(["function collection() view returns (address)","function token() view returns (address)","function robinhoodSwapFeeWei() view returns (uint256)","function quoteSpecificBuy(uint256 tokenId) view returns (uint256 totalCost,uint256 baseCost,uint256 fee,uint256 protocolFee,bool available)","function quoteSellNFT() view returns (uint256 netPayout,uint256 grossPayout,uint256 fee,uint256 protocolFee)","function inventory(uint256 tokenId) view returns (bool)","function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),Oe=new re(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),te=new re(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"]);function c(e,t){let r=String(e||"").toLowerCase();if(!/^0x[0-9a-f]{40}$/.test(r))throw new Error(`signer: invalid ${t}`);return r}function Te(e,t){return Object.entries(e||{}).find(([r])=>r.toLowerCase()===t)?.[1]}function $t(e,t){let r=e?.anvilQuote;if(!r||typeof r!="object"||Array.isArray(r))throw new Error("signer: exact prepared Anvil quote is required");if(!e?.artifact?.anvilQuote||JSON.stringify(e.artifact.anvilQuote)!==JSON.stringify(r))throw new Error("signer: exact prepared Anvil quote artifact mismatch");return Object.freeze(t==="buy"?{totalCostRaw:BigInt(r.totalCostRaw).toString(),baseCostRaw:BigInt(r.baseCostRaw).toString(),feeRaw:BigInt(r.feeRaw).toString(),protocolFeeRaw:BigInt(r.protocolFeeRaw).toString(),available:r.available===!0}:{netPayoutRaw:BigInt(r.netPayoutRaw).toString(),grossPayoutRaw:BigInt(r.grossPayoutRaw).toString(),feeRaw:BigInt(r.feeRaw).toString(),protocolFeeRaw:BigInt(r.protocolFeeRaw).toString()})}function Pt(e,t,r){if(e.preconditions?.exactQuoteConfirmed!==!0)throw new Error("signer: exact prepared Anvil quote confirmation required");let s=e.artifact,p=t==="buy"?[r.totalCostRaw,e.maxPaymentTokenAmountRaw,s?.maxPaymentTokenAmountRaw,e.exactQuoteTotalCostRaw,s?.exactQuoteTotalCostRaw,e.preconditions?.confirmedTotalCostRaw]:[r.netPayoutRaw,e.minPayoutRaw,s?.minPayoutRaw,e.exactQuoteNetPayoutRaw,s?.exactQuoteNetPayoutRaw,e.preconditions?.confirmedNetPayoutRaw],n;try{n=BigInt(p[0]);for(let g of p.slice(1))if(BigInt(g)!==n)throw new Error("mismatch")}catch{throw new Error(`signer: exact Anvil ${t} settlement limit mismatch`)}let d=s?.transactions;if(!Array.isArray(d)||d.length!==1)throw new Error("signer: exact Anvil action transaction required");let h=t==="buy"?"buySpecificNFT":"sellNFT",f;try{if(f=u.decodeFunctionData(h,d[0].data),u.encodeFunctionData(h,[f[0],f[1]]).toLowerCase()!==String(d[0].data).toLowerCase())throw new Error("non-canonical")}catch{throw new Error(`signer: exact Anvil ${t} calldata required`)}if(BigInt(f[0])!==BigInt(e.tokenId)||BigInt(f[1])!==n)throw new Error(`signer: exact Anvil ${t} calldata limit mismatch`);return n}async function l(e,t,r,s,p,n=[]){let d=await e.send("eth_call",[{to:t,data:r.encodeFunctionData(s,n)},p]);return r.decodeFunctionResult(s,d)[0]}async function Ne(e,t,r,{nowMs:s=Date.now(),signerAddress:p}={}){if(t?.surface!=="evm-nft"||String(t?.provider).toLowerCase()!=="anvil-nft")return null;if(!e||typeof e.send!="function")throw new Error("signer: trusted RPC cannot attest Anvil market");let n=c(t.destination,"Anvil market"),d=c(t.contract,"Anvil collection"),h=c(t.paymentToken,"Anvil payment token"),f=BigInt(t.nativeSwapFeeWei),g=Number(t.paymentTokenDecimals),y=c(p,"Anvil signer identity"),Ce=c(t.owner,"Anvil envelope owner");if(y!==Ce)throw new Error("signer: Anvil signer identity mismatch");let m=BigInt(t.tokenId);if(m<0n)throw new Error("signer: invalid Anvil tokenId");let w=String(t.nftAction||"").toLowerCase();if(w!=="buy"&&w!=="sell")throw new Error("signer: unsupported Anvil NFT action");let _=$t(t,w),R=Pt(t,w,_),A=t.anvilAttestation;if(!A||typeof A!="object"||Number(A.snapshotExpiresAtMs)<=Number(s))throw new Error("signer: fresh provider Anvil attestation required");let L=String(Te(r.anvilRuntimeCodeHashes,n)||"").toLowerCase();if(!/^0x[0-9a-f]{64}$/.test(L)||L!==String(A.runtimeCodeHash||"").toLowerCase())throw new Error("signer: Anvil runtime is not reviewed by policy");let ne=Te(r.nftPaymentTokenCaps,h);if(!ne||Number(ne.decimals)!==g)throw new Error("signer: Anvil payment token decimals are not reviewed by policy");let oe=String(await e.send("eth_chainId",[])).toLowerCase();if(!/^0x(?:0|[1-9a-f][0-9a-f]*)$/.test(oe)||BigInt(oe)!==4663n)throw new Error("signer: trusted RPC Anvil chain mismatch");let v=String(await e.send("eth_blockNumber",[])).toLowerCase();if(!/^0x(?:0|[1-9a-f][0-9a-f]*)$/.test(v))throw new Error("signer: trusted RPC returned an invalid Anvil block number");let _e=BigInt(v),ie=await e.send("eth_getBlockByNumber",[v,!1]),$=String(ie?.hash||"").toLowerCase();if(String(ie?.number||"").toLowerCase()!==v||!/^0x[0-9a-f]{64}$/.test($))throw new Error("signer: trusted RPC returned an invalid Anvil block attestation");let i=Object.freeze({blockHash:$,requireCanonical:!0}),P=String(await e.send("eth_getCode",[n,i])).toLowerCase();if(!/^0x[0-9a-f]+$/.test(P)||P==="0x")throw new Error("signer: Anvil market runtime is empty");let se=Lt(P).toLowerCase();if(se!==L)throw new Error("signer: Anvil market runtime mismatch with reviewed policy");let[Re,Le,$e]=await Promise.all([l(e,n,u,"collection",i),l(e,n,u,"token",i),l(e,n,u,"robinhoodSwapFeeWei",i)]),b=c(Re,"live Anvil collection"),I=c(Le,"live Anvil payment token"),ae=BigInt($e).toString();if(b!==d)throw new Error("signer: live Anvil collection mismatch");if(I!==h)throw new Error("signer: live Anvil payment token mismatch");if(ae!==f.toString())throw new Error("signer: live Anvil native swap fee mismatch");let B=Number(await l(e,I,Oe,"decimals",i));if(!Number.isSafeInteger(B)||B!==g)throw new Error("signer: live Anvil payment token decimals mismatch");let D=c(await l(e,b,te,"ownerOf",i,[m]),"live Anvil token owner"),F=null,k=null,O=null,T=null,o;if(w==="buy"){let[j,q,M]=await Promise.all([l(e,n,u,"inventory",i,[m]),l(e,I,Oe,"allowance",i,[y,n]),e.send("eth_call",[{to:n,data:u.encodeFunctionData("quoteSpecificBuy",[m])},i])]);F=!!j,k=BigInt(q).toString();let a=u.decodeFunctionResult("quoteSpecificBuy",M);if(o=Object.freeze({totalCostRaw:BigInt(a[0]).toString(),baseCostRaw:BigInt(a[1]).toString(),feeRaw:BigInt(a[2]).toString(),protocolFeeRaw:BigInt(a[3]).toString(),available:!!a[4]}),JSON.stringify(o)!==JSON.stringify(_))throw new Error("signer: exact Anvil buy quote changed after preparation");if(D!==n)throw new Error("signer: exact Anvil token owner is not the market");if(!F)throw new Error("signer: exact Anvil token is not in market inventory");if(BigInt(k)!==BigInt(t.preconditions?.allowanceRaw))throw new Error("signer: live Anvil ERC20 allowance changed after preparation");if(BigInt(k)<R)throw new Error("signer: live Anvil ERC20 allowance is insufficient");if(!o.available)throw new Error("signer: exact Anvil buy quote is unavailable");if(BigInt(o.totalCostRaw)!==R)throw new Error("signer: live Anvil buy quote does not equal exact payment limit");if(BigInt(o.totalCostRaw)!==BigInt(o.baseCostRaw)+BigInt(o.feeRaw)+BigInt(o.protocolFeeRaw))throw new Error("signer: exact Anvil buy quote fee arithmetic mismatch")}else{let[j,q,M]=await Promise.all([l(e,b,te,"getApproved",i,[m]),l(e,b,te,"isApprovedForAll",i,[y,n]),e.send("eth_call",[{to:n,data:u.encodeFunctionData("quoteSellNFT")},i])]);O=c(j,"live Anvil token approval"),T=!!q;let a=u.decodeFunctionResult("quoteSellNFT",M);if(o=Object.freeze({netPayoutRaw:BigInt(a[0]).toString(),grossPayoutRaw:BigInt(a[1]).toString(),feeRaw:BigInt(a[2]).toString(),protocolFeeRaw:BigInt(a[3]).toString()}),JSON.stringify(o)!==JSON.stringify(_))throw new Error("signer: exact Anvil sell quote changed after preparation");if(D!==y)throw new Error("signer: exact Anvil token owner does not match signer");if(O!==n&&!T)throw new Error("signer: live Anvil NFT approval is insufficient");if(O!==c(t.preconditions?.approvedAddress,"prepared Anvil token approval")||T!==!!t.preconditions?.approvedForAll)throw new Error("signer: live Anvil NFT approval changed after preparation");if(BigInt(o.netPayoutRaw)!==R)throw new Error("signer: live Anvil sell quote does not equal exact payout limit");if(BigInt(o.netPayoutRaw)+BigInt(o.feeRaw)+BigInt(o.protocolFeeRaw)!==BigInt(o.grossPayoutRaw))throw new Error("signer: exact Anvil sell quote fee arithmetic mismatch")}return Object.freeze({source:"local-signer-trusted-rpc",chainId:4663,market:n,collection:b,paymentToken:I,paymentTokenDecimals:B,nativeSwapFeeWei:ae,signerAddress:y,nftAction:w,tokenId:m.toString(),tokenOwner:D,inventoryMember:F,allowanceRaw:k,approvedAddress:O,approvedForAll:T,quote:o,blockNumber:_e.toString(),blockHash:$,runtimeCodeHash:se,verifiedAtMs:Number(s)})}try{let e=JSON.parse(Bt.readFileSync(0,"utf8")),t=new Dt(e.rpcUrl,Number(e.chainId)),r=await Ne(t,e.envelope,e.policy,{nowMs:Number(e.nowMs),signerAddress:e.signerAddress});process.stdout.write(JSON.stringify(r))}catch(e){process.stderr.write(`Anvil attestation failed: ${String(e?.message||e)}
2
2
  `),process.exitCode=1}