From c4a4891612573da602a583addc5c06b2fdf2545d Mon Sep 17 00:00:00 2001 From: moosecat Date: Thu, 25 Jul 2024 12:01:08 -0700 Subject: [PATCH] program: init switchboard on demand (#1154) Co-authored-by: Mitch Gildenberg Co-authored-by: mgild Co-authored-by: Chris Heaney --- CHANGELOG.md | 2 + Cargo.lock | 11 + Cargo.toml | 1 + package.json | 6 +- programs/drift/Cargo.toml | 1 + programs/drift/src/ids.rs | 5 + programs/drift/src/instructions/admin.rs | 10 + programs/drift/src/state/oracle.rs | 55 + programs/drift/src/state/oracle/tests.rs | 35 + programs/drift/src/state/oracle_map.rs | 22 + programs/drift/src/state/perp_market.rs | 16 +- programs/switchboard-on-demand/Cargo.toml | 25 + programs/switchboard-on-demand/src/lib.rs | 197 + sdk/package.json | 2 + sdk/src/driftClient.ts | 57 + sdk/src/factory/oracleClient.ts | 5 + sdk/src/idl/drift.json | 3 + sdk/src/idl/switchboard_on_demand_30.json | 4383 ++++++++++++++++++ sdk/src/oracles/switchboardOnDemandClient.ts | 56 + sdk/src/types.ts | 1 + sdk/yarn.lock | 258 +- tests/switchboardOnDemand.ts | 172 + tests/switchboardOnDemandData.ts | 54 + yarn.lock | 574 ++- 24 files changed, 5923 insertions(+), 28 deletions(-) create mode 100644 programs/switchboard-on-demand/Cargo.toml create mode 100644 programs/switchboard-on-demand/src/lib.rs create mode 100644 sdk/src/idl/switchboard_on_demand_30.json create mode 100644 sdk/src/oracles/switchboardOnDemandClient.ts create mode 100644 tests/switchboardOnDemand.ts create mode 100644 tests/switchboardOnDemandData.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index ee97f4920..a38b43445 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +- program: add switchboard on demand integration ([#1154](https://github.com/drift-labs/protocol-v2/pull/1154)) + ### Fixes ### Breaking diff --git a/Cargo.lock b/Cargo.lock index 4dec75480..3d144cd5e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -900,6 +900,7 @@ dependencies = [ "solana-security-txt", "static_assertions", "switchboard", + "switchboard-on-demand", "thiserror", "uint", ] @@ -2601,6 +2602,16 @@ dependencies = [ "base64 0.13.0", ] +[[package]] +name = "switchboard-on-demand" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "base64 0.13.0", + "bytemuck", + "solana-program", +] + [[package]] name = "syn" version = "1.0.92" diff --git a/Cargo.toml b/Cargo.toml index 766930dea..3ad317812 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ exclude = [ [profile.release] lto = "fat" codegen-units = 1 +overflow-checks = true [profile.release.build-override] opt-level = 3 diff --git a/package.json b/package.json index f843caa75..8ec831707 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "license": "ISC", "devDependencies": { "@coral-xyz/anchor": "0.29.0", + "@coral-xyz/anchor-30": "npm:@coral-xyz/anchor@0.30.1", "@project-serum/common": "0.0.1-beta.3", "@project-serum/serum": "^0.13.38", "@pythnetwork/client": "^2.5.1", @@ -26,13 +27,14 @@ "dependencies": { "@ellipsis-labs/phoenix-sdk": "1.4.2", "@pythnetwork/pyth-solana-receiver": "^0.8.0", + "@switchboard-xyz/on-demand": "^1.2.10", "anchor-bankrun": "^0.3.0", "chai-bn": "^0.2.2", "csvtojson": "^2.0.10", "json2csv": "^5.0.7", + "rpc-websockets": "7.5.1", "solana-bankrun": "^0.3.0", - "zstddec": "^0.1.0", - "rpc-websockets": "7.5.1" + "zstddec": "^0.1.0" }, "scripts": { "generate-docs": "typedoc", diff --git a/programs/drift/Cargo.toml b/programs/drift/Cargo.toml index ebe786e29..379365116 100644 --- a/programs/drift/Cargo.toml +++ b/programs/drift/Cargo.toml @@ -42,6 +42,7 @@ drift-macros = { git = "https://github.com/drift-labs/drift-macros.git", rev = " switchboard = { path = "../switchboard", features = ["no-entrypoint"] } openbook-v2-light = { path = "../openbook_v2", features = ["no-entrypoint"] } ahash = "=0.8.6" +switchboard-on-demand = { path = "../switchboard-on-demand", features = ["no-entrypoint"] } byteorder = "1.4.3" [dev-dependencies] diff --git a/programs/drift/src/ids.rs b/programs/drift/src/ids.rs index bbdcf285c..34ca15d1a 100644 --- a/programs/drift/src/ids.rs +++ b/programs/drift/src/ids.rs @@ -21,6 +21,11 @@ pub mod switchboard_program { declare_id!("SW1TCH7qEPTdLsDHRgPuMQjbQxKdH2aBStViMFnt64f"); } +pub mod switchboard_on_demand { + use solana_program::declare_id; + declare_id!("SBondMDrcV3K4kxZR1HNVT7osZxAHVHgYXL5Ze1oMUv"); +} + pub mod bonk_oracle { use solana_program::declare_id; #[cfg(feature = "mainnet-beta")] diff --git a/programs/drift/src/instructions/admin.rs b/programs/drift/src/instructions/admin.rs index 140038455..14f1b1cbd 100644 --- a/programs/drift/src/instructions/admin.rs +++ b/programs/drift/src/instructions/admin.rs @@ -38,6 +38,7 @@ use crate::state::fulfillment_params::phoenix::PhoenixV1FulfillmentConfig; use crate::state::fulfillment_params::serum::SerumContext; use crate::state::fulfillment_params::serum::SerumV3FulfillmentConfig; use crate::state::insurance_fund_stake::ProtocolIfSharesTransferConfig; +use crate::state::oracle::get_sb_on_demand_price; use crate::state::oracle::{ get_oracle_price, get_prelaunch_price, get_pyth_price, get_switchboard_price, HistoricalIndexData, HistoricalOracleData, OraclePriceData, OracleSource, PrelaunchOracle, @@ -771,6 +772,15 @@ pub fn handle_initialize_perp_market( } = get_pyth_price(&ctx.accounts.oracle, clock_slot, 1, true)?; (oracle_price, oracle_delay, QUOTE_PRECISION_I64) } + OracleSource::SwitchboardOnDemand => { + let OraclePriceData { + price: oracle_price, + delay: oracle_delay, + .. + } = get_sb_on_demand_price(&ctx.accounts.oracle, clock_slot)?; + + (oracle_price, oracle_delay, oracle_price) + } }; validate_margin( diff --git a/programs/drift/src/state/oracle.rs b/programs/drift/src/state/oracle.rs index 8cb409af3..4b59836bd 100644 --- a/programs/drift/src/state/oracle.rs +++ b/programs/drift/src/state/oracle.rs @@ -6,6 +6,7 @@ use crate::math::casting::Cast; use crate::math::constants::{PRICE_PRECISION, PRICE_PRECISION_I64, PRICE_PRECISION_U64}; use crate::math::safe_math::SafeMath; use switchboard::{AggregatorAccountData, SwitchboardDecimal}; +use switchboard_on_demand::{PullFeedAccountData, SB_ON_DEMAND_PRECISION}; use crate::error::ErrorCode::{InvalidOracle, UnableToLoadOracle}; use crate::math::safe_unwrap::SafeUnwrap; @@ -120,6 +121,7 @@ pub enum OracleSource { Pyth1KPull, Pyth1MPull, PythStableCoinPull, + SwitchboardOnDemand, } #[derive(Default, Clone, Copy, Debug)] @@ -152,6 +154,7 @@ pub fn get_oracle_price( OracleSource::Pyth1M => get_pyth_price(price_oracle, clock_slot, 1000000, false), OracleSource::PythStableCoin => get_pyth_stable_coin_price(price_oracle, clock_slot, false), OracleSource::Switchboard => get_switchboard_price(price_oracle, clock_slot), + OracleSource::SwitchboardOnDemand => get_sb_on_demand_price(price_oracle, clock_slot), OracleSource::QuoteAsset => Ok(OraclePriceData { price: PRICE_PRECISION_I64, confidence: 1, @@ -307,6 +310,46 @@ pub fn get_switchboard_price( }) } +pub fn get_sb_on_demand_price( + price_oracle: &AccountInfo, + clock_slot: u64, +) -> DriftResult { + let pull_feed_account_info: Ref = + load_ref(price_oracle).or(Err(ErrorCode::UnableToLoadOracle))?; + + let price = convert_sb_i128( + &pull_feed_account_info + .value() + .ok_or(ErrorCode::UnableToLoadOracle)?, + )? + .cast::()?; + + let confidence = convert_sb_i128( + &pull_feed_account_info + .range() + .ok_or(ErrorCode::UnableToLoadOracle)?, + )? + .cast::()? + .unsigned_abs(); + + let delay = clock_slot.cast::()?.safe_sub( + pull_feed_account_info + .result + .result_slot() + .ok_or(ErrorCode::UnableToLoadOracle)? + .cast()?, + )?; + + let has_sufficient_number_of_data_points = true; + + Ok(OraclePriceData { + price, + confidence, + delay, + has_sufficient_number_of_data_points, + }) +} + /// Given a decimal number represented as a mantissa (the digits) plus an /// original_precision (10.pow(some number of decimals)), scale the /// mantissa/digits to make sense with a new_precision. @@ -323,6 +366,18 @@ fn convert_switchboard_decimal(switchboard_decimal: &SwitchboardDecimal) -> Drif } } +/// Given a decimal number represented as a mantissa (the digits) plus an +/// original_precision (10.pow(some number of decimals)), scale the +/// mantissa/digits to make sense with a new_precision. +fn convert_sb_i128(switchboard_i128: &i128) -> DriftResult { + let switchboard_precision = 10_u128.pow(SB_ON_DEMAND_PRECISION); + if switchboard_precision > PRICE_PRECISION { + switchboard_i128.safe_div((switchboard_precision / PRICE_PRECISION) as i128) + } else { + switchboard_i128.safe_mul((PRICE_PRECISION / switchboard_precision) as i128) + } +} + pub fn get_prelaunch_price(price_oracle: &AccountInfo, slot: u64) -> DriftResult { let oracle: Ref = load_ref(price_oracle).or(Err(UnableToLoadOracle))?; diff --git a/programs/drift/src/state/oracle/tests.rs b/programs/drift/src/state/oracle/tests.rs index de0a186e6..f54ad971e 100644 --- a/programs/drift/src/state/oracle/tests.rs +++ b/programs/drift/src/state/oracle/tests.rs @@ -91,3 +91,38 @@ fn pyth_pull_1m() { let twap = amm.get_oracle_twap(&bonk_market_account_info, 0).unwrap(); assert_eq!(twap, Some(33576300)); } + +#[test] +fn switchboard_on_demand() { + let oracle_price_key = + Pubkey::from_str("EZLBfnznMYKjFmaWYMEdhwnkiQF1WiP9jjTY6M8HpmGE").unwrap(); + let oracle_market_str = String::from("xBtsxArX2yhvXnVmrAAKlTDlax20lYV3Jxmuqu6ttNm9jCNXuI6eeBTDmRAAAAAAAAAAAAAAAAAAjEqO4Us2LgkAAAAAAAAA4+UTCQLD6cJ5F3iXafGuBd4Vz1BGWL6v7tLFmKlJs7cUw5kQAAAAAAAAAAAAAAAAAIxKjuFLNi4JAAAAAAAAAOfvAk6nVvi+7C6qQCNAcNo1Z1So7rKsahfDLRfD6Z+NFMOZEAAAAAAAAAAAAAAAAACMSo7hSzYuCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMvk0dDyZCl4A8z9IXIepPHoxrb5Yaa6GykmRSAPvuFthoBwaEMvGGoUfPCxOjAGfThiBOqdbIsEdDrC7wELB1JapKD9jPBdSUumh0cofC10oJxPpaEB37JhI68koBidk6q6mmYAAAAAAAAAAAAAAAAA8gUqAQAAAAEAAABTT0wvVVNEIFB5dGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA3JpmAAAAAKx5mRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjEqO4Us2LgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMSo7hSzYuCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIxKjuFLNi4JAAAAAAAAAACMSo7hSzYuCQAAAAAAAAADAAAAAAAAABTDmRAAAAAAFMOZEAAAAAAUw5kQAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="); + + let mut decoded_bytes = base64::decode(oracle_market_str).unwrap(); + let oracle_market_bytes = decoded_bytes.as_mut_slice(); + let mut lamports = 0; + let sb_program = crate::ids::switchboard_on_demand::id(); + let sol_oracle_info = create_account_info( + &oracle_price_key, + true, + &mut lamports, + oracle_market_bytes, + &sb_program, + ); + + let oracle_price_data = get_oracle_price( + &OracleSource::SwitchboardOnDemand, + &sol_oracle_info, + 278512416, + ) + .unwrap(); + assert_eq!(oracle_price_data.price, 169350629); + + let amm = AMM { + oracle_source: OracleSource::SwitchboardOnDemand, + ..AMM::default() + }; + + let twap = amm.get_oracle_twap(&sol_oracle_info, 0).unwrap(); + assert_eq!(twap, Some(169350629)); +} diff --git a/programs/drift/src/state/oracle_map.rs b/programs/drift/src/state/oracle_map.rs index 1a82c5f9f..e7cc9f9b0 100644 --- a/programs/drift/src/state/oracle_map.rs +++ b/programs/drift/src/state/oracle_map.rs @@ -287,6 +287,19 @@ impl<'a> OracleMap<'a> { }, ); + continue; + } else if account_info.owner == &switchboard_on_demand::id() { + let account_info = account_info_iter.next().safe_unwrap()?; + let pubkey = account_info.key(); + + oracles.insert( + pubkey, + AccountInfoAndOracleSource { + account_info: account_info.clone(), + oracle_source: OracleSource::SwitchboardOnDemand, + }, + ); + continue; } @@ -396,6 +409,15 @@ impl<'a> OracleMap<'a> { oracle_source: OracleSource::Switchboard, }, ); + } else if account_info.owner == &switchboard_on_demand::id() { + let pubkey = account_info.key(); + oracles.insert( + pubkey, + AccountInfoAndOracleSource { + account_info: account_info.clone(), + oracle_source: OracleSource::SwitchboardOnDemand, + }, + ); } else if account_info.key() != Pubkey::default() { return Err(ErrorCode::InvalidOracle); } diff --git a/programs/drift/src/state/perp_market.rs b/programs/drift/src/state/perp_market.rs index 0684f7edc..7ffec9a11 100644 --- a/programs/drift/src/state/perp_market.rs +++ b/programs/drift/src/state/perp_market.rs @@ -28,7 +28,8 @@ use crate::math::stats; use crate::state::events::OrderActionExplanation; use crate::state::oracle::{ - get_prelaunch_price, get_switchboard_price, HistoricalOracleData, OracleSource, + get_prelaunch_price, get_sb_on_demand_price, get_switchboard_price, HistoricalOracleData, + OracleSource, }; use crate::state::spot_market::{AssetTier, SpotBalance, SpotBalanceType}; use crate::state::traits::{MarketIndexOffset, Size}; @@ -616,16 +617,16 @@ pub struct InsuranceClaim { /// The amount of revenue last settled /// Positive if funds left the perp market, /// negative if funds were pulled into the perp market - /// precision: QUOTE_PRECISION + /// precision: QUOTE_PRECISION pub revenue_withdraw_since_last_settle: i64, /// The max amount of revenue that can be withdrawn per period - /// precision: QUOTE_PRECISION + /// precision: QUOTE_PRECISION pub max_revenue_withdraw_per_period: u64, /// The max amount of insurance that perp market can use to resolve bankruptcy and pnl deficits - /// precision: QUOTE_PRECISION + /// precision: QUOTE_PRECISION pub quote_max_insurance: u64, /// The amount of insurance that has been used to resolve bankruptcy and pnl deficits - /// precision: QUOTE_PRECISION + /// precision: QUOTE_PRECISION pub quote_settled_insurance: u64, /// The last time revenue was settled in/out of market pub last_revenue_withdraw_ts: i64, @@ -871,7 +872,7 @@ pub struct AMM { /// the update intensity of AMM formulaic updates (adjusting k). 0-100 pub curve_update_intensity: u8, /// the jit intensity of AMM. larger intensity means larger participation in jit. 0 means no jit participation. - /// (0, 100] is intensity for protocol-owned AMM. (100, 200] is intensity for user LP-owned AMM. + /// (0, 100] is intensity for protocol-owned AMM. (100, 200] is intensity for user LP-owned AMM. pub amm_jit_intensity: u8, /// the oracle provider information. used to decode/scale the oracle public key pub oracle_source: OracleSource, @@ -1298,6 +1299,9 @@ impl AMM { OracleSource::Pyth1K => Ok(Some(self.get_pyth_twap(price_oracle, 1000, false)?)), OracleSource::Pyth1M => Ok(Some(self.get_pyth_twap(price_oracle, 1000000, false)?)), OracleSource::Switchboard => Ok(Some(get_switchboard_price(price_oracle, slot)?.price)), + OracleSource::SwitchboardOnDemand => { + Ok(Some(get_sb_on_demand_price(price_oracle, slot)?.price)) + } OracleSource::QuoteAsset => { msg!("Can't get oracle twap for quote asset"); Err(ErrorCode::DefaultError) diff --git a/programs/switchboard-on-demand/Cargo.toml b/programs/switchboard-on-demand/Cargo.toml new file mode 100644 index 000000000..0709be905 --- /dev/null +++ b/programs/switchboard-on-demand/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "switchboard-on-demand" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] +name = "switchboard_on_demand" + +[features] +no-entrypoint = [] +no-idl = [] +cpi = ["no-entrypoint"] +default = ["mainnet-beta"] +mainnet-beta=[] +anchor-test= [] + +[dependencies] +anchor-lang = "0.29.0" +bytemuck = { version = "1.4.0" } +solana-program = "1.16" + +[dev-dependencies] +base64 = "0.13.0" + diff --git a/programs/switchboard-on-demand/src/lib.rs b/programs/switchboard-on-demand/src/lib.rs new file mode 100644 index 000000000..40c394ea8 --- /dev/null +++ b/programs/switchboard-on-demand/src/lib.rs @@ -0,0 +1,197 @@ +use anchor_lang::declare_id; +use anchor_lang::prelude::*; +use anchor_lang::program; +use anchor_lang::AnchorDeserialize; +use solana_program::pubkey::Pubkey; + +declare_id!("SBondMDrcV3K4kxZR1HNVT7osZxAHVHgYXL5Ze1oMUv"); + +#[program] +pub mod switchboard_on_demand {} +pub const SB_ON_DEMAND_PRECISION: u32 = 18; + +#[repr(C)] +#[derive(Clone, Copy, Debug, bytemuck::Pod, bytemuck::Zeroable)] +pub struct CurrentResult { + /// The median value of the submissions needed for quorom size + pub value: i128, + /// The standard deviation of the submissions needed for quorom size + pub std_dev: i128, + /// The mean of the submissions needed for quorom size + pub mean: i128, + /// The range of the submissions needed for quorom size + pub range: i128, + /// The minimum value of the submissions needed for quorom size + pub min_value: i128, + /// The maximum value of the submissions needed for quorom size + pub max_value: i128, + pub padding1: [u8; 8], + /// The slot at which this value was signed. + pub slot: u64, + /// The slot at which the first considered submission was made + pub min_slot: u64, + /// The slot at which the last considered submission was made + pub max_slot: u64, +} +impl CurrentResult { + /// The median value of the submissions needed for quorom size + pub fn value(&self) -> Option { + if self.slot == 0 { + return None; + } + Some(self.value) + } + + /// The standard deviation of the submissions needed for quorom size + pub fn std_dev(&self) -> Option { + if self.slot == 0 { + return None; + } + Some(self.std_dev) + } + + /// The mean of the submissions needed for quorom size + pub fn mean(&self) -> Option { + if self.slot == 0 { + return None; + } + Some(self.mean) + } + + /// The range of the submissions needed for quorom size + pub fn range(&self) -> Option { + if self.slot == 0 { + return None; + } + Some(self.range) + } + + /// The minimum value of the submissions needed for quorom size + pub fn min_value(&self) -> Option { + if self.slot == 0 { + return None; + } + Some(self.min_value) + } + + /// The maximum value of the submissions needed for quorom size + pub fn max_value(&self) -> Option { + if self.slot == 0 { + return None; + } + Some(self.max_value) + } + + pub fn result_slot(&self) -> Option { + if self.slot == 0 { + return None; + } + Some(self.slot) + } + + pub fn min_slot(&self) -> Option { + if self.slot == 0 { + return None; + } + Some(self.min_slot) + } + + pub fn max_slot(&self) -> Option { + if self.slot == 0 { + return None; + } + Some(self.max_slot) + } +} + +#[repr(C)] +#[derive(Clone, Copy, Debug, bytemuck::Pod, bytemuck::Zeroable)] +pub struct OracleSubmission { + /// The public key of the oracle that submitted this value. + pub oracle: Pubkey, + /// The slot at which this value was signed. + pub slot: u64, + padding1: [u8; 8], + /// The value that was submitted. + pub value: i128, +} + +impl OracleSubmission { + pub fn is_empty(&self) -> bool { + self.slot == 0 + } + + pub fn value(&self) -> i128 { + self.value + } +} + +/// A representation of the data in a pull feed account. +#[repr(C)] +#[account(zero_copy)] +pub struct PullFeedAccountData { + /// The oracle submissions for this feed. + pub submissions: [OracleSubmission; 32], + /// The public key of the authority that can update the feed hash that + /// this account will use for registering updates. + pub authority: Pubkey, + /// The public key of the queue which oracles must be bound to in order to + /// submit data to this feed. + pub queue: Pubkey, + /// SHA-256 hash of the job schema oracles will execute to produce data + /// for this feed. + pub feed_hash: [u8; 32], + /// The slot at which this account was initialized. + pub initialized_at: i64, + pub permissions: u64, + pub max_variance: u64, + pub min_responses: u32, + pub name: [u8; 32], + _padding1: [u8; 3], + pub sample_size: u8, + pub last_update_timestamp: i64, + pub lut_slot: u64, + pub ipfs_hash: [u8; 32], // deprecated + pub result: CurrentResult, + pub max_staleness: u32, + _ebuf4: [u8; 20], + _ebuf3: [u8; 24], + _ebuf2: [u8; 256], + _ebuf1: [u8; 512], +} + +impl PullFeedAccountData { + pub fn discriminator() -> [u8; 8] { + [196, 27, 108, 196, 10, 215, 219, 40] + } + + /// The median value of the submissions needed for quorom size + pub fn value(&self) -> Option { + self.result.value() + } + + /// The standard deviation of the submissions needed for quorom size + pub fn std_dev(&self) -> Option { + self.result.std_dev() + } + + /// The mean of the submissions needed for quorom size + pub fn mean(&self) -> Option { + self.result.mean() + } + + /// The range of the submissions needed for quorom size + pub fn range(&self) -> Option { + self.result.range() + } + + /// The minimum value of the submissions needed for quorom size + pub fn min_value(&self) -> Option { + self.result.min_value() + } + + /// The maximum value of the submissions needed for quorom size + pub fn max_value(&self) -> Option { + self.result.max_value() + } +} diff --git a/sdk/package.json b/sdk/package.json index 892441975..912c2db5d 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -35,6 +35,7 @@ }, "dependencies": { "@coral-xyz/anchor": "0.28.0", + "@coral-xyz/anchor-30": "npm:@coral-xyz/anchor@0.30.1", "@ellipsis-labs/phoenix-sdk": "^1.4.2", "@project-serum/serum": "^0.13.38", "@pythnetwork/client": "2.5.3", @@ -42,6 +43,7 @@ "@pythnetwork/pyth-solana-receiver": "^0.7.0", "@solana/spl-token": "0.3.7", "@solana/web3.js": "1.92.3", + "@switchboard-xyz/on-demand": "^1.2.1", "anchor-bankrun": "^0.3.0", "rpc-websockets": "7.5.1", "solana-bankrun": "^0.3.0", diff --git a/sdk/src/driftClient.ts b/sdk/src/driftClient.ts index e0747a800..b82333743 100644 --- a/sdk/src/driftClient.ts +++ b/sdk/src/driftClient.ts @@ -5,6 +5,7 @@ import { Program, ProgramAccount, } from '@coral-xyz/anchor'; +import { Idl as Idl30, Program as Program30 } from '@coral-xyz/anchor-30'; import bs58 from 'bs58'; import { ASSOCIATED_TOKEN_PROGRAM_ID, @@ -147,6 +148,8 @@ import { PythSolanaReceiver } from '@pythnetwork/pyth-solana-receiver/lib/idl/py import { getFeedIdUint8Array, trimFeedId } from './util/pythPullOracleUtils'; import { isVersionedTransaction } from './tx/utils'; import pythSolanaReceiverIdl from './idl/pyth_solana_receiver.json'; +import { PullFeed } from '@switchboard-xyz/on-demand'; +import switchboardOnDemandIdl from './idl/switchboard_on_demand_30.json'; type RemainingAccountParams = { userAccounts: UserAccount[]; @@ -198,6 +201,8 @@ export class DriftClient { receiverProgram?: Program; wormholeProgram?: Program; + sbOnDemandProgram?: Program30; + sbProgramFeedConfigs?: Map; public get isSubscribed() { return this._isSubscribed && this.accountSubscriber.isSubscribed; @@ -7057,6 +7062,16 @@ export class DriftClient { return this.receiverProgram; } + public getSwitchboardOnDemandProgram(): Program30 { + if (this.sbOnDemandProgram === undefined) { + this.sbOnDemandProgram = new Program30( + switchboardOnDemandIdl as Idl30, + this.provider + ); + } + return this.sbOnDemandProgram; + } + public async postPythPullOracleUpdateAtomic( vaaString: string, feedId: string @@ -7270,6 +7285,48 @@ export class DriftClient { ); } + public async getPostSwitchboardOnDemandUpdateAtomicIx( + feed: PublicKey, + numSignatures = 3 + ): Promise { + const program = this.getSwitchboardOnDemandProgram(); + const feedAccount = new PullFeed(program, feed); + if (!this.sbProgramFeedConfigs) { + this.sbProgramFeedConfigs = new Map(); + } + if (!this.sbProgramFeedConfigs.has(feedAccount.pubkey.toString())) { + const feedConfig = await feedAccount.loadConfigs(); + this.sbProgramFeedConfigs.set(feed.toString(), feedConfig); + } + + const [pullIx, _responses, success] = await feedAccount.fetchUpdateIx({ + numSignatures, + feedConfigs: this.sbProgramFeedConfigs.get(feed.toString()), + }); + if (!success) { + return undefined; + } + return pullIx; + } + + public async postSwitchboardOnDemandUpdate( + feed: PublicKey, + numSignatures = 3 + ): Promise { + const pullIx = await this.getPostSwitchboardOnDemandUpdateAtomicIx( + feed, + numSignatures + ); + if (!pullIx) { + return undefined; + } + const tx = await this.buildTransaction(pullIx, undefined, 0, [ + await this.fetchMarketLookupTableAccount(), + ]); + const { txSig } = await this.sendTransaction(tx, [], this.opts); + return txSig; + } + private async getBuildEncodedVaaIxs( vaa: Buffer, guardianSet: PublicKey diff --git a/sdk/src/factory/oracleClient.ts b/sdk/src/factory/oracleClient.ts index 7ca3ce15f..7d48d2bb3 100644 --- a/sdk/src/factory/oracleClient.ts +++ b/sdk/src/factory/oracleClient.ts @@ -8,6 +8,7 @@ import { BN, Program } from '@coral-xyz/anchor'; import { PrelaunchOracleClient } from '../oracles/prelaunchOracleClient'; import { SwitchboardClient } from '../oracles/switchboardClient'; import { PythPullClient } from '../oracles/pythPullClient'; +import { SwitchboardOnDemandClient } from '../oracles/switchboardOnDemandClient'; export function getOracleClient( oracleSource: OracleSource, @@ -58,5 +59,9 @@ export function getOracleClient( return new QuoteAssetOracleClient(); } + if (isVariant(oracleSource, 'switchboardOnDemand')) { + return new SwitchboardOnDemandClient(connection); + } + throw new Error(`Unknown oracle source ${oracleSource}`); } diff --git a/sdk/src/idl/drift.json b/sdk/src/idl/drift.json index 00eafa680..8e120c7f9 100644 --- a/sdk/src/idl/drift.json +++ b/sdk/src/idl/drift.json @@ -9945,6 +9945,9 @@ }, { "name": "PythStableCoinPull" + }, + { + "name": "SwitchboardOnDemand" } ] } diff --git a/sdk/src/idl/switchboard_on_demand_30.json b/sdk/src/idl/switchboard_on_demand_30.json new file mode 100644 index 000000000..acbf7e181 --- /dev/null +++ b/sdk/src/idl/switchboard_on_demand_30.json @@ -0,0 +1,4383 @@ +{ + "address": "SBondMDrcV3K4kxZR1HNVT7osZxAHVHgYXL5Ze1oMUv", + "metadata": { + "name": "sb_on_demand", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Created with Anchor" + }, + "instructions": [ + { + "name": "guardian_quote_verify", + "discriminator": [ + 168, + 36, + 93, + 156, + 157, + 150, + 148, + 45 + ], + "accounts": [ + { + "name": "guardian", + "writable": true + }, + { + "name": "oracle", + "writable": true + }, + { + "name": "authority", + "signer": true, + "relations": [ + "oracle" + ] + }, + { + "name": "guardian_queue", + "writable": true, + "relations": [ + "state" + ] + }, + { + "name": "state" + }, + { + "name": "recent_slothashes", + "address": "SysvarS1otHashes111111111111111111111111111" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "GuardianQuoteVerifyParams" + } + } + } + ] + }, + { + "name": "guardian_register", + "discriminator": [ + 159, + 76, + 53, + 117, + 219, + 29, + 116, + 135 + ], + "accounts": [ + { + "name": "oracle", + "writable": true + }, + { + "name": "state" + }, + { + "name": "guardian_queue", + "relations": [ + "state" + ] + }, + { + "name": "authority", + "signer": true, + "relations": [ + "state" + ] + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "GuardianRegisterParams" + } + } + } + ] + }, + { + "name": "guardian_unregister", + "discriminator": [ + 215, + 19, + 61, + 120, + 155, + 224, + 120, + 60 + ], + "accounts": [ + { + "name": "oracle", + "writable": true + }, + { + "name": "state" + }, + { + "name": "guardian_queue", + "writable": true, + "relations": [ + "state" + ] + }, + { + "name": "authority", + "signer": true, + "relations": [ + "state" + ] + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "GuardianUnregisterParams" + } + } + } + ] + }, + { + "name": "oracle_heartbeat", + "discriminator": [ + 10, + 175, + 217, + 130, + 111, + 35, + 117, + 54 + ], + "accounts": [ + { + "name": "oracle", + "writable": true + }, + { + "name": "oracle_stats", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 79, + 114, + 97, + 99, + 108, + 101, + 83, + 116, + 97, + 116, + 115 + ] + }, + { + "kind": "account", + "path": "oracle" + } + ] + } + }, + { + "name": "oracle_signer", + "signer": true + }, + { + "name": "queue", + "writable": true, + "relations": [ + "oracle", + "gc_node" + ] + }, + { + "name": "gc_node", + "writable": true + }, + { + "name": "program_state", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "native_mint", + "address": "So11111111111111111111111111111111111111112" + }, + { + "name": "queue_escrow", + "writable": true + }, + { + "name": "stake_program", + "address": "SBSTk6t52R89MmCdD739Rdd97HdbTQUFHe41vCX7pTt", + "relations": [ + "program_state" + ] + }, + { + "name": "delegation_pool", + "writable": true + }, + { + "name": "delegation_group", + "writable": true + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "OracleHeartbeatParams" + } + } + } + ] + }, + { + "name": "oracle_init", + "discriminator": [ + 21, + 158, + 66, + 65, + 60, + 221, + 148, + 61 + ], + "accounts": [ + { + "name": "oracle", + "writable": true, + "signer": true + }, + { + "name": "oracle_stats", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 79, + 114, + 97, + 99, + 108, + 101, + 83, + 116, + 97, + 116, + 115 + ] + }, + { + "kind": "account", + "path": "oracle" + } + ] + } + }, + { + "name": "program_state", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "lut_signer" + }, + { + "name": "lut", + "writable": true + }, + { + "name": "address_lookup_table_program", + "address": "AddressLookupTab1e1111111111111111111111111" + }, + { + "name": "stake_program", + "relations": [ + "program_state" + ] + }, + { + "name": "stake_pool", + "relations": [ + "program_state" + ] + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "OracleInitParams" + } + } + } + ] + }, + { + "name": "oracle_set_configs", + "discriminator": [ + 129, + 111, + 223, + 4, + 191, + 188, + 70, + 180 + ], + "accounts": [ + { + "name": "oracle" + }, + { + "name": "authority", + "signer": true, + "relations": [ + "oracle" + ] + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "OracleSetConfigsParams" + } + } + } + ] + }, + { + "name": "oracle_update_delegation", + "discriminator": [ + 46, + 198, + 113, + 223, + 160, + 189, + 118, + 90 + ], + "accounts": [ + { + "name": "oracle", + "writable": true + }, + { + "name": "oracle_stats", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 79, + 114, + 97, + 99, + 108, + 101, + 83, + 116, + 97, + 116, + 115 + ] + }, + { + "kind": "account", + "path": "oracle" + } + ] + } + }, + { + "name": "queue" + }, + { + "name": "authority" + }, + { + "name": "program_state", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "delegation_pool", + "writable": true + }, + { + "name": "lut_signer" + }, + { + "name": "lut", + "writable": true + }, + { + "name": "address_lookup_table_program", + "address": "AddressLookupTab1e1111111111111111111111111" + }, + { + "name": "switch_mint" + }, + { + "name": "native_mint", + "address": "So11111111111111111111111111111111111111112" + }, + { + "name": "wsol_vault", + "writable": true + }, + { + "name": "switch_vault", + "writable": true + }, + { + "name": "stake_program", + "relations": [ + "program_state" + ] + }, + { + "name": "stake_pool" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "OracleUpdateDelegationParams" + } + } + } + ] + }, + { + "name": "permission_set", + "discriminator": [ + 211, + 122, + 185, + 120, + 129, + 182, + 55, + 103 + ], + "accounts": [ + { + "name": "authority", + "signer": true + }, + { + "name": "granter" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "PermissionSetParams" + } + } + } + ] + }, + { + "name": "pull_feed_close", + "discriminator": [ + 19, + 134, + 50, + 142, + 177, + 215, + 196, + 83 + ], + "accounts": [ + { + "name": "pull_feed", + "writable": true + }, + { + "name": "reward_escrow", + "writable": true + }, + { + "name": "lut", + "writable": true + }, + { + "name": "lut_signer" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "state" + }, + { + "name": "authority", + "writable": true, + "signer": true, + "relations": [ + "pull_feed" + ] + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "address_lookup_table_program", + "address": "AddressLookupTab1e1111111111111111111111111" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "PullFeedCloseParams" + } + } + } + ] + }, + { + "name": "pull_feed_init", + "discriminator": [ + 198, + 130, + 53, + 198, + 235, + 61, + 143, + 40 + ], + "accounts": [ + { + "name": "pull_feed", + "writable": true, + "signer": true + }, + { + "name": "queue" + }, + { + "name": "authority" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "program_state" + }, + { + "name": "reward_escrow", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "pull_feed" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "wrapped_sol_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "wrapped_sol_mint", + "address": "So11111111111111111111111111111111111111112" + }, + { + "name": "lut_signer" + }, + { + "name": "lut", + "writable": true + }, + { + "name": "address_lookup_table_program", + "address": "AddressLookupTab1e1111111111111111111111111" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "PullFeedInitParams" + } + } + } + ] + }, + { + "name": "pull_feed_set_configs", + "discriminator": [ + 217, + 45, + 11, + 246, + 64, + 26, + 82, + 168 + ], + "accounts": [ + { + "name": "pull_feed", + "writable": true + }, + { + "name": "authority", + "signer": true, + "relations": [ + "pull_feed" + ] + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "PullFeedSetConfigsParams" + } + } + } + ] + }, + { + "name": "pull_feed_submit_response", + "discriminator": [ + 150, + 22, + 215, + 166, + 143, + 93, + 48, + 137 + ], + "accounts": [ + { + "name": "feed", + "writable": true + }, + { + "name": "queue", + "relations": [ + "feed" + ] + }, + { + "name": "program_state" + }, + { + "name": "recent_slothashes", + "address": "SysvarS1otHashes111111111111111111111111111" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "reward_vault", + "writable": true + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "token_mint", + "address": "So11111111111111111111111111111111111111112" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "PullFeedSubmitResponseParams" + } + } + } + ] + }, + { + "name": "pull_feed_submit_response_many", + "discriminator": [ + 47, + 156, + 45, + 25, + 200, + 71, + 37, + 215 + ], + "accounts": [ + { + "name": "queue" + }, + { + "name": "program_state" + }, + { + "name": "recent_slothashes", + "address": "SysvarS1otHashes111111111111111111111111111" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "reward_vault", + "writable": true + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "token_mint", + "address": "So11111111111111111111111111111111111111112" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "PullFeedSubmitResponseManyParams" + } + } + } + ] + }, + { + "name": "queue_add_mr_enclave", + "discriminator": [ + 199, + 255, + 81, + 50, + 60, + 133, + 171, + 138 + ], + "accounts": [ + { + "name": "queue", + "writable": true + }, + { + "name": "authority", + "signer": true, + "relations": [ + "queue" + ] + }, + { + "name": "program_authority" + }, + { + "name": "state" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "QueueAddMrEnclaveParams" + } + } + } + ] + }, + { + "name": "queue_allow_subsidies", + "discriminator": [ + 94, + 203, + 82, + 157, + 188, + 138, + 202, + 108 + ], + "accounts": [ + { + "name": "queue", + "writable": true + }, + { + "name": "authority", + "signer": true, + "relations": [ + "state" + ] + }, + { + "name": "state", + "writable": true + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "QueueAllowSubsidiesParams" + } + } + } + ] + }, + { + "name": "queue_garbage_collect", + "discriminator": [ + 187, + 208, + 104, + 247, + 16, + 91, + 96, + 98 + ], + "accounts": [ + { + "name": "queue", + "writable": true + }, + { + "name": "oracle", + "writable": true + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "QueueGarbageCollectParams" + } + } + } + ] + }, + { + "name": "queue_init", + "discriminator": [ + 144, + 18, + 99, + 145, + 133, + 27, + 207, + 13 + ], + "accounts": [ + { + "name": "queue", + "writable": true, + "signer": true + }, + { + "name": "queue_escrow", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "queue" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "native_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "authority" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "native_mint", + "address": "So11111111111111111111111111111111111111112" + }, + { + "name": "program_state" + }, + { + "name": "lut_signer", + "writable": true + }, + { + "name": "lut", + "writable": true + }, + { + "name": "address_lookup_table_program", + "address": "AddressLookupTab1e1111111111111111111111111" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "QueueInitParams" + } + } + } + ] + }, + { + "name": "queue_init_delegation_group", + "discriminator": [ + 239, + 146, + 75, + 158, + 20, + 166, + 159, + 14 + ], + "accounts": [ + { + "name": "queue", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "program_state" + }, + { + "name": "lut_signer" + }, + { + "name": "lut", + "writable": true + }, + { + "name": "address_lookup_table_program", + "address": "AddressLookupTab1e1111111111111111111111111" + }, + { + "name": "delegation_group", + "writable": true + }, + { + "name": "stake_program", + "relations": [ + "program_state" + ] + }, + { + "name": "stake_pool" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "QueueInitDelegationGroupParams" + } + } + } + ] + }, + { + "name": "queue_remove_mr_enclave", + "discriminator": [ + 3, + 64, + 135, + 33, + 190, + 133, + 68, + 252 + ], + "accounts": [ + { + "name": "queue", + "writable": true + }, + { + "name": "authority", + "signer": true, + "relations": [ + "queue" + ] + }, + { + "name": "program_authority" + }, + { + "name": "state" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "QueueRemoveMrEnclaveParams" + } + } + } + ] + }, + { + "name": "queue_set_configs", + "discriminator": [ + 54, + 183, + 243, + 199, + 49, + 103, + 142, + 48 + ], + "accounts": [ + { + "name": "queue", + "writable": true + }, + { + "name": "authority", + "signer": true, + "relations": [ + "queue" + ] + }, + { + "name": "state" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "QueueSetConfigsParams" + } + } + } + ] + }, + { + "name": "randomness_commit", + "discriminator": [ + 52, + 170, + 152, + 201, + 179, + 133, + 242, + 141 + ], + "accounts": [ + { + "name": "randomness", + "writable": true + }, + { + "name": "queue", + "relations": [ + "randomness", + "oracle" + ] + }, + { + "name": "oracle", + "writable": true + }, + { + "name": "recent_slothashes", + "address": "SysvarS1otHashes111111111111111111111111111" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "RandomnessCommitParams" + } + } + } + ] + }, + { + "name": "randomness_init", + "discriminator": [ + 9, + 9, + 204, + 33, + 50, + 116, + 113, + 15 + ], + "accounts": [ + { + "name": "randomness", + "writable": true, + "signer": true + }, + { + "name": "reward_escrow", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "randomness" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "wrapped_sol_mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "authority", + "signer": true + }, + { + "name": "queue", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "wrapped_sol_mint", + "address": "So11111111111111111111111111111111111111112" + }, + { + "name": "program_state" + }, + { + "name": "lut_signer" + }, + { + "name": "lut", + "writable": true + }, + { + "name": "address_lookup_table_program", + "address": "AddressLookupTab1e1111111111111111111111111" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "RandomnessInitParams" + } + } + } + ] + }, + { + "name": "randomness_reveal", + "discriminator": [ + 197, + 181, + 187, + 10, + 30, + 58, + 20, + 73 + ], + "accounts": [ + { + "name": "randomness", + "writable": true + }, + { + "name": "oracle", + "relations": [ + "randomness" + ] + }, + { + "name": "queue", + "relations": [ + "oracle" + ] + }, + { + "name": "stats", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 79, + 114, + 97, + 99, + 108, + 101, + 82, + 97, + 110, + 100, + 111, + 109, + 110, + 101, + 115, + 115, + 83, + 116, + 97, + 116, + 115 + ] + }, + { + "kind": "account", + "path": "oracle" + } + ] + } + }, + { + "name": "authority", + "signer": true, + "relations": [ + "randomness" + ] + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "recent_slothashes", + "address": "SysvarS1otHashes111111111111111111111111111" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "reward_escrow", + "writable": true + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "wrapped_sol_mint", + "address": "So11111111111111111111111111111111111111112" + }, + { + "name": "program_state" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "RandomnessRevealParams" + } + } + } + ] + }, + { + "name": "state_init", + "discriminator": [ + 103, + 241, + 106, + 190, + 217, + 153, + 87, + 105 + ], + "accounts": [ + { + "name": "state", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 83, + 84, + 65, + 84, + 69 + ] + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "StateInitParams" + } + } + } + ] + }, + { + "name": "state_set_configs", + "discriminator": [ + 40, + 98, + 76, + 37, + 206, + 9, + 47, + 144 + ], + "accounts": [ + { + "name": "state", + "writable": true + }, + { + "name": "authority", + "signer": true, + "relations": [ + "state" + ] + }, + { + "name": "queue", + "writable": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "StateSetConfigsParams" + } + } + } + ] + } + ], + "accounts": [ + { + "name": "OracleAccountData", + "discriminator": [ + 128, + 30, + 16, + 241, + 170, + 73, + 55, + 54 + ] + }, + { + "name": "OracleStatsAccountData", + "discriminator": [ + 180, + 157, + 178, + 234, + 240, + 27, + 152, + 179 + ] + }, + { + "name": "PullFeedAccountData", + "discriminator": [ + 196, + 27, + 108, + 196, + 10, + 215, + 219, + 40 + ] + }, + { + "name": "QueueAccountData", + "discriminator": [ + 217, + 194, + 55, + 127, + 184, + 83, + 138, + 1 + ] + }, + { + "name": "RandomnessAccountData", + "discriminator": [ + 10, + 66, + 229, + 135, + 220, + 239, + 217, + 114 + ] + }, + { + "name": "State", + "discriminator": [ + 216, + 146, + 107, + 94, + 104, + 75, + 182, + 177 + ] + } + ], + "events": [ + { + "name": "GarbageCollectionEvent", + "discriminator": [ + 232, + 235, + 2, + 188, + 8, + 143, + 145, + 237 + ] + }, + { + "name": "GuardianQuoteVerifyEvent", + "discriminator": [ + 31, + 37, + 39, + 6, + 214, + 186, + 33, + 115 + ] + }, + { + "name": "OracleHeartbeatEvent", + "discriminator": [ + 52, + 29, + 166, + 2, + 94, + 7, + 188, + 13 + ] + }, + { + "name": "OracleInitEvent", + "discriminator": [ + 89, + 193, + 219, + 200, + 1, + 83, + 167, + 24 + ] + }, + { + "name": "OracleQuoteOverrideEvent", + "discriminator": [ + 78, + 204, + 191, + 210, + 164, + 196, + 244, + 65 + ] + }, + { + "name": "OracleQuoteRotateEvent", + "discriminator": [ + 26, + 189, + 196, + 192, + 225, + 127, + 26, + 228 + ] + }, + { + "name": "OracleQuoteVerifyRequestEvent", + "discriminator": [ + 203, + 209, + 79, + 0, + 20, + 71, + 226, + 202 + ] + }, + { + "name": "PermissionSetEvent", + "discriminator": [ + 148, + 86, + 123, + 0, + 102, + 20, + 119, + 206 + ] + }, + { + "name": "PullFeedErrorValueEvent", + "discriminator": [ + 225, + 80, + 192, + 95, + 14, + 12, + 83, + 192 + ] + }, + { + "name": "PullFeedValueEvents", + "discriminator": [ + 86, + 7, + 231, + 28, + 122, + 161, + 117, + 69 + ] + }, + { + "name": "QueueAddMrEnclaveEvent", + "discriminator": [ + 170, + 186, + 175, + 38, + 216, + 51, + 69, + 175 + ] + }, + { + "name": "QueueInitEvent", + "discriminator": [ + 44, + 137, + 99, + 227, + 107, + 8, + 30, + 105 + ] + }, + { + "name": "QueueRemoveMrEnclaveEvent", + "discriminator": [ + 4, + 105, + 196, + 60, + 84, + 122, + 203, + 196 + ] + }, + { + "name": "RandomnessCommitEvent", + "discriminator": [ + 88, + 60, + 172, + 90, + 112, + 10, + 206, + 147 + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "GenericError" + }, + { + "code": 6001, + "name": "InvalidQuote" + }, + { + "code": 6002, + "name": "InsufficientQueue" + }, + { + "code": 6003, + "name": "QueueFull" + }, + { + "code": 6004, + "name": "InvalidEnclaveSigner" + }, + { + "code": 6005, + "name": "InvalidSigner" + }, + { + "code": 6006, + "name": "MrEnclaveAlreadyExists" + }, + { + "code": 6007, + "name": "MrEnclaveAtCapacity" + }, + { + "code": 6008, + "name": "MrEnclaveDoesntExist" + }, + { + "code": 6009, + "name": "PermissionDenied" + }, + { + "code": 6010, + "name": "InvalidQueue" + }, + { + "code": 6011, + "name": "IncorrectMrEnclave" + }, + { + "code": 6012, + "name": "InvalidAuthority" + }, + { + "code": 6013, + "name": "InvalidMrEnclave" + }, + { + "code": 6014, + "name": "InvalidTimestamp" + }, + { + "code": 6015, + "name": "InvalidOracleIdx" + }, + { + "code": 6016, + "name": "InvalidSecpSignature" + }, + { + "code": 6017, + "name": "InvalidGuardianQueue" + }, + { + "code": 6018, + "name": "InvalidIndex" + }, + { + "code": 6019, + "name": "InvalidOracleQueue" + }, + { + "code": 6020, + "name": "InvalidPermission" + }, + { + "code": 6021, + "name": "InvalidePermissionedAccount" + }, + { + "code": 6022, + "name": "InvalidEpochRotate" + }, + { + "code": 6023, + "name": "InvalidEpochFinalize" + }, + { + "code": 6024, + "name": "InvalidEscrow" + }, + { + "code": 6025, + "name": "IllegalOracle" + }, + { + "code": 6026, + "name": "IllegalExecuteAttempt" + }, + { + "code": 6027, + "name": "IllegalFeedValue" + }, + { + "code": 6028, + "name": "InvalidOracleFeedStats" + }, + { + "code": 6029, + "name": "InvalidStateAuthority" + }, + { + "code": 6030, + "name": "NotEnoughSamples" + }, + { + "code": 6031, + "name": "OracleIsVerified" + }, + { + "code": 6032, + "name": "QueueIsEmpty" + }, + { + "code": 6033, + "name": "SecpRecoverFailure" + }, + { + "code": 6034, + "name": "StaleSample" + }, + { + "code": 6035, + "name": "SwitchboardRandomnessTooOld" + }, + { + "code": 6036, + "name": "EpochIdMismatch" + }, + { + "code": 6037, + "name": "GuardianAlreadyVoted" + }, + { + "code": 6038, + "name": "RandomnessNotRequested" + }, + { + "code": 6039, + "name": "InvalidSlotNumber" + }, + { + "code": 6040, + "name": "RandomnessOracleKeyExpired" + }, + { + "code": 6041, + "name": "InvalidAdvisory" + }, + { + "code": 6042, + "name": "InvalidOracleStats" + }, + { + "code": 6043, + "name": "InvalidStakeProgram" + }, + { + "code": 6044, + "name": "InvalidStakePool" + }, + { + "code": 6045, + "name": "InvalidDelegationPool" + }, + { + "code": 6046, + "name": "UnparsableAccount" + }, + { + "code": 6047, + "name": "InvalidInstruction" + } + ], + "types": [ + { + "name": "CurrentResult", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "value", + "docs": [ + "The median value of the submissions needed for quorom size" + ], + "type": "i128" + }, + { + "name": "std_dev", + "docs": [ + "The standard deviation of the submissions needed for quorom size" + ], + "type": "i128" + }, + { + "name": "mean", + "docs": [ + "The mean of the submissions needed for quorom size" + ], + "type": "i128" + }, + { + "name": "range", + "docs": [ + "The range of the submissions needed for quorom size" + ], + "type": "i128" + }, + { + "name": "min_value", + "docs": [ + "The minimum value of the submissions needed for quorom size" + ], + "type": "i128" + }, + { + "name": "max_value", + "docs": [ + "The maximum value of the submissions needed for quorom size" + ], + "type": "i128" + }, + { + "name": "num_samples", + "docs": [ + "The number of samples used to calculate this result" + ], + "type": "u8" + }, + { + "name": "padding1", + "type": { + "array": [ + "u8", + 7 + ] + } + }, + { + "name": "slot", + "docs": [ + "The slot at which this value was signed." + ], + "type": "u64" + }, + { + "name": "min_slot", + "docs": [ + "The slot at which the first considered submission was made" + ], + "type": "u64" + }, + { + "name": "max_slot", + "docs": [ + "The slot at which the last considered submission was made" + ], + "type": "u64" + } + ] + } + }, + { + "name": "GarbageCollectionEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "oracle", + "type": "pubkey" + }, + { + "name": "queue", + "type": "pubkey" + } + ] + } + }, + { + "name": "GuardianQuoteVerifyEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "quote", + "type": "pubkey" + }, + { + "name": "queue", + "type": "pubkey" + }, + { + "name": "oracle", + "type": "pubkey" + } + ] + } + }, + { + "name": "GuardianQuoteVerifyParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "timestamp", + "type": "i64" + }, + { + "name": "mr_enclave", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "idx", + "type": "u32" + }, + { + "name": "ed25519_key", + "type": "pubkey" + }, + { + "name": "secp256k1_key", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "slot", + "type": "u64" + }, + { + "name": "signature", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "recovery_id", + "type": "u8" + }, + { + "name": "advisories", + "type": { + "vec": "u32" + } + } + ] + } + }, + { + "name": "GuardianRegisterParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "GuardianUnregisterParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "idx", + "type": "u32" + } + ] + } + }, + { + "name": "MegaSlotInfo", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "reserved1", + "type": "u64" + }, + { + "name": "slot_end", + "type": "u64" + }, + { + "name": "perf_goal", + "type": "i64" + }, + { + "name": "current_signature_count", + "type": "i64" + } + ] + } + }, + { + "name": "MultiSubmission", + "type": { + "kind": "struct", + "fields": [ + { + "name": "values", + "type": { + "vec": "i128" + } + }, + { + "name": "signature", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "recovery_id", + "type": "u8" + } + ] + } + }, + { + "name": "OracleAccountData", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "enclave", + "docs": [ + "Represents the state of the quote verifiers enclave." + ], + "type": { + "defined": { + "name": "Quote" + } + } + }, + { + "name": "authority", + "docs": [ + "The authority of the EnclaveAccount which is permitted to make account changes." + ], + "type": "pubkey" + }, + { + "name": "queue", + "docs": [ + "Queue used for attestation to verify a MRENCLAVE measurement." + ], + "type": "pubkey" + }, + { + "name": "created_at", + "docs": [ + "The unix timestamp when the quote was created." + ], + "type": "i64" + }, + { + "name": "last_heartbeat", + "docs": [ + "The last time the quote heartbeated on-chain." + ], + "type": "i64" + }, + { + "name": "secp_authority", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "gateway_uri", + "docs": [ + "URI location of the verifier's gateway." + ], + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "permissions", + "type": "u64" + }, + { + "name": "is_on_queue", + "docs": [ + "Whether the quote is located on the AttestationQueues buffer." + ], + "type": "u8" + }, + { + "name": "_padding1", + "type": { + "array": [ + "u8", + 7 + ] + } + }, + { + "name": "lut_slot", + "type": "u64" + }, + { + "name": "last_reward_epoch", + "type": "u64" + }, + { + "name": "_ebuf4", + "type": { + "array": [ + "u8", + 16 + ] + } + }, + { + "name": "_ebuf3", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "_ebuf2", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "_ebuf1", + "type": { + "array": [ + "u8", + 1024 + ] + } + } + ] + } + }, + { + "name": "OracleEpochInfo", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "id", + "type": "u64" + }, + { + "name": "reserved1", + "type": "u64" + }, + { + "name": "slot_end", + "type": "u64" + }, + { + "name": "slash_score", + "type": "u64" + }, + { + "name": "reward_score", + "type": "u64" + }, + { + "name": "stake_score", + "type": "u64" + } + ] + } + }, + { + "name": "OracleHeartbeatEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "oracle", + "type": "pubkey" + }, + { + "name": "queue", + "type": "pubkey" + } + ] + } + }, + { + "name": "OracleHeartbeatParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "gateway_uri", + "type": { + "option": { + "array": [ + "u8", + 64 + ] + } + } + } + ] + } + }, + { + "name": "OracleInitEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "oracle", + "type": "pubkey" + } + ] + } + }, + { + "name": "OracleInitParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "recent_slot", + "type": "u64" + }, + { + "name": "authority", + "type": "pubkey" + }, + { + "name": "queue", + "type": "pubkey" + }, + { + "name": "secp_authority", + "type": { + "option": { + "array": [ + "u8", + 64 + ] + } + } + } + ] + } + }, + { + "name": "OracleQuoteOverrideEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "oracle", + "type": "pubkey" + }, + { + "name": "queue", + "type": "pubkey" + } + ] + } + }, + { + "name": "OracleQuoteRotateEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "oracle", + "type": "pubkey" + } + ] + } + }, + { + "name": "OracleQuoteVerifyRequestEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "quote", + "type": "pubkey" + }, + { + "name": "oracle", + "type": "pubkey" + } + ] + } + }, + { + "name": "OracleSetConfigsParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "new_authority", + "type": { + "option": "pubkey" + } + }, + { + "name": "new_secp_authority", + "type": { + "option": { + "array": [ + "u8", + 64 + ] + } + } + } + ] + } + }, + { + "name": "OracleStatsAccountData", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "owner", + "type": "pubkey" + }, + { + "name": "oracle", + "type": "pubkey" + }, + { + "name": "finalized_epoch", + "docs": [ + "The last epoch that has completed. cleared after registered with the", + "staking program." + ], + "type": { + "defined": { + "name": "OracleEpochInfo" + } + } + }, + { + "name": "current_epoch", + "docs": [ + "The current epoch info being used by the oracle. for stake. Will moved", + "to finalized_epoch as soon as the epoch is over." + ], + "type": { + "defined": { + "name": "OracleEpochInfo" + } + } + }, + { + "name": "mega_slot_info", + "type": { + "defined": { + "name": "MegaSlotInfo" + } + } + }, + { + "name": "last_transfer_slot", + "type": "u64" + }, + { + "name": "bump", + "type": "u8" + }, + { + "name": "padding1", + "type": { + "array": [ + "u8", + 7 + ] + } + }, + { + "name": "_ebuf", + "docs": [ + "Reserved." + ], + "type": { + "array": [ + "u8", + 1024 + ] + } + } + ] + } + }, + { + "name": "OracleSubmission", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "oracle", + "docs": [ + "The public key of the oracle that submitted this value." + ], + "type": "pubkey" + }, + { + "name": "slot", + "docs": [ + "The slot at which this value was signed." + ], + "type": "u64" + }, + { + "name": "padding1", + "type": { + "array": [ + "u8", + 8 + ] + } + }, + { + "name": "value", + "docs": [ + "The value that was submitted." + ], + "type": "i128" + } + ] + } + }, + { + "name": "OracleUpdateDelegationParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "recent_slot", + "type": "u64" + } + ] + } + }, + { + "name": "PermissionSetEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "permission", + "type": "pubkey" + } + ] + } + }, + { + "name": "PermissionSetParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "permission", + "type": "u8" + }, + { + "name": "enable", + "type": "bool" + } + ] + } + }, + { + "name": "PullFeedAccountData", + "docs": [ + "A representation of the data in a pull feed account." + ], + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "submissions", + "docs": [ + "The oracle submissions for this feed." + ], + "type": { + "array": [ + { + "defined": { + "name": "OracleSubmission" + } + }, + 32 + ] + } + }, + { + "name": "authority", + "docs": [ + "The public key of the authority that can update the feed hash that", + "this account will use for registering updates." + ], + "type": "pubkey" + }, + { + "name": "queue", + "docs": [ + "The public key of the queue which oracles must be bound to in order to", + "submit data to this feed." + ], + "type": "pubkey" + }, + { + "name": "feed_hash", + "docs": [ + "SHA-256 hash of the job schema oracles will execute to produce data", + "for this feed." + ], + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "initialized_at", + "docs": [ + "The slot at which this account was initialized." + ], + "type": "i64" + }, + { + "name": "permissions", + "type": "u64" + }, + { + "name": "max_variance", + "type": "u64" + }, + { + "name": "min_responses", + "type": "u32" + }, + { + "name": "name", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "_padding1", + "type": { + "array": [ + "u8", + 3 + ] + } + }, + { + "name": "min_sample_size", + "type": "u8" + }, + { + "name": "last_update_timestamp", + "type": "i64" + }, + { + "name": "lut_slot", + "type": "u64" + }, + { + "name": "ipfs_hash", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "result", + "type": { + "defined": { + "name": "CurrentResult" + } + } + }, + { + "name": "max_staleness", + "type": "u32" + }, + { + "name": "_ebuf4", + "type": { + "array": [ + "u8", + 20 + ] + } + }, + { + "name": "_ebuf3", + "type": { + "array": [ + "u8", + 24 + ] + } + }, + { + "name": "_ebuf2", + "type": { + "array": [ + "u8", + 256 + ] + } + }, + { + "name": "_ebuf1", + "type": { + "array": [ + "u8", + 512 + ] + } + } + ] + } + }, + { + "name": "PullFeedCloseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "PullFeedErrorValueEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feed", + "type": "pubkey" + }, + { + "name": "oracle", + "type": "pubkey" + } + ] + } + }, + { + "name": "PullFeedInitParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feed_hash", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "max_variance", + "type": "u64" + }, + { + "name": "min_responses", + "type": "u32" + }, + { + "name": "name", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "recent_slot", + "type": "u64" + }, + { + "name": "ipfs_hash", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "min_sample_size", + "type": "u8" + }, + { + "name": "max_staleness", + "type": "u32" + } + ] + } + }, + { + "name": "PullFeedSetConfigsParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feed_hash", + "type": { + "option": { + "array": [ + "u8", + 32 + ] + } + } + }, + { + "name": "authority", + "type": { + "option": "pubkey" + } + }, + { + "name": "max_variance", + "type": { + "option": "u64" + } + }, + { + "name": "min_responses", + "type": { + "option": "u32" + } + }, + { + "name": "name", + "type": { + "option": { + "array": [ + "u8", + 32 + ] + } + } + }, + { + "name": "ipfs_hash", + "type": { + "option": { + "array": [ + "u8", + 32 + ] + } + } + }, + { + "name": "min_sample_size", + "type": { + "option": "u8" + } + }, + { + "name": "max_staleness", + "type": { + "option": "u32" + } + } + ] + } + }, + { + "name": "PullFeedSubmitResponseManyParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "slot", + "type": "u64" + }, + { + "name": "submissions", + "type": { + "vec": { + "defined": { + "name": "MultiSubmission" + } + } + } + } + ] + } + }, + { + "name": "PullFeedSubmitResponseParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "slot", + "type": "u64" + }, + { + "name": "submissions", + "type": { + "vec": { + "defined": { + "name": "Submission" + } + } + } + } + ] + } + }, + { + "name": "PullFeedValueEvents", + "type": { + "kind": "struct", + "fields": [ + { + "name": "feeds", + "type": { + "vec": "pubkey" + } + }, + { + "name": "oracles", + "type": { + "vec": "pubkey" + } + }, + { + "name": "values", + "type": { + "vec": { + "vec": "i128" + } + } + }, + { + "name": "reward", + "type": "u32" + } + ] + } + }, + { + "name": "QueueAccountData", + "docs": [ + "An Queue represents a round-robin queue of oracle oracles who attest on-chain", + "whether a Switchboard Function was executed within an enclave against an expected set of", + "enclave measurements.", + "", + "For an oracle to join the queue, the oracle must first submit their enclave quote on-chain and", + "wait for an existing oracle to attest their quote. If the oracle's quote matches an expected", + "measurement within the queues mr_enclaves config, it is granted permissions and will start", + "being assigned update requests." + ], + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "authority", + "docs": [ + "The address of the authority which is permitted to add/remove allowed enclave measurements." + ], + "type": "pubkey" + }, + { + "name": "mr_enclaves", + "docs": [ + "Allowed enclave measurements." + ], + "type": { + "array": [ + { + "array": [ + "u8", + 32 + ] + }, + 32 + ] + } + }, + { + "name": "oracle_keys", + "docs": [ + "The addresses of the quote oracles who have a valid", + "verification status and have heartbeated on-chain recently." + ], + "type": { + "array": [ + "pubkey", + 128 + ] + } + }, + { + "name": "max_quote_verification_age", + "docs": [ + "The maximum allowable time until a EnclaveAccount needs to be re-verified on-chain." + ], + "type": "i64" + }, + { + "name": "last_heartbeat", + "docs": [ + "The unix timestamp when the last quote oracle heartbeated on-chain." + ], + "type": "i64" + }, + { + "name": "node_timeout", + "type": "i64" + }, + { + "name": "oracle_min_stake", + "docs": [ + "The minimum number of lamports a quote oracle needs to lock-up in order to heartbeat and verify other quotes." + ], + "type": "u64" + }, + { + "name": "allow_authority_override_after", + "type": "i64" + }, + { + "name": "mr_enclaves_len", + "docs": [ + "The number of allowed enclave measurements." + ], + "type": "u32" + }, + { + "name": "oracle_keys_len", + "docs": [ + "The length of valid quote oracles for the given attestation queue." + ], + "type": "u32" + }, + { + "name": "reward", + "docs": [ + "The reward paid to quote oracles for attesting on-chain." + ], + "type": "u32" + }, + { + "name": "curr_idx", + "docs": [ + "Incrementer used to track the current quote oracle permitted to run any available functions." + ], + "type": "u32" + }, + { + "name": "gc_idx", + "docs": [ + "Incrementer used to garbage collect and remove stale quote oracles." + ], + "type": "u32" + }, + { + "name": "require_authority_heartbeat_permission", + "type": "u8" + }, + { + "name": "require_authority_verify_permission", + "type": "u8" + }, + { + "name": "require_usage_permissions", + "type": "u8" + }, + { + "name": "signer_bump", + "type": "u8" + }, + { + "name": "mint", + "type": "pubkey" + }, + { + "name": "lut_slot", + "type": "u64" + }, + { + "name": "allow_subsidies", + "type": "u8" + }, + { + "name": "_ebuf6", + "docs": [ + "Reserved." + ], + "type": { + "array": [ + "u8", + 23 + ] + } + }, + { + "name": "_ebuf5", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "_ebuf4", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "_ebuf3", + "type": { + "array": [ + "u8", + 128 + ] + } + }, + { + "name": "_ebuf2", + "type": { + "array": [ + "u8", + 256 + ] + } + }, + { + "name": "_ebuf1", + "type": { + "array": [ + "u8", + 512 + ] + } + } + ] + } + }, + { + "name": "QueueAddMrEnclaveEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "queue", + "type": "pubkey" + }, + { + "name": "mr_enclave", + "type": { + "array": [ + "u8", + 32 + ] + } + } + ] + } + }, + { + "name": "QueueAddMrEnclaveParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "mr_enclave", + "type": { + "array": [ + "u8", + 32 + ] + } + } + ] + } + }, + { + "name": "QueueAllowSubsidiesParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "allow_subsidies", + "type": "u8" + } + ] + } + }, + { + "name": "QueueGarbageCollectParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "idx", + "type": "u32" + } + ] + } + }, + { + "name": "QueueInitDelegationGroupParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "QueueInitEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "queue", + "type": "pubkey" + } + ] + } + }, + { + "name": "QueueInitParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "allow_authority_override_after", + "type": "u32" + }, + { + "name": "require_authority_heartbeat_permission", + "type": "bool" + }, + { + "name": "require_usage_permissions", + "type": "bool" + }, + { + "name": "max_quote_verification_age", + "type": "u32" + }, + { + "name": "reward", + "type": "u32" + }, + { + "name": "node_timeout", + "type": "u32" + }, + { + "name": "recent_slot", + "type": "u64" + } + ] + } + }, + { + "name": "QueueRemoveMrEnclaveEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "queue", + "type": "pubkey" + }, + { + "name": "mr_enclave", + "type": { + "array": [ + "u8", + 32 + ] + } + } + ] + } + }, + { + "name": "QueueRemoveMrEnclaveParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "mr_enclave", + "type": { + "array": [ + "u8", + 32 + ] + } + } + ] + } + }, + { + "name": "QueueSetConfigsParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "authority", + "type": { + "option": "pubkey" + } + }, + { + "name": "reward", + "type": { + "option": "u32" + } + }, + { + "name": "node_timeout", + "type": { + "option": "i64" + } + } + ] + } + }, + { + "name": "Quote", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "enclave_signer", + "docs": [ + "The address of the signer generated within an enclave." + ], + "type": "pubkey" + }, + { + "name": "mr_enclave", + "docs": [ + "The quotes MRENCLAVE measurement dictating the contents of the secure enclave." + ], + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "verification_status", + "docs": [ + "The VerificationStatus of the quote." + ], + "type": "u8" + }, + { + "name": "padding1", + "type": { + "array": [ + "u8", + 7 + ] + } + }, + { + "name": "verification_timestamp", + "docs": [ + "The unix timestamp when the quote was last verified." + ], + "type": "i64" + }, + { + "name": "valid_until", + "docs": [ + "The unix timestamp when the quotes verification status expires." + ], + "type": "i64" + }, + { + "name": "quote_registry", + "docs": [ + "The off-chain registry where the verifiers quote can be located." + ], + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "registry_key", + "docs": [ + "Key to lookup the buffer data on IPFS or an alternative decentralized storage solution." + ], + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "secp256k1_signer", + "docs": [ + "The secp256k1 public key of the enclave signer. Derived from the enclave_signer." + ], + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "last_ed25519_signer", + "type": "pubkey" + }, + { + "name": "last_secp256k1_signer", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "last_rotate_slot", + "type": "u64" + }, + { + "name": "guardian_approvers", + "type": { + "array": [ + "pubkey", + 64 + ] + } + }, + { + "name": "guardian_approvers_len", + "type": "u8" + }, + { + "name": "padding2", + "type": { + "array": [ + "u8", + 7 + ] + } + }, + { + "name": "staging_ed25519_signer", + "type": "pubkey" + }, + { + "name": "staging_secp256k1_signer", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "_ebuf4", + "docs": [ + "Reserved." + ], + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "_ebuf3", + "type": { + "array": [ + "u8", + 128 + ] + } + }, + { + "name": "_ebuf2", + "type": { + "array": [ + "u8", + 256 + ] + } + }, + { + "name": "_ebuf1", + "type": { + "array": [ + "u8", + 512 + ] + } + } + ] + } + }, + { + "name": "RandomnessAccountData", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "authority", + "type": "pubkey" + }, + { + "name": "queue", + "type": "pubkey" + }, + { + "name": "seed_slothash", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "seed_slot", + "type": "u64" + }, + { + "name": "oracle", + "type": "pubkey" + }, + { + "name": "reveal_slot", + "type": "u64" + }, + { + "name": "value", + "type": { + "array": [ + "u8", + 32 + ] + } + }, + { + "name": "lut_slot", + "type": "u64" + }, + { + "name": "_ebuf3", + "type": { + "array": [ + "u8", + 24 + ] + } + }, + { + "name": "_ebuf2", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "_ebuf1", + "type": { + "array": [ + "u8", + 128 + ] + } + }, + { + "name": "active_secp256k1_signer", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "active_secp256k1_expiration", + "type": "i64" + } + ] + } + }, + { + "name": "RandomnessCommitEvent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "randomness_account", + "type": "pubkey" + }, + { + "name": "oracle", + "type": "pubkey" + }, + { + "name": "slot", + "type": "u64" + }, + { + "name": "slothash", + "type": { + "array": [ + "u8", + 32 + ] + } + } + ] + } + }, + { + "name": "RandomnessCommitParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "RandomnessInitParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "recent_slot", + "type": "u64" + } + ] + } + }, + { + "name": "RandomnessRevealParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "signature", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "recovery_id", + "type": "u8" + }, + { + "name": "value", + "type": { + "array": [ + "u8", + 32 + ] + } + } + ] + } + }, + { + "name": "State", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "bump", + "type": "u8" + }, + { + "name": "test_only_disable_mr_enclave_check", + "type": "u8" + }, + { + "name": "enable_staking", + "type": "u8" + }, + { + "name": "padding1", + "type": { + "array": [ + "u8", + 5 + ] + } + }, + { + "name": "authority", + "type": "pubkey" + }, + { + "name": "guardian_queue", + "type": "pubkey" + }, + { + "name": "reserved1", + "type": "u64" + }, + { + "name": "epoch_length", + "type": "u64" + }, + { + "name": "current_epoch", + "type": { + "defined": { + "name": "StateEpochInfo" + } + } + }, + { + "name": "next_epoch", + "type": { + "defined": { + "name": "StateEpochInfo" + } + } + }, + { + "name": "finalized_epoch", + "type": { + "defined": { + "name": "StateEpochInfo" + } + } + }, + { + "name": "stake_pool", + "type": "pubkey" + }, + { + "name": "stake_program", + "type": "pubkey" + }, + { + "name": "switch_mint", + "type": "pubkey" + }, + { + "name": "sgx_advisories", + "type": { + "array": [ + "u16", + 32 + ] + } + }, + { + "name": "advisories_len", + "type": "u8" + }, + { + "name": "padding2", + "type": "u8" + }, + { + "name": "flat_reward_cut_percentage", + "type": "u8" + }, + { + "name": "enable_slashing", + "type": "u8" + }, + { + "name": "subsidy_amount", + "type": "u32" + }, + { + "name": "lut_slot", + "type": "u64" + }, + { + "name": "_ebuf3", + "type": { + "array": [ + "u8", + 256 + ] + } + }, + { + "name": "_ebuf2", + "type": { + "array": [ + "u8", + 512 + ] + } + }, + { + "name": "_ebuf1", + "type": { + "array": [ + "u8", + 1024 + ] + } + } + ] + } + }, + { + "name": "StateEpochInfo", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "id", + "type": "u64" + }, + { + "name": "_reserved1", + "type": "u64" + }, + { + "name": "slot_end", + "type": "u64" + } + ] + } + }, + { + "name": "StateInitParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "StateSetConfigsParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "new_authority", + "type": "pubkey" + }, + { + "name": "test_only_disable_mr_enclave_check", + "type": "u8" + }, + { + "name": "stake_pool", + "type": "pubkey" + }, + { + "name": "stake_program", + "type": "pubkey" + }, + { + "name": "add_advisory", + "type": "u16" + }, + { + "name": "rm_advisory", + "type": "u16" + }, + { + "name": "epoch_length", + "type": "u32" + }, + { + "name": "reset_epochs", + "type": "bool" + }, + { + "name": "switch_mint", + "type": "pubkey" + }, + { + "name": "enable_staking", + "type": "u8" + }, + { + "name": "subsidy_amount", + "type": "u32" + } + ] + } + }, + { + "name": "Submission", + "type": { + "kind": "struct", + "fields": [ + { + "name": "value", + "type": "i128" + }, + { + "name": "signature", + "type": { + "array": [ + "u8", + 64 + ] + } + }, + { + "name": "recovery_id", + "type": "u8" + }, + { + "name": "offset", + "type": "u8" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/sdk/src/oracles/switchboardOnDemandClient.ts b/sdk/src/oracles/switchboardOnDemandClient.ts new file mode 100644 index 000000000..6d7995c37 --- /dev/null +++ b/sdk/src/oracles/switchboardOnDemandClient.ts @@ -0,0 +1,56 @@ +import { Connection, PublicKey } from '@solana/web3.js'; +import { OracleClient, OraclePriceData } from './types'; +import { BN } from '@coral-xyz/anchor'; +import switchboardOnDemandIdl from '../idl/switchboard_on_demand_30.json'; +import { PRICE_PRECISION_EXP } from '../constants/numericConstants'; +import { + BorshAccountsCoder as BorshAccountsCoder30, + Idl as Idl30, +} from '@coral-xyz/anchor-30'; + +const SB_PRECISION_EXP = new BN(18); +const SB_PRECISION = new BN(10).pow(SB_PRECISION_EXP.sub(PRICE_PRECISION_EXP)); + +type PullFeedAccountData = { + result: { + value: BN; + std_dev: BN; + mean: BN; + slot: BN; + range: BN; + }; + last_update_timestamp: BN; + max_variance: BN; + min_responses: BN; +}; + +export class SwitchboardOnDemandClient implements OracleClient { + connection: Connection; + coder: BorshAccountsCoder30; + + public constructor(connection: Connection) { + this.connection = connection; + this.coder = new BorshAccountsCoder30(switchboardOnDemandIdl as Idl30); + } + + public async getOraclePriceData( + pricePublicKey: PublicKey + ): Promise { + const accountInfo = await this.connection.getAccountInfo(pricePublicKey); + return this.getOraclePriceDataFromBuffer(accountInfo.data); + } + + public getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData { + const pullFeedAccountData = this.coder.decodeUnchecked( + 'PullFeedAccountData', + buffer + ) as PullFeedAccountData; + + return { + price: pullFeedAccountData.result.value.div(SB_PRECISION), + slot: pullFeedAccountData.result.slot, + confidence: pullFeedAccountData.result.range.div(SB_PRECISION), + hasSufficientNumberOfDataPoints: true, + }; + } +} diff --git a/sdk/src/types.ts b/sdk/src/types.ts index dd6a6cff3..05df531db 100644 --- a/sdk/src/types.ts +++ b/sdk/src/types.ts @@ -117,6 +117,7 @@ export class OracleSource { static readonly PYTH_STABLE_COIN = { pythStableCoin: {} }; static readonly PYTH_STABLE_COIN_PULL = { pythStableCoinPull: {} }; static readonly Prelaunch = { prelaunch: {} }; + static readonly SWITCHBOARD_ON_DEMAND = { switchboardOnDemand: {} }; } export class OrderType { diff --git a/sdk/yarn.lock b/sdk/yarn.lock index f375c740a..9023cb8a4 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -39,6 +39,39 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" + integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== + dependencies: + regenerator-runtime "^0.14.0" + +"@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" + integrity sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ== + dependencies: + "@coral-xyz/anchor-errors" "^0.30.1" + "@coral-xyz/borsh" "^0.30.1" + "@noble/hashes" "^1.3.1" + "@solana/web3.js" "^1.68.0" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^6.3.0" + cross-fetch "^3.1.5" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + pako "^2.0.3" + snake-case "^3.0.4" + superstruct "^0.15.4" + toml "^3.0.0" + +"@coral-xyz/anchor-errors@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz#bdfd3a353131345244546876eb4afc0e125bec30" + integrity sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ== + "@coral-xyz/anchor@0.28.0": version "0.28.0" resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.28.0.tgz#8345c3c9186a91f095f704d7b90cd256f7e8b2dc" @@ -96,6 +129,14 @@ bn.js "^5.1.2" buffer-layout "^1.2.0" +"@coral-xyz/borsh@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.30.1.tgz#869d8833abe65685c72e9199b8688477a4f6b0e3" + integrity sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -261,6 +302,13 @@ dependencies: "@noble/hashes" "1.4.0" +"@noble/curves@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== + dependencies: + "@noble/hashes" "1.4.0" + "@noble/ed25519@^1.7.1": version "1.7.3" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" @@ -567,7 +615,7 @@ buffer-layout "^1.2.0" dotenv "10.0.0" -"@solana/spl-token@^0.3.7": +"@solana/spl-token@^0.3.4", "@solana/spl-token@^0.3.7": version "0.3.11" resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.11.tgz#cdc10f9472b29b39c8983c92592cadd06627fb9a" integrity sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ== @@ -626,6 +674,27 @@ rpc-websockets "^9.0.0" superstruct "^1.0.4" +"@solana/web3.js@^1.54.0", "@solana/web3.js@^1.93.0", "@solana/web3.js@^1.95.0": + version "1.95.1" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.1.tgz#fcbbaf845309ff7ceb8d3726702799e8c27530e8" + integrity sha512-mRX/AjV6QbiOXpWcy5Rz1ZWEH2lVkwO7T0pcv9t97ACpv3/i3tPiqXwk0JIZgSR3wOSTiT26JfygnJH2ulS6dQ== + dependencies: + "@babel/runtime" "^7.24.8" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + "@solana/web3.js@~1.77.3": version "1.77.4" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.77.4.tgz#aad8c44a02ced319493308ef765a2b36a9e9fa8c" @@ -647,6 +716,21 @@ rpc-websockets "^7.5.1" superstruct "^0.14.2" +"@solworks/soltoolkit-sdk@^0.0.23": + version "0.0.23" + resolved "https://registry.yarnpkg.com/@solworks/soltoolkit-sdk/-/soltoolkit-sdk-0.0.23.tgz#ef32d0aa79f888bcf0f639d280005b2e97cdc624" + integrity sha512-O6lXT3EBR4gmcjt0/33i97VMHVEImwXGi+4TNrDDdifn3tyOUB7V6PR1VGxlavQb9hqmVai3xhedg/rmbQzX7w== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/spl-token" "^0.3.4" + "@solana/web3.js" "^1.54.0" + "@types/bn.js" "^5.1.0" + "@types/node" "^18.7.13" + "@types/node-fetch" "^2.6.2" + bn.js "^5.2.1" + decimal.js "^10.4.0" + typescript "^4.8.2" + "@swc/helpers@^0.5.11": version "0.5.11" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7" @@ -654,6 +738,39 @@ dependencies: tslib "^2.4.0" +"@switchboard-xyz/common@^2.4.2": + version "2.4.3" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-2.4.3.tgz#3411374cafa230c010b03a5669ddace8a46f3e17" + integrity sha512-0Ucvk753Co48qcWBRRME28zcYIhQgZgIuFUE5kXxq7zSf1k9dFVUOwgcoQVr6LhsK3YAvJdGo1n8JzcxEzCBZQ== + dependencies: + "@solana/web3.js" "^1.93.0" + axios "^1.7.2" + big.js "^6.2.1" + bn.js "^5.2.1" + bs58 "^5.0.0" + cron-validator "^1.3.1" + decimal.js "^10.4.3" + form-data "^4.0.0" + lodash "^4.17.21" + protobufjs "^7.2.6" + yaml "^2.2.1" + +"@switchboard-xyz/on-demand@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/on-demand/-/on-demand-1.2.1.tgz#47b6b6dfcc95c19a83a6a41f7805250eac6148ac" + integrity sha512-rzF8u+7hClsAYjVk+MGzkGsTqLYRmeN0aOgtvTXpvYScNyQh72+ht45lkiSHJ3/vvTuGCbnEZrbc+ZY51gl4pQ== + dependencies: + "@coral-xyz/anchor-30" "npm:@coral-xyz/anchor@0.30.1" + "@solana/web3.js" "^1.95.0" + "@solworks/soltoolkit-sdk" "^0.0.23" + "@switchboard-xyz/common" "^2.4.2" + axios "^1.2.0" + big.js "^6.2.1" + bs58 "^5.0.0" + js-yaml "^4.1.0" + node-cache "^5.1.2" + protobufjs "^7.2.6" + "@tsconfig/node10@^1.0.7": version "1.0.11" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" @@ -679,7 +796,7 @@ resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.2.2.tgz#69422ec9ef59df1330ccfde2106d9e1159a083c3" integrity sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA== -"@types/bn.js@^5.1.3": +"@types/bn.js@^5.1.0", "@types/bn.js@^5.1.3": version "5.1.5" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== @@ -735,6 +852,14 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== +"@types/node-fetch@^2.6.2": + version "2.6.11" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" + integrity sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + "@types/node@*", "@types/node@>=13.7.0": version "20.14.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.7.tgz#342cada27f97509eb8eb2dbc003edf21ce8ab5a8" @@ -754,6 +879,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.7.13": + version "18.19.41" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.41.tgz#27695cf2cac63f22c202b9217c0bcf3fb192a2f0" + integrity sha512-LX84pRJ+evD2e2nrgYCHObGWkiQJ1mL+meAgbvnwk/US6vmMY7S2ygBTGV2Jw91s9vUsLSXeDEkUHZIJGLrhsg== + dependencies: + undici-types "~5.26.4" + "@types/stack-utils@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" @@ -1011,6 +1143,11 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + available-typed-arrays@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" @@ -1018,6 +1155,15 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +axios@^1.2.0, axios@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1040,6 +1186,11 @@ base64-js@^1.3.1, base64-js@^1.5.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +big.js@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" + integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== + bigint-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" @@ -1245,6 +1396,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone@2.x: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1269,6 +1425,13 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@^12.1.0: version "12.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" @@ -1294,6 +1457,11 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +cron-validator@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cron-validator/-/cron-validator-1.3.1.tgz#8f2fe430f92140df77f91178ae31fc1e3a48a20e" + integrity sha512-C1HsxuPCY/5opR55G5/WNzyEGDWFVG+6GLrA+fW/sCTcP6A6NTjUP2AK7B8n2PyFs90kDG2qzwm8LMheADku6A== + cross-fetch@^3.1.5: version "3.1.8" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" @@ -1334,6 +1502,11 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decimal.js@^10.4.0, decimal.js@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + deep-eql@^4.1.3: version "4.1.4" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" @@ -1369,6 +1542,11 @@ delay@^5.0.0: resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + diff-sequences@^28.1.1: version "28.1.1" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" @@ -1748,6 +1926,11 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== +follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -1755,6 +1938,15 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2060,6 +2252,24 @@ jayson@^4.0.0, jayson@^4.1.0: uuid "^8.3.2" ws "^7.4.5" +jayson@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.1.tgz#282ff13d3cea09776db684b7eeca98c47b2fa99a" + integrity sha512-5ZWm4Q/0DHPyeMfAsrwViwUS2DMVsQgWh8bEEIVTkfb3DzHZ2L3G5WUnF+AKmGjjM9r1uAv73SaqC1/U4RL45w== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.5.10" + jest-diff@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" @@ -2136,7 +2346,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0: +js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -2278,6 +2488,18 @@ micromatch@^4.0.4: braces "^3.0.3" picomatch "^2.3.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + minimatch@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" @@ -2359,6 +2581,13 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-cache@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" + integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== + dependencies: + clone "2.x" + node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -2533,7 +2762,7 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -protobufjs@^7.2.5: +protobufjs@^7.2.5, protobufjs@^7.2.6: version "7.3.2" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.2.tgz#60f3b7624968868f6f739430cfbc8c9370e26df4" integrity sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== @@ -2551,6 +2780,11 @@ protobufjs@^7.2.5: "@types/node" ">=13.7.0" long "^5.0.0" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -2654,7 +2888,7 @@ rpc-websockets@^8.0.1: bufferutil "^4.0.1" utf-8-validate "^5.0.2" -rpc-websockets@^9.0.0: +rpc-websockets@^9.0.0, rpc-websockets@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.2.tgz#4c1568d00b8100f997379a363478f41f8f4b242c" integrity sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw== @@ -2857,6 +3091,11 @@ superstruct@^1.0.3, superstruct@^1.0.4: resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca" integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ== +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + supports-color@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -2979,7 +3218,7 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typescript@^4.9.5: +typescript@^4.8.2, typescript@^4.9.5: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -3084,7 +3323,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@^7.4.5: +ws@^7.4.5, ws@^7.5.10: version "7.5.10" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== @@ -3099,6 +3338,11 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yaml@^2.2.1: + version "2.4.5" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e" + integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== + yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" diff --git a/tests/switchboardOnDemand.ts b/tests/switchboardOnDemand.ts new file mode 100644 index 000000000..81e04d65d --- /dev/null +++ b/tests/switchboardOnDemand.ts @@ -0,0 +1,172 @@ +import * as anchor from '@coral-xyz/anchor'; +import { Program } from '@coral-xyz/anchor'; +import { AccountInfo, LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js'; +import { TestBulkAccountLoader } from '../sdk/src/accounts/testBulkAccountLoader'; +import { BankrunContextWrapper } from '../sdk/src/bankrun/bankrunConnection'; +import { initializeQuoteSpotMarket, mockUSDCMint } from './testHelpers'; +import { OracleSource, TestClient } from '../sdk/src'; +import { startAnchor } from 'solana-bankrun'; +import { + ORACLE_ADDRESS_1, + ORACLE_ADDRESS_1_DATA, + ORACLE_ADDRESS_2, + ORACLE_ADDRESS_2_DATA, + ORACLE_ADDRESS_3, + ORACLE_ADDRESS_3_DATA, + ORACLE_ADDRESS_4, + ORACLE_ADDRESS_4_DATA, + ORACLE_ADDRESS_5, + ORACLE_ADDRESS_5_DATA, + ORACLE_ADDRESS_6, + ORACLE_ADDRESS_6_DATA, + ORACLE_ADDRESS_7, + ORACLE_ADDRESS_7_DATA, + PULL_FEED_ACCOUNT_DATA, + PULL_FEED_ADDRESS, + QUEUE_ACCOUNT_DATA, + QUEUE_ADDRESS, +} from './switchboardOnDemandData'; + +const SB_ON_DEMAND_PID = 'SBondMDrcV3K4kxZR1HNVT7osZxAHVHgYXL5Ze1oMUv'; + +const PULL_FEED_ACCOUNT_INFO: AccountInfo = { + executable: false, + lamports: LAMPORTS_PER_SOL, + owner: new PublicKey(SB_ON_DEMAND_PID), + rentEpoch: 0, + data: Buffer.from(PULL_FEED_ACCOUNT_DATA, 'base64'), +}; + +const QUEUE_ACCOUNT_INFO: AccountInfo = { + executable: false, + lamports: LAMPORTS_PER_SOL, + owner: new PublicKey(SB_ON_DEMAND_PID), + rentEpoch: 0, + data: Buffer.from(QUEUE_ACCOUNT_DATA, 'base64'), +}; + +const getOracleAccountInfo = (accountData: string): AccountInfo => { + return { + executable: false, + lamports: LAMPORTS_PER_SOL, + owner: new PublicKey(SB_ON_DEMAND_PID), + rentEpoch: 0, + data: Buffer.from(accountData, 'base64'), + }; +}; + +describe('switchboard on demand', () => { + const chProgram = anchor.workspace.Drift as Program; + + let driftClient: TestClient; + + let bulkAccountLoader: TestBulkAccountLoader; + + let bankrunContextWrapper: BankrunContextWrapper; + let usdcMint; + + before(async () => { + // use bankrun builtin function to start solana program test + const context = await startAnchor( + '', + [ + { + name: 'switchboard_on_demand', + programId: new PublicKey(SB_ON_DEMAND_PID), + }, + ], + [ + // load account infos into banks client like this + { + address: PULL_FEED_ADDRESS, + info: PULL_FEED_ACCOUNT_INFO, + }, + { + address: QUEUE_ADDRESS, + info: QUEUE_ACCOUNT_INFO, + }, + { + address: ORACLE_ADDRESS_1, + info: getOracleAccountInfo(ORACLE_ADDRESS_1_DATA), + }, + { + address: ORACLE_ADDRESS_2, + info: getOracleAccountInfo(ORACLE_ADDRESS_2_DATA), + }, + { + address: ORACLE_ADDRESS_3, + info: getOracleAccountInfo(ORACLE_ADDRESS_3_DATA), + }, + { + address: ORACLE_ADDRESS_4, + info: getOracleAccountInfo(ORACLE_ADDRESS_4_DATA), + }, + { + address: ORACLE_ADDRESS_5, + info: getOracleAccountInfo(ORACLE_ADDRESS_5_DATA), + }, + { + address: ORACLE_ADDRESS_6, + info: getOracleAccountInfo(ORACLE_ADDRESS_6_DATA), + }, + { + address: ORACLE_ADDRESS_7, + info: getOracleAccountInfo(ORACLE_ADDRESS_7_DATA), + }, + ] + ); + + // wrap the context to use it with the test helpers + bankrunContextWrapper = new BankrunContextWrapper(context); + + // don't use regular bulk account loader, use test + bulkAccountLoader = new TestBulkAccountLoader( + bankrunContextWrapper.connection, + 'processed', + 1 + ); + + usdcMint = await mockUSDCMint(bankrunContextWrapper); + + driftClient = new TestClient({ + // call toConnection to avoid annoying type error + connection: bankrunContextWrapper.connection.toConnection(), + // make sure to avoid regular `provider.X`, they don't show as errors + wallet: bankrunContextWrapper.provider.wallet, + programID: chProgram.programId, + opts: { + commitment: 'confirmed', + }, + activeSubAccountId: 0, + perpMarketIndexes: [], + spotMarketIndexes: [0], + subAccountIds: [], // make sure to add [] for subaccounts or client will gpa + oracleInfos: [ + { + publicKey: PULL_FEED_ADDRESS, + source: OracleSource.SWITCHBOARD_ON_DEMAND, + }, + ], + // BANKRUN DOES NOT WORK WITH WEBSOCKET + accountSubscription: { + type: 'polling', + accountLoader: bulkAccountLoader, + }, + }); + + await driftClient.initialize(usdcMint.publicKey, true); + await driftClient.subscribe(); + + await initializeQuoteSpotMarket(driftClient, usdcMint.publicKey); + }); + + after(async () => { + await driftClient.unsubscribe(); + }); + + // it('post update', async () => { + // await driftClient.getPostSwitchboardOnDemandUpdateAtomicIx( + // PULL_FEED_ADDRESS + // ); + // }); +}); diff --git a/tests/switchboardOnDemandData.ts b/tests/switchboardOnDemandData.ts new file mode 100644 index 000000000..39e3126a7 --- /dev/null +++ b/tests/switchboardOnDemandData.ts @@ -0,0 +1,54 @@ +import { PublicKey } from '@solana/web3.js'; + +export const SB_ON_DEMAND_ACCOUNT_DATA = ''; + +export const PULL_FEED_ADDRESS = new PublicKey( + 'EZLBfnznMYKjFmaWYMEdhwnkiQF1WiP9jjTY6M8HpmGE' +); +export const PULL_FEED_ACCOUNT_DATA = + 'xBtsxArX2yhvXnVmrAAKlTDlax20lYV3Jxmuqu6ttNm9jCNXuI6eeBTDmRAAAAAAAAAAAAAAAAAAjEqO4Us2LgkAAAAAAAAA4+UTCQLD6cJ5F3iXafGuBd4Vz1BGWL6v7tLFmKlJs7cUw5kQAAAAAAAAAAAAAAAAAIxKjuFLNi4JAAAAAAAAAOfvAk6nVvi+7C6qQCNAcNo1Z1So7rKsahfDLRfD6Z+NFMOZEAAAAAAAAAAAAAAAAACMSo7hSzYuCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMvk0dDyZCl4A8z9IXIepPHoxrb5Yaa6GykmRSAPvuFthoBwaEMvGGoUfPCxOjAGfThiBOqdbIsEdDrC7wELB1JapKD9jPBdSUumh0cofC10oJxPpaEB37JhI68koBidk6q6mmYAAAAAAAAAAAAAAAAA8gUqAQAAAAEAAABTT0wvVVNEIFB5dGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA3JpmAAAAAKx5mRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjEqO4Us2LgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMSo7hSzYuCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIxKjuFLNi4JAAAAAAAAAACMSo7hSzYuCQAAAAAAAAADAAAAAAAAABTDmRAAAAAAFMOZEAAAAAAUw5kQAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='; + +export const QUEUE_ADDRESS = new PublicKey( + 'A43DyUGA7s8eXPxqEjJY6EBu1KKbNgfxF8h17VAHn13w' +); +export const QUEUE_ACCOUNT_DATA = + '2cI3f7hTigEd1I0O4f5wWbKGZQe4T19CWddAjIEuiL1iYKSRT3omBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADn7wJOp1b4vuwuqkAjQHDaNWdUqO6yrGoXwy0Xw'; + +export const ORACLE_ADDRESS_1 = new PublicKey( + 'GcNZRMqGSEyEULZnLDD3ParcHTgFBrNfUdUCDtThP55e' +); +export const ORACLE_ADDRESS_1_DATA = + 'gB4Q8apJNzZSJ8+YzqzzDQltMkvXMc1BRAVe8xbt0Fa1XZoDikelEdM0sOs9p20Km/h/mcwayuv8Awb+I3APCLyZ26R7czzxBAAAAAAAAACOzZ9mAAAAAA4IqWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPDEZCzq22PF75L9qKR//v912S3QZpzdEEbRbPgb/cwayk8UWxRwk7TAe5X+YfUvSbzXlW+4zew59sM/facDHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4UWV1VcXnNiMVBlkCndUkwOdalX0GZw+FyEv6PvZCPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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MzQuMTAzLnhpcC5zd2l0Y2hib2FyZC1vcmFjbGVzLnh5ei9tYWlubmV0AAAAAAAAAQAAAAAAAAABAAAAAAAAABLeABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='; + +export const ORACLE_ADDRESS_2 = new PublicKey( + 'BuZBFufhjGn1HDUCukJYognbeoQQW8ACZJq5sWoQPnGe' +); +export const ORACLE_ADDRESS_2_DATA = + 'gB4Q8apJNzZRJet6Ou1Z3ahP/9cdV9ykdZ2RKUQ3PPGhmbFS44NSNNM0sOs9p20Km/h/mcwayuv8Awb+I3APCLyZ26R7czzxBAAAAAAAAADPxJ9mAAAAAE//qGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArzaUk36ELwXp+Ea4qJCa0+NRpnAfb72Uj0pPKfkzPXqt+eT+Z7L6JkVT58yAcZXFCqvEpIHTTAdHlvFi5WnHzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWOzkz4ZGbPT0UQ/MX6PWYdv5BXdUAc9ppTDTxXv5HY4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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'; + +export const ORACLE_ADDRESS_3 = new PublicKey( + '3DNK48NH6jvay2nHBiW3wk5yWegD9C2crk2vd9aznRz6' +); +export const ORACLE_ADDRESS_3_DATA = + 'gB4Q8apJNzbbRyjE0DCSZU4nDrlOkzBC5nqJa6SPkw1yfUj5OSgsF9M0sOs9p20Km/h/mcwayuv8Awb+I3APCLyZ26R7czzxBAAAAAAAAACw1Z9mAAAAADAQqWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+8A0lL5O/Ict++8kW+lbi0Hj1Z6zlGxOvO2XsaEUMrAKLdC95ssBvr6y6Y+gAeUKxaQVbt803iHRcenezMXtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWOzkz4ZGbPT0UQ/MX6PWYdv5BXdUAc9ppTDTxXv5HY4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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Ny42Ni54aXAuc3dpdGNoYm9hcmQtb3JhY2xlcy54eXovbWFpbm5ldAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAHZF7A8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='; + +export const ORACLE_ADDRESS_4 = new PublicKey( + '8Vjo4QEbmB9QhhBu6QiTy66G1tw8WomtFVWECMi3a71y' +); +export const ORACLE_ADDRESS_4_DATA = + 'gB4Q8apJNzbvHthU78LGdxVNKt0hJSQCVi3ceM0ArbSEjK6Tin/IXbEs+luycPcvAo9yB3cA1VWa5nFYyKm+p7Pb7QeUa8y4BAAAAAAAAADmLJ9mAAAAAGZnqGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeB4yxFiG7RyJ7BOLVdCck1fAB0HAf0ew/Dy0txy8jy+mnpPqtO9bWgjDAPxXgt7qK8bQ7BJWdDe0ppPi1M+PlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWOzkz4ZGbPT0UQ/MX6PWYdv5BXdUAc9ppTDTxXv5HY4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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My1tbi5zd2l0Y2hib2FyZC54eXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAFPBFRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='; +export const ORACLE_ADDRESS_5 = new PublicKey( + 'CXyurDdbo9JR5Xh9QuknMJSsuGM3aQdsa38ZVrKSjp1c' +); +export const ORACLE_ADDRESS_5_DATA = + 'gB4Q8apJNzaiWYTibvKmtE5apvU6wyY/XnS9miPOux8n7v4jUaUHC9M0sOs9p20Km/h/mcwayuv8Awb+I3APCLyZ26R7czzxBAAAAAAAAAD8yZ9mAAAAAHwEqWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdT3+DuOrlObfhM3zyU+csa4dhc68UVj5O3xrXtd233QaiZrFwDr3oHYibN1VOYpeR2nOTbspTpLI59T1lw/MnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWOzkz4ZGbPT0UQ/MX6PWYdv5BXdUAc9ppTDTxXv5HY4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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'; +export const ORACLE_ADDRESS_6 = new PublicKey( + 'GLc9EQ5ARgnBJvM59wU6eNjaeAEeBa1Gj7jp8rT5NJ8v' +); +export const ORACLE_ADDRESS_6_DATA = + 'gB4Q8apJNzbzsYZXOCuTpboFcKXE/sMkdNG2KBov/94xETKSVwL//bEs+luycPcvAo9yB3cA1VWa5nFYyKm+p7Pb7QeUa8y4BAAAAAAAAAAVLZ9mAAAAAJVnqGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAet9eBXIaS0gy56IQTGIQt0jnFFiXpEqQR432dpzNqHB3Z8VuoNflHGblq6gGt+5bD0NOVASDieVZLvP7MXRHOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWOzkz4ZGbPT0UQ/MX6PWYdv5BXdUAc9ppTDTxXv5HY4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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Mi1tbi5zd2l0Y2hib2FyZC54eXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAA3AFRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='; +export const ORACLE_ADDRESS_7 = new PublicKey( + '7EyXLrFUtoRoYKhPBnRpjyo2nGTsfGgo2d7XcPb4TwPF' +); +export const ORACLE_ADDRESS_7_DATA = + 'gB4Q8apJNzbiF/kJGSrVJEo7TYcohdRJNxfsO8BHXGU+CF+r+f9UobEs+luycPcvAo9yB3cA1VWa5nFYyKm+p7Pb7QeUa8y4BAAAAAAAAADmLJ9mAAAAAGZnqGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgRV5VcxlQ1XcyerrpHSXC5WiDDaMhadb/W87/DEz4G7I4GJxtF3Ne7zApderYcuReksCnlPROrT/g7DU1oktgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWOzkz4ZGbPT0UQ/MX6PWYdv5BXdUAc9ppTDTxXv5HY4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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MS1tbi5zd2l0Y2hib2FyZC54eXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAJu6FRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='; diff --git a/yarn.lock b/yarn.lock index c6fc1a994..b1e31c98f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,6 +31,39 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.17.2", "@babel/runtime@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" + integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== + dependencies: + regenerator-runtime "^0.14.0" + +"@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" + integrity sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ== + dependencies: + "@coral-xyz/anchor-errors" "^0.30.1" + "@coral-xyz/borsh" "^0.30.1" + "@noble/hashes" "^1.3.1" + "@solana/web3.js" "^1.68.0" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^6.3.0" + cross-fetch "^3.1.5" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + pako "^2.0.3" + snake-case "^3.0.4" + superstruct "^0.15.4" + toml "^3.0.0" + +"@coral-xyz/anchor-errors@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz#bdfd3a353131345244546876eb4afc0e125bec30" + integrity sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ== + "@coral-xyz/anchor@0.29.0", "@coral-xyz/anchor@^0.29.0": version "0.29.0" resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.29.0.tgz#bd0be95bedfb30a381c3e676e5926124c310ff12" @@ -67,6 +100,14 @@ bn.js "^5.1.2" buffer-layout "^1.2.0" +"@coral-xyz/borsh@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.30.1.tgz#869d8833abe65685c72e9199b8688477a4f6b0e3" + integrity sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + "@ellipsis-labs/phoenix-sdk@1.4.2": version "1.4.2" resolved "https://registry.yarnpkg.com/@ellipsis-labs/phoenix-sdk/-/phoenix-sdk-1.4.2.tgz#3bfe987f00141924e629fb802ca9c1b8c932ebdb" @@ -96,6 +137,24 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@grpc/grpc-js@^1.8.13": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.11.1.tgz#a92f33e98f1959feffcd1b25a33b113d2c977b70" + integrity sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw== + dependencies: + "@grpc/proto-loader" "^0.7.13" + "@js-sdsl/ordered-map" "^4.4.2" + +"@grpc/proto-loader@^0.7.13": + version "0.7.13" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" + integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.2.5" + yargs "^17.7.2" + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -110,6 +169,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@js-sdsl/ordered-map@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" + integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== + "@metaplex-foundation/beet-solana@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz#4b37cda5c7f32ffd2bdd8b3164edc05c6463ab35" @@ -165,6 +229,13 @@ snake-case "^3.0.4" spok "^1.4.3" +"@noble/curves@^1.0.0", "@noble/curves@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== + dependencies: + "@noble/hashes" "1.4.0" + "@noble/curves@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" @@ -172,12 +243,12 @@ dependencies: "@noble/hashes" "1.4.0" -"@noble/ed25519@^1.7.0": +"@noble/ed25519@^1.7.0", "@noble/ed25519@^1.7.1": version "1.7.3" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== -"@noble/hashes@1.4.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": +"@noble/hashes@1.4.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== @@ -256,6 +327,59 @@ bn.js "^5.1.2" buffer-layout "^1.2.0" +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + "@pythnetwork/client@^2.5.1": version "2.21.0" resolved "https://registry.yarnpkg.com/@pythnetwork/client/-/client-2.21.0.tgz#01506bcdf2b62878fbe1368656bfe1c7581c72d7" @@ -265,6 +389,34 @@ "@coral-xyz/borsh" "^0.28.0" buffer "^6.0.1" +"@pythnetwork/price-service-sdk@>=1.6.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.7.1.tgz#dbfc8a8c2189f526346c1f79ec3995e89b690700" + integrity sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ== + dependencies: + bn.js "^5.2.1" + +"@pythnetwork/pyth-solana-receiver@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@pythnetwork/pyth-solana-receiver/-/pyth-solana-receiver-0.8.0.tgz#d7bf3c5c97a0f0eab8ac19f53b11664117e1152d" + integrity sha512-5lhLtggAqsiHtffTPM8vcKJmhBdxzidBmiNNUlqPyg9XmhZ4Z+roY0dfzluEoX5xer9rEA1ThsBpX0bG1DRIGA== + dependencies: + "@coral-xyz/anchor" "^0.29.0" + "@noble/hashes" "^1.4.0" + "@pythnetwork/price-service-sdk" ">=1.6.0" + "@pythnetwork/solana-utils" "*" + "@solana/web3.js" "^1.90.0" + +"@pythnetwork/solana-utils@*": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@pythnetwork/solana-utils/-/solana-utils-0.4.2.tgz#3e220eed518c02ad702ebb023488afd7c5649a87" + integrity sha512-hKo7Bcs/kDWA5Fnqhg9zJSB94NMoUDIDjHjSi/uvZOzwizISUQI6oY3LWd2CXzNh4f8djjY2BS5iNHaM4cm8Bw== + dependencies: + "@coral-xyz/anchor" "^0.29.0" + "@solana/web3.js" "^1.90.0" + bs58 "^5.0.0" + jito-ts "^3.0.1" + "@solana/buffer-layout-utils@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" @@ -371,7 +523,7 @@ buffer-layout "^1.2.0" dotenv "10.0.0" -"@solana/spl-token@^0.3.7": +"@solana/spl-token@^0.3.4", "@solana/spl-token@^0.3.7": version "0.3.11" resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.11.tgz#cdc10f9472b29b39c8983c92592cadd06627fb9a" integrity sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ== @@ -431,6 +583,63 @@ rpc-websockets "^9.0.0" superstruct "^1.0.4" +"@solana/web3.js@^1.54.0", "@solana/web3.js@^1.90.0", "@solana/web3.js@^1.93.0", "@solana/web3.js@^1.95.0": + version "1.95.1" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.1.tgz#fcbbaf845309ff7ceb8d3726702799e8c27530e8" + integrity sha512-mRX/AjV6QbiOXpWcy5Rz1ZWEH2lVkwO7T0pcv9t97ACpv3/i3tPiqXwk0JIZgSR3wOSTiT26JfygnJH2ulS6dQ== + dependencies: + "@babel/runtime" "^7.24.8" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@solana/web3.js@~1.77.3": + version "1.77.4" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.77.4.tgz#aad8c44a02ced319493308ef765a2b36a9e9fa8c" + integrity sha512-XdN0Lh4jdY7J8FYMyucxCwzn6Ga2Sr1DHDWRbqVzk7ZPmmpSPOVWHzO67X1cVT+jNi1D6gZi2tgjHgDPuj6e9Q== + dependencies: + "@babel/runtime" "^7.12.5" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" + "@solana/buffer-layout" "^4.0.0" + agentkeepalive "^4.2.1" + bigint-buffer "^1.1.5" + bn.js "^5.0.0" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.0" + node-fetch "^2.6.7" + rpc-websockets "^7.5.1" + superstruct "^0.14.2" + +"@solworks/soltoolkit-sdk@^0.0.23": + version "0.0.23" + resolved "https://registry.yarnpkg.com/@solworks/soltoolkit-sdk/-/soltoolkit-sdk-0.0.23.tgz#ef32d0aa79f888bcf0f639d280005b2e97cdc624" + integrity sha512-O6lXT3EBR4gmcjt0/33i97VMHVEImwXGi+4TNrDDdifn3tyOUB7V6PR1VGxlavQb9hqmVai3xhedg/rmbQzX7w== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/spl-token" "^0.3.4" + "@solana/web3.js" "^1.54.0" + "@types/bn.js" "^5.1.0" + "@types/node" "^18.7.13" + "@types/node-fetch" "^2.6.2" + bn.js "^5.2.1" + decimal.js "^10.4.0" + typescript "^4.8.2" + "@swc/helpers@^0.5.11": version "0.5.11" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7" @@ -438,6 +647,44 @@ dependencies: tslib "^2.4.0" +"@switchboard-xyz/common@^2.4.2": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-2.4.4.tgz#4896d526d67c10a8131e5ea4044a2e43a7a8b999" + integrity sha512-Pcny+VzenXPCuCOj1W8lBm/S7bDSc1CU6T35Tt0o2bTDnzHgVGtYJ/OLqgPhqGhZ/fjMwrRiCPPIkuavK0Ik3Q== + dependencies: + "@solana/web3.js" "^1.93.0" + axios "^1.7.2" + big.js "^6.2.1" + bn.js "^5.2.1" + bs58 "^5.0.0" + cron-validator "^1.3.1" + decimal.js "^10.4.3" + lodash "^4.17.21" + protobufjs "^7.2.6" + +"@switchboard-xyz/on-demand@^1.2.10": + version "1.2.10" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/on-demand/-/on-demand-1.2.10.tgz#d3d7a5480bfd3dfff5fb63dc2f78c33952b2f6cc" + integrity sha512-OVfkiZbMu0Bcl4PBB8lH5KhwP0XI94JW1evDzUX1EgQY6XiY0+448qQGDgPwbsAzai6HVmkmmvPFL0jWKpfXNA== + dependencies: + "@coral-xyz/anchor-30" "npm:@coral-xyz/anchor@0.30.1" + "@solana/web3.js" "^1.95.0" + "@solworks/soltoolkit-sdk" "^0.0.23" + "@switchboard-xyz/common" "^2.4.2" + axios "^1.2.0" + big.js "^6.2.1" + bs58 "^5.0.0" + js-yaml "^4.1.0" + node-cache "^5.1.2" + protobufjs "^7.2.6" + +"@types/bn.js@^5.1.0": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + "@types/connect@^3.4.33": version "3.4.38" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" @@ -455,6 +702,14 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323" integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== +"@types/node-fetch@^2.6.2": + version "2.6.11" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" + integrity sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + "@types/node@*": version "20.14.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.7.tgz#342cada27f97509eb8eb2dbc003edf21ce8ab5a8" @@ -462,6 +717,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@>=13.7.0": + version "20.14.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.12.tgz#129d7c3a822cb49fc7ff661235f19cfefd422b49" + integrity sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ== + dependencies: + undici-types "~5.26.4" + "@types/node@^12.12.54": version "12.20.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" @@ -474,6 +736,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.7.13": + version "18.19.42" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.42.tgz#b54ed4752c85427906aab40917b0f7f3d724bf72" + integrity sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg== + dependencies: + undici-types "~5.26.4" + "@types/uuid@^8.3.4": version "8.3.4" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" @@ -581,7 +850,7 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -agentkeepalive@^4.2.1, agentkeepalive@^4.5.0: +agentkeepalive@^4.2.1, agentkeepalive@^4.3.0, agentkeepalive@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== @@ -608,6 +877,11 @@ ajv@^8.0.1: require-from-string "^2.0.2" uri-js "^4.4.1" +anchor-bankrun@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/anchor-bankrun/-/anchor-bankrun-0.3.0.tgz#3789fcecbc201a2334cff228b99cc0da8ef0167e" + integrity sha512-PYBW5fWX+iGicIS5MIM/omhk1tQPUc0ELAnI/IkLKQJ6d75De/CQRh8MF2bU/TgGyFi6zEel80wUe3uRol9RrQ== + ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -644,6 +918,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -670,6 +949,11 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + available-typed-arrays@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" @@ -677,6 +961,15 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +axios@^1.2.0, axios@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -699,6 +992,11 @@ base64-js@^1.3.1, base64-js@^1.5.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +big.js@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" + integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== + bigint-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" @@ -874,6 +1172,20 @@ check-error@^1.0.3: dependencies: get-func-name "^2.0.2" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@2.x: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -898,6 +1210,13 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@^12.0.0: version "12.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" @@ -923,6 +1242,11 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +cron-validator@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cron-validator/-/cron-validator-1.3.1.tgz#8f2fe430f92140df77f91178ae31fc1e3a48a20e" + integrity sha512-C1HsxuPCY/5opR55G5/WNzyEGDWFVG+6GLrA+fW/sCTcP6A6NTjUP2AK7B8n2PyFs90kDG2qzwm8LMheADku6A== + cross-fetch@^3.1.5: version "3.1.8" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" @@ -960,6 +1284,11 @@ debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: dependencies: ms "2.1.2" +decimal.js@^10.4.0, decimal.js@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + deep-eql@^4.1.3: version "4.1.4" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" @@ -995,6 +1324,11 @@ delay@^5.0.0: resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -1022,6 +1356,11 @@ dotenv@10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dotenv@^16.0.3: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -1059,6 +1398,11 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1309,6 +1653,11 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== +follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -1316,6 +1665,15 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1331,6 +1689,11 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" @@ -1577,6 +1940,24 @@ jayson@^3.4.4: uuid "^8.3.2" ws "^7.4.5" +jayson@^4.0.0, jayson@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.1.tgz#282ff13d3cea09776db684b7eeca98c47b2fa99a" + integrity sha512-5ZWm4Q/0DHPyeMfAsrwViwUS2DMVsQgWh8bEEIVTkfb3DzHZ2L3G5WUnF+AKmGjjM9r1uAv73SaqC1/U4RL45w== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.5.10" + jayson@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.0.tgz#60dc946a85197317f2b1439d672a8b0a99cea2f9" @@ -1595,6 +1976,20 @@ jayson@^4.1.0: uuid "^8.3.2" ws "^7.4.5" +jito-ts@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jito-ts/-/jito-ts-3.0.1.tgz#24126389896e042c26d303c4e802064b249ed27e" + integrity sha512-TSofF7KqcwyaWGjPaSYC8RDoNBY1TPRNBHdrw24bdIi7mQ5bFEDdYK3D//llw/ml8YDvcZlgd644WxhjLTS9yg== + dependencies: + "@grpc/grpc-js" "^1.8.13" + "@noble/ed25519" "^1.7.1" + "@solana/web3.js" "~1.77.3" + agentkeepalive "^4.3.0" + dotenv "^16.0.3" + jayson "^4.0.0" + node-fetch "^2.6.7" + superstruct "^1.0.3" + js-sha256@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" @@ -1613,6 +2008,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -1677,6 +2079,11 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -1692,11 +2099,16 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@^4.17.20, lodash@^4.17.3: +lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +long@^5.0.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + loupe@^2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" @@ -1734,6 +2146,18 @@ micromatch@^4.0.4: braces "^3.0.3" picomatch "^2.3.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -1771,7 +2195,14 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@2, node-fetch@^2.6.12, node-fetch@^2.7.0: +node-cache@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" + integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== + dependencies: + clone "2.x" + +node-fetch@2, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -1899,6 +2330,29 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +protobufjs@^7.2.5, protobufjs@^7.2.6: + version "7.3.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.2.tgz#60f3b7624968868f6f739430cfbc8c9370e26df4" + integrity sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -1919,6 +2373,11 @@ regexpp@^3.1.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" @@ -1941,7 +2400,20 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rpc-websockets@^7.5.0: +rpc-websockets@7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.1.tgz#e0a05d525a97e7efc31a0617f093a13a2e10c401" + integrity sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w== + dependencies: + "@babel/runtime" "^7.17.2" + eventemitter3 "^4.0.7" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +rpc-websockets@^7.5.0, rpc-websockets@^7.5.1: version "7.11.2" resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.11.2.tgz#582910c425b9f2c860327481c1d1e0e431bf4a6d" integrity sha512-pL9r5N6AVHlMN/vT98+fcO+5+/UcPLf/4tq+WUaid/PPUGS/ttJ3y8e9IqmaWKtShNAysMSjkczuEA49NuV7UQ== @@ -1953,7 +2425,7 @@ rpc-websockets@^7.5.0: bufferutil "^4.0.1" utf-8-validate "^5.0.2" -rpc-websockets@^9.0.0: +rpc-websockets@^9.0.0, rpc-websockets@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.2.tgz#4c1568d00b8100f997379a363478f41f8f4b242c" integrity sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw== @@ -2041,6 +2513,45 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" +solana-bankrun-darwin-arm64@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-arm64/-/solana-bankrun-darwin-arm64-0.3.0.tgz#749ce9858bf61c4244a06c4e6d99338daa154909" + integrity sha512-+NbDncf0U6l3knuacRBiqpjZ2DSp+5lZaAU518gH7/x6qubbui/d000STaIBK+uNTPBS/AL/bCN+7PkXqmA3lA== + +solana-bankrun-darwin-universal@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-universal/-/solana-bankrun-darwin-universal-0.3.0.tgz#2d2932282bb1fe719430f2f53060cad3104ebb26" + integrity sha512-1/F0xdMa4qvc5o6z16FCCbZ5jbdvKvxpx5kyPcMWRiRPwyvi+zltMxciPAYMlg3wslQqGz88uFhrBEzq2eTumQ== + +solana-bankrun-darwin-x64@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-x64/-/solana-bankrun-darwin-x64-0.3.0.tgz#c814a13702a12ba085c32b20a66a063cffbe74a1" + integrity sha512-U6CANjkmMl+lgNA7UH0GKs5V7LtVIUDzJBZefGGqLfqUNv3EjA/PrrToM0hAOWJgkxSwdz6zW+p5sw5FmnbXtg== + +solana-bankrun-linux-x64-gnu@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-gnu/-/solana-bankrun-linux-x64-gnu-0.3.0.tgz#5c5dec2d4e01f755c9cf8fe9f791a8085bf94f51" + integrity sha512-qJSkCFs0k2n4XtTnyxGMiZsuqO2TiqTYgWjQ+3mZhGNUAMys/Vq8bd7/SyBm6RR7EfVuRXRxZvh+F8oKZ77V4w== + +solana-bankrun-linux-x64-musl@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-musl/-/solana-bankrun-linux-x64-musl-0.3.0.tgz#0df9434f03d1aa704b085f82e40cc6129b8eea09" + integrity sha512-xsS2CS2xb1Sw4ivNXM0gPz/qpW9BX0neSvt/pnok5L330Nu9xlTnKAY8FhzzqOP9P9sJlGRM787Y6d0yYwt6xQ== + +solana-bankrun@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/solana-bankrun/-/solana-bankrun-0.3.0.tgz#1183af008e00c565d6708f0c051588589e315d1c" + integrity sha512-YkH7sa8TB/AoRPzG17CXJtYsRIQHEkEqGLz1Vwc13taXhDBkjO7z6NI5JYw7n0ybRymDHwMYTc7sd+5J40TyVQ== + dependencies: + "@solana/web3.js" "^1.68.0" + bs58 "^4.0.1" + optionalDependencies: + solana-bankrun-darwin-arm64 "0.3.0" + solana-bankrun-darwin-universal "0.3.0" + solana-bankrun-darwin-x64 "0.3.0" + solana-bankrun-linux-x64-gnu "0.3.0" + solana-bankrun-linux-x64-musl "0.3.0" + spok@^1.4.3: version "1.5.5" resolved "https://registry.yarnpkg.com/spok/-/spok-1.5.5.tgz#a51f7f290a53131d7b7a922dfedc461dda0aed72" @@ -2054,7 +2565,7 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2100,11 +2611,16 @@ superstruct@^0.15.4: resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== -superstruct@^1.0.4: +superstruct@^1.0.3, superstruct@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca" integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ== +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -2216,7 +2732,7 @@ typedoc@0.23.23: minimatch "^5.1.1" shiki "^0.11.1" -typescript@^4.9: +typescript@^4.8.2, typescript@^4.9: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -2307,12 +2823,21 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@^7.4.5: +ws@^7.4.5, ws@^7.5.10: version "7.5.10" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== @@ -2322,7 +2847,30 @@ ws@^8.5.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + zstddec@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.1.0.tgz#7050f3f0e0c3978562d0c566b3e5a427d2bad7ec" - integrity sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg== \ No newline at end of file + integrity sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==