@oracle-agent/oracle 0.35.21 → 0.35.22

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 (44) hide show
  1. package/README.md +24 -1
  2. package/dist/agent-lifecycle.mjs +3 -0
  3. package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
  4. package/dist/bin/desk-server.mjs +36 -36
  5. package/dist/bin/oracle-mev-arb-shadow.mjs +4 -4
  6. package/dist/bin/oracle-mev-shadow.mjs +6 -6
  7. package/dist/bin/oracle-route.mjs +11 -11
  8. package/dist/bin/oracle-scan.mjs +15 -15
  9. package/dist/bin/oracle.mjs +19 -10
  10. package/dist/cli/commands/chat.mjs +1 -1
  11. package/dist/cli/commands/context.mjs +16 -0
  12. package/dist/cli/commands/doctor.mjs +5 -5
  13. package/dist/cli/commands/eval.mjs +89 -89
  14. package/dist/cli/commands/lifecycle.mjs +17 -0
  15. package/dist/cli/commands/model.mjs +1 -1
  16. package/dist/cli/commands/quickstart.mjs +5 -5
  17. package/dist/cli/commands/sign.mjs +1 -1
  18. package/dist/cli/commands/signer.mjs +22 -22
  19. package/dist/cli/commands/snipe.mjs +4 -4
  20. package/dist/cli/commands/swap.mjs +4 -4
  21. package/dist/cli/commands/venues.mjs +2 -2
  22. package/dist/context-graph.mjs +3 -0
  23. package/dist/data/desk-data.mjs +34 -34
  24. package/dist/data/providers/lp-destination-discovery.mjs +6 -0
  25. package/dist/data/providers/lp-liquidity-ranker.mjs +1 -0
  26. package/dist/index.mjs +50 -48
  27. package/dist/local-signer/anvil-attestation-worker.mjs +1 -1
  28. package/dist/local-signer/runtime.mjs +1 -1
  29. package/dist/router/index.mjs +3 -3
  30. package/dist/router/prepare-bridge.mjs +2 -2
  31. package/dist/scanner/index.mjs +4 -4
  32. package/dist/tenant-rbac.mjs +1 -1
  33. package/dist/workflow-telemetry.mjs +1 -1
  34. package/package.json +5 -1
  35. package/public/eval-report.json +1 -1
  36. package/public/oracle-splash/brand/liquidlaunch.webp +0 -0
  37. package/public/oracle-splash/brand/markets.webp +0 -0
  38. package/public/oracle-splash/brand/motion.webp +0 -0
  39. package/public/oracle-splash/brand/nest.webp +0 -0
  40. package/public/oracle-splash/brand/outcome.webp +0 -0
  41. package/public/oracle-splash/brand/silhouette.webp +0 -0
  42. package/public/oracle-splash/brand/tradexyz.webp +0 -0
  43. package/public/oracle-splash/index.html +9 -9
  44. package/server.json +2 -2
