veilix-sdk 0.0.4 → 0.0.6

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.
@@ -3686,7 +3686,7 @@ var WITHDRAW_CIRCUIT_SHA256 = {
3686
3686
  zkey: "64a4d915099f6fe6bfa06e151c254843be8773c7991c742260019dc5184e5d82"
3687
3687
  };
3688
3688
  var CIRCUIT_CDN_PACKAGE = "veilix-sdk";
3689
- var CIRCUIT_CDN_VERSION = "0.0.3";
3689
+ var CIRCUIT_CDN_VERSION = "0.0.4";
3690
3690
  function resolveCircuitPathsFromBase(base) {
3691
3691
  const root = base.endsWith("/") ? base : `${base}/`;
3692
3692
  return {
@@ -12601,6 +12601,52 @@ function formatNoteForDisplay(note, segmentLen = 8) {
12601
12601
  (p) => p.length > segmentLen * 2 ? p.slice(0, segmentLen) + "\u2026" + p.slice(-segmentLen) : p
12602
12602
  ).join("-");
12603
12603
  }
12604
+ async function readOracleGatewayUrls(queue) {
12605
+ const oracleKeys = await queue.fetchOracleKeys();
12606
+ if (oracleKeys.length === 0) return [];
12607
+ const rows = await sb__namespace.Oracle.loadMany(queue.program, oracleKeys);
12608
+ return rows.map(
12609
+ (row) => row ? buffer.Buffer.from(row.gatewayUri).toString("utf8").replace(/\0+$/, "").trim() : ""
12610
+ ).filter((url) => url.length > 0);
12611
+ }
12612
+ async function firstHealthyGatewayUrl(urls) {
12613
+ try {
12614
+ return await Promise.any(
12615
+ urls.map(async (url) => {
12616
+ const response = await fetch(`${url.replace(/\/$/, "")}/gateway/api/v1/test`, {
12617
+ signal: AbortSignal.timeout(8e3)
12618
+ });
12619
+ if (!response.ok) {
12620
+ throw new Error(`gateway ${url} returned ${response.status}`);
12621
+ }
12622
+ return url;
12623
+ })
12624
+ );
12625
+ } catch (error) {
12626
+ const reason = error instanceof Error ? error.message : "unknown error";
12627
+ throw new Error(`veilix-sdk: no healthy Switchboard gateway (${reason})`);
12628
+ }
12629
+ }
12630
+ function crossbarForQueue(queue) {
12631
+ const client = new common.CrossbarClient("https://crossbar.switchboard.xyz");
12632
+ const fetchGateway = client.fetchGateway.bind(client);
12633
+ client.fetchGateway = async (network) => {
12634
+ try {
12635
+ return await fetchGateway(network);
12636
+ } catch (error) {
12637
+ const message = error instanceof Error ? error.message : "";
12638
+ if (!message.includes("No gateways available")) {
12639
+ throw error;
12640
+ }
12641
+ const urls = await readOracleGatewayUrls(queue);
12642
+ if (urls.length === 0) {
12643
+ throw error;
12644
+ }
12645
+ return new sb__namespace.Gateway(await firstHealthyGatewayUrl(urls));
12646
+ }
12647
+ };
12648
+ return client;
12649
+ }
12604
12650
  function getRangeRiskScoreJob(address) {
12605
12651
  return common.OracleJob.fromObject({
12606
12652
  tasks: [
@@ -12629,7 +12675,7 @@ async function getOracleQuote(payer, addressToCheck) {
12629
12675
  solanaRPCUrl: rpcUrl,
12630
12676
  queueAddress: getDepositQueueAddress()
12631
12677
  });
12632
- const crossbarClient = common.CrossbarClient.default();
12678
+ const crossbarClient = crossbarForQueue(queue);
12633
12679
  const feed = {
12634
12680
  name: "Risk Score",
12635
12681
  jobs: [getRangeRiskScoreJob(addressToCheck)],
@@ -12653,7 +12699,7 @@ function getProgramId() {
12653
12699
  }
12654
12700
  return _programId;
12655
12701
  }
12656
- var CONFIG_SEED = buffer.Buffer.from("veilix-config");
12702
+ var CONFIG_SEED = buffer.Buffer.from("config");
12657
12703
  function getPoolPDA(denominationLamports) {
12658
12704
  const buf = buffer.Buffer.alloc(8);
12659
12705
  buf.writeBigUInt64BE(BigInt(denominationLamports));