@@ -1,8 +1,8 @@
1
- var _n=Object.defineProperty;var s=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(o){throw r=[o],o}};var me=(e,t)=>{for(var r in t)_n(e,r,{get:t[r],enumerable:!0})};function Dt(e){return Rn.get(Number(e))||null}function Ft(e,t=process.env){let r=Dt(e);if(!r)return null;for(let o of r.rpcEnv){let n=(t[o]||"").trim();if(n)return n}return null}var we,Rn,De=s(()=>{we={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0}},Rn=new Map(Object.values(we).map(e=>[e.chainId,e]))});function Y(e){let t=e?.transactionHash||e?.hash||e?.txid||null;return t?{happened:!0,hash:String(t),note:null}:{happened:!1,hash:null,note:"no transaction hash \u2014 the action did not succeed"}}var Fe=s(()=>{});var qt=s(()=>{});var jt=s(()=>{});var X=s(()=>{});var H=s(()=>{});var ge=s(()=>{X();H()});import{isAddress as Na}from"ethers";var je=s(()=>{ge();X();H()});import{Interface as Pn,isAddress as Pa}from"ethers";var qa,Mt=s(()=>{je();X();H();qa=new Pn(["function approve(address spender,uint256 amount) returns (bool)"])});import{Interface as Bn,isAddress as Ha}from"ethers";var Va,Ka,Ht=s(()=>{je();X();H();Va=new Bn(["function approve(address spender,uint256 amount) returns (bool)"]),Ka=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"})});var D=s(()=>{});import{Interface as Dn,MaxUint256 as es,isAddress as ts,keccak256 as rs,toUtf8Bytes as ns}from"ethers";var ls,F=s(()=>{jt();Mt();Ht();D();H();ls=new Dn(["function approve(address spender,uint256 amount) returns (bool)"])});var ds,fs,ye=s(()=>{ds=300*1e3,fs=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});var Ee=s(()=>{F()});import{Address as gs,NETWORK as ys,OutScript as Es,RawTx as bs,SigHash as xs,TEST_NETWORK as Ss,Transaction as As}from"@scure/btc-signer";var ze=s(()=>{});import{createHash as Fn}from"node:crypto";import{base58 as Os}from"@scure/base";import{getCompiledTransactionMessageDecoder as Ns}from"@solana/transaction-messages";var zt,Cs,Ue=s(()=>{zt=e=>Fn("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Cs=new Map([[zt("route"),{name:"route",prefixBytes:0}],[zt("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]])});import q from"node:net";import qn from"node:dns";function be(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let r=m=>{if(!m)return[];let l=m.split(":"),f=l.at(-1);if(f?.includes(".")){let u=f.split(".").map(Number);if(u.length!==4||u.some(g=>!Number.isInteger(g)||g<0||g>255))return null;l.splice(l.length-1,1,(u[0]<<8|u[1]).toString(16),(u[2]<<8|u[3]).toString(16))}return l.some(u=>!/^[0-9a-f]{1,4}$/.test(u))?null:l.map(u=>Number.parseInt(u,16))},[o,n]=t.split("::"),i=r(o),a=r(n);if(!i||!a)return null;let d=t.includes("::"),c=8-i.length-a.length;if(!d&&c!==0||d&&c<1)return null;let p=[...i,...Array(Math.max(0,c)).fill(0),...a];return p.length!==8?null:Uint8Array.from(p.flatMap(m=>[m>>8,m&255]))}function We(e,t,r){let o=Math.floor(r/8),n=r%8;for(let a=0;a<o;a+=1)if(e[a]!==t[a])return!1;if(!n)return!0;let i=255<<8-n;return(e[o]&i)===(t[o]&i)}function Ve(e){if(q.isIPv4(e)){let t=e.split(".").map(Number);return!(t[0]===0||t[0]===10||t[0]===127||t[0]>=224||t[0]===100&&t[1]>=64&&t[1]<=127||t[0]===169&&t[1]===254||t[0]===172&&t[1]>=16&&t[1]<=31||t[0]===192&&(t[1]===0||t[1]===2||t[1]===168)||t[0]===192&&t[1]===88&&t[2]===99||t[0]===198&&(t[1]===18||t[1]===19||t[1]===51)||t[0]===203&&t[1]===0&&t[2]===113)}if(q.isIPv6(e)){let t=be(e);if(!t)return!1;let r=be("::ffff:0:0");return We(t,r,96)?Ve([...t.slice(12)].join(".")):We(t,be("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,i])=>We(t,be(n),i)):!1}return!1}function Mn(e){let t;try{t=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(t.protocol!=="http:"&&t.protocol!=="https:")return{ok:!1,error:`refused protocol ${t.protocol} (only http/https)`};let r=t.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(jn.has(r)||r.endsWith(".localhost")||r.endsWith(".internal"))return{ok:!1,error:`refused internal host ${r}`};let o=q.isIP(r);return o!==0&&!Ve(r)?{ok:!1,error:`refused private address ${r}`}:{ok:!0,url:t,host:r,isLiteralIp:o!==0}}async function Ke(e,{lookupFn:t=qn.promises.lookup}={}){let r=Mn(e);if(!r.ok)return r;if(r.isLiteralIp)return{ok:!0,url:r.url,addresses:[{address:r.host,family:q.isIPv6(r.host)?6:4}]};let o;try{o=await t(r.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${r.host} did not resolve`}}return!Array.isArray(o)||o.length===0||o.some(n=>!Ve(n.address))?{ok:!1,error:`refused: ${r.host} resolves to a non-public address`}:{ok:!0,url:r.url,addresses:o}}async function Je({requireUndici:e=!1,importUndici:t=()=>import("undici")}={}){let r,o;try{let l=await t();r=l.Agent,o=l.fetch}catch(l){if(e)throw new Error(`egress-guard: untrustedUrl pinning requires the undici package, which failed to load: ${l?.message||l}`);return null}if(typeof r!="function"||typeof o!="function"){if(e)throw new Error("egress-guard: untrustedUrl pinning requires undici's Agent and fetch exports, which were not found on the imported module");return null}let n=l=>String(l).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),i=new Map,a=l=>(Array.isArray(l)?l:[l]).map(f=>typeof f=="string"?{address:f}:f).filter(f=>f&&f.address).map(f=>({address:f.address,family:f.family||(q.isIPv6(f.address)?6:4)})),d=(l,f,u)=>{i.set(n(l),a(typeof f=="string"?[{address:f,family:u}]:f))},c=l=>{let f=n(l);if(q.isIP(f))return[{address:f,family:q.isIPv6(f)?6:4}];let u=i.get(f);if(!u||!u.length)throw new Error(`refused: unpinned host ${l} during pinned fetch`);return u},p=new r({connect:{lookup(l,f,u){let g;try{g=c(l)}catch(w){return u(w)}return f?.all?u(null,g):u(null,g[0].address,g[0].family)}}}),m=Hn((l,f={})=>o(l,{...f,dispatcher:p}),d);return{dispatcher:p,fetch:m,pin:d,resolve:c,async close(){try{await p.destroy()}catch{}}}}function Hn(e,t){if(typeof e!="function")throw new Error("markPinCapableFetch: fetchImpl must be a function");if(typeof t!="function")throw new Error("markPinCapableFetch: pin must be a function");return e[Ge]=Object.freeze({pin:t}),e}function Ye(e){return typeof e=="function"&&typeof e[Ge]?.pin=="function"}function Ut(e,t,r){if(!Ye(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[Ge].pin(t,r)}var jn,Ge,Wt=s(()=>{jn=new Set(["localhost","metadata.google.internal","metadata.goog"]);Ge=Symbol.for("oracle.egressGuard.pinCapableFetch")});import{createHash as Vt}from"node:crypto";function Kn(e){let t=String(e||"").toLowerCase();return Qt.includes(t)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(t)}function Jn(e){let t={};for(let[r,o]of Object.entries(e||{}))Kn(r)||(t[r]=o);return t}function Gn(e,t){if(!e)throw new Error(`HTTP redirect from ${t} missing Location`);let r=new URL(String(e),String(t));if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error(`HTTP redirect from ${t} used unsupported protocol ${r.protocol}`);return r.toString()}function Yn(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}function Yt(e){let t=String(e?.method||"");return t?!Xn.test(t):!1}function Qn(e,t){if(e==="GET"&&t==null)return!0;if(e!=="POST"||t==null)return!1;let r=t;if(typeof t=="string")try{r=JSON.parse(t)}catch{return!1}return Array.isArray(r)?r.length>0&&r.every(Yt):!r||typeof r!="object"?!1:r.jsonrpc&&r.method?Yt(r):typeof r.type=="string"&&Zn.has(r.type)&&r.action==null&&r.signature==null&&r.nonce==null}function eo(e,t,r,o={},n=null){let i={};for(let[f,u]of Object.entries(r||{}))i[f.toLowerCase()]=u;let a=Object.keys(i).filter(f=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(f)),c=[...new Set([...Qt,...a])].sort().map(f=>`${f}=${i[f]??""}`).join(`
2
- `),p=Vt("sha256").update(c).digest("hex").slice(0,32),m=`${o.untrustedUrl?"untrusted":"trusted"}:${o.maxResponseBytes??"unbounded"}`,l=n==null?"-":Vt("sha256").update(String(n)).digest("hex").slice(0,32);return`${e} ${t} ${m} ${p} ${l}`}function to(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,Jt):Math.min(250*2**e,Jt)+Math.floor(Math.random()*100)}function Q(e,t={}){let r=new Error(e);return r.retryable=!1,Object.assign(r,t),r}function Ze(e,t,r){return Q(`HTTP response from ${e} exceeded maxResponseBytes ${r} (${t})`,{oversize:!0})}function ee(e){try{let t=e?.body?.cancel?.();t&&typeof t.then=="function"&&t.catch(()=>{})}catch{}}function no(e){return e?e.byteLength??e.length??0:0}async function Xt(e,t,{url:r,truncate:o=!1,onOversize:n}={}){if(t==null)return await e.text();let i=Number(e.headers?.get?.("content-length"));if(Number.isFinite(i)&&i>t&&(ee(e),!o))throw Ze(r,`content-length ${i}`,t);let a=e.body?.getReader?.();if(!a){let l=await e.text(),f=Buffer.byteLength(l,"utf8");if(f>t){if(!o)throw Ze(r,`body ${f} bytes`,t);return Buffer.from(l,"utf8").subarray(0,t).toString("utf8")}return l}let d=[],c=0,p=!1;try{for(;;){let{value:l,done:f}=await a.read();if(f)break;if(l&&(d.push(Buffer.from(l)),c+=no(l),c>t)){p=!0;break}}}finally{if(p)try{await a.cancel()}catch{}try{a.releaseLock?.()}catch{}}if(p&&(typeof n=="function"&&n(),!o))throw Ze(r,`streamed ${c} bytes`,t);let m=Buffer.concat(d);return(p?m.subarray(0,t):m).toString("utf8")}function Zt(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function oo(e,{fetchImpl:t,method:r,headers:o,body:n,timeoutMs:i,lookupFn:a,realFetch:d,untrustedUrl:c=!1,maxResponseBytes:p=null,importUndici:m,validateResponse:l,signal:f}){let u=new AbortController,g=setTimeout(()=>u.abort(),i),w=f?typeof AbortSignal.any=="function"?AbortSignal.any([f,u.signal]):f:u.signal,y=null,$=t,N=a?{lookupFn:a}:{};if(c&&!d&&!Ye($))throw Q(`HTTP refused ${e}: untrustedUrl requires a pin-capable fetchImpl (see markPinCapableFetch in egress-guard.mjs) or no fetchImpl override so Oracle can pin the connection itself`);let B=async(E,{status:x=null}={})=>{let S=await Ke(E,N);if(!S.ok)throw Q(x==null?`HTTP refused ${E}: ${S.error}`:`HTTP redirect to ${E} ${S.error}`,x==null?{}:{status:x});let h=new URL(E).hostname;if(d){if(y&&(await y.close(),y=null),!y)try{y=await Je({requireUndici:!0,...m?{importUndici:m}:{}})}catch(k){throw Q(x==null?`HTTP refused ${E}: ${k?.message||k}`:`HTTP redirect to ${E} refused: ${k?.message||k}`,x==null?{}:{status:x})}y.pin(h,S.addresses),$=y.fetch}else Ut($,h,S.addresses);return S};try{let E=String(e),x={...o||{}};c&&await B(E);for(let S=0;S<=Gt;S+=1){let h=await $(E,{method:r,headers:x,body:n,signal:w,redirect:"manual"});if(Wn.has(h.status)){if(r!=="GET"&&r!=="HEAD"){let T=await Xt(h,p??Vn,{url:E,truncate:!0}),C=new Error(`HTTP ${h.status} ${r} ${E} redirected non-idempotent request`);throw C.status=h.status,C.body=Zt(T)??T.slice(0,300),C}if(S===Gt)throw ee(h),new Error(`HTTP redirect loop for ${e}`);let O=h.headers?.get?.("location"),L;try{L=Gn(O,E)}catch(T){throw ee(h),T}let G=!Yn(L,E);if(ee(h),G&&(x=Jn(x)),c)await B(L,{status:h.status});else if(G){let T=await Ke(L,N);if(!T.ok){let C=new Error(`HTTP redirect from ${E} ${T.error}`);throw C.status=h.status,C.retryable=!1,C}d&&T.addresses?.length&&(y||(y=await Je(m?{importUndici:m}:{})),y&&(y.pin(new URL(L).hostname,T.addresses),$=y.fetch))}E=L;continue}if(typeof l=="function")try{await l(h,{url:E})}catch(O){throw ee(h),Q(O?.message||String(O))}let k=await Xt(h,p,{url:E,onOversize:()=>u.abort()}),pe=Zt(k);if(!h.ok){let O=new Error(`HTTP ${h.status} ${r} ${E}`);throw O.status=h.status,O.retryAfter=h.headers?.get?.("retry-after")??null,O.body=pe??k.slice(0,300),O}return pe??k}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(g),y&&await y.close()}}async function xe(e,t={}){let r=t.fetchImpl||globalThis.fetch;if(typeof r!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let o=t.timeoutMs??12e3,n=(t.method||"GET").toUpperCase(),i={Accept:"application/json",...t.headers||{}},a=t.body;a!=null&&typeof a!="string"&&(i["Content-Type"]=i["Content-Type"]||"application/json",a=JSON.stringify(a));let d=Number.isInteger(t.retries)?Math.max(t.retries,0):Un,c=t.lookupFn,p=!t.fetchImpl,m=t.untrustedUrl===!0,l=t.importUndici,f=t.validateResponse,u=t.signal,g=Number(t.maxResponseBytes),w=Number.isFinite(g)&&g>0?Math.floor(g):null,y=async()=>{let x;for(let S=0;S<=d;S++){u?.throwIfAborted?.();try{return await oo(e,{fetchImpl:r,method:n,headers:i,body:a,timeoutMs:o,lookupFn:c,realFetch:p,untrustedUrl:m,maxResponseBytes:w,importUndici:l,validateResponse:f,signal:u})}catch(h){x=h;let k=h?.status,pe=h?.name==="AbortError"||h?.name==="TimeoutError"||u?.aborted,O=new Set([408,425,429]),L=h?.retryable===!1?!1:k!=null?O.has(k)||zn.has(k)&&Kt.has(n):!pe&&Kt.has(n);if(S===d||!L)throw h;let G=to(S,h?.retryAfter);u?await new Promise((T,C)=>{let Cn=setTimeout(T,G);u.addEventListener("abort",()=>{clearTimeout(Cn),C(u.reason||new DOMException("Aborted","AbortError"))},{once:!0})}):await ro(G)}}throw x};if(!(t.dedupe!==!1&&!u&&Qn(n,a)))return y();let N=eo(n,e,i,{untrustedUrl:m,maxResponseBytes:w},a),B=Xe.get(N);if(B)return B;let E=y().finally(()=>Xe.delete(N));return Xe.set(N,E),E}var zn,Kt,Un,Jt,Qt,Wn,Gt,Vn,Xe,Xn,Zn,ro,Se=s(()=>{Wt();zn=new Set([408,425,429,500,502,503,504]),Kt=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),Un=2,Jt=4e3,Qt=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],Wn=new Set([301,302,303,307,308]),Gt=3,Vn=64*1024;Xe=new Map,Xn=/(?:^|_)(send|submit|broadcast|sign|requestAirdrop)(?=[A-Z_]|$)/i,Zn=new Set(["allMids","l2Book","outcomeMeta","spotClearinghouseState","userFills","meta","metaAndAssetCtxs","perpDexs","candleSnapshot","fundingHistory","openOrders","frontendOpenOrders","clearinghouseState","spotMeta","validatorSummaries","delegatorSummary","delegations","delegatorRewards","delegatorHistory","maxBuilderFee"]);ro=e=>new Promise(t=>setTimeout(t,e))});var er=s(()=>{Se()});var tr=s(()=>{er()});var Ks,Js,et=s(()=>{D();tr();Ks=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"}),Js=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 Xs,tt=s(()=>{D();Xs="0x"+"00".repeat(32)});var io,rc,rt=s(()=>{tt();D();io=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),rc=Object.freeze(io.map(e=>e[0]))});var Ae=s(()=>{D()});import{TypedDataEncoder as sc,getAddress as cc,isAddress as lc}from"ethers";var so,co,ir=s(()=>{ye();so=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),co=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"}]})});var fc,ar=s(()=>{fc=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"})});var sr=s(()=>{});import{TypedDataEncoder as bc,getAddress as xc,isAddress as Sc}from"ethers";var lo,Nc,uo,Cc,cr=s(()=>{Se();ge();ar();sr();ye();lo=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),Nc=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"}),uo=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"}]}),Cc=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]})});import{TypedDataEncoder as $c,getAddress as Lc}from"ethers";var Dc,nt=s(()=>{ir();cr();Dc=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"])});import{Interface as ur}from"ethers";var go,el,yo,tl,rl,nl,ol,Eo,il,ve=s(()=>{F();ge();ye();Ee();ze();Ue();et();rt();Ae();nt();go=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]),el=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}),yo=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"}}),tl=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),rl=new ur(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),nl=new ur(["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"]),ol=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"}}),Eo=Object.freeze([...go]),il=Object.freeze({...yo})});import{encode as cl}from"@msgpack/msgpack";import{keccak256 as ul,verifyTypedData as dl}from"ethers";var fl,pl,ot=s(()=>{fl=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),pl=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]})});var it=s(()=>{Ae()});import{ed25519 as xl}from"@noble/curves/ed25519.js";import{base58 as Al}from"@scure/base";import{RawTx as kl,SigHash as Il,Transaction as Ol}from"@scure/btc-signer";import{Transaction as Nl,keccak256 as Cl,verifyTypedData as _l}from"ethers";var at=s(()=>{ot();it()});import{base58 as Fl}from"@scure/base";var ke=s(()=>{ve();Ee();F();at()});var fr=s(()=>{ke();ve()});import{wordlists as So}from"ethers";function Io(e){let t=String(e).trim().toLowerCase().split(/\s+/).filter(Boolean);return ko.has(t.length)&&t.every(r=>So.en.getWordIndex(r)>=0)}function Co(e){let t=pr(e);return No.has(t)||To.test(t)}function pr(e){return String(e).replace(/[^a-z0-9]/gi,"").toLowerCase()}function _o(e){let t=pr(e);return[...Ao].some(r=>t.includes(r))}function Ro(e,t,r){if(typeof t=="string"){if(vo.some(o=>o.test(t))||Io(t))throw new te(r);if(Oo.test(t)&&!Co(e))throw new te(r)}}function st(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string")return Ro(r,e,t),e;if(typeof e=="number"){if(!Number.isFinite(e))throw new TypeError(`action receipt: non-finite number at ${t}`);return e}if(typeof e=="bigint")return e.toString();if(Array.isArray(e))return e.map((n,i)=>st(n,`${t}[${i}]`,r));if(typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`action receipt: JSON-like value required at ${t}`);let o={};for(let n of Object.keys(e).sort()){let i=`${t}.${n}`;if(_o(n))throw new te(i);e[n]!==void 0&&(o[n]=st(e[n],i,n))}return o}function ct(e){return st(e)}var Ao,vo,ko,Oo,To,No,te,Ie=s(()=>{Ao=new Set(["privatekey","privkey","secretkey","seedphrase","seed","mnemonic","passphrase","password","keystore","keymaterial","wif","xprv","xpriv","bearer","authorization","signature","apikey","credential"]),vo=[/\b[5KL][1-9A-HJ-NP-Za-km-z]{50,51}\b/,/\bxprv[0-9A-Za-z]{50,}\b/],ko=new Set([12,15,18,21,24]);Oo=/^\s*(?:0x)?[0-9a-fA-F]{64}\s*$/,To=/(hash|digest|root|salt|nonce|proof|commitment|sig|id)(?:e?s)?$/i,No=new Set(["calldata","data","publickey","pubkey","message","payload","input","extradata"]);te=class extends Error{constructor(t){super(`action receipt refused: secret-bearing field at ${t}`),this.name="ActionReceiptSecretError",this.code="ACTION_RECEIPT_SECRET"}}});import{wordlists as Ql}from"ethers";var mr,tu,z=s(()=>{Ie();mr=64*1024,tu=32*1024});var Po,ou,iu,Te=s(()=>{z();Po=["schemaVersion","buildVersion","recordType","execution","custody"],ou=[...Po,"recordHash"],iu=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 Bo,Ar,uu,pt=s(()=>{z();Te();Bo=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Ar=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"]),uu=new Set(Ar)});var Ho,vr=s(()=>{z();pt();Ho=64*1024*1024});var gu,yu,Eu,kr=s(()=>{gu=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),yu=Object.freeze(["read","simulate"]),Eu=1440*60});function mt(e){let t=String(e),r=t.toLowerCase().replace(/[\s._-]+/g,"");return zo.test(t)||Uo.includes(r)}function Wo(e){return e.replace(/"([A-Za-z0-9_-]+)"\s*:\s*"(?:0x)?([0-9a-fA-F]{64})"/g,(t,r)=>Or.includes(String(r).toLowerCase().replace(/[_-]/g,""))?`"${r}":"<hex64>"`:t)}function Tr(e){let t;try{t=JSON.stringify(e)}catch(n){throw new _("$",`unserializable-payload: ${String(n?.message||n)}`)}if(t===void 0)return"null";let r=Wo(t);for(let{rule:n,re:i}of Ir)if(i.test(r))throw new _("$<serialized>",n);if(/(?:^|[^0-9a-fA-Fx])0x[0-9a-fA-F]{64}(?![0-9a-fA-F])/.test(r))throw new _("$<serialized>","raw-32-byte-hex-embedded");return JSON.parse(t,(n,i)=>{if(n&&mt(n))throw new _(`$<serialized>.${n}`,"forbidden-key-name");return i}),t}function P(e,t="$",r=new Set,o=""){if(e==null)return e;if(typeof e=="string"){let n=Or.includes(String(o).toLowerCase().replace(/[_-]/g,""));for(let{rule:i,re:a}of Ir)if(!(n&&i.startsWith("raw-32-byte-hex"))&&a.test(e))throw new _(t,i);return e}if(typeof e!="object"||r.has(e)||(r.add(e),ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e;if(e instanceof Map){for(let[n,i]of e.entries()){if(typeof n=="string"&&mt(n))throw new _(`${t}[${JSON.stringify(n)}]`,"forbidden-key-name");P(n,`${t}[key]`,r),P(i,`${t}[${String(n)}]`,r)}return e}if(e instanceof Set){let n=0;for(let i of e.values())P(i,`${t}[${n++}]`,r);return e}if(Array.isArray(e))return e.forEach((n,i)=>P(n,`${t}[${i}]`,r)),e;for(let[n,i]of Object.entries(e)){if(mt(n))throw new _(`${t}.${n}`,"forbidden-key-name");P(i,`${t}.${n}`,r,n)}return e}var _,zo,Uo,Ir,Or,wt=s(()=>{kr();_=class extends Error{constructor(t,r){super(`secret material must never appear in a public API object (at ${t}, rule: ${r})`),this.name="SecretLeakError",this.path=t,this.rule=r}},zo=/(private[_-]?key|secret|bearer|keystore|mnemonic|seed[_-]?phrase|passphrase|password|api[_-]?key|access[_-]?token|auth[_-]?token|session[_-]?token|signer[_-]?url|signature)/i,Uo=Object.freeze(["privkey","wif","xprv","seed"]);Ir=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}]),Or=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});var ht,Cu,Nr=s(()=>{wt();ht=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Cu=Object.freeze(Object.fromEntries(ht.map((e,t)=>[e,Object.freeze(t+1<ht.length?[ht[t+1]]:[])])))});var Vo,Cr=s(()=>{Nr();z();Te();Vo=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 _r=s(()=>{z();Te();pt();vr();Cr()});var Jo,Go,Yo,md,wd,hd,gd,yd,Xo,Ed,Rr=s(()=>{Jo=Object.freeze(["owner","operator","agent","viewer"]),Go=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry"]),Yo=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),md=Object.freeze(["owner"]),wd=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"}),hd=new Set(Jo),gd=new Set(Go),yd=new Set(Object.values(Yo)),Xo=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"]),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"]),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"]),viewer:Object.freeze(["tenant:read","config:read","grant:read","workflow:read","trade:read","receipt:read","audit:read","telemetry:read"])}),Ed=Object.freeze(Object.fromEntries(Object.entries(Xo).map(([e,t])=>[e,Object.freeze([...t])])))});var Zo,Qo,ei,Ad,vd,kd,Id,Od,Td,gt=s(()=>{Rr();Zo=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),Qo=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),ei=Object.freeze(["taskId","intentId","planId","runId","eventId"]),Ad=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),vd=new Set(Zo),kd=new Set(Qo),Id=new Set(ei),Od=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"]),Td=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 Ld,$r=s(()=>{_r();gt();Ld=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"})});var jd,Lr=s(()=>{gt();jd=32*1024*1024});var Hd,zd,Ud,U=s(()=>{Hd=Object.freeze({N:1<<17,r:8,p:1}),zd=256*1024*1024,Ud=16*1024});var Vd,Pr=s(()=>{Vd=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 yt}from"node:os";import{join as Et}from"node:path";var Br,ti,Yd,Dr=s(()=>{Br=process.env.ORACLE_PUBLIC_DESKTOP==="1",ti=Br?process.env.ORACLE_CONFIG_DIR||Et(yt(),".config","oracle"):Et(yt(),".config","oracle"),Yd=Br?ti:Et(yt(),".config","mad-desk")});var tf,rf,nf,Fr=s(()=>{Dr();tf="0".repeat(64),rf=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"}),nf=Promise.resolve()});var bt=s(()=>{Fr();D();U();ke()});var jr=s(()=>{});var zr={};me(zr,{SIGN_TIME_REVIEW_VERSION:()=>ri,SignTimeReviewSecretError:()=>re,createSignTimeReview:()=>Hr});function xt(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string"){let n=e.trim().split(/\s+/);if(si.test(e)||ci.has(n.length)&&n.every(i=>/^[a-z]+$/i.test(i)))throw new re(t);return e}if(typeof e=="bigint")return e.toString();if(typeof e=="number"){if(!Number.isSafeInteger(e))throw new TypeError(`sign-time review: safe integer required at ${t}`);return e}if(Array.isArray(e))return e.map((n,i)=>xt(n,`${t}[${i}]`,r));j(e,t);let o={};for(let n of Object.keys(e).sort()){let i=n.replace(/[^a-z0-9]/gi,"");if(ai.test(i))throw new re(`${t}.${n}`);e[n]!==void 0&&(o[n]=xt(e[n],`${t}.${n}`,n))}return o}function j(e,t){if(e==null||typeof e!="object"||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`sign-time review: ${t} must be a plain object`);return e}function ne(e,t){if(e==null||e==="")throw new TypeError(`sign-time review: ${t} required`);return e}function W(e,t){let r=String(ne(e,t)).toLowerCase();if(!ni.test(r))throw new TypeError(`sign-time review: ${t} must be an EVM address`);return r}function R(e,t,{positive:r=!1}={}){try{let o=BigInt(ne(e,t));if(o<0n||r&&o===0n)throw new Error;return o.toString()}catch{throw new TypeError(`sign-time review: ${t} must be an unsigned integer`)}}function St(e,t){if(typeof e!="string"||e.length===0||e.length>500||e!==e.trim())throw new TypeError(`sign-time review: ${t} must be non-empty text`);return e}function Mr(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))Mr(t);Object.freeze(e)}return e}function li(e,t){if(typeof e=="boolean")return{passed:e,reason:e?"passed":"failed"};j(e,t);let r=e.passed??e.ok??e.allowed;if(typeof r!="boolean")throw new TypeError(`sign-time review: ${t} needs a boolean result`);let o=e.reason??e.message??e.name??(r?"passed":"failed");return{...e,passed:r,reason:St(String(o),`${t}.reason`)}}function ui(e){if(!Array.isArray(e))throw new TypeError("sign-time review: policyChecks must be an array");let t=e.map((o,n)=>li(o,`policyChecks[${n}]`)),r=t.filter(o=>!o.passed);return{checks:t,passed:t.length-r.length,failed:r.length,reasons:r.map(o=>o.reason)}}function di(e){if(e==null)return null;if(j(e,"simulation"),typeof e.status!="string"||!["ok","success","failed","error","unavailable","unknown"].includes(e.status))throw new TypeError("sign-time review: simulation.status is invalid");if(e.willRevert!==!0&&e.willRevert!==!1&&e.willRevert!==null)throw new TypeError("sign-time review: simulation.willRevert must be boolean or null");let t={status:e.status,willRevert:e.willRevert??null,summary:St(String(e.summary??"simulation result recorded"),"simulation.summary")};return e.gasEstimate!=null&&(t.gasEstimate=R(e.gasEstimate,"simulation.gasEstimate")),e.gasLimit!=null&&(t.gasLimit=R(e.gasLimit,"simulation.gasLimit")),t}function fi(e){if(e==null)return null;if(!Array.isArray(e)||e.length===0)throw new TypeError("sign-time review: assetDeltas must be a non-empty array");return e.map((t,r)=>{j(t,`assetDeltas[${r}]`);let o=R(t.before,`assetDeltas[${r}].before`),n=R(t.after,`assetDeltas[${r}].after`),i=(BigInt(n)-BigInt(o)).toString(),a;try{a=t.delta==null?i:BigInt(t.delta).toString()}catch{throw new TypeError(`sign-time review: assetDeltas[${r}].delta must be an integer`)}if(a!==i)throw new TypeError(`sign-time review: assetDeltas[${r}].delta does not match before/after`);return{...t,asset:St(String(ne(t.asset??t.token,`assetDeltas[${r}].asset`)),`assetDeltas[${r}].asset`),before:o,after:n,delta:a}})}function pi(e){if(e==null)return[];if(!Array.isArray(e))throw new TypeError("sign-time review: approvalDeltas must be an array");return e.map((t,r)=>{j(t,`approvalDeltas[${r}]`);let o=R(t.amount??t.after,`approvalDeltas[${r}].amount`);if(t.revokeLike!=null&&typeof t.revokeLike!="boolean")throw new TypeError(`sign-time review: approvalDeltas[${r}].revokeLike must be boolean`);return{token:W(t.token,`approvalDeltas[${r}].token`),spender:W(t.spender,`approvalDeltas[${r}].spender`),owner:W(t.owner,`approvalDeltas[${r}].owner`),amount:o,revokeLike:t.revokeLike??BigInt(o)===0n}})}function Hr(e={}){j(e,"input");let t=xt(e),r=t.tx==null?t:j(t.tx,"tx"),o=R(t.chainId??r.chainId,"chainId",{positive:!0}),n=W(t.account??t.from??r.from,"account/from"),i=W(t.destination??t.to??r.to,"destination/to"),a=String(ne(t.prepareHash,"prepareHash")).toLowerCase();if(!ii.test(a))throw new TypeError("sign-time review: prepareHash must be a 32-byte hash");let d=t.route??t.venue;if(d==null)throw new TypeError("sign-time review: route/venue required");let c=t.decodedCalldata??t.decodedAction;if(c==null)throw new TypeError("sign-time review: decodedCalldata or decodedAction required");let p=String(ne(t.calldata??t.data??r.data,"calldata/data")).toLowerCase();if(!oi.test(p))throw new TypeError("sign-time review: calldata/data must be even-length hex");let m=t.policyChecks!==void 0&&t.policyChecks!==null,l=ui(m?t.policyChecks:[]),f=di(t.simulation),u=fi(t.assetDeltas),g=pi(t.approvalDeltas),w=t.allowlistHits??[];if(!Array.isArray(w))throw new TypeError("sign-time review: allowlistHits must be an array");let y=f?.willRevert===!0||["failed","error"].includes(f?.status),$=f!=null&&f.willRevert===!1&&["ok","success"].includes(f.status),N=y||l.failed>0?"BLOCKED":$&&m&&l.checks.length>0&&u!=null?"READY":"UNKNOWN",B=typeof c=="string"?c:c.method??c.action??c.type??"transaction",E=`${N}: review ${B} on chain ${o}; policy ${l.passed} passed, ${l.failed} failed; ${u?.length??0} asset delta${u?.length===1?"":"s"}; local signature required`,x={reviewVersion:1,status:N,requiresLocalSignature:!0,signingLocal:!0,custody:"none",execution:"review-only",chainId:o,account:n,from:n,route:d,venue:t.venue??(typeof d=="string"?d:d.venue??d.provider??null),destination:i,to:i,...t.spender==null?{}:{spender:W(t.spender,"spender")},prepareHash:a,...t.decodedCalldata!==void 0?{decodedCalldata:t.decodedCalldata}:{decodedAction:t.decodedAction},calldata:p,data:p,selector:p.length>=10?p.slice(0,10):null,value:R(t.value??r.value??0,"value"),...(t.gasEstimate??r.gasEstimate)==null?{}:{gasEstimate:R(t.gasEstimate??r.gasEstimate,"gasEstimate")},...(t.gasLimit??r.gasLimit)==null?{}:{gasLimit:R(t.gasLimit??r.gasLimit,"gasLimit")},simulation:f,policyChecks:l,allowlistHits:w,assetDeltas:u,approvalDeltas:g,summary:E};return Mr(x)}var ri,ni,oi,ii,ai,si,ci,re,At=s(()=>{ri=1,ni=/^0x[0-9a-f]{40}$/,oi=/^0x(?:[0-9a-f]{2})*$/,ii=/^(?:0x)?[0-9a-f]{64}$/,ai=/(privatekey|privkey|secretkey|seedphrase|mnemonic|passphrase|password|keystore|keymaterial|wif|xprv|xpriv|bearer|authorization|signature|apikey|credential)/i,si=/\b(?:[5KL][1-9A-HJ-NP-Za-km-z]{50,51}|xprv[0-9A-Za-z]{50,})\b/,ci=new Set([12,15,18,21,24]),re=class extends Error{constructor(t){super(`sign-time review refused: secret-bearing field at ${t}`),this.name="SignTimeReviewSecretError",this.code="SIGN_TIME_REVIEW_SECRET"}}});import{readFileSync as mf,readdirSync as wf,existsSync as mi}from"node:fs";import{dirname as wi,join as oe}from"node:path";import{fileURLToPath as hi}from"node:url";function gi(){let e=[oe(ie,"descriptors"),oe(ie,"clear-sign","descriptors"),oe(ie,"..","clear-sign","descriptors"),oe(ie,"..","..","clear-sign","descriptors"),oe(ie,"..","..","..","clear-sign","descriptors")];for(let t of e)if(mi(t))return t;return e[0]}var ie,Ef,bf,Ur=s(()=>{F();ie=wi(hi(import.meta.url));Ef=gi(),bf=(1n<<256n)-1n});var Wr=s(()=>{At();F();Ur()});import{Wallet as Tf}from"ethers";import{base58 as Cf}from"@scure/base";import{ed25519 as Rf}from"@noble/curves/ed25519.js";import{NETWORK as Lf,TEST_NETWORK as Pf,WIF as Bf,p2wpkh as Df}from"@scure/btc-signer";import{pubECDSA as qf}from"@scure/btc-signer/utils.js";var Vr=s(()=>{});var Hf,zf,Uf,Wf,Vf,Kf,Jf,Gf,Yf,Xf,Zf,Kr=s(()=>{bt();Hf=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),zf=Object.freeze(["binance","bybit","okx","coinbase"]),Uf=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),Wf=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),Vf=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Kf=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),Jf=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Gf=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),Yf=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),Xf=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),Zf=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"})});var Jr=s(()=>{U()});var bi,Gr,Ce=s(()=>{bi=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}"]})}),Gr=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"})});var Yr=s(()=>{Ce()});var cp,Xr=s(()=>{Ce();Yr();cp=256*1024});var Zr=s(()=>{Ce();Xr()});var Qr=s(()=>{U()});import v from"node:path";import xi from"node:os";import{createHash as Si,randomBytes as tm}from"node:crypto";import{Interface as vt,keccak256 as nm}from"ethers";import{Transaction as im}from"@scure/btc-signer";import{ed25519 as sm}from"@noble/curves/ed25519.js";function en(e){let t=process.env.ORACLE_SIGNER_STATE_DIR||v.join(process.env.XDG_STATE_HOME||v.join(xi.homedir(),".local","state"),"oracle"),r=Si("sha256").update(v.resolve(e)).digest("hex").slice(0,16);return{vault:v.join(e,"vault.json"),policy:v.join(e,"signer-policy.json"),policyKey:v.join(e,"policy-integrity-key"),policyAnchor:v.join(t,`signer-policy-${r}.high-water`),ledger:v.join(e,"signer-ledger.json"),ledgerAnchor:v.join(t,`signer-ledger-${r}.high-water`),cexOrders:v.join(e,"cex-orders.json"),cexOrdersAnchor:v.join(t,`cex-orders-${r}.high-water`),token:v.join(e,"signer-token"),lock:v.join(t,`signer-${r}.lock`),workflowLedger:v.join(e,"workflow-events.jsonl")}}var Dm,Fm,qm,tn=s(()=>{fr();$r();Lr();ke();U();Pr();bt();jr();F();Wr();ve();Ee();at();et();rt();Ae();it();tt();ot();ze();Ue();nt();Vr();Kr();Jr();Zr();Qr();Dm=new vt(["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"]),Fm=new vt(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),qm=new vt(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"])});import kt from"node:fs";import rn from"node:path";import{homedir as Ai}from"node:os";function vi(){return process.env.ORACLE_CONFIG_DIR||rn.join(Ai(),".config","oracle")}function ae(){let e=en(rn.join(vi(),"signer")),t=kt.existsSync(e.vault),r=kt.existsSync(e.lock),o=t?r?"disarmed":"armed-owner-confirmed":"inert-no-key";return{vaultExists:t,policyConfigured:kt.existsSync(e.policy),armed:t&&!r,disarmed:r,capabilities:{swap:o,bridge:o},autonomous:!1,note:"Keys stay on this machine. Exact confirmation is required before any broadcast."}}var Ym,It=s(()=>{Fe();qt();tn();U();Ym=Object.freeze([{type:"function",function:{name:"vault_status",description:"Read local Oracle vault/signer readiness. Never returns key material.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_status",description:"Ping the loopback signer. Fails closed if it is not running.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_pending",description:"List pending local-signer artifacts. Read-only. Does not approve, sign, or broadcast.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_queue",description:"Queue a prepared unsigned artifact on the loopback signer. Does not broadcast.",parameters:{type:"object",properties:{artifact:{type:"object"}},required:["artifact"],additionalProperties:!1}}},{type:"function",function:{name:"signer_ack",description:"Execute one pending artifact through the armed local signer (same path as Telegram Allow). Fails if the signer is not running or disarmed. Never holds keys.",parameters:{type:"object",properties:{id:{type:"string"},digest:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"signer_deny",description:"Drop one pending local-signer artifact. Nothing signed.",parameters:{type:"object",properties:{id:{type:"string"},digest:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"signer_execute",description:"Broadcast one already-confirmed local artifact. Requires a one-use confirmationNonce from the local signer TTY confirm. Cannot mint confirmation itself.",parameters:{type:"object",properties:{artifact:{type:"object"},confirmationNonce:{type:"string",minLength:32,maxLength:128}},required:["artifact","confirmationNonce"],additionalProperties:!1}}},{type:"function",function:{name:"signer_disarm",description:"Global kill switch. Stops the local signer from broadcasting.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"receipt_report",description:"Receipt or it did not happen. Requires transactionHash/hash/txid.",parameters:{type:"object",properties:{receipt:{type:"object"},transactionHash:{type:"string"},hash:{type:"string"},txid:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"watch_create",description:"Create an alert-only watch. Never execute.",parameters:{type:"object",properties:{chain:{type:"string"},token:{type:"string"},condition:{type:"string"},note:{type:"string"}},required:["chain","token","condition"],additionalProperties:!1}}},{type:"function",function:{name:"watch_list",description:"List local alert-only watches.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"portfolio_snapshot",description:"How to read the one portfolio snapshot. knownUsd is incomplete if a provider is missing.",parameters:{type:"object",properties:{},additionalProperties:!1}}}])});import _e from"node:fs";import ki from"node:os";import K from"node:path";import{fileURLToPath as Ii}from"node:url";function nn(){return process.env.ORACLE_FAKE_HOME||ki.homedir()}function Ti(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function Re(){return Ti()?process.env.ORACLE_CONFIG_DIR||K.join(nn(),".config","oracle"):K.join(nn(),".config","oracle")}function Ni(){return K.join(Re(),"desk.json")}function Ci(){return K.join(Re(),"env")}function V({force:e=!1}={}){if(V._done&&!e)return V._result||null;V._done=!0;let t={},r=(n,i)=>{if(i==null)return;let a=String(i).trim();a&&(process.env[n]!=null&&String(process.env[n]).trim()!==""||(process.env[n]=a,t[n]=a))};try{let n=Ci();if(_e.existsSync(n))for(let i of _e.readFileSync(n,"utf8").split(/\r?\n/)){let a=i.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!a||a[2].startsWith("#"))continue;let d=a[2];(d.startsWith('"')&&d.endsWith('"')||d.startsWith("'")&&d.endsWith("'"))&&(d=d.slice(1,-1)),r(a[1],d)}}catch{}try{let n=Ni();if(_e.existsSync(n)){let i=JSON.parse(_e.readFileSync(n,"utf8"));i&&typeof i=="object"&&(r("ORACLE_DESK_URL",i.deskUrl||i.dataUrl||i.url),r("ORACLE_DATA_URL",i.dataUrl||i.deskUrl||i.url),r("ORACLE_API_URL",i.apiUrl||i.dataUrl||i.deskUrl),r("ORACLE_PUBLIC_URL",i.publicUrl||i.deskUrl||i.dataUrl),r("ORACLE_EXEC_URL",i.execUrl),r("MAD_DESK_URL",i.deskUrl||i.dataUrl))}}catch{}let o=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return o&&(r("ORACLE_DESK_URL",o),r("ORACLE_DATA_URL",o),r("ORACLE_API_URL",o),r("ORACLE_PUBLIC_URL",o),r("MAD_DESK_URL",o)),V._result=Object.keys(t).length?t:null,V._result}var Oi,rw,on=s(()=>{Oi=K.dirname(Ii(import.meta.url)),rw=K.resolve(Oi,"../..");try{V()}catch{}});function $e(e){return String(e||"").trim()||void 0}function Ri(e,{required:t=!1}={}){let r=$e(e)?.toLowerCase();if(!r){if(t)throw new Error("model provider is required");return}if(!_i.has(r))throw new Error(`unsupported provider: ${r}`);return r}function $i(e,{required:t=!1}={}){let r=$e(e);if(!r){if(t)throw new Error("model is required");return}if(r.includes("..")||r.startsWith("/")||!/^[a-zA-Z0-9._:/-]{1,200}$/.test(r))throw new Error("invalid model id");return r}function Li(e){let t=$e(e);if(!t||t.length>2048)throw new Error("invalid custom base URL");let r;try{r=new URL(t)}catch{throw new Error("invalid custom base URL")}let o=r.hostname.toLowerCase().replace(/^\[|\]$/g,""),n=o==="localhost"||o==="127.0.0.1"||o==="::1";if(r.protocol!=="https:"&&!(r.protocol==="http:"&&n)||r.username||r.password||r.search||r.hash)throw new Error("custom base URL must use HTTPS or loopback HTTP without credentials, query, or fragment");return r.toString().replace(/\/+$/,"")}function an({provider:e,model:t,baseUrl:r}={},{requireModel:o=!1}={}){let n=Ri(e),i=$i(t,{required:o});if(n==="custom")return{provider:n,...i?{model:i}:{},baseUrl:Li(r)};if($e(r))throw new Error("baseUrl is only supported for the custom provider");return{...n?{provider:n}:{},...i?{model:i}:{}}}var _i,sn=s(()=>{_i=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"])});import cn from"node:fs";import Pi from"node:path";function Di(){return Pi.join(Re(),"model.json")}function J(e){return String(e||"").trim()||void 0}function Fi(e={}){let t=J(e.backend)?.toLowerCase()||"auto",r=an({provider:e.provider,model:e.model,baseUrl:e.baseUrl},{requireModel:t==="standalone"}),o=J(e.apiKeyEnv),n=Number.parseInt(String(e.contextLength||""),10),i=J(e.reasoningEffort),a=J(e.computeHost||e.remoteHost),d=J(e.computeUser||e.remoteUser),c=J(e.computePath||e.remotePath);if(!Bi.has(t))throw new Error(`unsupported backend: ${t}`);if(process.env.ORACLE_PUBLIC_DESKTOP==="1"&&["remote","arch"].includes(t))throw new Error("remote compute backends are disabled in the public desktop");if(o&&!/^[A-Z][A-Z0-9_]*$/.test(o))throw new Error("api key env must be an uppercase environment variable name");if(t==="remote"&&!a)throw new Error("remote backend requires computeHost");return{backend:t,...r,...o?{apiKeyEnv:o}:{},...Number.isFinite(n)&&n>0?{contextLength:n}:{},...i?{reasoningEffort:i}:{},...a?{computeHost:a}:{},...d?{computeUser:d}:{},...c?{computePath:c}:{}}}function ln(){let e=Di();if(!cn.existsSync(e))return null;try{return Fi(JSON.parse(cn.readFileSync(e,"utf8")))}catch{return null}}var Bi,un=s(()=>{on();sn();Bi=new Set(["auto","standalone","hermes","remote","arch"])});import{Interface as qi,getAddress as ji}from"ethers";function Ot(e,t){try{return ji(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function Mi(e){let t=String(e||"").trim();if(!/^0x[0-9a-fA-F]{64}$/.test(t))throw new Error("txHash must be a 32-byte hex transaction hash");return t.toLowerCase()}function Tt(e){return e==null?null:Number.parseInt(String(e),16)}function zi(e,{rpcUrl:t,env:r=process.env}={}){if(t)return t;let o=Ft(e,r);return o||Hi[Number(e)]||null}function Wi(e){let t=String(e||""),r=t.toLowerCase();if(t!==t.trim()||!/^[a-zA-Z0-9_]+$/.test(t)||!Ui.test(r))throw new Error(`evm-rpc: ${t} refused \u2014 @oracle-agent/oracle is prepare-only (read RPC only; no broadcast/sign)`);return r}function Vi(e){let t=new Error(e?.message||JSON.stringify(e));return t.code=e?.code,t}function Ki(e){if(e?.error)throw Vi(e.error);return e?.result}function Ji(e,t,r){return`${e}
1
+ var _n=Object.defineProperty;var a=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(o){throw r=[o],o}};var me=(e,t)=>{for(var r in t)_n(e,r,{get:t[r],enumerable:!0})};function Dt(e){return Rn.get(Number(e))||null}function Ft(e,t=process.env){let r=Dt(e);if(!r)return null;for(let o of r.rpcEnv){let n=(t[o]||"").trim();if(n)return n}return null}var we,Rn,De=a(()=>{we={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0}},Rn=new Map(Object.values(we).map(e=>[e.chainId,e]))});function Y(e){let t=e?.transactionHash||e?.hash||e?.txid||null;return t?{happened:!0,hash:String(t),note:null}:{happened:!1,hash:null,note:"no transaction hash \u2014 the action did not succeed"}}var Fe=a(()=>{});var qt=a(()=>{});var jt=a(()=>{});var X=a(()=>{});var H=a(()=>{});var ge=a(()=>{X();H()});import{isAddress as Ns}from"ethers";var je=a(()=>{ge();X();H()});import{Interface as Pn,isAddress as Ps}from"ethers";var qs,Mt=a(()=>{je();X();H();qs=new Pn(["function approve(address spender,uint256 amount) returns (bool)"])});import{Interface as Bn,isAddress as Hs}from"ethers";var Vs,Ks,Ht=a(()=>{je();X();H();Vs=new Bn(["function approve(address spender,uint256 amount) returns (bool)"]),Ks=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"})});var D=a(()=>{});import{Interface as Dn,MaxUint256 as ea,isAddress as ta,keccak256 as ra,toUtf8Bytes as na}from"ethers";var la,F=a(()=>{jt();Mt();Ht();D();H();la=new Dn(["function approve(address spender,uint256 amount) returns (bool)"])});var da,fa,ye=a(()=>{da=300*1e3,fa=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});var Ee=a(()=>{F()});import{Address as ga,NETWORK as ya,OutScript as Ea,RawTx as ba,SigHash as xa,TEST_NETWORK as Sa,Transaction as Aa}from"@scure/btc-signer";var ze=a(()=>{});import{createHash as Fn}from"node:crypto";import{base58 as Oa}from"@scure/base";import{getCompiledTransactionMessageDecoder as Na}from"@solana/transaction-messages";var zt,Ca,Ue=a(()=>{zt=e=>Fn("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Ca=new Map([[zt("route"),{name:"route",prefixBytes:0}],[zt("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]])});import q from"node:net";import qn from"node:dns";function be(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let r=m=>{if(!m)return[];let l=m.split(":"),f=l.at(-1);if(f?.includes(".")){let u=f.split(".").map(Number);if(u.length!==4||u.some(g=>!Number.isInteger(g)||g<0||g>255))return null;l.splice(l.length-1,1,(u[0]<<8|u[1]).toString(16),(u[2]<<8|u[3]).toString(16))}return l.some(u=>!/^[0-9a-f]{1,4}$/.test(u))?null:l.map(u=>Number.parseInt(u,16))},[o,n]=t.split("::"),i=r(o),s=r(n);if(!i||!s)return null;let d=t.includes("::"),c=8-i.length-s.length;if(!d&&c!==0||d&&c<1)return null;let p=[...i,...Array(Math.max(0,c)).fill(0),...s];return p.length!==8?null:Uint8Array.from(p.flatMap(m=>[m>>8,m&255]))}function We(e,t,r){let o=Math.floor(r/8),n=r%8;for(let s=0;s<o;s+=1)if(e[s]!==t[s])return!1;if(!n)return!0;let i=255<<8-n;return(e[o]&i)===(t[o]&i)}function Ve(e){if(q.isIPv4(e)){let t=e.split(".").map(Number);return!(t[0]===0||t[0]===10||t[0]===127||t[0]>=224||t[0]===100&&t[1]>=64&&t[1]<=127||t[0]===169&&t[1]===254||t[0]===172&&t[1]>=16&&t[1]<=31||t[0]===192&&(t[1]===0||t[1]===2||t[1]===168)||t[0]===192&&t[1]===88&&t[2]===99||t[0]===198&&(t[1]===18||t[1]===19||t[1]===51)||t[0]===203&&t[1]===0&&t[2]===113)}if(q.isIPv6(e)){let t=be(e);if(!t)return!1;let r=be("::ffff:0:0");return We(t,r,96)?Ve([...t.slice(12)].join(".")):We(t,be("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,i])=>We(t,be(n),i)):!1}return!1}function Mn(e){let t;try{t=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(t.protocol!=="http:"&&t.protocol!=="https:")return{ok:!1,error:`refused protocol ${t.protocol} (only http/https)`};let r=t.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(jn.has(r)||r.endsWith(".localhost")||r.endsWith(".internal"))return{ok:!1,error:`refused internal host ${r}`};let o=q.isIP(r);return o!==0&&!Ve(r)?{ok:!1,error:`refused private address ${r}`}:{ok:!0,url:t,host:r,isLiteralIp:o!==0}}async function Ke(e,{lookupFn:t=qn.promises.lookup}={}){let r=Mn(e);if(!r.ok)return r;if(r.isLiteralIp)return{ok:!0,url:r.url,addresses:[{address:r.host,family:q.isIPv6(r.host)?6:4}]};let o;try{o=await t(r.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${r.host} did not resolve`}}return!Array.isArray(o)||o.length===0||o.some(n=>!Ve(n.address))?{ok:!1,error:`refused: ${r.host} resolves to a non-public address`}:{ok:!0,url:r.url,addresses:o}}async function Je({requireUndici:e=!1,importUndici:t=()=>import("undici")}={}){let r,o;try{let l=await t();r=l.Agent,o=l.fetch}catch(l){if(e)throw new Error(`egress-guard: untrustedUrl pinning requires the undici package, which failed to load: ${l?.message||l}`);return null}if(typeof r!="function"||typeof o!="function"){if(e)throw new Error("egress-guard: untrustedUrl pinning requires undici's Agent and fetch exports, which were not found on the imported module");return null}let n=l=>String(l).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),i=new Map,s=l=>(Array.isArray(l)?l:[l]).map(f=>typeof f=="string"?{address:f}:f).filter(f=>f&&f.address).map(f=>({address:f.address,family:f.family||(q.isIPv6(f.address)?6:4)})),d=(l,f,u)=>{i.set(n(l),s(typeof f=="string"?[{address:f,family:u}]:f))},c=l=>{let f=n(l);if(q.isIP(f))return[{address:f,family:q.isIPv6(f)?6:4}];let u=i.get(f);if(!u||!u.length)throw new Error(`refused: unpinned host ${l} during pinned fetch`);return u},p=new r({connect:{lookup(l,f,u){let g;try{g=c(l)}catch(w){return u(w)}return f?.all?u(null,g):u(null,g[0].address,g[0].family)}}}),m=Hn((l,f={})=>o(l,{...f,dispatcher:p}),d);return{dispatcher:p,fetch:m,pin:d,resolve:c,async close(){try{await p.destroy()}catch{}}}}function Hn(e,t){if(typeof e!="function")throw new Error("markPinCapableFetch: fetchImpl must be a function");if(typeof t!="function")throw new Error("markPinCapableFetch: pin must be a function");return e[Ge]=Object.freeze({pin:t}),e}function Ye(e){return typeof e=="function"&&typeof e[Ge]?.pin=="function"}function Ut(e,t,r){if(!Ye(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[Ge].pin(t,r)}var jn,Ge,Wt=a(()=>{jn=new Set(["localhost","metadata.google.internal","metadata.goog"]);Ge=Symbol.for("oracle.egressGuard.pinCapableFetch")});import{createHash as Vt}from"node:crypto";function Kn(e){let t=String(e||"").toLowerCase();return Qt.includes(t)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(t)}function Jn(e){let t={};for(let[r,o]of Object.entries(e||{}))Kn(r)||(t[r]=o);return t}function Gn(e,t){if(!e)throw new Error(`HTTP redirect from ${t} missing Location`);let r=new URL(String(e),String(t));if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error(`HTTP redirect from ${t} used unsupported protocol ${r.protocol}`);return r.toString()}function Yn(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}function Yt(e){let t=String(e?.method||"");return t?!Xn.test(t):!1}function Qn(e,t){if(e==="GET"&&t==null)return!0;if(e!=="POST"||t==null)return!1;let r=t;if(typeof t=="string")try{r=JSON.parse(t)}catch{return!1}return Array.isArray(r)?r.length>0&&r.every(Yt):!r||typeof r!="object"?!1:r.jsonrpc&&r.method?Yt(r):typeof r.type=="string"&&Zn.has(r.type)&&r.action==null&&r.signature==null&&r.nonce==null}function eo(e,t,r,o={},n=null){let i={};for(let[f,u]of Object.entries(r||{}))i[f.toLowerCase()]=u;let s=Object.keys(i).filter(f=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(f)),c=[...new Set([...Qt,...s])].sort().map(f=>`${f}=${i[f]??""}`).join(`
2
+ `),p=Vt("sha256").update(c).digest("hex").slice(0,32),m=`${o.untrustedUrl?"untrusted":"trusted"}:${o.maxResponseBytes??"unbounded"}`,l=n==null?"-":Vt("sha256").update(String(n)).digest("hex").slice(0,32);return`${e} ${t} ${m} ${p} ${l}`}function to(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,Jt):Math.min(250*2**e,Jt)+Math.floor(Math.random()*100)}function Q(e,t={}){let r=new Error(e);return r.retryable=!1,Object.assign(r,t),r}function Ze(e,t,r){return Q(`HTTP response from ${e} exceeded maxResponseBytes ${r} (${t})`,{oversize:!0})}function ee(e){try{let t=e?.body?.cancel?.();t&&typeof t.then=="function"&&t.catch(()=>{})}catch{}}function no(e){return e?e.byteLength??e.length??0:0}async function Xt(e,t,{url:r,truncate:o=!1,onOversize:n}={}){if(t==null)return await e.text();let i=Number(e.headers?.get?.("content-length"));if(Number.isFinite(i)&&i>t&&(ee(e),!o))throw Ze(r,`content-length ${i}`,t);let s=e.body?.getReader?.();if(!s){let l=await e.text(),f=Buffer.byteLength(l,"utf8");if(f>t){if(!o)throw Ze(r,`body ${f} bytes`,t);return Buffer.from(l,"utf8").subarray(0,t).toString("utf8")}return l}let d=[],c=0,p=!1;try{for(;;){let{value:l,done:f}=await s.read();if(f)break;if(l&&(d.push(Buffer.from(l)),c+=no(l),c>t)){p=!0;break}}}finally{if(p)try{await s.cancel()}catch{}try{s.releaseLock?.()}catch{}}if(p&&(typeof n=="function"&&n(),!o))throw Ze(r,`streamed ${c} bytes`,t);let m=Buffer.concat(d);return(p?m.subarray(0,t):m).toString("utf8")}function Zt(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function oo(e,{fetchImpl:t,method:r,headers:o,body:n,timeoutMs:i,lookupFn:s,realFetch:d,untrustedUrl:c=!1,maxResponseBytes:p=null,importUndici:m,validateResponse:l,signal:f}){let u=new AbortController,g=setTimeout(()=>u.abort(),i),w=f?typeof AbortSignal.any=="function"?AbortSignal.any([f,u.signal]):f:u.signal,y=null,$=t,N=s?{lookupFn:s}:{};if(c&&!d&&!Ye($))throw Q(`HTTP refused ${e}: untrustedUrl requires a pin-capable fetchImpl (see markPinCapableFetch in egress-guard.mjs) or no fetchImpl override so Oracle can pin the connection itself`);let B=async(E,{status:x=null}={})=>{let S=await Ke(E,N);if(!S.ok)throw Q(x==null?`HTTP refused ${E}: ${S.error}`:`HTTP redirect to ${E} ${S.error}`,x==null?{}:{status:x});let h=new URL(E).hostname;if(d){if(y&&(await y.close(),y=null),!y)try{y=await Je({requireUndici:!0,...m?{importUndici:m}:{}})}catch(k){throw Q(x==null?`HTTP refused ${E}: ${k?.message||k}`:`HTTP redirect to ${E} refused: ${k?.message||k}`,x==null?{}:{status:x})}y.pin(h,S.addresses),$=y.fetch}else Ut($,h,S.addresses);return S};try{let E=String(e),x={...o||{}};c&&await B(E);for(let S=0;S<=Gt;S+=1){let h=await $(E,{method:r,headers:x,body:n,signal:w,redirect:"manual"});if(Wn.has(h.status)){if(r!=="GET"&&r!=="HEAD"){let T=await Xt(h,p??Vn,{url:E,truncate:!0}),C=new Error(`HTTP ${h.status} ${r} ${E} redirected non-idempotent request`);throw C.status=h.status,C.body=Zt(T)??T.slice(0,300),C}if(S===Gt)throw ee(h),new Error(`HTTP redirect loop for ${e}`);let O=h.headers?.get?.("location"),L;try{L=Gn(O,E)}catch(T){throw ee(h),T}let G=!Yn(L,E);if(ee(h),G&&(x=Jn(x)),c)await B(L,{status:h.status});else if(G){let T=await Ke(L,N);if(!T.ok){let C=new Error(`HTTP redirect from ${E} ${T.error}`);throw C.status=h.status,C.retryable=!1,C}d&&T.addresses?.length&&(y||(y=await Je(m?{importUndici:m}:{})),y&&(y.pin(new URL(L).hostname,T.addresses),$=y.fetch))}E=L;continue}if(typeof l=="function")try{await l(h,{url:E})}catch(O){throw ee(h),Q(O?.message||String(O))}let k=await Xt(h,p,{url:E,onOversize:()=>u.abort()}),pe=Zt(k);if(!h.ok){let O=new Error(`HTTP ${h.status} ${r} ${E}`);throw O.status=h.status,O.retryAfter=h.headers?.get?.("retry-after")??null,O.body=pe??k.slice(0,300),O}return pe??k}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(g),y&&await y.close()}}async function xe(e,t={}){let r=t.fetchImpl||globalThis.fetch;if(typeof r!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let o=t.timeoutMs??12e3,n=(t.method||"GET").toUpperCase(),i={Accept:"application/json",...t.headers||{}},s=t.body;s!=null&&typeof s!="string"&&(i["Content-Type"]=i["Content-Type"]||"application/json",s=JSON.stringify(s));let d=Number.isInteger(t.retries)?Math.max(t.retries,0):Un,c=t.lookupFn,p=!t.fetchImpl,m=t.untrustedUrl===!0,l=t.importUndici,f=t.validateResponse,u=t.signal,g=Number(t.maxResponseBytes),w=Number.isFinite(g)&&g>0?Math.floor(g):null,y=async()=>{let x;for(let S=0;S<=d;S++){u?.throwIfAborted?.();try{return await oo(e,{fetchImpl:r,method:n,headers:i,body:s,timeoutMs:o,lookupFn:c,realFetch:p,untrustedUrl:m,maxResponseBytes:w,importUndici:l,validateResponse:f,signal:u})}catch(h){x=h;let k=h?.status,pe=h?.name==="AbortError"||h?.name==="TimeoutError"||u?.aborted,O=new Set([408,425,429]),L=h?.retryable===!1?!1:k!=null?O.has(k)||zn.has(k)&&Kt.has(n):!pe&&Kt.has(n);if(S===d||!L)throw h;let G=to(S,h?.retryAfter);u?await new Promise((T,C)=>{let Cn=setTimeout(T,G);u.addEventListener("abort",()=>{clearTimeout(Cn),C(u.reason||new DOMException("Aborted","AbortError"))},{once:!0})}):await ro(G)}}throw x};if(!(t.dedupe!==!1&&!u&&Qn(n,s)))return y();let N=eo(n,e,i,{untrustedUrl:m,maxResponseBytes:w},s),B=Xe.get(N);if(B)return B;let E=y().finally(()=>Xe.delete(N));return Xe.set(N,E),E}var zn,Kt,Un,Jt,Qt,Wn,Gt,Vn,Xe,Xn,Zn,ro,Se=a(()=>{Wt();zn=new Set([408,425,429,500,502,503,504]),Kt=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),Un=2,Jt=4e3,Qt=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],Wn=new Set([301,302,303,307,308]),Gt=3,Vn=64*1024;Xe=new Map,Xn=/(?:^|_)(send|submit|broadcast|sign|requestAirdrop)(?=[A-Z_]|$)/i,Zn=new Set(["allMids","l2Book","outcomeMeta","spotClearinghouseState","userFills","meta","metaAndAssetCtxs","perpDexs","candleSnapshot","fundingHistory","openOrders","frontendOpenOrders","clearinghouseState","spotMeta","validatorSummaries","delegatorSummary","delegations","delegatorRewards","delegatorHistory","maxBuilderFee"]);ro=e=>new Promise(t=>setTimeout(t,e))});var er=a(()=>{Se()});var tr=a(()=>{er()});var Ka,Ja,et=a(()=>{D();tr();Ka=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"}),Ja=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 Xa,tt=a(()=>{D();Xa="0x"+"00".repeat(32)});var io,rc,rt=a(()=>{tt();D();io=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),rc=Object.freeze(io.map(e=>e[0]))});var Ae=a(()=>{D()});import{TypedDataEncoder as ac,getAddress as cc,isAddress as lc}from"ethers";var ao,co,ir=a(()=>{ye();ao=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),co=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"}]})});var fc,sr=a(()=>{fc=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"})});var ar=a(()=>{});import{TypedDataEncoder as bc,getAddress as xc,isAddress as Sc}from"ethers";var lo,Nc,uo,Cc,cr=a(()=>{Se();ge();sr();ar();ye();lo=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),Nc=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"}),uo=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"}]}),Cc=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]})});import{TypedDataEncoder as $c,getAddress as Lc}from"ethers";var Dc,nt=a(()=>{ir();cr();Dc=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"])});import{Interface as ur}from"ethers";var go,el,yo,tl,rl,nl,ol,Eo,il,ve=a(()=>{F();ge();ye();Ee();ze();Ue();et();rt();Ae();nt();go=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]),el=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}),yo=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"}}),tl=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),rl=new ur(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),nl=new ur(["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"]),ol=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"}}),Eo=Object.freeze([...go]),il=Object.freeze({...yo})});import{encode as cl}from"@msgpack/msgpack";import{keccak256 as ul,verifyTypedData as dl}from"ethers";var fl,pl,ot=a(()=>{fl=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),pl=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]})});var it=a(()=>{Ae()});import{ed25519 as xl}from"@noble/curves/ed25519.js";import{base58 as Al}from"@scure/base";import{RawTx as kl,SigHash as Il,Transaction as Ol}from"@scure/btc-signer";import{Transaction as Nl,keccak256 as Cl,verifyTypedData as _l}from"ethers";var st=a(()=>{ot();it()});import{base58 as Fl}from"@scure/base";var ke=a(()=>{ve();Ee();F();st()});var fr=a(()=>{ke();ve()});import{wordlists as So}from"ethers";function Io(e){let t=String(e).trim().toLowerCase().split(/\s+/).filter(Boolean);return ko.has(t.length)&&t.every(r=>So.en.getWordIndex(r)>=0)}function Co(e){let t=pr(e);return No.has(t)||To.test(t)}function pr(e){return String(e).replace(/[^a-z0-9]/gi,"").toLowerCase()}function _o(e){let t=pr(e);return[...Ao].some(r=>t.includes(r))}function Ro(e,t,r){if(typeof t=="string"){if(vo.some(o=>o.test(t))||Io(t))throw new te(r);if(Oo.test(t)&&!Co(e))throw new te(r)}}function at(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string")return Ro(r,e,t),e;if(typeof e=="number"){if(!Number.isFinite(e))throw new TypeError(`action receipt: non-finite number at ${t}`);return e}if(typeof e=="bigint")return e.toString();if(Array.isArray(e))return e.map((n,i)=>at(n,`${t}[${i}]`,r));if(typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`action receipt: JSON-like value required at ${t}`);let o={};for(let n of Object.keys(e).sort()){let i=`${t}.${n}`;if(_o(n))throw new te(i);e[n]!==void 0&&(o[n]=at(e[n],i,n))}return o}function ct(e){return at(e)}var Ao,vo,ko,Oo,To,No,te,Ie=a(()=>{Ao=new Set(["privatekey","privkey","secretkey","seedphrase","seed","mnemonic","passphrase","password","keystore","keymaterial","wif","xprv","xpriv","bearer","authorization","signature","apikey","credential"]),vo=[/\b[5KL][1-9A-HJ-NP-Za-km-z]{50,51}\b/,/\bxprv[0-9A-Za-z]{50,}\b/],ko=new Set([12,15,18,21,24]);Oo=/^\s*(?:0x)?[0-9a-fA-F]{64}\s*$/,To=/(hash|digest|root|salt|nonce|proof|commitment|sig|id)(?:e?s)?$/i,No=new Set(["calldata","data","publickey","pubkey","message","payload","input","extradata"]);te=class extends Error{constructor(t){super(`action receipt refused: secret-bearing field at ${t}`),this.name="ActionReceiptSecretError",this.code="ACTION_RECEIPT_SECRET"}}});import{wordlists as Ql}from"ethers";var mr,tu,z=a(()=>{Ie();mr=64*1024,tu=32*1024});var Po,ou,iu,Te=a(()=>{z();Po=["schemaVersion","buildVersion","recordType","execution","custody"],ou=[...Po,"recordHash"],iu=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 Bo,Ar,uu,pt=a(()=>{z();Te();Bo=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Ar=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"]),uu=new Set(Ar)});var Ho,vr=a(()=>{z();pt();Ho=64*1024*1024});var gu,yu,Eu,kr=a(()=>{gu=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),yu=Object.freeze(["read","simulate"]),Eu=1440*60});function mt(e){let t=String(e),r=t.toLowerCase().replace(/[\s._-]+/g,"");return zo.test(t)||Uo.includes(r)}function Wo(e){return e.replace(/"([A-Za-z0-9_-]+)"\s*:\s*"(?:0x)?([0-9a-fA-F]{64})"/g,(t,r)=>Or.includes(String(r).toLowerCase().replace(/[_-]/g,""))?`"${r}":"<hex64>"`:t)}function Tr(e){let t;try{t=JSON.stringify(e)}catch(n){throw new _("$",`unserializable-payload: ${String(n?.message||n)}`)}if(t===void 0)return"null";let r=Wo(t);for(let{rule:n,re:i}of Ir)if(i.test(r))throw new _("$<serialized>",n);if(/(?:^|[^0-9a-fA-Fx])0x[0-9a-fA-F]{64}(?![0-9a-fA-F])/.test(r))throw new _("$<serialized>","raw-32-byte-hex-embedded");return JSON.parse(t,(n,i)=>{if(n&&mt(n))throw new _(`$<serialized>.${n}`,"forbidden-key-name");return i}),t}function P(e,t="$",r=new Set,o=""){if(e==null)return e;if(typeof e=="string"){let n=Or.includes(String(o).toLowerCase().replace(/[_-]/g,""));for(let{rule:i,re:s}of Ir)if(!(n&&i.startsWith("raw-32-byte-hex"))&&s.test(e))throw new _(t,i);return e}if(typeof e!="object"||r.has(e)||(r.add(e),ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e;if(e instanceof Map){for(let[n,i]of e.entries()){if(typeof n=="string"&&mt(n))throw new _(`${t}[${JSON.stringify(n)}]`,"forbidden-key-name");P(n,`${t}[key]`,r),P(i,`${t}[${String(n)}]`,r)}return e}if(e instanceof Set){let n=0;for(let i of e.values())P(i,`${t}[${n++}]`,r);return e}if(Array.isArray(e))return e.forEach((n,i)=>P(n,`${t}[${i}]`,r)),e;for(let[n,i]of Object.entries(e)){if(mt(n))throw new _(`${t}.${n}`,"forbidden-key-name");P(i,`${t}.${n}`,r,n)}return e}var _,zo,Uo,Ir,Or,wt=a(()=>{kr();_=class extends Error{constructor(t,r){super(`secret material must never appear in a public API object (at ${t}, rule: ${r})`),this.name="SecretLeakError",this.path=t,this.rule=r}},zo=/(private[_-]?key|secret|bearer|keystore|mnemonic|seed[_-]?phrase|passphrase|password|api[_-]?key|access[_-]?token|auth[_-]?token|session[_-]?token|signer[_-]?url|signature)/i,Uo=Object.freeze(["privkey","wif","xprv","seed"]);Ir=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}]),Or=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"])});var ht,Cu,Nr=a(()=>{wt();ht=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Cu=Object.freeze(Object.fromEntries(ht.map((e,t)=>[e,Object.freeze(t+1<ht.length?[ht[t+1]]:[])])))});var Vo,Cr=a(()=>{Nr();z();Te();Vo=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 _r=a(()=>{z();Te();pt();vr();Cr()});var Jo,Go,Yo,md,wd,hd,gd,yd,Xo,Ed,Rr=a(()=>{Jo=Object.freeze(["owner","operator","agent","viewer"]),Go=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),Yo=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),md=Object.freeze(["owner"]),wd=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"}),hd=new Set(Jo),gd=new Set(Go),yd=new Set(Object.values(Yo)),Xo=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"])}),Ed=Object.freeze(Object.fromEntries(Object.entries(Xo).map(([e,t])=>[e,Object.freeze([...t])])))});var Zo,Qo,ei,Ad,vd,kd,Id,Od,Td,gt=a(()=>{Rr();Zo=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),Qo=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),ei=Object.freeze(["taskId","intentId","planId","runId","eventId"]),Ad=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),vd=new Set(Zo),kd=new Set(Qo),Id=new Set(ei),Od=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"]),Td=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 Ld,$r=a(()=>{_r();gt();Ld=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"})});var jd,Lr=a(()=>{gt();jd=32*1024*1024});var Hd,zd,Ud,U=a(()=>{Hd=Object.freeze({N:1<<17,r:8,p:1}),zd=256*1024*1024,Ud=16*1024});var Vd,Pr=a(()=>{Vd=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 yt}from"node:os";import{join as Et}from"node:path";var Br,ti,Yd,Dr=a(()=>{Br=process.env.ORACLE_PUBLIC_DESKTOP==="1",ti=Br?process.env.ORACLE_CONFIG_DIR||Et(yt(),".config","oracle"):Et(yt(),".config","oracle"),Yd=Br?ti:Et(yt(),".config","mad-desk")});var tf,rf,nf,Fr=a(()=>{Dr();tf="0".repeat(64),rf=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"}),nf=Promise.resolve()});var bt=a(()=>{Fr();D();U();ke()});var jr=a(()=>{});var zr={};me(zr,{SIGN_TIME_REVIEW_VERSION:()=>ri,SignTimeReviewSecretError:()=>re,createSignTimeReview:()=>Hr});function xt(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string"){let n=e.trim().split(/\s+/);if(ai.test(e)||ci.has(n.length)&&n.every(i=>/^[a-z]+$/i.test(i)))throw new re(t);return e}if(typeof e=="bigint")return e.toString();if(typeof e=="number"){if(!Number.isSafeInteger(e))throw new TypeError(`sign-time review: safe integer required at ${t}`);return e}if(Array.isArray(e))return e.map((n,i)=>xt(n,`${t}[${i}]`,r));j(e,t);let o={};for(let n of Object.keys(e).sort()){let i=n.replace(/[^a-z0-9]/gi,"");if(si.test(i))throw new re(`${t}.${n}`);e[n]!==void 0&&(o[n]=xt(e[n],`${t}.${n}`,n))}return o}function j(e,t){if(e==null||typeof e!="object"||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`sign-time review: ${t} must be a plain object`);return e}function ne(e,t){if(e==null||e==="")throw new TypeError(`sign-time review: ${t} required`);return e}function W(e,t){let r=String(ne(e,t)).toLowerCase();if(!ni.test(r))throw new TypeError(`sign-time review: ${t} must be an EVM address`);return r}function R(e,t,{positive:r=!1}={}){try{let o=BigInt(ne(e,t));if(o<0n||r&&o===0n)throw new Error;return o.toString()}catch{throw new TypeError(`sign-time review: ${t} must be an unsigned integer`)}}function St(e,t){if(typeof e!="string"||e.length===0||e.length>500||e!==e.trim())throw new TypeError(`sign-time review: ${t} must be non-empty text`);return e}function Mr(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))Mr(t);Object.freeze(e)}return e}function li(e,t){if(typeof e=="boolean")return{passed:e,reason:e?"passed":"failed"};j(e,t);let r=e.passed??e.ok??e.allowed;if(typeof r!="boolean")throw new TypeError(`sign-time review: ${t} needs a boolean result`);let o=e.reason??e.message??e.name??(r?"passed":"failed");return{...e,passed:r,reason:St(String(o),`${t}.reason`)}}function ui(e){if(!Array.isArray(e))throw new TypeError("sign-time review: policyChecks must be an array");let t=e.map((o,n)=>li(o,`policyChecks[${n}]`)),r=t.filter(o=>!o.passed);return{checks:t,passed:t.length-r.length,failed:r.length,reasons:r.map(o=>o.reason)}}function di(e){if(e==null)return null;if(j(e,"simulation"),typeof e.status!="string"||!["ok","success","failed","error","unavailable","unknown"].includes(e.status))throw new TypeError("sign-time review: simulation.status is invalid");if(e.willRevert!==!0&&e.willRevert!==!1&&e.willRevert!==null)throw new TypeError("sign-time review: simulation.willRevert must be boolean or null");let t={status:e.status,willRevert:e.willRevert??null,summary:St(String(e.summary??"simulation result recorded"),"simulation.summary")};return e.gasEstimate!=null&&(t.gasEstimate=R(e.gasEstimate,"simulation.gasEstimate")),e.gasLimit!=null&&(t.gasLimit=R(e.gasLimit,"simulation.gasLimit")),t}function fi(e){if(e==null)return null;if(!Array.isArray(e)||e.length===0)throw new TypeError("sign-time review: assetDeltas must be a non-empty array");return e.map((t,r)=>{j(t,`assetDeltas[${r}]`);let o=R(t.before,`assetDeltas[${r}].before`),n=R(t.after,`assetDeltas[${r}].after`),i=(BigInt(n)-BigInt(o)).toString(),s;try{s=t.delta==null?i:BigInt(t.delta).toString()}catch{throw new TypeError(`sign-time review: assetDeltas[${r}].delta must be an integer`)}if(s!==i)throw new TypeError(`sign-time review: assetDeltas[${r}].delta does not match before/after`);return{...t,asset:St(String(ne(t.asset??t.token,`assetDeltas[${r}].asset`)),`assetDeltas[${r}].asset`),before:o,after:n,delta:s}})}function pi(e){if(e==null)return[];if(!Array.isArray(e))throw new TypeError("sign-time review: approvalDeltas must be an array");return e.map((t,r)=>{j(t,`approvalDeltas[${r}]`);let o=R(t.amount??t.after,`approvalDeltas[${r}].amount`);if(t.revokeLike!=null&&typeof t.revokeLike!="boolean")throw new TypeError(`sign-time review: approvalDeltas[${r}].revokeLike must be boolean`);return{token:W(t.token,`approvalDeltas[${r}].token`),spender:W(t.spender,`approvalDeltas[${r}].spender`),owner:W(t.owner,`approvalDeltas[${r}].owner`),amount:o,revokeLike:t.revokeLike??BigInt(o)===0n}})}function Hr(e={}){j(e,"input");let t=xt(e),r=t.tx==null?t:j(t.tx,"tx"),o=R(t.chainId??r.chainId,"chainId",{positive:!0}),n=W(t.account??t.from??r.from,"account/from"),i=W(t.destination??t.to??r.to,"destination/to"),s=String(ne(t.prepareHash,"prepareHash")).toLowerCase();if(!ii.test(s))throw new TypeError("sign-time review: prepareHash must be a 32-byte hash");let d=t.route??t.venue;if(d==null)throw new TypeError("sign-time review: route/venue required");let c=t.decodedCalldata??t.decodedAction;if(c==null)throw new TypeError("sign-time review: decodedCalldata or decodedAction required");let p=String(ne(t.calldata??t.data??r.data,"calldata/data")).toLowerCase();if(!oi.test(p))throw new TypeError("sign-time review: calldata/data must be even-length hex");let m=t.policyChecks!==void 0&&t.policyChecks!==null,l=ui(m?t.policyChecks:[]),f=di(t.simulation),u=fi(t.assetDeltas),g=pi(t.approvalDeltas),w=t.allowlistHits??[];if(!Array.isArray(w))throw new TypeError("sign-time review: allowlistHits must be an array");let y=f?.willRevert===!0||["failed","error"].includes(f?.status),$=f!=null&&f.willRevert===!1&&["ok","success"].includes(f.status),N=y||l.failed>0?"BLOCKED":$&&m&&l.checks.length>0&&u!=null?"READY":"UNKNOWN",B=typeof c=="string"?c:c.method??c.action??c.type??"transaction",E=`${N}: review ${B} on chain ${o}; policy ${l.passed} passed, ${l.failed} failed; ${u?.length??0} asset delta${u?.length===1?"":"s"}; local signature required`,x={reviewVersion:1,status:N,requiresLocalSignature:!0,signingLocal:!0,custody:"none",execution:"review-only",chainId:o,account:n,from:n,route:d,venue:t.venue??(typeof d=="string"?d:d.venue??d.provider??null),destination:i,to:i,...t.spender==null?{}:{spender:W(t.spender,"spender")},prepareHash:s,...t.decodedCalldata!==void 0?{decodedCalldata:t.decodedCalldata}:{decodedAction:t.decodedAction},calldata:p,data:p,selector:p.length>=10?p.slice(0,10):null,value:R(t.value??r.value??0,"value"),...(t.gasEstimate??r.gasEstimate)==null?{}:{gasEstimate:R(t.gasEstimate??r.gasEstimate,"gasEstimate")},...(t.gasLimit??r.gasLimit)==null?{}:{gasLimit:R(t.gasLimit??r.gasLimit,"gasLimit")},simulation:f,policyChecks:l,allowlistHits:w,assetDeltas:u,approvalDeltas:g,summary:E};return Mr(x)}var ri,ni,oi,ii,si,ai,ci,re,At=a(()=>{ri=1,ni=/^0x[0-9a-f]{40}$/,oi=/^0x(?:[0-9a-f]{2})*$/,ii=/^(?:0x)?[0-9a-f]{64}$/,si=/(privatekey|privkey|secretkey|seedphrase|mnemonic|passphrase|password|keystore|keymaterial|wif|xprv|xpriv|bearer|authorization|signature|apikey|credential)/i,ai=/\b(?:[5KL][1-9A-HJ-NP-Za-km-z]{50,51}|xprv[0-9A-Za-z]{50,})\b/,ci=new Set([12,15,18,21,24]),re=class extends Error{constructor(t){super(`sign-time review refused: secret-bearing field at ${t}`),this.name="SignTimeReviewSecretError",this.code="SIGN_TIME_REVIEW_SECRET"}}});import{readFileSync as mf,readdirSync as wf,existsSync as mi}from"node:fs";import{dirname as wi,join as oe}from"node:path";import{fileURLToPath as hi}from"node:url";function gi(){let e=[oe(ie,"descriptors"),oe(ie,"clear-sign","descriptors"),oe(ie,"..","clear-sign","descriptors"),oe(ie,"..","..","clear-sign","descriptors"),oe(ie,"..","..","..","clear-sign","descriptors")];for(let t of e)if(mi(t))return t;return e[0]}var ie,Ef,bf,Ur=a(()=>{F();ie=wi(hi(import.meta.url));Ef=gi(),bf=(1n<<256n)-1n});var Wr=a(()=>{At();F();Ur()});import{Wallet as Tf}from"ethers";import{base58 as Cf}from"@scure/base";import{ed25519 as Rf}from"@noble/curves/ed25519.js";import{NETWORK as Lf,TEST_NETWORK as Pf,WIF as Bf,p2wpkh as Df}from"@scure/btc-signer";import{pubECDSA as qf}from"@scure/btc-signer/utils.js";var Vr=a(()=>{});var Hf,zf,Uf,Wf,Vf,Kf,Jf,Gf,Yf,Xf,Zf,Kr=a(()=>{bt();Hf=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),zf=Object.freeze(["binance","bybit","okx","coinbase"]),Uf=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),Wf=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),Vf=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),Kf=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),Jf=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),Gf=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),Yf=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),Xf=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),Zf=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"})});var Jr=a(()=>{U()});var bi,Gr,Ce=a(()=>{bi=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}"]})}),Gr=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"})});var Yr=a(()=>{Ce()});var cp,Xr=a(()=>{Ce();Yr();cp=256*1024});var Zr=a(()=>{Ce();Xr()});var Qr=a(()=>{U()});import v from"node:path";import xi from"node:os";import{createHash as Si,randomBytes as tm}from"node:crypto";import{Interface as vt,keccak256 as nm}from"ethers";import{Transaction as im}from"@scure/btc-signer";import{ed25519 as am}from"@noble/curves/ed25519.js";function en(e){let t=process.env.ORACLE_SIGNER_STATE_DIR||v.join(process.env.XDG_STATE_HOME||v.join(xi.homedir(),".local","state"),"oracle"),r=Si("sha256").update(v.resolve(e)).digest("hex").slice(0,16);return{vault:v.join(e,"vault.json"),policy:v.join(e,"signer-policy.json"),policyKey:v.join(e,"policy-integrity-key"),policyAnchor:v.join(t,`signer-policy-${r}.high-water`),ledger:v.join(e,"signer-ledger.json"),ledgerAnchor:v.join(t,`signer-ledger-${r}.high-water`),cexOrders:v.join(e,"cex-orders.json"),cexOrdersAnchor:v.join(t,`cex-orders-${r}.high-water`),token:v.join(e,"signer-token"),lock:v.join(t,`signer-${r}.lock`),workflowLedger:v.join(e,"workflow-events.jsonl")}}var Dm,Fm,qm,tn=a(()=>{fr();$r();Lr();ke();U();Pr();bt();jr();F();Wr();ve();Ee();st();et();rt();Ae();it();tt();ot();ze();Ue();nt();Vr();Kr();Jr();Zr();Qr();Dm=new vt(["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"]),Fm=new vt(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),qm=new vt(["function ownerOf(uint256 tokenId) view returns (address)","function getApproved(uint256 tokenId) view returns (address)","function isApprovedForAll(address owner,address operator) view returns (bool)"])});import kt from"node:fs";import rn from"node:path";import{homedir as Ai}from"node:os";function vi(){return process.env.ORACLE_CONFIG_DIR||rn.join(Ai(),".config","oracle")}function se(){let e=en(rn.join(vi(),"signer")),t=kt.existsSync(e.vault),r=kt.existsSync(e.lock),o=t?r?"disarmed":"armed-owner-confirmed":"inert-no-key";return{vaultExists:t,policyConfigured:kt.existsSync(e.policy),armed:t&&!r,disarmed:r,capabilities:{swap:o,bridge:o},autonomous:!1,note:"Keys stay on this machine. Exact confirmation is required before any broadcast."}}var Ym,It=a(()=>{Fe();qt();tn();U();Ym=Object.freeze([{type:"function",function:{name:"vault_status",description:"Read local Oracle vault/signer readiness. Never returns key material.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_status",description:"Ping the loopback signer. Fails closed if it is not running.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_pending",description:"List pending local-signer artifacts. Read-only. Does not approve, sign, or broadcast.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"signer_queue",description:"Queue a prepared unsigned artifact on the loopback signer. Does not broadcast.",parameters:{type:"object",properties:{artifact:{type:"object"}},required:["artifact"],additionalProperties:!1}}},{type:"function",function:{name:"signer_ack",description:"Execute one pending artifact through the armed local signer (same path as Telegram Allow). Fails if the signer is not running or disarmed. Never holds keys.",parameters:{type:"object",properties:{id:{type:"string"},digest:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"signer_deny",description:"Drop one pending local-signer artifact. Nothing signed.",parameters:{type:"object",properties:{id:{type:"string"},digest:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"signer_execute",description:"Broadcast one already-confirmed local artifact. Requires a one-use confirmationNonce from the local signer TTY confirm. Cannot mint confirmation itself.",parameters:{type:"object",properties:{artifact:{type:"object"},confirmationNonce:{type:"string",minLength:32,maxLength:128}},required:["artifact","confirmationNonce"],additionalProperties:!1}}},{type:"function",function:{name:"signer_disarm",description:"Global kill switch. Stops the local signer from broadcasting.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"receipt_report",description:"Receipt or it did not happen. Requires transactionHash/hash/txid.",parameters:{type:"object",properties:{receipt:{type:"object"},transactionHash:{type:"string"},hash:{type:"string"},txid:{type:"string"}},additionalProperties:!1}}},{type:"function",function:{name:"watch_create",description:"Create an alert-only watch. Never execute.",parameters:{type:"object",properties:{chain:{type:"string"},token:{type:"string"},condition:{type:"string"},note:{type:"string"}},required:["chain","token","condition"],additionalProperties:!1}}},{type:"function",function:{name:"watch_list",description:"List local alert-only watches.",parameters:{type:"object",properties:{},additionalProperties:!1}}},{type:"function",function:{name:"portfolio_snapshot",description:"How to read the one portfolio snapshot. knownUsd is incomplete if a provider is missing.",parameters:{type:"object",properties:{},additionalProperties:!1}}}])});import _e from"node:fs";import ki from"node:os";import K from"node:path";import{fileURLToPath as Ii}from"node:url";function nn(){return process.env.ORACLE_FAKE_HOME||ki.homedir()}function Ti(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function Re(){return Ti()?process.env.ORACLE_CONFIG_DIR||K.join(nn(),".config","oracle"):K.join(nn(),".config","oracle")}function Ni(){return K.join(Re(),"desk.json")}function Ci(){return K.join(Re(),"env")}function V({force:e=!1}={}){if(V._done&&!e)return V._result||null;V._done=!0;let t={},r=(n,i)=>{if(i==null)return;let s=String(i).trim();s&&(process.env[n]!=null&&String(process.env[n]).trim()!==""||(process.env[n]=s,t[n]=s))};try{let n=Ci();if(_e.existsSync(n))for(let i of _e.readFileSync(n,"utf8").split(/\r?\n/)){let s=i.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!s||s[2].startsWith("#"))continue;let d=s[2];(d.startsWith('"')&&d.endsWith('"')||d.startsWith("'")&&d.endsWith("'"))&&(d=d.slice(1,-1)),r(s[1],d)}}catch{}try{let n=Ni();if(_e.existsSync(n)){let i=JSON.parse(_e.readFileSync(n,"utf8"));i&&typeof i=="object"&&(r("ORACLE_DESK_URL",i.deskUrl||i.dataUrl||i.url),r("ORACLE_DATA_URL",i.dataUrl||i.deskUrl||i.url),r("ORACLE_API_URL",i.apiUrl||i.dataUrl||i.deskUrl),r("ORACLE_PUBLIC_URL",i.publicUrl||i.deskUrl||i.dataUrl),r("ORACLE_EXEC_URL",i.execUrl),r("MAD_DESK_URL",i.deskUrl||i.dataUrl))}}catch{}let o=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return o&&(r("ORACLE_DESK_URL",o),r("ORACLE_DATA_URL",o),r("ORACLE_API_URL",o),r("ORACLE_PUBLIC_URL",o),r("MAD_DESK_URL",o)),V._result=Object.keys(t).length?t:null,V._result}var Oi,rw,on=a(()=>{Oi=K.dirname(Ii(import.meta.url)),rw=K.resolve(Oi,"../..");try{V()}catch{}});function $e(e){return String(e||"").trim()||void 0}function Ri(e,{required:t=!1}={}){let r=$e(e)?.toLowerCase();if(!r){if(t)throw new Error("model provider is required");return}if(!_i.has(r))throw new Error(`unsupported provider: ${r}`);return r}function $i(e,{required:t=!1}={}){let r=$e(e);if(!r){if(t)throw new Error("model is required");return}if(r.includes("..")||r.startsWith("/")||!/^[a-zA-Z0-9._:/-]{1,200}$/.test(r))throw new Error("invalid model id");return r}function Li(e){let t=$e(e);if(!t||t.length>2048)throw new Error("invalid custom base URL");let r;try{r=new URL(t)}catch{throw new Error("invalid custom base URL")}let o=r.hostname.toLowerCase().replace(/^\[|\]$/g,""),n=o==="localhost"||o==="127.0.0.1"||o==="::1";if(r.protocol!=="https:"&&!(r.protocol==="http:"&&n)||r.username||r.password||r.search||r.hash)throw new Error("custom base URL must use HTTPS or loopback HTTP without credentials, query, or fragment");return r.toString().replace(/\/+$/,"")}function sn({provider:e,model:t,baseUrl:r}={},{requireModel:o=!1}={}){let n=Ri(e),i=$i(t,{required:o});if(n==="custom")return{provider:n,...i?{model:i}:{},baseUrl:Li(r)};if($e(r))throw new Error("baseUrl is only supported for the custom provider");return{...n?{provider:n}:{},...i?{model:i}:{}}}var _i,an=a(()=>{_i=new Set(["openrouter","openai","anthropic","xai","deepseek","gemini","kimi","mistral","nous","qwen","glm","local","ollama","custom","anthropic-oauth","openai-codex","xai-oauth"])});import cn from"node:fs";import Pi from"node:path";function Di(){return Pi.join(Re(),"model.json")}function J(e){return String(e||"").trim()||void 0}function Fi(e={}){let t=J(e.backend)?.toLowerCase()||"auto",r=sn({provider:e.provider,model:e.model,baseUrl:e.baseUrl},{requireModel:t==="standalone"}),o=J(e.apiKeyEnv),n=Number.parseInt(String(e.contextLength||""),10),i=J(e.reasoningEffort),s=J(e.computeHost||e.remoteHost),d=J(e.computeUser||e.remoteUser),c=J(e.computePath||e.remotePath);if(!Bi.has(t))throw new Error(`unsupported backend: ${t}`);if(process.env.ORACLE_PUBLIC_DESKTOP==="1"&&["remote","arch"].includes(t))throw new Error("remote compute backends are disabled in the public desktop");if(o&&!/^[A-Z][A-Z0-9_]*$/.test(o))throw new Error("api key env must be an uppercase environment variable name");if(t==="remote"&&!s)throw new Error("remote backend requires computeHost");return{backend:t,...r,...o?{apiKeyEnv:o}:{},...Number.isFinite(n)&&n>0?{contextLength:n}:{},...i?{reasoningEffort:i}:{},...s?{computeHost:s}:{},...d?{computeUser:d}:{},...c?{computePath:c}:{}}}function ln(){let e=Di();if(!cn.existsSync(e))return null;try{return Fi(JSON.parse(cn.readFileSync(e,"utf8")))}catch{return null}}var Bi,un=a(()=>{on();an();Bi=new Set(["auto","standalone","hermes","remote","arch"])});import{Interface as qi,getAddress as ji}from"ethers";function Ot(e,t){try{return ji(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function Mi(e){let t=String(e||"").trim();if(!/^0x[0-9a-fA-F]{64}$/.test(t))throw new Error("txHash must be a 32-byte hex transaction hash");return t.toLowerCase()}function Tt(e){return e==null?null:Number.parseInt(String(e),16)}function zi(e,{rpcUrl:t,env:r=process.env}={}){if(t)return t;let o=Ft(e,r);return o||Hi[Number(e)]||null}function Wi(e){let t=String(e||""),r=t.toLowerCase();if(t!==t.trim()||!/^[a-zA-Z0-9_]+$/.test(t)||!Ui.test(r))throw new Error(`evm-rpc: ${t} refused \u2014 @oracle-agent/oracle is prepare-only (read RPC only; no broadcast/sign)`);return r}function Vi(e){let t=new Error(e?.message||JSON.stringify(e));return t.code=e?.code,t}function Ki(e){if(e?.error)throw Vi(e.error);return e?.result}function Ji(e,t,r){return`${e}
3
3
  ${t}
4
- ${JSON.stringify(r??[])}`}async function Gi(e,t,r){return xe(e,{method:"POST",body:t,fetchImpl:r.fetchImpl,timeoutMs:r.timeoutMs??12e3,signal:r.signal})}async function Nt(e,t,r=[],o={}){let n=String(t||""),i=Wi(n),a=zi(e,o);if(!a)throw new Error(`No RPC URL for chainId ${e} (set env from chain registry rpcEnv or pass rpcUrl)`);if(i==="eth_chainid"&&o.cacheChainId!==!1){let m=dn.get(a);if(m!=null)return m}let c=o.dedupe!==!1&&!o.signal?Ji(a,n,r):null;if(c&&se.has(c))return se.get(c);let p=(async()=>{let m=await Gi(a,{jsonrpc:"2.0",id:1,method:t,params:r},o),l=Ki(m);return i==="eth_chainid"&&typeof l=="string"&&dn.set(a,l),l})();return c&&(se.set(c,p),p.finally(()=>{se.get(c)===p&&se.delete(c)}).catch(()=>{})),p}async function fn(e={},t={}){let r=Number(e.chainId??t.chainId??1),o=Mi(e.txHash||e.hash||e.transactionHash),n=await Nt(r,"eth_getTransactionReceipt",[o],t);if(!n)return{ok:!1,chainId:r,txHash:o,status:"pending",receipt:null,reason:"receipt pending"};let i=Tt(n.status),a=i===1,d=i===1?"success":i===0?"reverted":"unknown",c=a?null:d==="reverted"?"transaction reverted":"unknown receipt status",p=e.expectedTo?Ot(e.expectedTo,"expectedTo"):null,m=n.to?Ot(n.to,"receipt.to"):null;return p&&m!==p&&(a=!1,c=`to mismatch: expected ${p}, got ${m||"null"}`),{ok:a,chainId:r,txHash:o,status:d,reason:c,statusCode:i,to:m,from:n.from?Ot(n.from,"receipt.from"):null,blockNumber:Tt(n.blockNumber),transactionIndex:Tt(n.transactionIndex),logs:Array.isArray(n.logs)?n.logs:[],receipt:n}}var ww,Hi,Ui,se,dn,pn=s(()=>{Se();De();ww=new qi(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);Hi={1:"https://ethereum.publicnode.com",137:"https://polygon-bor-rpc.publicnode.com",42161:"https://arbitrum-one-rpc.publicnode.com",8453:"https://base-rpc.publicnode.com",10:"https://optimism-rpc.publicnode.com",988:"https://rpc.stable.xyz",56:"https://bsc-rpc.publicnode.com",43114:"https://avalanche-c-chain-rpc.publicnode.com",999:"https://rpc.hyperliquid.xyz/evm",2741:"https://api.mainnet.abs.xyz",4663:"https://rpc.mainnet.chain.robinhood.com"};Ui=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/;se=new Map,dn=new Map});function Ct(e,t){if(!e||typeof e!="object"||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`${t} must be a plain object`);return e}function _t(e,t="control input"){try{P(e,t),Tr(e)}catch(r){throw new TypeError(`${t} contains secret or custody material: ${r.message}`)}return e}function ce(e,{required:t=[],optional:r=[]}={},o="object"){Ct(e,o);let n=new Set([...t,...r]),i=Object.keys(e).filter(a=>!n.has(a));if(i.length)throw new TypeError(`${o} has unknown field ${i[0]}`);for(let a of t)if(!Object.hasOwn(e,a))throw new TypeError(`${o}.${a} is required`);return e}function Rt(e,t,r=200,{lower:o=!1}={}){if(typeof e!="string"||!e.trim()||e.length>r||Yi.test(e))throw new TypeError(`${t} must be non-empty control-free text up to ${r} characters`);let n=e.trim();return o?n.toLowerCase():n}function le(e,t,r=80){let o=Rt(e,t,r,{lower:!0});if(!/^[a-z0-9][a-z0-9._:-]*$/.test(o))throw new TypeError(`${t} must be a lowercase identifier`);return o}function Le(e,t,{positive:r=!1}={}){if(!Number.isSafeInteger(e)||e<0||r&&e===0)throw new TypeError(`${t} must be a ${r?"positive":"non-negative"} safe integer`);return e}function I(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))I(t);Object.freeze(e)}return e}var Yi,$t=s(()=>{Ie();wt();Yi=/[\u0000-\u001f\u007f]/});function mn({family:e,chainId:t},r="chain"){let o=le(e,`${r}.family`,40),n;if(o==="evm"){if(typeof t=="number")n=String(Le(t,`${r}.chainId`,{positive:!0}));else if(n=Rt(t,`${r}.chainId`,40),!/^[1-9][0-9]*$/.test(n))throw new TypeError(`${r}.chainId must be a positive decimal EVM chain id`)}else n=le(t,`${r}.chainId`,80);return{family:o,chainId:n}}function Qi(e,t="chain"){return ce(e,{required:["family","chainId"]},t),I(mn(e,t))}function wn(e,t="finality rule"){_t(e,t),Ct(e,t);let r=e.rule;if(!Xi.includes(r))throw new TypeError(`${t}.rule must be confirmations, finalizedTag, or checkpoint`);let o=r==="confirmations"?"confirmations":r;ce(e,{required:["family","chainId","rule",o]},t);let n=mn(e,t);return r==="confirmations"?{...n,rule:r,confirmations:Le(e.confirmations,`${t}.confirmations`,{positive:!0})}:{...n,rule:r,[o]:le(e[o],`${t}.${o}`,80)}}function Lt(e){if(!Array.isArray(e))throw new TypeError("finality policy rules must be an array");let t=e.map((o,n)=>wn(o,`finality policy rule ${n}`)),r=new Set;for(let o of t){let n=`${o.family}\0${o.chainId}`;if(r.has(n))throw new TypeError(`duplicate finality rule for ${o.family}:${o.chainId}`);r.add(n)}return I({policyVersion:1,rules:t})}function ea(e){if(ce(e,{required:["policyVersion","rules"]},"finality policy"),e.policyVersion!==1||!Array.isArray(e.rules))throw new TypeError("unsupported finality policy");return Lt(e.rules)}function hn(e,t){let r=Qi(t,"finality query"),n=ea(e).rules.find(i=>i.family===r.family&&i.chainId===r.chainId);return n?I({status:"KNOWN",...r,rule:n}):I({status:M.UNKNOWN,reason:"MISSING_FINALITY_RULE",...r,rule:null})}function ta(e,t){if(e==null)return null;_t(e,"finality evidence");let r=t.rule==="confirmations"?"confirmations":t.rule;if(ce(e,{required:["status"],optional:[r]},"finality evidence"),!Zi.includes(e.status))throw new TypeError("finality evidence.status is unknown");let o={status:e.status};return e[r]!=null&&(o[r]=t.rule==="confirmations"?Le(e.confirmations,"finality evidence.confirmations",{positive:!0}):le(e[r],`finality evidence.${r}`,80)),o}function gn(e,t){if(!e||e.status===M.UNKNOWN||e.rule==null)return I({status:M.UNKNOWN,final:!1,reason:"MISSING_FINALITY_RULE"});let r=wn(e.rule??e,"resolved finality rule"),o=ta(t,r);if(o==null)return I({status:M.UNKNOWN,final:!1,reason:"MISSING_FINALITY_EVIDENCE"});if(o.status!=="LIVE")return I({status:M.UNKNOWN,final:!1,reason:`${o.status}_EVIDENCE`});let n=!1;return r.rule==="confirmations"?n=o.confirmations!=null&&o.confirmations>=r.confirmations:r.rule==="finalizedTag"?n=o.finalizedTag===r.finalizedTag:n=o.checkpoint===r.checkpoint,I({status:n?M.FINAL:M.INCLUDED,final:n,reason:n?"PINNED_RULE_SATISFIED":"PINNED_RULE_NOT_SATISFIED",rule:r})}var Xi,M,Zi,yn=s(()=>{$t();Xi=Object.freeze(["confirmations","finalizedTag","checkpoint"]),M=Object.freeze({UNKNOWN:"UNKNOWN",INCLUDED:"INCLUDED",FINAL:"FINAL"}),Zi=Object.freeze(["LIVE","STALE","UNKNOWN","UNAVAILABLE"])});function na(e){if(e===!0||e===1||e==="1")return"SUCCESS";if(e===!1||e===0||e==="0")return"FAIL";if(typeof e!="string")return"UNKNOWN";let t=e.trim().toUpperCase();return["SUCCESS","SUCCEEDED","OK","EXECUTED"].includes(t)?"SUCCESS":["FAIL","FAILED","FAILURE","REVERTED","REJECTED"].includes(t)?"FAIL":"UNKNOWN"}function En(e){return typeof e=="string"&&["FAIL","FAILED","FAILURE","ORPHAN","ORPHANED","REVERTED"].includes(e.trim().toUpperCase())}function Bt(e){return e==null?e:Array.isArray(e)?e.map(Bt):ue(e)?Object.fromEntries(Object.keys(e).sort().map(t=>[t,Bt(e[t])])):String(e)}function oa(e,t,r,o){let n=b(e.finalityEvidence,o?.finality,e.evidence),i=b(e.finalityPolicy,e.policy);try{return i==null&&ue(e.finalityRule)&&(i=Lt([{family:t,chainId:r,...e.finalityRule}])),i==null||t==null||r==null?{status:"UNKNOWN",final:!1,reason:"MISSING_FINALITY_RULE"}:gn(hn(i,{family:t,chainId:r}),n)}catch{return{status:"UNKNOWN",final:!1,reason:"MALFORMED_FINALITY_EVIDENCE"}}}function A(e,t,r){r!=null&&(e[t]=r)}function ia(e){return e==null?null:String(e).trim().toLowerCase()}function Pt(...e){let t=e.map(ia).filter(Boolean);return t.length<=1||t.every(r=>r===t[0])}function bn(e={}){if(!ue(e))throw new TypeError("verified receipt: input object required");let t=ct(e),r=b(t.actionReceipt,t.receipt),o=ue(r)?r:t,n=b(t.observation,t.chainObservation,t.observedReceipt),i=ue(n),a=b(t.txHash,o.txHash,o.transactionHash,n?.txHash,n?.transactionHash),d=b(t.family,o.family,o.chain?.family,n?.family,n?.chain?.family),c=b(t.chainId,o.chainId,o.chain?.chainId,n?.chainId,n?.chain?.chainId),p=!Pt(t.txHash,o.txHash,o.transactionHash,n?.txHash,n?.transactionHash)||!Pt(t.family,o.family,o.chain?.family,n?.family,n?.chain?.family)||!Pt(t.chainId,o.chainId,o.chain?.chainId,n?.chainId,n?.chain?.chainId),m=oa(t,d,c,i&&!p?n:null),l=na(b(n?.receiptStatus,n?.executionStatus,n?.status)),f=b(t.reconciliationStatus,t.reconciliation?.status,n?.reconciliationStatus),u=b(t.finalityState,t.finalityEvidence?.status,t.evidence?.status,n?.finalityState),g="UNKNOWN";En(f)||!p&&(i&&l==="FAIL"||En(u))?g="FAIL":!p&&a&&i&&l==="SUCCESS"&&["INCLUDED","FINAL"].includes(m.status)&&(g="SUCCESS");let w={verifiedReceiptVersion:ra,status:g};p&&(w.reason="REFERENCE_MISMATCH"),A(w,"txHash",a),A(w,"chain",b(t.chain,o.chain,n?.chain)),A(w,"family",d),A(w,"chainId",c),A(w,"block",b(n?.block,t.block)),A(w,"blockState",b(n?.blockState,n?.inclusionState)),w.finalityState=m.status,A(w,"confirmations",b(n?.confirmations,n?.finality?.confirmations,t.finalityEvidence?.confirmations,t.evidence?.confirmations)),A(w,"observedAt",b(n?.observedAt,t.observedAt)),A(w,"route",b(t.route,o.route)),A(w,"prepareHash",b(t.prepareHash,o.prepareHash)),A(w,"policyOutcome",b(t.policyOutcome,o.policyOutcome,o.policyChecks));let y=b(t.balanceChanges,n?.balanceChanges,n?.balances,o.balanceChanges,o.balances);return y!=null&&(w.balanceChanges=Bt(y)),A(w,"createdAt",b(t.createdAt,o.createdAt)),A(w,"submittedAt",b(t.submittedAt,o.submittedAt)),A(w,"finalizedAt",b(t.finalizedAt,n?.finalizedAt)),A(w,"timestamps",b(t.timestamps,o.timestamps,n?.timestamps)),I(w)}var ra,Iw,b,ue,xn=s(()=>{Ie();yn();$t();ra=1,Iw=Object.freeze(["SUCCESS","FAIL","UNKNOWN"]),b=(...e)=>e.find(t=>t!=null),ue=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype});var An={};me(An,{observeEvmReceipt:()=>Sn,verifyEvmReceipt:()=>ca});function sa(e){if(e==null)return null;let t=typeof e=="number"?e:Number.parseInt(String(e),16);return Number.isSafeInteger(t)?t:null}async function Sn({txHash:e,chainId:t,rpcUrl:r},o={}){let n=String(e||"").trim().toLowerCase();if(!aa.test(n))throw new TypeError("observe receipt: txHash must be a 32-byte hash");let i=Number(t);if(!Number.isSafeInteger(i)||i<=0)throw new TypeError("observe receipt: chainId required");let a=o.transactionReceipt||fn,d=o.rpcCall||Nt,c={...o.rpcOptions||{},...r?{rpcUrl:r}:{}},p;try{p=await a({txHash:n,chainId:i},c)}catch(u){return{observation:null,reason:`RPC_UNAVAILABLE: ${u.message}`}}if(!p||p.receipt==null)return{observation:null,reason:p?.reason||"receipt pending"};let m=null,l=p.blockNumber;if(Number.isSafeInteger(l))try{let u=sa(await d(i,"eth_blockNumber",[],c));u!=null&&u>=l&&(m=u-l+1)}catch{}let f={txHash:n,family:"evm",chainId:String(i),receiptStatus:p.status==="success"?"SUCCESS":p.status==="reverted"?"FAIL":"UNKNOWN",block:l==null?void 0:String(l),observedAt:new Date().toISOString(),finality:{status:"LIVE",...m==null?{}:{confirmations:m}}};return m!=null&&(f.confirmations=m),{observation:f,reason:null}}async function ca({txHash:e,chainId:t,confirmations:r=1,rpcUrl:o},n={}){let{observation:i,reason:a}=await Sn({txHash:e,chainId:t,rpcUrl:o},n),d=bn({txHash:String(e).trim().toLowerCase(),family:"evm",chainId:String(Number(t)),finalityRule:{rule:"confirmations",confirmations:r},...i?{observation:i}:{}});return{receipt:d,observed:!!i,final:d.finalityState==="FINAL",requiredConfirmations:r,reason:a}}var aa,vn=s(()=>{pn();xn();aa=/^0x[0-9a-f]{64}$/});var kn={};me(kn,{classifyReceipt:()=>Y,configDir:()=>fa,firstHourReport:()=>de,probeReceiptModule:()=>ma,probeReviewModule:()=>pa,venueMap:()=>Pe});import la from"node:path";import{homedir as ua}from"node:os";function fa(e=process.env){return e.ORACLE_CONFIG_DIR||la.join(ua(),".config","oracle")}function Pe({env:e=process.env,vault:t=null}={}){let r=t||ae(),o=[];for(let[n,i]of Object.entries(we)){let a=(i.rpcEnv||[]).some(c=>String(e[c]||"").trim()),d="prepare";i.evm?a&&(d="live"):d="unavailable",o.push({key:n,chainId:i.chainId,name:i.name,family:"evm",status:d,execute:!!(r.vaultExists&&r.armed&&!r.disarmed),note:a?"rpc configured":"public read/prepare; set RPC for live reads"})}return o.push({key:"solana",chainId:null,name:"Solana",family:"sol",status:"prepare",execute:!1,note:"Jupiter quote/prepare; local sol signer"},{key:"bitcoin",chainId:null,name:"Bitcoin",family:"btc",status:"prepare",execute:!1,note:"Esplora read; local btc signer"},{key:"hyperliquid-l1",chainId:null,name:"Hyperliquid L1",family:"data",status:"live",execute:!1,note:"data/prepare only \u2014 not an EVM signer family"},{key:"polymarket",chainId:null,name:"Polymarket",family:"data",status:"live",execute:!1,note:"data/prepare only \u2014 not a signer family"}),o}function de({env:e=process.env,model:t=ln(),vault:r=ae(),signerReachable:o=!1,quote:n=null,reviewAvailable:i=!1,receiptAvailable:a=!1}={}){let d=[],c=(u,g,w,y=null)=>d.push({id:u,status:g,detail:w,fix:y}),p=(()=>{let[u,g]=process.versions.node.split(".").map(Number);return u>20||u===20&&g>=19})();c("node",p?"ok":"fail",`node ${process.versions.node}`,p?null:"install node >= 20.19"),t?t.backend==="hermes"?c("model","warn","backend=hermes (opt-in attach)","oracle model --backend standalone"):c("model","ok",`${t.backend||"auto"} ${t.provider||""} ${t.model||""}`.trim()):c("model","fail","no model.json","oracle setup model"),r.vaultExists?r.disarmed?c("vault","warn","vault present, DISARMED","oracle signer (re-arm after confirm)"):c("vault",r.armed?"ok":"warn",r.armed?"present, armed":"present, not armed"):c("vault","fail","no local vault","oracle sign init");let m=e.ORACLE_SIGNER_HOST||"127.0.0.1";if(da.has(m)?c("signer",o?"ok":"warn",o?`loopback ${m}:${e.ORACLE_SIGNER_PORT||9462}`:"loopback signer not reachable",o?null:"oracle signer"):c("signer","fail",`signer host ${m} is not loopback`,"unset ORACLE_SIGNER_HOST"),!n)c("quote","warn","quote not probed",null);else if(n.ok){let u=String(n.detail||"net quote returned");c("quote","ok",u.length>140?`${u.slice(0,140)}\u2026`:u)}else c("quote","warn",n.detail||"quote unavailable","check network / oracle data serve");c("review",i?"ok":"fail",i?"sign-time review renders decoded action, policy hits, approval deltas":"sign-time review module missing from this build",i?null:"reinstall @oracle-agent/oracle (src/control/sign-time-review.mjs)"),c("receipt",a?"ok":"fail",a?"oracle receipt verifies on-chain state (SUCCESS/FAIL/UNKNOWN, finality-pinned)":"verified-receipt observer missing from this build",a?null:"reinstall @oracle-agent/oracle (src/desk/observe-receipt.mjs)");let l=d.some(u=>u.status==="fail"),f=d.filter(u=>u.status==="ok").length;return{ok:!l,checks:d,firstRunScore:{ok:f,total:d.length,label:`${f}/${d.length} first-run hops green`},venues:Pe({env:e,vault:r})}}async function pa(){try{return typeof(await Promise.resolve().then(()=>(At(),zr))).createSignTimeReview=="function"}catch{return!1}}async function ma(){try{let e=await Promise.resolve().then(()=>(vn(),An));return typeof e.observeReceipt=="function"||typeof e.default=="function"||Object.values(e).some(t=>typeof t=="function")}catch{return!1}}var da,Be=s(()=>{De();It();un();Fe();da=new Set(["127.0.0.1","::1","localhost"])});var On={};me(On,{classifyReceipt:()=>Y,default:()=>ga,detailText:()=>In,firstHourReport:()=>de,probeQuote:()=>ha,probeSigner:()=>wa,symbol:()=>fe,vaultStatus:()=>ae});async function wa(e=process.env){let t=e.ORACLE_SIGNER_HOST||"127.0.0.1",r=e.ORACLE_SIGNER_PORT||9462;try{return(await fetch(`http://${t}:${r}/status`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function fe(e){let t=String(e??"?").replace(/[^\w.$-]/g,"");return t.length>12?`${t.slice(0,12)}...`:t||"?"}function In(e,t=120){let r=String(e??"").replace(/[\u0000-\u001f\u007f-\u009f]/g," ").replace(/\s+/g," ").trim();return r?r.length>t?`${r.slice(0,t)}...`:r:"quote failed"}async function ha(){try{let e=await fetch("https://api.dexscreener.com/latest/dex/search?q=WETH%20USDC",{signal:AbortSignal.timeout(4e3)});if(!e.ok)return{ok:!1,detail:`dexscreener ${e.status}`};let r=(await e.json())?.pairs?.[0];return!r?.chainId||!r?.priceUsd?{ok:!1,detail:"no pair"}:{ok:!0,detail:`${fe(r.chainId)} ${fe(r.baseToken?.symbol)}/${fe(r.quoteToken?.symbol)} $${fe(r.priceUsd)}`}}catch(e){return{ok:!1,detail:In(e instanceof Error?e.message:"quote failed")}}}var ga,Tn=s(()=>{Be();It();ga={name:"venues",summary:"label every shipped venue live / prepare / unavailable",group:"read",usage:"oracle venues [--json]",async run(e){let t=e.argv.includes("--json"),r=Pe();if(t)return process.stdout.write(`${JSON.stringify({venues:r},null,2)}
4
+ ${JSON.stringify(r??[])}`}async function Gi(e,t,r){return xe(e,{method:"POST",body:t,fetchImpl:r.fetchImpl,timeoutMs:r.timeoutMs??12e3,signal:r.signal})}async function Nt(e,t,r=[],o={}){let n=String(t||""),i=Wi(n),s=zi(e,o);if(!s)throw new Error(`No RPC URL for chainId ${e} (set env from chain registry rpcEnv or pass rpcUrl)`);if(i==="eth_chainid"&&o.cacheChainId!==!1){let m=dn.get(s);if(m!=null)return m}let c=o.dedupe!==!1&&!o.signal?Ji(s,n,r):null;if(c&&ae.has(c))return ae.get(c);let p=(async()=>{let m=await Gi(s,{jsonrpc:"2.0",id:1,method:t,params:r},o),l=Ki(m);return i==="eth_chainid"&&typeof l=="string"&&dn.set(s,l),l})();return c&&(ae.set(c,p),p.finally(()=>{ae.get(c)===p&&ae.delete(c)}).catch(()=>{})),p}async function fn(e={},t={}){let r=Number(e.chainId??t.chainId??1),o=Mi(e.txHash||e.hash||e.transactionHash),n=await Nt(r,"eth_getTransactionReceipt",[o],t);if(!n)return{ok:!1,chainId:r,txHash:o,status:"pending",receipt:null,reason:"receipt pending"};let i=Tt(n.status),s=i===1,d=i===1?"success":i===0?"reverted":"unknown",c=s?null:d==="reverted"?"transaction reverted":"unknown receipt status",p=e.expectedTo?Ot(e.expectedTo,"expectedTo"):null,m=n.to?Ot(n.to,"receipt.to"):null;return p&&m!==p&&(s=!1,c=`to mismatch: expected ${p}, got ${m||"null"}`),{ok:s,chainId:r,txHash:o,status:d,reason:c,statusCode:i,to:m,from:n.from?Ot(n.from,"receipt.from"):null,blockNumber:Tt(n.blockNumber),transactionIndex:Tt(n.transactionIndex),logs:Array.isArray(n.logs)?n.logs:[],receipt:n}}var ww,Hi,Ui,ae,dn,pn=a(()=>{Se();De();ww=new qi(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);Hi={1:"https://ethereum.publicnode.com",137:"https://polygon-bor-rpc.publicnode.com",42161:"https://arbitrum-one-rpc.publicnode.com",8453:"https://base-rpc.publicnode.com",10:"https://optimism-rpc.publicnode.com",988:"https://rpc.stable.xyz",56:"https://bsc-rpc.publicnode.com",43114:"https://avalanche-c-chain-rpc.publicnode.com",999:"https://rpc.hyperliquid.xyz/evm",2741:"https://api.mainnet.abs.xyz",4663:"https://rpc.mainnet.chain.robinhood.com"};Ui=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/;ae=new Map,dn=new Map});function Ct(e,t){if(!e||typeof e!="object"||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`${t} must be a plain object`);return e}function _t(e,t="control input"){try{P(e,t),Tr(e)}catch(r){throw new TypeError(`${t} contains secret or custody material: ${r.message}`)}return e}function ce(e,{required:t=[],optional:r=[]}={},o="object"){Ct(e,o);let n=new Set([...t,...r]),i=Object.keys(e).filter(s=>!n.has(s));if(i.length)throw new TypeError(`${o} has unknown field ${i[0]}`);for(let s of t)if(!Object.hasOwn(e,s))throw new TypeError(`${o}.${s} is required`);return e}function Rt(e,t,r=200,{lower:o=!1}={}){if(typeof e!="string"||!e.trim()||e.length>r||Yi.test(e))throw new TypeError(`${t} must be non-empty control-free text up to ${r} characters`);let n=e.trim();return o?n.toLowerCase():n}function le(e,t,r=80){let o=Rt(e,t,r,{lower:!0});if(!/^[a-z0-9][a-z0-9._:-]*$/.test(o))throw new TypeError(`${t} must be a lowercase identifier`);return o}function Le(e,t,{positive:r=!1}={}){if(!Number.isSafeInteger(e)||e<0||r&&e===0)throw new TypeError(`${t} must be a ${r?"positive":"non-negative"} safe integer`);return e}function I(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){for(let t of Object.values(e))I(t);Object.freeze(e)}return e}var Yi,$t=a(()=>{Ie();wt();Yi=/[\u0000-\u001f\u007f]/});function mn({family:e,chainId:t},r="chain"){let o=le(e,`${r}.family`,40),n;if(o==="evm"){if(typeof t=="number")n=String(Le(t,`${r}.chainId`,{positive:!0}));else if(n=Rt(t,`${r}.chainId`,40),!/^[1-9][0-9]*$/.test(n))throw new TypeError(`${r}.chainId must be a positive decimal EVM chain id`)}else n=le(t,`${r}.chainId`,80);return{family:o,chainId:n}}function Qi(e,t="chain"){return ce(e,{required:["family","chainId"]},t),I(mn(e,t))}function wn(e,t="finality rule"){_t(e,t),Ct(e,t);let r=e.rule;if(!Xi.includes(r))throw new TypeError(`${t}.rule must be confirmations, finalizedTag, or checkpoint`);let o=r==="confirmations"?"confirmations":r;ce(e,{required:["family","chainId","rule",o]},t);let n=mn(e,t);return r==="confirmations"?{...n,rule:r,confirmations:Le(e.confirmations,`${t}.confirmations`,{positive:!0})}:{...n,rule:r,[o]:le(e[o],`${t}.${o}`,80)}}function Lt(e){if(!Array.isArray(e))throw new TypeError("finality policy rules must be an array");let t=e.map((o,n)=>wn(o,`finality policy rule ${n}`)),r=new Set;for(let o of t){let n=`${o.family}\0${o.chainId}`;if(r.has(n))throw new TypeError(`duplicate finality rule for ${o.family}:${o.chainId}`);r.add(n)}return I({policyVersion:1,rules:t})}function es(e){if(ce(e,{required:["policyVersion","rules"]},"finality policy"),e.policyVersion!==1||!Array.isArray(e.rules))throw new TypeError("unsupported finality policy");return Lt(e.rules)}function hn(e,t){let r=Qi(t,"finality query"),n=es(e).rules.find(i=>i.family===r.family&&i.chainId===r.chainId);return n?I({status:"KNOWN",...r,rule:n}):I({status:M.UNKNOWN,reason:"MISSING_FINALITY_RULE",...r,rule:null})}function ts(e,t){if(e==null)return null;_t(e,"finality evidence");let r=t.rule==="confirmations"?"confirmations":t.rule;if(ce(e,{required:["status"],optional:[r]},"finality evidence"),!Zi.includes(e.status))throw new TypeError("finality evidence.status is unknown");let o={status:e.status};return e[r]!=null&&(o[r]=t.rule==="confirmations"?Le(e.confirmations,"finality evidence.confirmations",{positive:!0}):le(e[r],`finality evidence.${r}`,80)),o}function gn(e,t){if(!e||e.status===M.UNKNOWN||e.rule==null)return I({status:M.UNKNOWN,final:!1,reason:"MISSING_FINALITY_RULE"});let r=wn(e.rule??e,"resolved finality rule"),o=ts(t,r);if(o==null)return I({status:M.UNKNOWN,final:!1,reason:"MISSING_FINALITY_EVIDENCE"});if(o.status!=="LIVE")return I({status:M.UNKNOWN,final:!1,reason:`${o.status}_EVIDENCE`});let n=!1;return r.rule==="confirmations"?n=o.confirmations!=null&&o.confirmations>=r.confirmations:r.rule==="finalizedTag"?n=o.finalizedTag===r.finalizedTag:n=o.checkpoint===r.checkpoint,I({status:n?M.FINAL:M.INCLUDED,final:n,reason:n?"PINNED_RULE_SATISFIED":"PINNED_RULE_NOT_SATISFIED",rule:r})}var Xi,M,Zi,yn=a(()=>{$t();Xi=Object.freeze(["confirmations","finalizedTag","checkpoint"]),M=Object.freeze({UNKNOWN:"UNKNOWN",INCLUDED:"INCLUDED",FINAL:"FINAL"}),Zi=Object.freeze(["LIVE","STALE","UNKNOWN","UNAVAILABLE"])});function ns(e){if(e===!0||e===1||e==="1")return"SUCCESS";if(e===!1||e===0||e==="0")return"FAIL";if(typeof e!="string")return"UNKNOWN";let t=e.trim().toUpperCase();return["SUCCESS","SUCCEEDED","OK","EXECUTED"].includes(t)?"SUCCESS":["FAIL","FAILED","FAILURE","REVERTED","REJECTED"].includes(t)?"FAIL":"UNKNOWN"}function En(e){return typeof e=="string"&&["FAIL","FAILED","FAILURE","ORPHAN","ORPHANED","REVERTED"].includes(e.trim().toUpperCase())}function Bt(e){return e==null?e:Array.isArray(e)?e.map(Bt):ue(e)?Object.fromEntries(Object.keys(e).sort().map(t=>[t,Bt(e[t])])):String(e)}function os(e,t,r,o){let n=b(e.finalityEvidence,o?.finality,e.evidence),i=b(e.finalityPolicy,e.policy);try{return i==null&&ue(e.finalityRule)&&(i=Lt([{family:t,chainId:r,...e.finalityRule}])),i==null||t==null||r==null?{status:"UNKNOWN",final:!1,reason:"MISSING_FINALITY_RULE"}:gn(hn(i,{family:t,chainId:r}),n)}catch{return{status:"UNKNOWN",final:!1,reason:"MALFORMED_FINALITY_EVIDENCE"}}}function A(e,t,r){r!=null&&(e[t]=r)}function is(e){return e==null?null:String(e).trim().toLowerCase()}function Pt(...e){let t=e.map(is).filter(Boolean);return t.length<=1||t.every(r=>r===t[0])}function bn(e={}){if(!ue(e))throw new TypeError("verified receipt: input object required");let t=ct(e),r=b(t.actionReceipt,t.receipt),o=ue(r)?r:t,n=b(t.observation,t.chainObservation,t.observedReceipt),i=ue(n),s=b(t.txHash,o.txHash,o.transactionHash,n?.txHash,n?.transactionHash),d=b(t.family,o.family,o.chain?.family,n?.family,n?.chain?.family),c=b(t.chainId,o.chainId,o.chain?.chainId,n?.chainId,n?.chain?.chainId),p=!Pt(t.txHash,o.txHash,o.transactionHash,n?.txHash,n?.transactionHash)||!Pt(t.family,o.family,o.chain?.family,n?.family,n?.chain?.family)||!Pt(t.chainId,o.chainId,o.chain?.chainId,n?.chainId,n?.chain?.chainId),m=os(t,d,c,i&&!p?n:null),l=ns(b(n?.receiptStatus,n?.executionStatus,n?.status)),f=b(t.reconciliationStatus,t.reconciliation?.status,n?.reconciliationStatus),u=b(t.finalityState,t.finalityEvidence?.status,t.evidence?.status,n?.finalityState),g="UNKNOWN";En(f)||!p&&(i&&l==="FAIL"||En(u))?g="FAIL":!p&&s&&i&&l==="SUCCESS"&&["INCLUDED","FINAL"].includes(m.status)&&(g="SUCCESS");let w={verifiedReceiptVersion:rs,status:g};p&&(w.reason="REFERENCE_MISMATCH"),A(w,"txHash",s),A(w,"chain",b(t.chain,o.chain,n?.chain)),A(w,"family",d),A(w,"chainId",c),A(w,"block",b(n?.block,t.block)),A(w,"blockState",b(n?.blockState,n?.inclusionState)),w.finalityState=m.status,A(w,"confirmations",b(n?.confirmations,n?.finality?.confirmations,t.finalityEvidence?.confirmations,t.evidence?.confirmations)),A(w,"observedAt",b(n?.observedAt,t.observedAt)),A(w,"route",b(t.route,o.route)),A(w,"prepareHash",b(t.prepareHash,o.prepareHash)),A(w,"policyOutcome",b(t.policyOutcome,o.policyOutcome,o.policyChecks));let y=b(t.balanceChanges,n?.balanceChanges,n?.balances,o.balanceChanges,o.balances);return y!=null&&(w.balanceChanges=Bt(y)),A(w,"createdAt",b(t.createdAt,o.createdAt)),A(w,"submittedAt",b(t.submittedAt,o.submittedAt)),A(w,"finalizedAt",b(t.finalizedAt,n?.finalizedAt)),A(w,"timestamps",b(t.timestamps,o.timestamps,n?.timestamps)),I(w)}var rs,Iw,b,ue,xn=a(()=>{Ie();yn();$t();rs=1,Iw=Object.freeze(["SUCCESS","FAIL","UNKNOWN"]),b=(...e)=>e.find(t=>t!=null),ue=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.getPrototypeOf(e)===Object.prototype});var An={};me(An,{observeEvmReceipt:()=>Sn,verifyEvmReceipt:()=>cs});function as(e){if(e==null)return null;let t=typeof e=="number"?e:Number.parseInt(String(e),16);return Number.isSafeInteger(t)?t:null}async function Sn({txHash:e,chainId:t,rpcUrl:r},o={}){let n=String(e||"").trim().toLowerCase();if(!ss.test(n))throw new TypeError("observe receipt: txHash must be a 32-byte hash");let i=Number(t);if(!Number.isSafeInteger(i)||i<=0)throw new TypeError("observe receipt: chainId required");let s=o.transactionReceipt||fn,d=o.rpcCall||Nt,c={...o.rpcOptions||{},...r?{rpcUrl:r}:{}},p;try{p=await s({txHash:n,chainId:i},c)}catch(u){return{observation:null,reason:`RPC_UNAVAILABLE: ${u.message}`}}if(!p||p.receipt==null)return{observation:null,reason:p?.reason||"receipt pending"};let m=null,l=p.blockNumber;if(Number.isSafeInteger(l))try{let u=as(await d(i,"eth_blockNumber",[],c));u!=null&&u>=l&&(m=u-l+1)}catch{}let f={txHash:n,family:"evm",chainId:String(i),receiptStatus:p.status==="success"?"SUCCESS":p.status==="reverted"?"FAIL":"UNKNOWN",block:l==null?void 0:String(l),observedAt:new Date().toISOString(),finality:{status:"LIVE",...m==null?{}:{confirmations:m}}};return m!=null&&(f.confirmations=m),{observation:f,reason:null}}async function cs({txHash:e,chainId:t,confirmations:r=1,rpcUrl:o},n={}){let{observation:i,reason:s}=await Sn({txHash:e,chainId:t,rpcUrl:o},n),d=bn({txHash:String(e).trim().toLowerCase(),family:"evm",chainId:String(Number(t)),finalityRule:{rule:"confirmations",confirmations:r},...i?{observation:i}:{}});return{receipt:d,observed:!!i,final:d.finalityState==="FINAL",requiredConfirmations:r,reason:s}}var ss,vn=a(()=>{pn();xn();ss=/^0x[0-9a-f]{64}$/});var kn={};me(kn,{classifyReceipt:()=>Y,configDir:()=>fs,firstHourReport:()=>de,probeReceiptModule:()=>ms,probeReviewModule:()=>ps,venueMap:()=>Pe});import ls from"node:path";import{homedir as us}from"node:os";function fs(e=process.env){return e.ORACLE_CONFIG_DIR||ls.join(us(),".config","oracle")}function Pe({env:e=process.env,vault:t=null}={}){let r=t||se(),o=[];for(let[n,i]of Object.entries(we)){let s=(i.rpcEnv||[]).some(c=>String(e[c]||"").trim()),d="prepare";i.evm?s&&(d="live"):d="unavailable",o.push({key:n,chainId:i.chainId,name:i.name,family:"evm",status:d,execute:!!(r.vaultExists&&r.armed&&!r.disarmed),note:s?"rpc configured":"public read/prepare; set RPC for live reads"})}return o.push({key:"solana",chainId:null,name:"Solana",family:"sol",status:"prepare",execute:!1,note:"Jupiter quote/prepare; local sol signer"},{key:"bitcoin",chainId:null,name:"Bitcoin",family:"btc",status:"prepare",execute:!1,note:"Esplora read; local btc signer"},{key:"hyperliquid-l1",chainId:null,name:"Hyperliquid L1",family:"data",status:"live",execute:!1,note:"data/prepare only \u2014 not an EVM signer family"},{key:"polymarket",chainId:null,name:"Polymarket",family:"data",status:"live",execute:!1,note:"data/prepare only \u2014 not a signer family"}),o}function de({env:e=process.env,model:t=ln(),vault:r=se(),signerReachable:o=!1,quote:n=null,reviewAvailable:i=!1,receiptAvailable:s=!1}={}){let d=[],c=(u,g,w,y=null)=>d.push({id:u,status:g,detail:w,fix:y}),p=(()=>{let[u,g]=process.versions.node.split(".").map(Number);return u>20||u===20&&g>=19})();c("node",p?"ok":"fail",`node ${process.versions.node}`,p?null:"install node >= 20.19"),t?t.backend==="hermes"?c("model","warn","backend=hermes (opt-in attach)","oracle model --backend standalone"):c("model","ok",`${t.backend||"auto"} ${t.provider||""} ${t.model||""}`.trim()):c("model","fail","no model.json","oracle setup model"),r.vaultExists?r.disarmed?c("vault","warn","vault present, DISARMED","oracle signer (re-arm after confirm)"):c("vault",r.armed?"ok":"warn",r.armed?"present, armed":"present, not armed"):c("vault","fail","no local vault","oracle sign init");let m=e.ORACLE_SIGNER_HOST||"127.0.0.1";if(ds.has(m)?c("signer",o?"ok":"warn",o?`loopback ${m}:${e.ORACLE_SIGNER_PORT||9462}`:"loopback signer not reachable",o?null:"oracle signer"):c("signer","fail",`signer host ${m} is not loopback`,"unset ORACLE_SIGNER_HOST"),!n)c("quote","warn","quote not probed",null);else if(n.ok){let u=String(n.detail||"net quote returned");c("quote","ok",u.length>140?`${u.slice(0,140)}\u2026`:u)}else c("quote","warn",n.detail||"quote unavailable","check network / oracle data serve");c("review",i?"ok":"fail",i?"sign-time review renders decoded action, policy hits, approval deltas":"sign-time review module missing from this build",i?null:"reinstall @oracle-agent/oracle (src/control/sign-time-review.mjs)"),c("receipt",s?"ok":"fail",s?"oracle receipt verifies on-chain state (SUCCESS/FAIL/UNKNOWN, finality-pinned)":"verified-receipt observer missing from this build",s?null:"reinstall @oracle-agent/oracle (src/desk/observe-receipt.mjs)");let l=d.some(u=>u.status==="fail"),f=d.filter(u=>u.status==="ok").length;return{ok:!l,checks:d,firstRunScore:{ok:f,total:d.length,label:`${f}/${d.length} first-run hops green`},venues:Pe({env:e,vault:r})}}async function ps(){try{return typeof(await Promise.resolve().then(()=>(At(),zr))).createSignTimeReview=="function"}catch{return!1}}async function ms(){try{let e=await Promise.resolve().then(()=>(vn(),An));return typeof e.observeReceipt=="function"||typeof e.default=="function"||Object.values(e).some(t=>typeof t=="function")}catch{return!1}}var ds,Be=a(()=>{De();It();un();Fe();ds=new Set(["127.0.0.1","::1","localhost"])});var On={};me(On,{classifyReceipt:()=>Y,default:()=>gs,detailText:()=>In,firstHourReport:()=>de,probeQuote:()=>hs,probeSigner:()=>ws,symbol:()=>fe,vaultStatus:()=>se});async function ws(e=process.env){let t=e.ORACLE_SIGNER_HOST||"127.0.0.1",r=e.ORACLE_SIGNER_PORT||9462;try{return(await fetch(`http://${t}:${r}/status`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function fe(e){let t=String(e??"?").replace(/[^\w.$-]/g,"");return t.length>12?`${t.slice(0,12)}...`:t||"?"}function In(e,t=120){let r=String(e??"").replace(/[\u0000-\u001f\u007f-\u009f]/g," ").replace(/\s+/g," ").trim();return r?r.length>t?`${r.slice(0,t)}...`:r:"quote failed"}async function hs(){try{let e=await fetch("https://api.dexscreener.com/latest/dex/search?q=WETH%20USDC",{signal:AbortSignal.timeout(4e3)});if(!e.ok)return{ok:!1,detail:`dexscreener ${e.status}`};let r=(await e.json())?.pairs?.[0];return!r?.chainId||!r?.priceUsd?{ok:!1,detail:"no pair"}:{ok:!0,detail:`${fe(r.chainId)} ${fe(r.baseToken?.symbol)}/${fe(r.quoteToken?.symbol)} $${fe(r.priceUsd)}`}}catch(e){return{ok:!1,detail:In(e instanceof Error?e.message:"quote failed")}}}var gs,Tn=a(()=>{Be();It();gs={name:"venues",summary:"label every shipped venue live / prepare / unavailable",group:"read",usage:"oracle venues [--json]",async run(e){let t=e.argv.includes("--json"),r=Pe();if(t)return process.stdout.write(`${JSON.stringify({venues:r},null,2)}
5
5
  `),0;for(let o of r)process.stdout.write(`${o.status.padEnd(12)} ${o.key.padEnd(16)} ${o.name} exec=${o.execute?"local":"no"}
6
- `);return 0}}});Be();var Nn=[{n:1,title:"quote",cmd:"oracle swap quote 8453 <tokenIn> <tokenOut> <amount> --json",note:"read-only. No wallet, no keys."},{n:2,title:"prepare",cmd:"oracle swap prepare ... --taker <yourWallet>",note:"returns an UNSIGNED transaction. Oracle never holds a key."},{n:3,title:"review",cmd:"shown before any signature",note:"decoded action, route, policy pass/fail, approval deltas, prepare hash."},{n:4,title:"sign",cmd:"your wallet, or oracle signer (local encrypted vault)",note:"you type the exact digest. Nothing signs on your behalf."},{n:5,title:"receipt",cmd:"oracle receipt --hash <txid> --chain <chainId>",note:"observed chain state only. No evidence reads UNKNOWN, never success."}],qw={name:"quickstart",summary:"walk the first-run path: quote -> review -> sign locally -> verified receipt",group:"read",usage:"oracle quickstart [--json] [--check]",async run(e){let t=e.argv||[],r=t.includes("--json"),o=t.includes("--check"),n=null;if(o){let{probeSigner:a,probeQuote:d}=await Promise.resolve().then(()=>(Tn(),On)),{probeReviewModule:c,probeReceiptModule:p}=await Promise.resolve().then(()=>(Be(),kn)),[m,l,f,u]=await Promise.all([a(process.env),d(),c(),p()]);n=de({signerReachable:m,quote:l,reviewAvailable:f,receiptAvailable:u})}if(r)return process.stdout.write(`${JSON.stringify({steps:Nn,...n?{readiness:n}:{}},null,2)}
7
- `),n&&!n.ok?1:0;let i=["","Oracle first run \u2014 what actually happens to your money",""];for(let a of Nn)i.push(` ${a.n}. ${a.title}`),i.push(` ${a.cmd}`),i.push(` ${a.note}`),i.push("");if(i.push(" Oracle prepares. You sign. Oracle verifies what happened on chain."),i.push(""),n){i.push("Readiness:");for(let a of n.checks){let d=a.status==="ok"?"ok ":a.status==="warn"?"warn":"FAIL";i.push(` ${d} ${a.id.padEnd(9)} ${a.detail}${a.fix?` -> ${a.fix}`:""}`)}i.push("")}return process.stdout.write(i.join(`
6
+ `);return 0}}});Be();var Nn=[{n:1,title:"quote",cmd:"oracle swap quote 8453 <tokenIn> <tokenOut> <amount> --json",note:"read-only. No wallet, no keys."},{n:2,title:"prepare",cmd:"oracle swap prepare ... --taker <yourWallet>",note:"returns an UNSIGNED transaction. Oracle never holds a key."},{n:3,title:"review",cmd:"shown before any signature",note:"decoded action, route, policy pass/fail, approval deltas, prepare hash."},{n:4,title:"sign",cmd:"your wallet, or oracle signer (local encrypted vault)",note:"you type the exact digest. Nothing signs on your behalf."},{n:5,title:"receipt",cmd:"oracle receipt --hash <txid> --chain <chainId>",note:"observed chain state only. No evidence reads UNKNOWN, never success."}],qw={name:"quickstart",summary:"walk the first-run path: quote -> review -> sign locally -> verified receipt",group:"read",usage:"oracle quickstart [--json] [--check]",async run(e){let t=e.argv||[],r=t.includes("--json"),o=t.includes("--check"),n=null;if(o){let{probeSigner:s,probeQuote:d}=await Promise.resolve().then(()=>(Tn(),On)),{probeReviewModule:c,probeReceiptModule:p}=await Promise.resolve().then(()=>(Be(),kn)),[m,l,f,u]=await Promise.all([s(process.env),d(),c(),p()]);n=de({signerReachable:m,quote:l,reviewAvailable:f,receiptAvailable:u})}if(r)return process.stdout.write(`${JSON.stringify({steps:Nn,...n?{readiness:n}:{}},null,2)}
7
+ `),n&&!n.ok?1:0;let i=["","Oracle first run \u2014 what actually happens to your money",""];for(let s of Nn)i.push(` ${s.n}. ${s.title}`),i.push(` ${s.cmd}`),i.push(` ${s.note}`),i.push("");if(i.push(" Oracle prepares. You sign. Oracle verifies what happened on chain."),i.push(""),n){i.push("Readiness:");for(let s of n.checks){let d=s.status==="ok"?"ok ":s.status==="warn"?"warn":"FAIL";i.push(` ${d} ${s.id.padEnd(9)} ${s.detail}${s.fix?` -> ${s.fix}`:""}`)}i.push("")}return process.stdout.write(i.join(`
8
8
  `)),n&&!n.ok?1:0}};export{qw as default};
@@ -1,5 +1,5 @@
1
1
  var ze=(e,n,t)=>()=>{if(t)throw t[0];try{return e&&(n=e(e=0)),n}catch(r){throw t=[r],r}};import T from"node:fs";import We from"node:os";import b from"node:path";import{fileURLToPath as Ue}from"node:url";function oe(){return process.env.ORACLE_FAKE_HOME||We.homedir()}function Je(){return process.env.ORACLE_PUBLIC_DESKTOP==="1"}function N(){return Je()?process.env.ORACLE_CONFIG_DIR||b.join(oe(),".config","oracle"):b.join(oe(),".config","oracle")}function Ke(){return b.join(N(),"desk.json")}function Ge(){return b.join(N(),"env")}function E({force:e=!1}={}){if(E._done&&!e)return E._result||null;E._done=!0;let n={},t=(i,o)=>{if(o==null)return;let s=String(o).trim();s&&(process.env[i]!=null&&String(process.env[i]).trim()!==""||(process.env[i]=s,n[i]=s))};try{let i=Ge();if(T.existsSync(i))for(let o of T.readFileSync(i,"utf8").split(/\r?\n/)){let s=o.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*?)\s*$/);if(!s||s[2].startsWith("#"))continue;let c=s[2];(c.startsWith('"')&&c.endsWith('"')||c.startsWith("'")&&c.endsWith("'"))&&(c=c.slice(1,-1)),t(s[1],c)}}catch{}try{let i=Ke();if(T.existsSync(i)){let o=JSON.parse(T.readFileSync(i,"utf8"));o&&typeof o=="object"&&(t("ORACLE_DESK_URL",o.deskUrl||o.dataUrl||o.url),t("ORACLE_DATA_URL",o.dataUrl||o.deskUrl||o.url),t("ORACLE_API_URL",o.apiUrl||o.dataUrl||o.deskUrl),t("ORACLE_PUBLIC_URL",o.publicUrl||o.deskUrl||o.dataUrl),t("ORACLE_EXEC_URL",o.execUrl),t("MAD_DESK_URL",o.deskUrl||o.dataUrl))}}catch{}let r=process.env.ORACLE_DESK_URL||process.env.ORACLE_DATA_URL||"";return r&&(t("ORACLE_DESK_URL",r),t("ORACLE_DATA_URL",r),t("ORACLE_API_URL",r),t("ORACLE_PUBLIC_URL",r),t("MAD_DESK_URL",r)),E._result=Object.keys(n).length?n:null,E._result}var Ve,Ar,ie=ze(()=>{Ve=b.dirname(Ue(import.meta.url)),Ar=b.resolve(Ve,"../..");try{E()}catch{}});ie();import m from"node:fs";import ne from"node:path";import{createCipheriv as Ye,createDecipheriv as Xe,randomBytes as _,scryptSync as Ze}from"node:crypto";import a from"node:fs";import w from"node:path";var se="ORACLE-LOCAL-VAULT",ae=1,A=Object.freeze({N:1<<17,r:8,p:1}),Qe=256*1024*1024,et=16*1024;function C(e,n,t,{max:r=n}={}){if(typeof e!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e))throw new Error(`local-vault: invalid ${t} encoding`);let i=Buffer.from(e,"base64");if(i.toString("base64")!==e||i.length<n||i.length>r)throw new Error(`local-vault: invalid ${t} length`);return i}function ce(e,n,t=A){let r=String(e??"");if(r.length<12)throw new Error("local-vault: passphrase must be at least 12 characters");return Ze(r,n,32,{...t,maxmem:Qe})}function le(e,n,t={}){let r=Buffer.isBuffer(e)?Buffer.from(e):Buffer.from(String(e));if(!r.length)throw new Error("local-vault: refusing empty key material");let i=_(32),o=_(12),s={magic:se,version:ae,kdf:{name:"scrypt",...A,salt:i.toString("base64")},cipher:{name:"aes-256-gcm",iv:o.toString("base64")},meta:{address:t.address?String(t.address).toLowerCase():null,addresses:t.addresses||void 0,kind:t.kind||"evm",createdAt:new Date().toISOString()}},c=ce(n,i);try{let u=Ye("aes-256-gcm",c,o);u.setAAD(Buffer.from(JSON.stringify(s)));let l=Buffer.concat([u.update(r),u.final()]);return{...s,ciphertext:l.toString("base64"),tag:u.getAuthTag().toString("base64")}}finally{c.fill(0),r.fill(0)}}function F(e,n){if(e?.magic!==se||e?.version!==ae)throw new Error("local-vault: unsupported vault file");if(e?.kdf?.name!=="scrypt"||e?.cipher?.name!=="aes-256-gcm")throw new Error("local-vault: unsupported cryptography");if(e.kdf.N!==A.N||e.kdf.r!==A.r||e.kdf.p!==A.p)throw new Error("local-vault: unsupported KDF parameters");if(Object.keys(e.kdf).sort().join(",")!=="N,name,p,r,salt"||Object.keys(e.cipher).sort().join(",")!=="iv,name")throw new Error("local-vault: unexpected cryptography field");if(!e.meta||Object.keys(e.meta).some(d=>!["address","addresses","kind","createdAt"].includes(d))||String(e.meta.kind||"").length>16||String(e.meta.address||"").length>128||JSON.stringify(e.meta.addresses||{}).length>1024||!Number.isFinite(Date.parse(e.meta.createdAt)))throw new Error("local-vault: invalid metadata");let t=["magic","version","kdf","cipher","meta","ciphertext","tag"];if(Object.keys(e).some(d=>!t.includes(d)))throw new Error("local-vault: unexpected vault field");let r=C(e.kdf.salt,32,"salt"),i=C(e.cipher.iv,12,"iv"),o=C(e.tag,16,"tag"),s=C(e.ciphertext,1,"ciphertext",{max:et}),{ciphertext:c,tag:u,...l}=e,f=ce(n,r);try{let d=Xe("aes-256-gcm",f,i);return d.setAAD(Buffer.from(JSON.stringify(l))),d.setAuthTag(o),Buffer.concat([d.update(s),d.final()])}catch{throw new Error("local-vault: wrong passphrase or tampered vault")}finally{f.fill(0)}}function tt(e){if(!e.isFile())throw new Error("local-vault: secret source must be a regular file");if(e.uid!==process.getuid?.())throw new Error("local-vault: secret source must be owned by this user");if(e.nlink!==1)throw new Error("local-vault: refusing hard-linked secret source");if((e.mode&63)!==0)throw new Error("local-vault: secret source must be owner-only (0600)")}function ue(e){let n=w.dirname(e),t=a.lstatSync(n);if(!t.isDirectory()||t.isSymbolicLink())throw new Error("local-vault: unsafe destination directory");if(t.uid!==process.getuid?.())throw new Error("local-vault: destination directory must be owned by this user");if((t.mode&63)!==0)throw new Error("local-vault: destination directory must be owner-only (0700)");try{let r=a.lstatSync(e);if(r.isSymbolicLink())throw new Error("local-vault: refusing symlink destination");if(!r.isFile()||r.uid!==process.getuid?.()||r.nlink!==1)throw new Error("local-vault: unsafe destination file");if(r.dev!==t.dev)throw new Error("local-vault: destination device mismatch")}catch(r){if(r.code!=="ENOENT")throw r}}function h(e){let n;try{n=a.openSync(e,a.constants.O_RDONLY|a.constants.O_NOFOLLOW)}catch(t){throw t.code==="ELOOP"?new Error("local-vault: refusing symlink"):t}try{let t=a.fstatSync(n);if(tt(t),t.size>1024*1024)throw new Error("local-vault: secret source changed or is too large");let r=a.lstatSync(e);if(r.isSymbolicLink()||r.dev!==t.dev||r.ino!==t.ino)throw new Error("local-vault: secret source changed or is too large");return a.readFileSync(n,"utf8").replace(/[\r\n]+$/,"")}finally{a.closeSync(n)}}function q(e){return JSON.parse(h(e))}function de(e,n){a.mkdirSync(w.dirname(e),{recursive:!0,mode:448}),ue(e);let t=w.join(w.dirname(e),`.${w.basename(e)}.${process.pid}.${_(6).toString("hex")}.tmp`),r;try{r=a.openSync(t,a.constants.O_CREAT|a.constants.O_EXCL|a.constants.O_WRONLY|a.constants.O_NOFOLLOW,384),a.writeFileSync(r,JSON.stringify(n,null,2)+`
2
- `),a.fsyncSync(r),a.closeSync(r),r=void 0;let i=a.openSync(t,a.constants.O_RDONLY|a.constants.O_NOFOLLOW),o;try{o=a.fstatSync(i)}finally{a.closeSync(i)}let s=a.lstatSync(w.dirname(e));if(o.nlink!==1||o.dev!==s.dev||o.uid!==process.getuid?.())throw new Error("local-vault: unsafe temporary file");a.renameSync(t,e),a.chmodSync(e,384);let c=a.openSync(w.dirname(e),"r");try{a.fsyncSync(c)}finally{a.closeSync(c)}}catch(i){if(r!==void 0)try{a.closeSync(r)}catch{}try{a.unlinkSync(t)}catch{}throw i}return e}function y(e,n){a.mkdirSync(w.dirname(e),{recursive:!0,mode:448}),ue(e);let t=w.join(w.dirname(e),`.${w.basename(e)}.${process.pid}.${_(6).toString("hex")}.tmp`);try{let r=a.openSync(t,a.constants.O_CREAT|a.constants.O_EXCL|a.constants.O_WRONLY|a.constants.O_NOFOLLOW,384);try{a.writeFileSync(r,String(n)),a.fsyncSync(r)}finally{a.closeSync(r)}a.renameSync(t,e),a.chmodSync(e,384);let i=a.openSync(w.dirname(e),"r");try{a.fsyncSync(i)}finally{a.closeSync(i)}}catch(r){try{a.unlinkSync(t)}catch{}throw r}}import p from"node:path";import lr from"node:os";import{createHash as ur,randomBytes as au}from"node:crypto";import{Interface as re,keccak256 as lu}from"ethers";import{Transaction as du}from"@scure/btc-signer";import{ed25519 as pu}from"@noble/curves/ed25519.js";import{base58 as Gi}from"@scure/base";import{Interface as ge}from"ethers";import{Interface as st,MaxUint256 as cn,isAddress as ln,keccak256 as un,toUtf8Bytes as dn}from"ethers";import{Interface as ot,isAddress as Hr}from"ethers";import{isAddress as Br}from"ethers";var Vr=new ot(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as it,isAddress as Gr}from"ethers";var Qr=new it(["function approve(address spender,uint256 amount) returns (bool)"]),en=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var gn=new st(["function approve(address spender,uint256 amount) returns (bool)"]);var En=300*1e3,bn=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})();import{Address as kn,NETWORK as In,OutScript as On,RawTx as Tn,SigHash as Nn,TEST_NETWORK as Cn,Transaction as _n}from"@scure/btc-signer";import{createHash as at}from"node:crypto";import{base58 as Pn}from"@scure/base";import{getCompiledTransactionMessageDecoder as Dn}from"@solana/transaction-messages";var fe=e=>at("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Fn=new Map([[fe("route"),{name:"route",prefixBytes:0}],[fe("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);var Vn=64*1024;var no=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"}),oo=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 ao="0x"+"00".repeat(32);var lt=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),po=Object.freeze(lt.map(e=>e[0]));import{TypedDataEncoder as Wo,getAddress as Uo}from"ethers";import{TypedDataEncoder as yo,getAddress as Eo,isAddress as bo}from"ethers";var dt=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),ft=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 _o,getAddress as Ro,isAddress as $o}from"ethers";var Ao=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});var pt=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),Mo=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var mt=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"}]}),jo=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var Ko=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var bt=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var di=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 xt=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"}}),fi=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),pi=new ge(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),mi=new ge(["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"]),wi=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 St=Object.freeze([...bt]),hi=Object.freeze({...xt});import{ed25519 as Ri}from"@noble/curves/ed25519.js";import{base58 as Li}from"@scure/base";import{RawTx as Bi,SigHash as Di,Transaction as Fi}from"@scure/btc-signer";import{Transaction as Mi,keccak256 as ji,verifyTypedData as Hi}from"ethers";import{encode as Ei}from"@msgpack/msgpack";import{keccak256 as xi,verifyTypedData as Si}from"ethers";var Ai=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),vi=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{wordlists as fs}from"ethers";import{wordlists as cs}from"ethers";var Ee=64*1024;var ms=32*1024;var Ot=["schemaVersion","buildVersion","recordType","execution","custody"],gs=[...Ot,"recordHash"];var ys=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 Tt=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Te=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"]),As=new Set(Te);var Lt=64*1024*1024;var Cs=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),_s=Object.freeze(["read","simulate"]);var Rs=1440*60;var js=Object.freeze(["privkey","wif","xprv","seed"]);var Hs=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}]),zs=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);var K=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Js=Object.freeze(Object.fromEntries(K.map((e,n)=>[e,Object.freeze(n+1<K.length?[K[n+1]]:[])])));var Pt=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 Dt=Object.freeze(["owner","operator","agent","viewer"]),Ft=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry"]),qt=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),_a=Object.freeze(["owner"]),Ra=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"}),$a=new Set(Dt),La=new Set(Ft),Pa=new Set(Object.values(qt));var Mt=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"]),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"]),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"]),viewer:Object.freeze(["tenant:read","config:read","grant:read","workflow:read","trade:read","receipt:read","audit:read","telemetry:read"])}),Ba=Object.freeze(Object.fromEntries(Object.entries(Mt).map(([e,n])=>[e,Object.freeze([...n])])));var jt=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),Ht=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),zt=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var Ma=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),ja=new Set(jt),Ha=new Set(Ht),za=new Set(zt);var Wa=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 Ua=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 Xa=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var nc=32*1024*1024;var ic=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{createHmac as Ut,randomBytes as Ec,timingSafeEqual as Vt}from"node:crypto";import Jt from"node:fs";import x from"node:path";import{homedir as G}from"node:os";import{join as Y}from"node:path";var Ne=process.env.ORACLE_PUBLIC_DESKTOP==="1",Wt=Ne?process.env.ORACLE_CONFIG_DIR||Y(G(),".config","oracle"):Y(G(),".config","oracle"),lc=Ne?Wt:Y(G(),".config","mad-desk");var mc="0".repeat(64),wc=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"});function L(e){return e==null?"null":typeof e!="object"?JSON.stringify(e):Array.isArray(e)?"["+e.map(L).join(",")+"]":"{"+Object.keys(e).sort().map(t=>JSON.stringify(t)+":"+L(e[t])).join(",")+"}"}var hc=Promise.resolve();function Kt(e,n){if(!e)throw new Error("ledger: separate freshness anchor required");let t=s=>{try{return Jt.realpathSync(s)}catch{return x.resolve(s)}},r=t(x.dirname(x.resolve(e))),i=t(x.dirname(x.resolve(n))),o=(s,c)=>c===s||c.startsWith(s+x.sep);if(o(r,i)||o(i,r))throw new Error("ledger: separate freshness anchor required")}var X=(e,n)=>Ut("sha256",n).update(L(e)).digest("hex"),Gt=(e,n)=>{let t=Buffer.from(String(e)),r=Buffer.from(String(n));return t.length===r.length&&Vt(t,r)};function Yt(e,n,{sequence:t}={}){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("policy: object required");let r=t===void 0?e:{...e,policySequence:Number(t)};return{policy:r,integrity:{algorithm:"hmac-sha256-canonical-json-v1",mac:X(r,n)}}}function Ce(e,n){if(!e)throw new Error("policy: sequence anchor required");let t;try{t=h(e)}catch{return{sequence:0,present:!1}}let r;try{r=JSON.parse(t)}catch{throw new Error("policy: sequence anchor is unreadable")}if(!Gt(r?.integrity?.mac,X(r?.marker,n)))throw new Error("policy: sequence anchor integrity failed");return{sequence:Number(r?.marker?.policySequence||0),policyMac:r?.marker?.policyMac??null,present:!0,ledgerInitialized:r?.marker?.ledgerInitialized===!0}}function Xt(e,n,t,r=null,{ledgerInitialized:i}={}){if(r==null||!String(r))throw new Error("policy: sequence anchor must bind the sealed policy MAC");let o=i===!0;if(i===void 0)try{let c=Ce(e,t);o=c.present&&c.ledgerInitialized===!0}catch{o=!1}let s={policySequence:Number(n),policyMac:String(r)};o&&(s.ledgerInitialized=!0),y(e,JSON.stringify({marker:s,integrity:{algorithm:"hmac-sha256-canonical-json-v1",mac:X(s,t)}})+`
2
+ `),a.fsyncSync(r),a.closeSync(r),r=void 0;let i=a.openSync(t,a.constants.O_RDONLY|a.constants.O_NOFOLLOW),o;try{o=a.fstatSync(i)}finally{a.closeSync(i)}let s=a.lstatSync(w.dirname(e));if(o.nlink!==1||o.dev!==s.dev||o.uid!==process.getuid?.())throw new Error("local-vault: unsafe temporary file");a.renameSync(t,e),a.chmodSync(e,384);let c=a.openSync(w.dirname(e),"r");try{a.fsyncSync(c)}finally{a.closeSync(c)}}catch(i){if(r!==void 0)try{a.closeSync(r)}catch{}try{a.unlinkSync(t)}catch{}throw i}return e}function y(e,n){a.mkdirSync(w.dirname(e),{recursive:!0,mode:448}),ue(e);let t=w.join(w.dirname(e),`.${w.basename(e)}.${process.pid}.${_(6).toString("hex")}.tmp`);try{let r=a.openSync(t,a.constants.O_CREAT|a.constants.O_EXCL|a.constants.O_WRONLY|a.constants.O_NOFOLLOW,384);try{a.writeFileSync(r,String(n)),a.fsyncSync(r)}finally{a.closeSync(r)}a.renameSync(t,e),a.chmodSync(e,384);let i=a.openSync(w.dirname(e),"r");try{a.fsyncSync(i)}finally{a.closeSync(i)}}catch(r){try{a.unlinkSync(t)}catch{}throw r}}import p from"node:path";import lr from"node:os";import{createHash as ur,randomBytes as au}from"node:crypto";import{Interface as re,keccak256 as lu}from"ethers";import{Transaction as du}from"@scure/btc-signer";import{ed25519 as pu}from"@noble/curves/ed25519.js";import{base58 as Gi}from"@scure/base";import{Interface as ge}from"ethers";import{Interface as st,MaxUint256 as cn,isAddress as ln,keccak256 as un,toUtf8Bytes as dn}from"ethers";import{Interface as ot,isAddress as Hr}from"ethers";import{isAddress as Br}from"ethers";var Vr=new ot(["function approve(address spender,uint256 amount) returns (bool)"]);import{Interface as it,isAddress as Gr}from"ethers";var Qr=new it(["function approve(address spender,uint256 amount) returns (bool)"]),en=Object.freeze({42161:"0x1c3fa76e6e1088bce750f23a5bfcffa1efef6a41",43114:"0x8f550e53dfe96c055d5bdb267c21f268fcaf63b2"});var gn=new st(["function approve(address spender,uint256 amount) returns (bool)"]);var En=300*1e3,bn=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})();import{Address as kn,NETWORK as In,OutScript as On,RawTx as Tn,SigHash as Nn,TEST_NETWORK as Cn,Transaction as _n}from"@scure/btc-signer";import{createHash as at}from"node:crypto";import{base58 as Pn}from"@scure/base";import{getCompiledTransactionMessageDecoder as Dn}from"@solana/transaction-messages";var fe=e=>at("sha256").update(`global:${e}`).digest().subarray(0,8).toString("hex"),Fn=new Map([[fe("route"),{name:"route",prefixBytes:0}],[fe("shared_accounts_route"),{name:"shared_accounts_route",prefixBytes:1}]]);var Vn=64*1024;var no=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"}),oo=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 ao="0x"+"00".repeat(32);var lt=Object.freeze([["salt","uint256"],["maker","address"],["signer","address"],["tokenId","uint256"],["makerAmount","uint256"],["takerAmount","uint256"],["side","uint8"],["signatureType","uint8"],["timestamp","uint256"],["metadata","bytes32"],["builder","bytes32"]]),po=Object.freeze(lt.map(e=>e[0]));import{TypedDataEncoder as Wo,getAddress as Uo}from"ethers";import{TypedDataEncoder as yo,getAddress as Eo,isAddress as bo}from"ethers";var dt=Object.freeze({1:"0x111111125421cA6dc452d289314280a0f8842A65",8453:"0x111111125421cA6dc452d289314280a0f8842A65",42161:"0x111111125421cA6dc452d289314280a0f8842A65",10:"0x111111125421cA6dc452d289314280a0f8842A65",137:"0x111111125421cA6dc452d289314280a0f8842A65",56:"0x111111125421cA6dc452d289314280a0f8842A65"}),ft=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 _o,getAddress as Ro,isAddress as $o}from"ethers";var Ao=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"});var pt=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),Mo=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"});var mt=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"}]}),jo=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]});var Ko=Object.freeze(["https://limit-orders.1inch.io","https://api.1inch.dev/orderbook"]);var bt=new Set(["evm","evm-swap","evm-bridge","evm-nft","evm-order","btc","sol","hl","poly","lighter"]);var di=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 xt=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"}}),fi=Object.freeze({"0x161ac21f":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-public"},"0xc2f6663a":{provider:"opensea-nft",action:"mint",layout:"seadrop-mint-allowlist"}}),pi=new ge(["function buySpecificNFT(uint256 tokenId,uint256 maxCost) payable","function sellNFT(uint256 tokenId,uint256 minPayout) payable"]),mi=new ge(["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"]),wi=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 St=Object.freeze([...bt]),hi=Object.freeze({...xt});import{ed25519 as Ri}from"@noble/curves/ed25519.js";import{base58 as Li}from"@scure/base";import{RawTx as Bi,SigHash as Di,Transaction as Fi}from"@scure/btc-signer";import{Transaction as Mi,keccak256 as ji,verifyTypedData as Hi}from"ethers";import{encode as Ei}from"@msgpack/msgpack";import{keccak256 as xi,verifyTypedData as Si}from"ethers";var Ai=Object.freeze({name:"Exchange",version:"1",chainId:1337,verifyingContract:"0x0000000000000000000000000000000000000000"}),vi=Object.freeze({Agent:[{name:"source",type:"string"},{name:"connectionId",type:"bytes32"}]});import{wordlists as fs}from"ethers";import{wordlists as cs}from"ethers";var Ee=64*1024;var ms=32*1024;var Ot=["schemaVersion","buildVersion","recordType","execution","custody"],gs=[...Ot,"recordHash"];var ys=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 Tt=Object.freeze(["draft","checked","approval","signed","submitted","finalized","reorged","orphaned","compensating","compensated","failed","cancelled"]),Te=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"]),As=new Set(Te);var Lt=64*1024*1024;var Cs=Object.freeze(["chainId","agentAddress","accountAddress","actions","targets","maxValueWei","maxGasWei","maxSlippageBps","expiresAt","nonce","revocationKey"]),_s=Object.freeze(["read","simulate"]);var Rs=1440*60;var js=Object.freeze(["privkey","wif","xprv","seed"]);var Hs=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}]),zs=Object.freeze(["grantid","id","hash","sha256","sha256hex","checksum","txhash","transactionhash","blockhash","digest","userophash","commithash","prevhash","intenthash","canonicalhash","payloadhash","requestid"]);var K=Object.freeze(["intent","quote_comparison","simulation","prepared","approval","signed","broadcast","settlement","balance_delta","position"]),Js=Object.freeze(Object.fromEntries(K.map((e,n)=>[e,Object.freeze(n+1<K.length?[K[n+1]]:[])])));var Pt=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 Dt=Object.freeze(["owner","operator","agent","viewer"]),Ft=Object.freeze(["tenant","config","policy","grant","workflow","trade","receipt","audit","telemetry","context","lifecycle"]),qt=Object.freeze({read:"read",create:"create",update:"update",delete:"delete",manage:"manage",prepare:"prepare",cancel:"cancel",export:"export",approve:"approve"}),_a=Object.freeze(["owner"]),Ra=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"}),$a=new Set(Dt),La=new Set(Ft),Pa=new Set(Object.values(qt));var Mt=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"])}),Ba=Object.freeze(Object.fromEntries(Object.entries(Mt).map(([e,n])=>[e,Object.freeze([...n])])));var jt=Object.freeze(["succeeded","denied","invalid","failed","cancelled","timed_out","unavailable","skipped"]),Ht=Object.freeze(["workflow","task","intent","plan","run","event","eval"]),zt=Object.freeze(["taskId","intentId","planId","runId","eventId"]);var Ma=Object.freeze({maxAttributes:24,maxKeyLength:48,maxStringLength:256,maxArrayLength:8}),ja=new Set(jt),Ha=new Set(Ht),za=new Set(zt);var Wa=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 Ua=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 Xa=Object.freeze({"workflow.cancelled":"cancelled","workflow.failed":"failed"});var nc=32*1024*1024;var ic=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{createHmac as Ut,randomBytes as Ec,timingSafeEqual as Vt}from"node:crypto";import Jt from"node:fs";import x from"node:path";import{homedir as G}from"node:os";import{join as Y}from"node:path";var Ne=process.env.ORACLE_PUBLIC_DESKTOP==="1",Wt=Ne?process.env.ORACLE_CONFIG_DIR||Y(G(),".config","oracle"):Y(G(),".config","oracle"),lc=Ne?Wt:Y(G(),".config","mad-desk");var mc="0".repeat(64),wc=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"});function L(e){return e==null?"null":typeof e!="object"?JSON.stringify(e):Array.isArray(e)?"["+e.map(L).join(",")+"]":"{"+Object.keys(e).sort().map(t=>JSON.stringify(t)+":"+L(e[t])).join(",")+"}"}var hc=Promise.resolve();function Kt(e,n){if(!e)throw new Error("ledger: separate freshness anchor required");let t=s=>{try{return Jt.realpathSync(s)}catch{return x.resolve(s)}},r=t(x.dirname(x.resolve(e))),i=t(x.dirname(x.resolve(n))),o=(s,c)=>c===s||c.startsWith(s+x.sep);if(o(r,i)||o(i,r))throw new Error("ledger: separate freshness anchor required")}var X=(e,n)=>Ut("sha256",n).update(L(e)).digest("hex"),Gt=(e,n)=>{let t=Buffer.from(String(e)),r=Buffer.from(String(n));return t.length===r.length&&Vt(t,r)};function Yt(e,n,{sequence:t}={}){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("policy: object required");let r=t===void 0?e:{...e,policySequence:Number(t)};return{policy:r,integrity:{algorithm:"hmac-sha256-canonical-json-v1",mac:X(r,n)}}}function Ce(e,n){if(!e)throw new Error("policy: sequence anchor required");let t;try{t=h(e)}catch{return{sequence:0,present:!1}}let r;try{r=JSON.parse(t)}catch{throw new Error("policy: sequence anchor is unreadable")}if(!Gt(r?.integrity?.mac,X(r?.marker,n)))throw new Error("policy: sequence anchor integrity failed");return{sequence:Number(r?.marker?.policySequence||0),policyMac:r?.marker?.policyMac??null,present:!0,ledgerInitialized:r?.marker?.ledgerInitialized===!0}}function Xt(e,n,t,r=null,{ledgerInitialized:i}={}){if(r==null||!String(r))throw new Error("policy: sequence anchor must bind the sealed policy MAC");let o=i===!0;if(i===void 0)try{let c=Ce(e,t);o=c.present&&c.ledgerInitialized===!0}catch{o=!1}let s={policySequence:Number(n),policyMac:String(r)};o&&(s.ledgerInitialized=!0),y(e,JSON.stringify({marker:s,integrity:{algorithm:"hmac-sha256-canonical-json-v1",mac:X(s,t)}})+`
3
3
  `)}function _e(e,n,t,{sequenceAnchorFile:r}={}){let i=h(n);if(!r)throw new Error("policy: sequence anchor required");let o=Ce(r,i);Kt(r,e);let s=Number(o.sequence||0)+1,c=Yt(t,i,{sequence:s});Xt(r,s,i,c?.integrity?.mac??null),y(e,JSON.stringify(c,null,2)+`
4
4
  `)}import{readFileSync as Cc,readdirSync as _c,existsSync as Zt}from"node:fs";import{dirname as Qt,join as k}from"node:path";import{fileURLToPath as er}from"node:url";var I=Qt(er(import.meta.url));function tr(){let e=[k(I,"descriptors"),k(I,"clear-sign","descriptors"),k(I,"..","clear-sign","descriptors"),k(I,"..","..","clear-sign","descriptors"),k(I,"..","..","..","clear-sign","descriptors")];for(let n of e)if(Zt(n))return n;return e[0]}var Pc=tr();var Bc=(1n<<256n)-1n;import{Wallet as Z}from"ethers";import{base58 as Q}from"@scure/base";import{ed25519 as Pe}from"@noble/curves/ed25519.js";import{NETWORK as Be,TEST_NETWORK as De,WIF as rr,p2wpkh as Re}from"@scure/btc-signer";import{pubECDSA as nr}from"@scure/btc-signer/utils.js";var P=e=>{let n=String(e||"").trim().replace(/^0x/i,"");return!/^[0-9a-fA-F]+$/.test(n)||n.length%2?null:Buffer.from(n,"hex")},or=e=>{let n=String(e||"").trim();if(!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(n))return null;let t=Buffer.from(n,"base64");return t.toString("base64")===n?t:null},$e=e=>{let n=String(e||"").trim();try{let t=Buffer.from(Q.decode(n));return Q.encode(t)===n?t:null}catch{return null}},ee=e=>{if(!(e instanceof Uint8Array))throw new Error("sol: key bytes required");if(e.length!==32&&e.length!==64)throw new Error("sol: expected 32-byte private key material");let n=Buffer.from(e.subarray(0,32));if(e.length===64){let t=Buffer.from(e.subarray(32,64)),r=Buffer.from(Pe.getPublicKey(n));if(!t.equals(r))throw new Error("sol: supplied public key does not match seed")}return n},Le=e=>!(e instanceof Uint8Array)||e.length!==32&&e.length!==64?null:Buffer.from(e.subarray(0,32)),g=(e,n)=>{if(n==="sol")return ee(e);if(!(e instanceof Uint8Array))throw new Error(`${n}: key bytes required`);if(e.length===32)return Buffer.from(e);if(e.length===64)return Buffer.from(e.subarray(0,32));throw new Error(`${n}: expected 32-byte private key material`)},ir=(e,n)=>{if(!Array.isArray(e))throw new Error(`${n}: expected byte array`);let t=Buffer.alloc(e.length);for(let r=0;r<e.length;r++){let i=e[r];if(typeof i!="number"||!Number.isSafeInteger(i)||i<0||i>255)throw new Error(`${n}: expected integer bytes in 0..255`);t[r]=i}return g(t,n)};function S(e,n){let t=String(n||"").trim();if(e==="evm")return new Z(t).privateKey;if(e==="btc")for(let o of[Be,De])try{return Buffer.from(rr(o).decode(t))}catch{}if(e==="sol"){if(/^hex:/i.test(t)){let l=P(t.slice(4));if(!l)throw new Error("sol: invalid explicit hex private key");return g(l,"sol")}if(/^base58:/i.test(t)){let l=$e(t.slice(7));if(!Le(l))throw new Error("sol: invalid explicit base58 private key");return ee(l)}if(/^0x/i.test(t)){let l=P(t);if(!l)throw new Error("sol: invalid explicit hex private key");return g(l,"sol")}let o=P(t),s=o&&(o.length===32||o.length===64)?g(o,"sol"):null,c=$e(t),u=Le(c);if(s&&u&&!s.equals(u))throw new Error("sol: ambiguous private key format; prefix with hex: or base58:");if(u)return ee(c);if(o)return g(o,"sol")}let r=P(t);if(r)return e==="evm"?new Z(`0x${r.toString("hex")}`).privateKey:g(r,e);let i=or(t);if(i)return g(i,e);if(t.startsWith("[")||t.startsWith("{")){let o=JSON.parse(t);if(Array.isArray(o))return ir(o,e);let s=o.privateKey??o.secretKey??o.key;if(s)return S(e,Array.isArray(s)?JSON.stringify(s):String(s))}throw new Error(`${e}: unsupported private key format`)}function O(e,n){if(e==="evm"){let t=new Z(String(n));return{kind:e,secret:t.privateKey,addresses:[t.address.toLowerCase()]}}if(e==="btc"){let t=g(n,"btc"),r=nr(t);return{kind:e,secret:t.toString("hex"),addresses:[Re(r,Be).address,Re(r,De).address]}}if(e==="sol"){let t=g(n,"sol");return{kind:e,secret:t.toString("hex"),addresses:[Q.encode(Pe.getPublicKey(t))]}}throw new Error(`unsupported signer kind ${e}`)}function te(e,n={}){let t=Buffer.isBuffer(e)?e.toString("utf8"):String(e||"");if(String(n.kind||"")!=="multichain")return{[n.kind||"evm"]:O(n.kind||"evm",S(n.kind||"evm",t))};let r=JSON.parse(t),i={};for(let o of["evm","btc","sol"])r[o]&&(i[o]=O(o,S(o,r[o])));if(r.cex!==void 0){if(!r.cex||typeof r.cex!="object"||Array.isArray(r.cex))throw new Error("local-vault: cex credential records invalid");i.cex={};for(let[o,s]of Object.entries(r.cex)){if(!/^[A-Za-z0-9._-]{1,64}$/.test(o)||!s||typeof s!="object")throw new Error("local-vault: cex credential record invalid");if(!/^(?:binance|bybit|okx|coinbase)$/.test(s.venue)||!/^[A-Za-z0-9._-]{1,64}$/.test(s.accountId||""))throw new Error("local-vault: cex credential binding invalid");let c=(l,f=!0)=>{let d=s[l];if(!(!f&&d===void 0)){if(!Array.isArray(d)||d.length<4||d.some(D=>!Number.isInteger(D)||D<0||D>255))throw new Error("local-vault: cex credential bytes invalid");return Buffer.from(d)}},u=s.apiSecretEncoding;if(u!==(s.venue==="coinbase"?"base64":"raw"))throw new Error("local-vault: explicit cex secret encoding refused");i.cex[o]=Object.freeze({venue:s.venue,accountId:s.accountId,apiKeyBytes:c("apiKeyBytes"),apiSecretBytes:c("apiSecretBytes"),apiSecretEncoding:u,passphraseBytes:c("passphraseBytes",!1)})}if(!Object.keys(i.cex).length)throw new Error("local-vault: empty cex credential records refused");Object.freeze(i.cex)}if(!Object.keys(i).length)throw new Error("local-vault: multichain vault is empty");return i}function Fe(e){let n={};for(let t of["evm","btc","sol"])e[t]&&(n[t]=t==="evm"?e[t].secret:`0x${e[t].secret}`);return e.cex&&(n.cex=Object.fromEntries(Object.entries(e.cex).map(([t,r])=>[t,{venue:r.venue,accountId:r.accountId,apiKeyBytes:[...r.apiKeyBytes],apiSecretBytes:[...r.apiSecretBytes],apiSecretEncoding:r.apiSecretEncoding,...r.passphraseBytes?{passphraseBytes:[...r.passphraseBytes]}:{}}]))),Buffer.from(JSON.stringify(n))}function qe(e){let n={};for(let[t,r]of Object.entries(e))r?.addresses&&(n[t]=r.addresses);return{kind:"multichain",address:null,addresses:n}}var Xc=Object.freeze(["spot-limit-create","spot-limit-cancel","spot-order-status"]),Zc=Object.freeze(["binance","bybit","okx","coinbase"]),Qc=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"}),el=Object.freeze({binance:"/api/v3",bybit:"/v5/order",okx:"/api/v5/trade",coinbase:"/orders"}),tl=Object.freeze(["version","surface","kind","venue","credentialRef","symbol","base","quote","side","baseSize","limitPrice","maxQuoteNotional","timeInForce","clientOrderId","expiresAtMs","venueOrderId","nonce","grantId","artifactHash"]),rl=Object.freeze(["market-create","withdraw","transfer","subaccount","leverage","futures","margin","convert","api-key"]),nl=Object.freeze(["url","host","path","method","headers","signature","apiKey","apiSecret","passphrase","privateKey","redirect","proxy"]),ol=Object.freeze(["ccxt","binance-api-node","node-binance-api","coinbase-advanced-node","@okx-dex/okx-dex-sdk","bybit-api"]),il=Object.freeze({perOrderQuote:"sealed-owner-policy",dailyGrossQuote:"sealed-owner-policy",scope:Object.freeze(["per-order","UTC-day","account","venue","quote"]),envelopeFieldIsNotCeiling:!0}),sl=Object.freeze({binanceRecvWindowMs:5e3,bybitWindowMs:5e3,maxLocalSkewMs:2e3}),al=Object.freeze({perSecond:1,perMinute:30,bind:"tighter"});var cr=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}"]})}),Me=Object.freeze({binance:"https://api.binance.com",bybit:"https://api.bybit.com",okx:"https://openapi.okx.com",coinbase:"https://api.exchange.coinbase.com"});var gl=256*1024;var zu=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"]),Wu=new re(["function decimals() view returns (uint8)","function allowance(address owner,address spender) view returns (uint256)"]),Uu=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 je(e){let n=process.env.ORACLE_SIGNER_STATE_DIR||p.join(process.env.XDG_STATE_HOME||p.join(lr.homedir(),".local","state"),"oracle"),t=ur("sha256").update(p.resolve(e)).digest("hex").slice(0,16);return{vault:p.join(e,"vault.json"),policy:p.join(e,"signer-policy.json"),policyKey:p.join(e,"policy-integrity-key"),policyAnchor:p.join(n,`signer-policy-${t}.high-water`),ledger:p.join(e,"signer-ledger.json"),ledgerAnchor:p.join(n,`signer-ledger-${t}.high-water`),cexOrders:p.join(e,"cex-orders.json"),cexOrdersAnchor:p.join(n,`cex-orders-${t}.high-water`),token:p.join(e,"signer-token"),lock:p.join(n,`signer-${t}.lock`),workflowLedger:p.join(e,"workflow-events.jsonl")}}import{randomBytes as dr}from"node:crypto";import{Wallet as fr}from"ethers";var He=`oracle sign init|import|policy|status|lock|doctor
5
5