diff --git a/package.json b/package.json index 4b30b26fde..61b1b4ed67 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,6 @@ }, "dependencies": { "@ellipsis-labs/phoenix-sdk": "1.4.2", - "@pythnetwork/pyth-solana-receiver": "0.8.0", "@switchboard-xyz/common": "3.0.14", "@switchboard-xyz/on-demand": "2.4.1", "anchor-bankrun": "0.3.0", diff --git a/sdk/package.json b/sdk/package.json index e230f4a403..99348405e5 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -51,7 +51,6 @@ "@project-serum/serum": "0.13.65", "@pythnetwork/client": "2.5.3", "@pythnetwork/price-service-sdk": "1.7.1", - "@pythnetwork/pyth-solana-receiver": "0.7.0", "@solana/spl-token": "0.4.13", "@solana/web3.js": "1.98.0", "@switchboard-xyz/common": "3.0.14", @@ -150,9 +149,9 @@ "has-ansi": "<6.0.1" }, "browser": { - "helius-laserstream": false, - "@triton-one/yellowstone-grpc": false, "@grpc/grpc-js": false, + "@triton-one/yellowstone-grpc": false, + "helius-laserstream": false, "zstddec": false } } diff --git a/sdk/src/driftClient.ts b/sdk/src/driftClient.ts index a5dbb37544..69a284244f 100644 --- a/sdk/src/driftClient.ts +++ b/sdk/src/driftClient.ts @@ -185,17 +185,7 @@ import { trimVaaSignatures, } from './math/oracles'; import { TxHandler } from './tx/txHandler'; -import { - DEFAULT_RECEIVER_PROGRAM_ID, - wormholeCoreBridgeIdl, -} from '@pythnetwork/pyth-solana-receiver'; import { parseAccumulatorUpdateData } from '@pythnetwork/price-service-sdk'; -import { - DEFAULT_WORMHOLE_PROGRAM_ID, - getGuardianSetPda, -} from '@pythnetwork/pyth-solana-receiver/lib/address'; -import { WormholeCoreBridgeSolana } from '@pythnetwork/pyth-solana-receiver/lib/idl/wormhole_core_bridge_solana'; -import { PythSolanaReceiver } from '@pythnetwork/pyth-solana-receiver/lib/idl/pyth_solana_receiver'; import { getFeedIdUint8Array, trimFeedId } from './util/pythOracleUtils'; import { createMinimalEd25519VerifyIx } from './util/ed25519Utils'; import { @@ -221,6 +211,14 @@ import { } from './math/builder'; import { TitanClient, SwapMode as TitanSwapMode } from './titan/titanClient'; import { UnifiedSwapClient } from './swap/UnifiedSwapClient'; +import { + DEFAULT_RECEIVER_PROGRAM_ID, + WORMHOLE_CORE_BRIDGE_SOLANA_IDL, + DEFAULT_WORMHOLE_PROGRAM_ID, + getGuardianSetPda, + WormholeCoreBridgeSolana, + PythSolanaReceiver, +} from './pyth'; /** * Union type for swap clients (Titan and Jupiter) - Legacy type @@ -11208,7 +11206,7 @@ export class DriftClient { if (this.wormholeProgram === undefined) { this.wormholeProgram = new Program( - wormholeCoreBridgeIdl, + WORMHOLE_CORE_BRIDGE_SOLANA_IDL, DEFAULT_WORMHOLE_PROGRAM_ID, this.provider ); diff --git a/sdk/src/oracles/pythPullClient.ts b/sdk/src/oracles/pythPullClient.ts index 0359b35928..100c010a71 100644 --- a/sdk/src/oracles/pythPullClient.ts +++ b/sdk/src/oracles/pythPullClient.ts @@ -7,13 +7,12 @@ import { QUOTE_PRECISION, TEN, } from '../constants/numericConstants'; -import { - PythSolanaReceiverProgram, - pythSolanaReceiverIdl, -} from '@pythnetwork/pyth-solana-receiver'; -import { PriceUpdateAccount } from '@pythnetwork/pyth-solana-receiver/lib/PythSolanaReceiver'; + +import pythSolanaReceiverIdl from '../idl/pyth_solana_receiver.json'; +import { PythSolanaReceiver as PythSolanaReceiverProgram } from '../pyth'; import { DRIFT_ORACLE_RECEIVER_ID } from '../config'; import { Wallet } from '../wallet'; +import { PriceUpdateAccount } from '../pyth'; export class PythPullClient implements OracleClient { private connection: Connection; diff --git a/sdk/src/pyth/constants.ts b/sdk/src/pyth/constants.ts new file mode 100644 index 0000000000..89db604ea9 --- /dev/null +++ b/sdk/src/pyth/constants.ts @@ -0,0 +1,9 @@ +import { PublicKey } from '@solana/web3.js'; + +export const DEFAULT_WORMHOLE_PROGRAM_ID = new PublicKey( + 'HDwcJBJXjL9FpJ7UBsYBtaDjsBUhuLCUYoz3zr8SWWaQ' +); + +export const DEFAULT_RECEIVER_PROGRAM_ID = new PublicKey( + 'rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ' +); diff --git a/sdk/src/pyth/index.ts b/sdk/src/pyth/index.ts new file mode 100644 index 0000000000..6ebe70388c --- /dev/null +++ b/sdk/src/pyth/index.ts @@ -0,0 +1,11 @@ +export { + WormholeCoreBridgeSolana, + WORMHOLE_CORE_BRIDGE_SOLANA_IDL, + PythSolanaReceiver, + PriceUpdateAccount, +} from './types'; +export { + DEFAULT_WORMHOLE_PROGRAM_ID, + DEFAULT_RECEIVER_PROGRAM_ID, +} from './constants'; +export { getGuardianSetPda } from './utils'; diff --git a/sdk/src/pyth/types.ts b/sdk/src/pyth/types.ts new file mode 100644 index 0000000000..6e0bbc6be3 --- /dev/null +++ b/sdk/src/pyth/types.ts @@ -0,0 +1,4453 @@ +import type { IdlAccounts } from '@coral-xyz/anchor'; + +export type WormholeCoreBridgeSolana = { + version: '0.0.1-alpha.5'; + name: 'wormhole_core_bridge_solana'; + constants: [ + { + name: 'SOLANA_CHAIN'; + type: 'u16'; + value: '1'; + }, + { + name: 'FEE_COLLECTOR_SEED_PREFIX'; + type: 'bytes'; + value: '[102, 101, 101, 95, 99, 111, 108, 108, 101, 99, 116, 111, 114]'; + }, + { + name: 'UPGRADE_SEED_PREFIX'; + type: 'bytes'; + value: '[117, 112, 103, 114, 97, 100, 101]'; + }, + { + name: 'PROGRAM_EMITTER_SEED_PREFIX'; + type: 'bytes'; + value: '[101, 109, 105, 116, 116, 101, 114]'; + }, + { + name: 'MAX_MESSAGE_PAYLOAD_SIZE'; + type: { + defined: 'usize'; + }; + value: '30 * 1_024'; + }, + ]; + instructions: [ + { + name: 'initMessageV1'; + docs: [ + 'Processor for initializing a new draft [PostedMessageV1](crate::state::PostedMessageV1)', + 'account for writing. The emitter authority is established at this point and the payload size', + 'is inferred from the size of the created account. This instruction handler also allows an', + "integrator to publish Wormhole messages using his program's ID as the emitter address", + '(by passing `Some(crate::ID)` to the [cpi_program_id](InitMessageV1Args::cpi_program_id)', + 'argument). **Be aware that the emitter authority\'s seeds must only be \\[b"emitter"\\] in this', + 'case.**', + '', + 'This instruction should be followed up with `write_message_v1` and `finalize_message_v1` to', + 'write and indicate that the message is ready for publishing respectively (to prepare it for', + 'publishing via the', + '[post message instruction](crate::legacy::instruction::LegacyInstruction::PostMessage)).', + '', + 'NOTE: If you wish to publish a small message (one where the data does not overflow the', + 'Solana transaction size), it is recommended that you use an [sdk](crate::sdk::cpi) method to', + 'either prepare your message or post a message as a program ID emitter.', + ]; + accounts: [ + { + name: 'emitterAuthority'; + isMut: false; + isSigner: true; + docs: [ + 'This authority is the only one who can write to the draft message account.', + ]; + }, + { + name: 'draftMessage'; + isMut: true; + isSigner: false; + docs: ['Bridge.']; + }, + ]; + args: [ + { + name: 'args'; + type: { + defined: 'InitMessageV1Args'; + }; + }, + ]; + }, + { + name: 'writeMessageV1'; + docs: [ + 'Processor used to write to a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'This instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ]; + accounts: [ + { + name: 'emitterAuthority'; + isMut: false; + isSigner: true; + }, + { + name: 'draftMessage'; + isMut: true; + isSigner: false; + docs: ['only be published when the message is finalized.']; + }, + ]; + args: [ + { + name: 'args'; + type: { + defined: 'WriteMessageV1Args'; + }; + }, + ]; + }, + { + name: 'finalizeMessageV1'; + docs: [ + 'Processor used to finalize a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'Once finalized, this message account cannot be written to again. A finalized message is the', + 'only state the legacy post message instruction can accept before publishing. This', + 'instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ]; + accounts: [ + { + name: 'emitterAuthority'; + isMut: false; + isSigner: true; + }, + { + name: 'draftMessage'; + isMut: true; + isSigner: false; + docs: ['only be published when the message is finalized.']; + }, + ]; + args: []; + }, + { + name: 'closeMessageV1'; + docs: [ + 'Processor used to process a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'This instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ]; + accounts: [ + { + name: 'emitterAuthority'; + isMut: false; + isSigner: true; + }, + { + name: 'draftMessage'; + isMut: true; + isSigner: false; + docs: ['only be published when the message is finalized.']; + }, + { + name: 'closeAccountDestination'; + isMut: true; + isSigner: false; + }, + ]; + args: []; + }, + { + name: 'initEncodedVaa'; + docs: [ + 'Processor used to intialize a created account as [EncodedVaa](crate::state::EncodedVaa). An', + 'authority (the write authority) is established with this instruction.', + ]; + accounts: [ + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + docs: [ + 'The authority who can write to the VAA account when it is being processed.', + ]; + }, + { + name: 'encodedVaa'; + isMut: true; + isSigner: false; + docs: ['Bridge.']; + }, + ]; + args: []; + }, + { + name: 'closeEncodedVaa'; + docs: [ + 'Processor used to close an [EncodedVaa](crate::state::EncodedVaa). This instruction requires', + 'an authority (the write authority) to interact witht he encoded VAA account.', + ]; + accounts: [ + { + name: 'writeAuthority'; + isMut: true; + isSigner: true; + docs: [ + 'This account is only required to be mutable for the `CloseVaaAccount` directive. This', + 'authority is the same signer that originally created the VAA accounts, so he is the one that', + 'will receive the lamports back for the closed accounts.', + ]; + }, + { + name: 'encodedVaa'; + isMut: true; + isSigner: false; + docs: ['written to and then verified.']; + }, + ]; + args: []; + }, + { + name: 'writeEncodedVaa'; + docs: [ + 'Processor used to write to an [EncodedVaa](crate::state::EncodedVaa) account. This', + 'instruction requires an authority (the write authority) to interact with the encoded VAA', + 'account.', + ]; + accounts: [ + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + docs: [ + 'The only authority that can write to the encoded VAA account.', + ]; + }, + { + name: 'draftVaa'; + isMut: true; + isSigner: false; + docs: ['written to and then verified.']; + }, + ]; + args: [ + { + name: 'args'; + type: { + defined: 'WriteEncodedVaaArgs'; + }; + }, + ]; + }, + { + name: 'verifyEncodedVaaV1'; + docs: [ + 'Processor used to verify an [EncodedVaa](crate::state::EncodedVaa) account as a version 1', + 'VAA (guardian signatures attesting to this observation). This instruction requires an', + 'authority (the write authority) to interact with the encoded VAA account.', + ]; + accounts: [ + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + }, + { + name: 'draftVaa'; + isMut: true; + isSigner: false; + docs: ['written to and then verified.']; + }, + { + name: 'guardianSet'; + isMut: false; + isSigner: false; + docs: [ + 'Guardian set account, which should be the same one that was used to attest for the VAA. The', + 'signatures in the encoded VAA are verified against this guardian set.', + ]; + }, + ]; + args: []; + }, + { + name: 'postVaaV1'; + docs: [ + 'Processor used to close an [EncodedVaa](crate::state::EncodedVaa) account to create a', + '[PostedMessageV1](crate::state::PostedMessageV1) account in its place.', + '', + 'NOTE: Because the legacy verify signatures instruction was not required for the Posted VAA', + 'account to exist, the encoded [SignatureSet](crate::state::SignatureSet) is the default', + '[Pubkey].', + ]; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + docs: [ + 'Payer to create the posted VAA account. This instruction allows anyone with an encoded VAA', + 'to create a posted VAA account.', + ]; + }, + { + name: 'encodedVaa'; + isMut: false; + isSigner: false; + docs: [ + 'Encoded VAA, whose body will be serialized into the posted VAA account.', + '', + 'NOTE: This instruction handler only exists to support integrators that still rely on posted', + 'VAA accounts. While we encourage integrators to use the encoded VAA account instead, we', + 'allow a pathway to convert the encoded VAA into a posted VAA. However, the payload is', + 'restricted to 9.5KB, which is much larger than what was possible with the old implementation', + 'using the legacy post vaa instruction. The Core Bridge program will not support posting VAAs', + 'larger than this payload size.', + ]; + }, + { + name: 'postedVaa'; + isMut: true; + isSigner: false; + }, + { + name: 'systemProgram'; + isMut: false; + isSigner: false; + }, + ]; + args: []; + }, + { + name: 'closeSignatureSet'; + docs: [ + 'Processor used to close a [SignatureSet](crate::state::SignatureSet), which was used to', + 'verify the VAA using the legacy parse and verify procedure.', + ]; + accounts: [ + { + name: 'solDestination'; + isMut: true; + isSigner: true; + }, + { + name: 'postedVaa'; + isMut: false; + isSigner: false; + docs: ['Posted VAA.']; + }, + { + name: 'signatureSet'; + isMut: true; + isSigner: false; + docs: [ + 'Signature set that may have been used to create the posted VAA account. If the `post_vaa_v1`', + 'instruction were used to create the posted VAA account, then the encoded signature set', + 'pubkey would be all zeroes.', + ]; + }, + ]; + args: []; + }, + ]; + accounts: [ + { + name: 'guardianSet'; + docs: [ + 'Account used to store a guardian set. The keys encoded in this account are Ethereum pubkeys.', + 'Its expiration time is determined at the time a guardian set is updated to a new set, where the', + 'current network clock time is used with', + '[guardian_set_ttl](crate::state::Config::guardian_set_ttl).', + '', + 'NOTE: The account schema is the same as legacy guardian sets, but this account now has a', + "discriminator generated by Anchor's [account] macro. When the Core Bridge program performs a", + 'guardian set update with this implementation, guardian sets will now have this Anchor-generated', + 'discriminator.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'index'; + docs: [ + 'Index representing an incrementing version number for this guardian set.', + ]; + type: 'u32'; + }, + { + name: 'keys'; + docs: ['Ethereum-style public keys.']; + type: { + vec: { + array: ['u8', 20]; + }; + }; + }, + { + name: 'creationTime'; + docs: [ + 'Timestamp representing the time this guardian became active.', + ]; + type: { + defined: 'Timestamp'; + }; + }, + { + name: 'expirationTime'; + docs: [ + 'Expiration time when VAAs issued by this set are no longer valid.', + ]; + type: { + defined: 'Timestamp'; + }; + }, + ]; + }; + }, + { + name: 'signatureSet'; + docs: [ + 'Account used to store information about a guardian set used to sign a VAA. There is only one', + 'signature set for each verified VAA (associated with a', + '[PostedVaaV1](crate::legacy::state::PostedVaaV1) account). This account is created using the', + 'verify signatures legacy instruction.', + '', + 'NOTE: The account schema is the same as legacy signature sets, but this account now has a', + "discriminator generated by Anchor's [account] macro. When the Core Bridge program upgrades to", + 'this implementation from the old one, integrators in the middle of verifying signatures will', + 'have to use a new keypair for this account and try again.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'sigVerifySuccesses'; + docs: ['Signatures of validators']; + type: { + vec: 'bool'; + }; + }, + { + name: 'messageHash'; + docs: ['Hash of the VAA message body.']; + type: { + defined: 'MessageHash'; + }; + }, + { + name: 'guardianSetIndex'; + docs: ['Index of the guardian set']; + type: 'u32'; + }, + ]; + }; + }, + { + name: 'encodedVaa'; + docs: [ + 'Account used to warehouse VAA buffer.', + '', + "NOTE: This account should not be used by an external application unless the header's status is", + '`Verified`. It is encouraged to use the `EncodedVaa` zero-copy account struct instead.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'header'; + docs: ['Status, write authority and VAA version.']; + type: { + defined: 'Header'; + }; + }, + { + name: 'buf'; + docs: ['VAA buffer.']; + type: 'bytes'; + }, + ]; + }; + }, + ]; + types: [ + { + name: 'InitializeArgs'; + docs: ['Arguments used to initialize the Core Bridge program.']; + type: { + kind: 'struct'; + fields: [ + { + name: 'guardianSetTtlSeconds'; + type: 'u32'; + }, + { + name: 'feeLamports'; + type: 'u64'; + }, + { + name: 'initialGuardians'; + type: { + vec: { + array: ['u8', 20]; + }; + }; + }, + ]; + }; + }, + { + name: 'PostMessageArgs'; + docs: [ + 'Arguments used to post a new Wormhole (Core Bridge) message either using', + '[post_message](crate::legacy::instruction::post_message) or', + '[post_message_unreliable](crate::legacy::instruction::post_message_unreliable).', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'nonce'; + docs: ['Unique id for this message.']; + type: 'u32'; + }, + { + name: 'payload'; + docs: ['Encoded message.']; + type: 'bytes'; + }, + { + name: 'commitment'; + docs: ['Solana commitment level for Guardian observation.']; + type: { + defined: 'Commitment'; + }; + }, + ]; + }; + }, + { + name: 'PostVaaArgs'; + docs: [ + 'Arguments to post new VAA data after signature verification.', + '', + 'NOTE: It is preferred to use the new process of verifying a VAA using the new Core Bridge Anchor', + 'instructions. See [init_encoded_vaa](crate::wormhole_core_bridge_solana::init_encoded_vaa) and', + '[write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa) for more info.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'gap0'; + docs: ['Unused data.']; + type: { + array: ['u8', 5]; + }; + }, + { + name: 'timestamp'; + docs: ['Time the message was submitted.']; + type: 'u32'; + }, + { + name: 'nonce'; + docs: ['Unique ID for this message.']; + type: 'u32'; + }, + { + name: 'emitterChain'; + docs: [ + 'The Wormhole chain ID denoting the origin of this message.', + ]; + type: 'u16'; + }, + { + name: 'emitterAddress'; + docs: ['Emitter of the message.']; + type: { + array: ['u8', 32]; + }; + }, + { + name: 'sequence'; + docs: ['Sequence number of this message.']; + type: 'u64'; + }, + { + name: 'consistencyLevel'; + docs: ['Level of consistency requested by the emitter.']; + type: 'u8'; + }, + { + name: 'payload'; + docs: ['Message payload.']; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'VerifySignaturesArgs'; + docs: [ + 'Arguments to verify specific guardian indices.', + '', + 'NOTE: It is preferred to use the new process of verifying a VAA using the new Core Bridge Anchor', + 'instructions. See [init_encoded_vaa](crate::wormhole_core_bridge_solana::init_encoded_vaa) and', + '[write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa) for more info.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'signerIndices'; + docs: [ + 'Indices of verified guardian signatures, where -1 indicates a missing value. There is a', + 'missing value if the guardian at this index is not expected to have its signature verfied by', + 'the Sig Verify native program in the instruction invoked prior).', + '', + 'NOTE: In the legacy implementation, this argument being a fixed-sized array of 19 only', + 'allows the first 19 guardians of any size guardian set to be verified. Because of this, it', + 'is absolutely important to use the new process of verifying a VAA.', + ]; + type: { + array: ['i8', 19]; + }; + }, + ]; + }; + }, + { + name: 'EmptyArgs'; + docs: ['Unit struct used to represent an empty instruction argument.']; + type: { + kind: 'struct'; + fields: []; + }; + }, + { + name: 'Config'; + docs: [ + 'Account used to store the current configuration of the bridge, including tracking Wormhole fee', + 'payments. For governance decrees, the guardian set index is used to determine whether a decree', + 'was attested for using the latest guardian set.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'guardianSetIndex'; + docs: [ + 'The current guardian set index, used to decide which signature sets to accept.', + ]; + type: 'u32'; + }, + { + name: 'gap0'; + docs: [ + 'Gap. In the old implementation, this was an amount that kept track of message fees that', + "were paid to the program's fee collector.", + ]; + type: { + array: ['u8', 8]; + }; + }, + { + name: 'guardianSetTtl'; + docs: [ + 'Period for how long a guardian set is valid after it has been replaced by a new one. This', + 'guarantees that VAAs issued by that set can still be submitted for a certain period. In', + 'this period we still trust the old guardian set.', + ]; + type: { + defined: 'Duration'; + }; + }, + { + name: 'feeLamports'; + docs: [ + 'Amount of lamports that needs to be paid to the protocol to post a message', + ]; + type: 'u64'; + }, + ]; + }; + }, + { + name: 'LegacyEmitterSequence'; + docs: [ + 'Account used to store the current sequence number for a given emitter.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'value'; + docs: [ + 'Current sequence number, which will be used the next time this emitter publishes a message.', + ]; + type: 'u64'; + }, + ]; + }; + }, + { + name: 'EmitterSequence'; + type: { + kind: 'struct'; + fields: [ + { + name: 'legacy'; + type: { + defined: 'LegacyEmitterSequence'; + }; + }, + { + name: 'bump'; + type: 'u8'; + }, + { + name: 'emitterType'; + type: { + defined: 'EmitterType'; + }; + }, + ]; + }; + }, + { + name: 'PostedMessageV1Unreliable'; + docs: ['Account used to store a published (reusable) Wormhole message.']; + type: { + kind: 'struct'; + fields: [ + { + name: 'data'; + type: { + defined: 'PostedMessageV1Data'; + }; + }, + ]; + }; + }, + { + name: 'PostedMessageV1Info'; + docs: [ + 'Message metadata defining information about a published Wormhole message.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'consistencyLevel'; + docs: ['Level of consistency requested by the emitter.']; + type: 'u8'; + }, + { + name: 'emitterAuthority'; + docs: [ + 'Authority used to write the message. This field is set to default when the message is', + 'posted.', + ]; + type: 'publicKey'; + }, + { + name: 'status'; + docs: [ + 'If a message is being written to, this status is used to determine which state this', + 'account is in (e.g. [MessageStatus::Writing] indicates that the emitter authority is still', + 'writing its message to this account). When this message is posted, this value will be', + 'set to [MessageStatus::Published].', + ]; + type: { + defined: 'MessageStatus'; + }; + }, + { + name: 'gap0'; + docs: ['No data is stored here.']; + type: { + array: ['u8', 3]; + }; + }, + { + name: 'postedTimestamp'; + docs: ['Time the posted message was created.']; + type: { + defined: 'Timestamp'; + }; + }, + { + name: 'nonce'; + docs: ['Unique id for this message.']; + type: 'u32'; + }, + { + name: 'sequence'; + docs: ['Sequence number of this message.']; + type: 'u64'; + }, + { + name: 'solanaChainId'; + docs: [ + 'Always `1`.', + '', + 'NOTE: Saving this value is silly, but we are keeping it to be consistent with how the posted', + 'message account is written.', + ]; + type: { + defined: 'ChainIdSolanaOnly'; + }; + }, + { + name: 'emitter'; + docs: [ + 'Emitter of the message. This may either be the emitter authority or a program ID.', + ]; + type: 'publicKey'; + }, + ]; + }; + }, + { + name: 'PostedMessageV1Data'; + docs: [ + 'Underlying data for either [PostedMessageV1](crate::legacy::state::PostedMessageV1) or', + '[PostedMessageV1Unreliable](crate::legacy::state::PostedMessageV1Unreliable).', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'info'; + docs: ['Message metadata.']; + type: { + defined: 'PostedMessageV1Info'; + }; + }, + { + name: 'payload'; + docs: ['Encoded message.']; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'PostedMessageV1'; + docs: [ + 'Account used to store a published Wormhole message.', + '', + 'NOTE: If your integration requires reusable message accounts, please see', + '[PostedMessageV1Unreliable](crate::legacy::state::PostedMessageV1Unreliable).', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'data'; + docs: ['Message data.']; + type: { + defined: 'PostedMessageV1Data'; + }; + }, + ]; + }; + }, + { + name: 'PostedVaaV1Info'; + docs: [ + 'VAA metadata defining information about a Wormhole message attested for by an active guardian', + 'set.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'consistencyLevel'; + docs: ['Level of consistency requested by the emitter.']; + type: 'u8'; + }, + { + name: 'timestamp'; + docs: ['Time the message was submitted.']; + type: { + defined: 'Timestamp'; + }; + }, + { + name: 'signatureSet'; + docs: [ + "Pubkey of [SignatureSet](crate::state::SignatureSet) account that represents this VAA's", + 'signature verification.', + ]; + type: 'publicKey'; + }, + { + name: 'guardianSetIndex'; + docs: [ + 'Guardian set index used to verify signatures for [SignatureSet](crate::state::SignatureSet).', + '', + 'NOTE: In the previous implementation, this member was referred to as the "posted timestamp",', + 'which is zero for VAA data (posted messages and VAAs resemble the same account schema). By', + 'changing this to the guardian set index, we patch a bug with verifying governance VAAs for', + 'the Core Bridge (other Core Bridge implementations require that the guardian set that', + 'attested for the governance VAA is the current one).', + ]; + type: 'u32'; + }, + { + name: 'nonce'; + docs: ['Unique ID for this message.']; + type: 'u32'; + }, + { + name: 'sequence'; + docs: ['Sequence number of this message.']; + type: 'u64'; + }, + { + name: 'emitterChain'; + docs: [ + 'The Wormhole chain ID denoting the origin of this message.', + ]; + type: 'u16'; + }, + { + name: 'emitterAddress'; + docs: ['Emitter of the message.']; + type: { + array: ['u8', 32]; + }; + }, + ]; + }; + }, + { + name: 'PostedVaaV1'; + docs: ['Account used to store a verified VAA.']; + type: { + kind: 'struct'; + fields: [ + { + name: 'info'; + docs: ['VAA metadata.']; + type: { + defined: 'PostedVaaV1Info'; + }; + }, + { + name: 'payload'; + docs: ['Message payload.']; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'WriteEncodedVaaArgs'; + docs: [ + 'Arguments for the [write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa)', + 'instruction.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'index'; + docs: ['Index of VAA buffer.']; + type: 'u32'; + }, + { + name: 'data'; + docs: [ + 'Data representing subset of VAA buffer starting at specified index.', + ]; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'InitMessageV1Args'; + docs: [ + 'Arguments for the [init_message_v1](crate::wormhole_core_bridge_solana::init_message_v1)', + 'instruction.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'nonce'; + docs: ['Unique id for this message.']; + type: 'u32'; + }, + { + name: 'commitment'; + docs: ['Solana commitment level for Guardian observation.']; + type: { + defined: 'Commitment'; + }; + }, + { + name: 'cpiProgramId'; + docs: [ + 'Optional program ID if the emitter address will be your program ID.', + '', + 'NOTE: If `Some(program_id)`, your emitter authority seeds to be \\[b"emitter\\].', + ]; + type: { + option: 'publicKey'; + }; + }, + ]; + }; + }, + { + name: 'WriteMessageV1Args'; + docs: [ + 'Arguments for the [write_message_v1](crate::wormhole_core_bridge_solana::write_message_v1)', + 'instruction.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'index'; + docs: ['Index of message buffer.']; + type: 'u32'; + }, + { + name: 'data'; + docs: [ + 'Data representing subset of message buffer starting at specified index.', + ]; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'Header'; + docs: ['`EncodedVaa` account header.']; + type: { + kind: 'struct'; + fields: [ + { + name: 'status'; + docs: [ + 'Processing status. **This encoded VAA is only considered usable when this status is set', + 'to [Verified](ProcessingStatus::Verified).**', + ]; + type: { + defined: 'ProcessingStatus'; + }; + }, + { + name: 'writeAuthority'; + docs: ['The authority that has write privilege to this account.']; + type: 'publicKey'; + }, + { + name: 'version'; + docs: [ + 'VAA version. Only when the VAA is verified is this version set to a value.', + ]; + type: 'u8'; + }, + ]; + }; + }, + { + name: 'Timestamp'; + docs: [ + 'This struct defines unix timestamp as u32 (as opposed to more modern systems that have adopted', + "i64). Methods for this struct are meant to convert Solana's clock type to this type assuming we", + 'are far from year 2038.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'value'; + type: 'u32'; + }, + ]; + }; + }, + { + name: 'Duration'; + docs: [ + 'To be used with the [Timestamp] type, this struct defines a duration in seconds.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'seconds'; + type: 'u32'; + }, + ]; + }; + }, + { + name: 'MessageHash'; + docs: ['This type is used to represent a message hash (keccak).']; + type: { + kind: 'struct'; + fields: [ + { + name: 'bytes'; + type: { + array: ['u8', 32]; + }; + }, + ]; + }; + }, + { + name: 'ChainIdSolanaOnly'; + docs: [ + 'This type is kind of silly. But because [PostedMessageV1](crate::state::PostedMessageV1) has the', + "emitter chain ID as a field, which is unnecessary since it is always Solana's chain ID, we use", + 'this type to guarantee that the encoded chain ID is always `1`.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'chainId'; + type: 'u16'; + }, + ]; + }; + }, + { + name: 'EmitterInfo'; + type: { + kind: 'struct'; + fields: [ + { + name: 'chain'; + type: 'u16'; + }, + { + name: 'address'; + type: { + array: ['u8', 32]; + }; + }, + { + name: 'sequence'; + type: 'u64'; + }, + ]; + }; + }, + { + name: 'LegacyInstruction'; + docs: [ + 'Legacy instruction selector.', + '', + 'NOTE: No more instructions should be added to this enum. Instead, add them as Anchor instruction', + 'handlers, which will inevitably live in', + '[wormhole_core_bridge_solana](crate::wormhole_core_bridge_solana).', + ]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Initialize'; + }, + { + name: 'PostMessage'; + }, + { + name: 'PostVaa'; + }, + { + name: 'SetMessageFee'; + }, + { + name: 'TransferFees'; + }, + { + name: 'UpgradeContract'; + }, + { + name: 'GuardianSetUpdate'; + }, + { + name: 'VerifySignatures'; + }, + { + name: 'PostMessageUnreliable'; + }, + ]; + }; + }, + { + name: 'EmitterType'; + type: { + kind: 'enum'; + variants: [ + { + name: 'Unset'; + }, + { + name: 'Legacy'; + }, + { + name: 'Executable'; + }, + ]; + }; + }, + { + name: 'MessageStatus'; + docs: [ + 'Status of a message. When a message is posted, its status is', + '[Published](MessageStatus::Published).', + ]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Published'; + }, + { + name: 'Writing'; + }, + { + name: 'ReadyForPublishing'; + }, + ]; + }; + }, + { + name: 'PublishMessageDirective'; + docs: ['Directive used to determine how to post a Core Bridge message.']; + type: { + kind: 'enum'; + variants: [ + { + name: 'Message'; + fields: [ + { + name: 'nonce'; + type: 'u32'; + }, + { + name: 'payload'; + type: 'bytes'; + }, + { + name: 'commitment'; + type: { + defined: 'Commitment'; + }; + }, + ]; + }, + { + name: 'ProgramMessage'; + fields: [ + { + name: 'programId'; + type: 'publicKey'; + }, + { + name: 'nonce'; + type: 'u32'; + }, + { + name: 'payload'; + type: 'bytes'; + }, + { + name: 'commitment'; + type: { + defined: 'Commitment'; + }; + }, + ]; + }, + { + name: 'PreparedMessage'; + }, + ]; + }; + }, + { + name: 'ProcessingStatus'; + docs: ["Encoded VAA's processing status."]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Unset'; + }, + { + name: 'Writing'; + }, + { + name: 'Verified'; + }, + ]; + }; + }, + { + name: 'Commitment'; + docs: [ + "Representation of Solana's commitment levels. This enum is not exhaustive because Wormhole only", + 'considers these two commitment levels in its Guardian observation.', + '', + 'See for more info.', + ]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Confirmed'; + }, + { + name: 'Finalized'; + }, + ]; + }; + }, + ]; + errors: [ + { + code: 6002; + name: 'InvalidInstructionArgument'; + msg: 'InvalidInstructionArgument'; + }, + { + code: 6003; + name: 'AccountNotZeroed'; + msg: 'AccountNotZeroed'; + }, + { + code: 6004; + name: 'InvalidDataConversion'; + msg: 'InvalidDataConversion'; + }, + { + code: 6006; + name: 'U64Overflow'; + msg: 'U64Overflow'; + }, + { + code: 6008; + name: 'InvalidComputeSize'; + msg: 'InvalidComputeSize'; + }, + { + code: 6016; + name: 'InvalidChain'; + msg: 'InvalidChain'; + }, + { + code: 6032; + name: 'InvalidGovernanceEmitter'; + msg: 'InvalidGovernanceEmitter'; + }, + { + code: 6034; + name: 'InvalidGovernanceAction'; + msg: 'InvalidGovernanceAction'; + }, + { + code: 6036; + name: 'LatestGuardianSetRequired'; + msg: 'LatestGuardianSetRequired'; + }, + { + code: 6038; + name: 'GovernanceForAnotherChain'; + msg: 'GovernanceForAnotherChain'; + }, + { + code: 6040; + name: 'InvalidGovernanceVaa'; + msg: 'InvalidGovernanceVaa'; + }, + { + code: 6256; + name: 'InsufficientFees'; + msg: 'InsufficientFees'; + }, + { + code: 6258; + name: 'EmitterMismatch'; + msg: 'EmitterMismatch'; + }, + { + code: 6260; + name: 'NotReadyForPublishing'; + msg: 'NotReadyForPublishing'; + }, + { + code: 6262; + name: 'InvalidPreparedMessage'; + msg: 'InvalidPreparedMessage'; + }, + { + code: 6264; + name: 'ExecutableEmitter'; + msg: 'ExecutableEmitter'; + }, + { + code: 6266; + name: 'LegacyEmitter'; + msg: 'LegacyEmitter'; + }, + { + code: 6512; + name: 'InvalidSignatureSet'; + msg: 'InvalidSignatureSet'; + }, + { + code: 6514; + name: 'InvalidMessageHash'; + msg: 'InvalidMessageHash'; + }, + { + code: 6515; + name: 'NoQuorum'; + msg: 'NoQuorum'; + }, + { + code: 6516; + name: 'MessageMismatch'; + msg: 'MessageMismatch'; + }, + { + code: 7024; + name: 'NotEnoughLamports'; + msg: 'NotEnoughLamports'; + }, + { + code: 7026; + name: 'InvalidFeeRecipient'; + msg: 'InvalidFeeRecipient'; + }, + { + code: 7280; + name: 'ImplementationMismatch'; + msg: 'ImplementationMismatch'; + }, + { + code: 7536; + name: 'InvalidGuardianSetIndex'; + msg: 'InvalidGuardianSetIndex'; + }, + { + code: 7792; + name: 'GuardianSetMismatch'; + msg: 'GuardianSetMismatch'; + }, + { + code: 7794; + name: 'InstructionAtWrongIndex'; + msg: 'InstructionAtWrongIndex'; + }, + { + code: 7795; + name: 'EmptySigVerifyInstruction'; + msg: 'EmptySigVerifyInstruction'; + }, + { + code: 7796; + name: 'InvalidSigVerifyInstruction'; + msg: 'InvalidSigVerifyInstruction'; + }, + { + code: 7798; + name: 'GuardianSetExpired'; + msg: 'GuardianSetExpired'; + }, + { + code: 7800; + name: 'InvalidGuardianKeyRecovery'; + msg: 'InvalidGuardianKeyRecovery'; + }, + { + code: 7802; + name: 'SignerIndicesMismatch'; + msg: 'SignerIndicesMismatch'; + }, + { + code: 8048; + name: 'PayloadSizeMismatch'; + msg: 'PayloadSizeMismatch'; + }, + { + code: 10112; + name: 'ZeroGuardians'; + msg: 'ZeroGuardians'; + }, + { + code: 10128; + name: 'GuardianZeroAddress'; + msg: 'GuardianZeroAddress'; + }, + { + code: 10144; + name: 'DuplicateGuardianAddress'; + msg: 'DuplicateGuardianAddress'; + }, + { + code: 10160; + name: 'MessageAlreadyPublished'; + msg: 'MessageAlreadyPublished'; + }, + { + code: 10176; + name: 'VaaWritingDisallowed'; + msg: 'VaaWritingDisallowed'; + }, + { + code: 10192; + name: 'VaaAlreadyVerified'; + msg: 'VaaAlreadyVerified'; + }, + { + code: 10208; + name: 'InvalidGuardianIndex'; + msg: 'InvalidGuardianIndex'; + }, + { + code: 10224; + name: 'InvalidSignature'; + msg: 'InvalidSignature'; + }, + { + code: 10256; + name: 'UnverifiedVaa'; + msg: 'UnverifiedVaa'; + }, + { + code: 10258; + name: 'VaaStillProcessing'; + msg: 'VaaStillProcessing'; + }, + { + code: 10260; + name: 'InWritingStatus'; + msg: 'InWritingStatus'; + }, + { + code: 10262; + name: 'NotInWritingStatus'; + msg: 'NotInWritingStatus'; + }, + { + code: 10264; + name: 'InvalidMessageStatus'; + msg: 'InvalidMessageStatus'; + }, + { + code: 10266; + name: 'HashNotComputed'; + msg: 'HashNotComputed'; + }, + { + code: 10268; + name: 'InvalidVaaVersion'; + msg: 'InvalidVaaVersion'; + }, + { + code: 10270; + name: 'InvalidCreatedAccountSize'; + msg: 'InvalidCreatedAccountSize'; + }, + { + code: 10272; + name: 'DataOverflow'; + msg: 'DataOverflow'; + }, + { + code: 10274; + name: 'ExceedsMaxPayloadSize'; + msg: 'ExceedsMaxPayloadSize (30KB)'; + }, + { + code: 10276; + name: 'CannotParseVaa'; + msg: 'CannotParseVaa'; + }, + { + code: 10278; + name: 'EmitterAuthorityMismatch'; + msg: 'EmitterAuthorityMismatch'; + }, + { + code: 10280; + name: 'InvalidProgramEmitter'; + msg: 'InvalidProgramEmitter'; + }, + { + code: 10282; + name: 'WriteAuthorityMismatch'; + msg: 'WriteAuthorityMismatch'; + }, + { + code: 10284; + name: 'PostedVaaPayloadTooLarge'; + msg: 'PostedVaaPayloadTooLarge'; + }, + { + code: 10286; + name: 'ExecutableDisallowed'; + msg: 'ExecutableDisallowed'; + }, + ]; +}; + +export const WORMHOLE_CORE_BRIDGE_SOLANA_IDL: WormholeCoreBridgeSolana = { + version: '0.0.1-alpha.5', + name: 'wormhole_core_bridge_solana', + constants: [ + { + name: 'SOLANA_CHAIN', + type: 'u16', + value: '1', + }, + { + name: 'FEE_COLLECTOR_SEED_PREFIX', + type: 'bytes', + value: '[102, 101, 101, 95, 99, 111, 108, 108, 101, 99, 116, 111, 114]', + }, + { + name: 'UPGRADE_SEED_PREFIX', + type: 'bytes', + value: '[117, 112, 103, 114, 97, 100, 101]', + }, + { + name: 'PROGRAM_EMITTER_SEED_PREFIX', + type: 'bytes', + value: '[101, 109, 105, 116, 116, 101, 114]', + }, + { + name: 'MAX_MESSAGE_PAYLOAD_SIZE', + type: { + defined: 'usize', + }, + value: '30 * 1_024', + }, + ], + instructions: [ + { + name: 'initMessageV1', + docs: [ + 'Processor for initializing a new draft [PostedMessageV1](crate::state::PostedMessageV1)', + 'account for writing. The emitter authority is established at this point and the payload size', + 'is inferred from the size of the created account. This instruction handler also allows an', + "integrator to publish Wormhole messages using his program's ID as the emitter address", + '(by passing `Some(crate::ID)` to the [cpi_program_id](InitMessageV1Args::cpi_program_id)', + 'argument). **Be aware that the emitter authority\'s seeds must only be \\[b"emitter"\\] in this', + 'case.**', + '', + 'This instruction should be followed up with `write_message_v1` and `finalize_message_v1` to', + 'write and indicate that the message is ready for publishing respectively (to prepare it for', + 'publishing via the', + '[post message instruction](crate::legacy::instruction::LegacyInstruction::PostMessage)).', + '', + 'NOTE: If you wish to publish a small message (one where the data does not overflow the', + 'Solana transaction size), it is recommended that you use an [sdk](crate::sdk::cpi) method to', + 'either prepare your message or post a message as a program ID emitter.', + ], + accounts: [ + { + name: 'emitterAuthority', + isMut: false, + isSigner: true, + docs: [ + 'This authority is the only one who can write to the draft message account.', + ], + }, + { + name: 'draftMessage', + isMut: true, + isSigner: false, + docs: ['Bridge.'], + }, + ], + args: [ + { + name: 'args', + type: { + defined: 'InitMessageV1Args', + }, + }, + ], + }, + { + name: 'writeMessageV1', + docs: [ + 'Processor used to write to a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'This instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ], + accounts: [ + { + name: 'emitterAuthority', + isMut: false, + isSigner: true, + }, + { + name: 'draftMessage', + isMut: true, + isSigner: false, + docs: ['only be published when the message is finalized.'], + }, + ], + args: [ + { + name: 'args', + type: { + defined: 'WriteMessageV1Args', + }, + }, + ], + }, + { + name: 'finalizeMessageV1', + docs: [ + 'Processor used to finalize a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'Once finalized, this message account cannot be written to again. A finalized message is the', + 'only state the legacy post message instruction can accept before publishing. This', + 'instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ], + accounts: [ + { + name: 'emitterAuthority', + isMut: false, + isSigner: true, + }, + { + name: 'draftMessage', + isMut: true, + isSigner: false, + docs: ['only be published when the message is finalized.'], + }, + ], + args: [], + }, + { + name: 'closeMessageV1', + docs: [ + 'Processor used to process a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'This instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ], + accounts: [ + { + name: 'emitterAuthority', + isMut: false, + isSigner: true, + }, + { + name: 'draftMessage', + isMut: true, + isSigner: false, + docs: ['only be published when the message is finalized.'], + }, + { + name: 'closeAccountDestination', + isMut: true, + isSigner: false, + }, + ], + args: [], + }, + { + name: 'initEncodedVaa', + docs: [ + 'Processor used to intialize a created account as [EncodedVaa](crate::state::EncodedVaa). An', + 'authority (the write authority) is established with this instruction.', + ], + accounts: [ + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + docs: [ + 'The authority who can write to the VAA account when it is being processed.', + ], + }, + { + name: 'encodedVaa', + isMut: true, + isSigner: false, + docs: ['Bridge.'], + }, + ], + args: [], + }, + { + name: 'closeEncodedVaa', + docs: [ + 'Processor used to close an [EncodedVaa](crate::state::EncodedVaa). This instruction requires', + 'an authority (the write authority) to interact witht he encoded VAA account.', + ], + accounts: [ + { + name: 'writeAuthority', + isMut: true, + isSigner: true, + docs: [ + 'This account is only required to be mutable for the `CloseVaaAccount` directive. This', + 'authority is the same signer that originally created the VAA accounts, so he is the one that', + 'will receive the lamports back for the closed accounts.', + ], + }, + { + name: 'encodedVaa', + isMut: true, + isSigner: false, + docs: ['written to and then verified.'], + }, + ], + args: [], + }, + { + name: 'writeEncodedVaa', + docs: [ + 'Processor used to write to an [EncodedVaa](crate::state::EncodedVaa) account. This', + 'instruction requires an authority (the write authority) to interact with the encoded VAA', + 'account.', + ], + accounts: [ + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + docs: [ + 'The only authority that can write to the encoded VAA account.', + ], + }, + { + name: 'draftVaa', + isMut: true, + isSigner: false, + docs: ['written to and then verified.'], + }, + ], + args: [ + { + name: 'args', + type: { + defined: 'WriteEncodedVaaArgs', + }, + }, + ], + }, + { + name: 'verifyEncodedVaaV1', + docs: [ + 'Processor used to verify an [EncodedVaa](crate::state::EncodedVaa) account as a version 1', + 'VAA (guardian signatures attesting to this observation). This instruction requires an', + 'authority (the write authority) to interact with the encoded VAA account.', + ], + accounts: [ + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + }, + { + name: 'draftVaa', + isMut: true, + isSigner: false, + docs: ['written to and then verified.'], + }, + { + name: 'guardianSet', + isMut: false, + isSigner: false, + docs: [ + 'Guardian set account, which should be the same one that was used to attest for the VAA. The', + 'signatures in the encoded VAA are verified against this guardian set.', + ], + }, + ], + args: [], + }, + { + name: 'postVaaV1', + docs: [ + 'Processor used to close an [EncodedVaa](crate::state::EncodedVaa) account to create a', + '[PostedMessageV1](crate::state::PostedMessageV1) account in its place.', + '', + 'NOTE: Because the legacy verify signatures instruction was not required for the Posted VAA', + 'account to exist, the encoded [SignatureSet](crate::state::SignatureSet) is the default', + '[Pubkey].', + ], + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + docs: [ + 'Payer to create the posted VAA account. This instruction allows anyone with an encoded VAA', + 'to create a posted VAA account.', + ], + }, + { + name: 'encodedVaa', + isMut: false, + isSigner: false, + docs: [ + 'Encoded VAA, whose body will be serialized into the posted VAA account.', + '', + 'NOTE: This instruction handler only exists to support integrators that still rely on posted', + 'VAA accounts. While we encourage integrators to use the encoded VAA account instead, we', + 'allow a pathway to convert the encoded VAA into a posted VAA. However, the payload is', + 'restricted to 9.5KB, which is much larger than what was possible with the old implementation', + 'using the legacy post vaa instruction. The Core Bridge program will not support posting VAAs', + 'larger than this payload size.', + ], + }, + { + name: 'postedVaa', + isMut: true, + isSigner: false, + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + ], + args: [], + }, + { + name: 'closeSignatureSet', + docs: [ + 'Processor used to close a [SignatureSet](crate::state::SignatureSet), which was used to', + 'verify the VAA using the legacy parse and verify procedure.', + ], + accounts: [ + { + name: 'solDestination', + isMut: true, + isSigner: true, + }, + { + name: 'postedVaa', + isMut: false, + isSigner: false, + docs: ['Posted VAA.'], + }, + { + name: 'signatureSet', + isMut: true, + isSigner: false, + docs: [ + 'Signature set that may have been used to create the posted VAA account. If the `post_vaa_v1`', + 'instruction were used to create the posted VAA account, then the encoded signature set', + 'pubkey would be all zeroes.', + ], + }, + ], + args: [], + }, + ], + accounts: [ + { + name: 'guardianSet', + docs: [ + 'Account used to store a guardian set. The keys encoded in this account are Ethereum pubkeys.', + 'Its expiration time is determined at the time a guardian set is updated to a new set, where the', + 'current network clock time is used with', + '[guardian_set_ttl](crate::state::Config::guardian_set_ttl).', + '', + 'NOTE: The account schema is the same as legacy guardian sets, but this account now has a', + "discriminator generated by Anchor's [account] macro. When the Core Bridge program performs a", + 'guardian set update with this implementation, guardian sets will now have this Anchor-generated', + 'discriminator.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'index', + docs: [ + 'Index representing an incrementing version number for this guardian set.', + ], + type: 'u32', + }, + { + name: 'keys', + docs: ['Ethereum-style public keys.'], + type: { + vec: { + array: ['u8', 20], + }, + }, + }, + { + name: 'creationTime', + docs: [ + 'Timestamp representing the time this guardian became active.', + ], + type: { + defined: 'Timestamp', + }, + }, + { + name: 'expirationTime', + docs: [ + 'Expiration time when VAAs issued by this set are no longer valid.', + ], + type: { + defined: 'Timestamp', + }, + }, + ], + }, + }, + { + name: 'signatureSet', + docs: [ + 'Account used to store information about a guardian set used to sign a VAA. There is only one', + 'signature set for each verified VAA (associated with a', + '[PostedVaaV1](crate::legacy::state::PostedVaaV1) account). This account is created using the', + 'verify signatures legacy instruction.', + '', + 'NOTE: The account schema is the same as legacy signature sets, but this account now has a', + "discriminator generated by Anchor's [account] macro. When the Core Bridge program upgrades to", + 'this implementation from the old one, integrators in the middle of verifying signatures will', + 'have to use a new keypair for this account and try again.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'sigVerifySuccesses', + docs: ['Signatures of validators'], + type: { + vec: 'bool', + }, + }, + { + name: 'messageHash', + docs: ['Hash of the VAA message body.'], + type: { + defined: 'MessageHash', + }, + }, + { + name: 'guardianSetIndex', + docs: ['Index of the guardian set'], + type: 'u32', + }, + ], + }, + }, + { + name: 'encodedVaa', + docs: [ + 'Account used to warehouse VAA buffer.', + '', + "NOTE: This account should not be used by an external application unless the header's status is", + '`Verified`. It is encouraged to use the `EncodedVaa` zero-copy account struct instead.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'header', + docs: ['Status, write authority and VAA version.'], + type: { + defined: 'Header', + }, + }, + { + name: 'buf', + docs: ['VAA buffer.'], + type: 'bytes', + }, + ], + }, + }, + ], + types: [ + { + name: 'InitializeArgs', + docs: ['Arguments used to initialize the Core Bridge program.'], + type: { + kind: 'struct', + fields: [ + { + name: 'guardianSetTtlSeconds', + type: 'u32', + }, + { + name: 'feeLamports', + type: 'u64', + }, + { + name: 'initialGuardians', + type: { + vec: { + array: ['u8', 20], + }, + }, + }, + ], + }, + }, + { + name: 'PostMessageArgs', + docs: [ + 'Arguments used to post a new Wormhole (Core Bridge) message either using', + '[post_message](crate::legacy::instruction::post_message) or', + '[post_message_unreliable](crate::legacy::instruction::post_message_unreliable).', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'nonce', + docs: ['Unique id for this message.'], + type: 'u32', + }, + { + name: 'payload', + docs: ['Encoded message.'], + type: 'bytes', + }, + { + name: 'commitment', + docs: ['Solana commitment level for Guardian observation.'], + type: { + defined: 'Commitment', + }, + }, + ], + }, + }, + { + name: 'PostVaaArgs', + docs: [ + 'Arguments to post new VAA data after signature verification.', + '', + 'NOTE: It is preferred to use the new process of verifying a VAA using the new Core Bridge Anchor', + 'instructions. See [init_encoded_vaa](crate::wormhole_core_bridge_solana::init_encoded_vaa) and', + '[write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa) for more info.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'gap0', + docs: ['Unused data.'], + type: { + array: ['u8', 5], + }, + }, + { + name: 'timestamp', + docs: ['Time the message was submitted.'], + type: 'u32', + }, + { + name: 'nonce', + docs: ['Unique ID for this message.'], + type: 'u32', + }, + { + name: 'emitterChain', + docs: [ + 'The Wormhole chain ID denoting the origin of this message.', + ], + type: 'u16', + }, + { + name: 'emitterAddress', + docs: ['Emitter of the message.'], + type: { + array: ['u8', 32], + }, + }, + { + name: 'sequence', + docs: ['Sequence number of this message.'], + type: 'u64', + }, + { + name: 'consistencyLevel', + docs: ['Level of consistency requested by the emitter.'], + type: 'u8', + }, + { + name: 'payload', + docs: ['Message payload.'], + type: 'bytes', + }, + ], + }, + }, + { + name: 'VerifySignaturesArgs', + docs: [ + 'Arguments to verify specific guardian indices.', + '', + 'NOTE: It is preferred to use the new process of verifying a VAA using the new Core Bridge Anchor', + 'instructions. See [init_encoded_vaa](crate::wormhole_core_bridge_solana::init_encoded_vaa) and', + '[write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa) for more info.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'signerIndices', + docs: [ + 'Indices of verified guardian signatures, where -1 indicates a missing value. There is a', + 'missing value if the guardian at this index is not expected to have its signature verfied by', + 'the Sig Verify native program in the instruction invoked prior).', + '', + 'NOTE: In the legacy implementation, this argument being a fixed-sized array of 19 only', + 'allows the first 19 guardians of any size guardian set to be verified. Because of this, it', + 'is absolutely important to use the new process of verifying a VAA.', + ], + type: { + array: ['i8', 19], + }, + }, + ], + }, + }, + { + name: 'EmptyArgs', + docs: ['Unit struct used to represent an empty instruction argument.'], + type: { + kind: 'struct', + fields: [], + }, + }, + { + name: 'Config', + docs: [ + 'Account used to store the current configuration of the bridge, including tracking Wormhole fee', + 'payments. For governance decrees, the guardian set index is used to determine whether a decree', + 'was attested for using the latest guardian set.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'guardianSetIndex', + docs: [ + 'The current guardian set index, used to decide which signature sets to accept.', + ], + type: 'u32', + }, + { + name: 'gap0', + docs: [ + 'Gap. In the old implementation, this was an amount that kept track of message fees that', + "were paid to the program's fee collector.", + ], + type: { + array: ['u8', 8], + }, + }, + { + name: 'guardianSetTtl', + docs: [ + 'Period for how long a guardian set is valid after it has been replaced by a new one. This', + 'guarantees that VAAs issued by that set can still be submitted for a certain period. In', + 'this period we still trust the old guardian set.', + ], + type: { + defined: 'Duration', + }, + }, + { + name: 'feeLamports', + docs: [ + 'Amount of lamports that needs to be paid to the protocol to post a message', + ], + type: 'u64', + }, + ], + }, + }, + { + name: 'LegacyEmitterSequence', + docs: [ + 'Account used to store the current sequence number for a given emitter.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'value', + docs: [ + 'Current sequence number, which will be used the next time this emitter publishes a message.', + ], + type: 'u64', + }, + ], + }, + }, + { + name: 'EmitterSequence', + type: { + kind: 'struct', + fields: [ + { + name: 'legacy', + type: { + defined: 'LegacyEmitterSequence', + }, + }, + { + name: 'bump', + type: 'u8', + }, + { + name: 'emitterType', + type: { + defined: 'EmitterType', + }, + }, + ], + }, + }, + { + name: 'PostedMessageV1Unreliable', + docs: ['Account used to store a published (reusable) Wormhole message.'], + type: { + kind: 'struct', + fields: [ + { + name: 'data', + type: { + defined: 'PostedMessageV1Data', + }, + }, + ], + }, + }, + { + name: 'PostedMessageV1Info', + docs: [ + 'Message metadata defining information about a published Wormhole message.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'consistencyLevel', + docs: ['Level of consistency requested by the emitter.'], + type: 'u8', + }, + { + name: 'emitterAuthority', + docs: [ + 'Authority used to write the message. This field is set to default when the message is', + 'posted.', + ], + type: 'publicKey', + }, + { + name: 'status', + docs: [ + 'If a message is being written to, this status is used to determine which state this', + 'account is in (e.g. [MessageStatus::Writing] indicates that the emitter authority is still', + 'writing its message to this account). When this message is posted, this value will be', + 'set to [MessageStatus::Published].', + ], + type: { + defined: 'MessageStatus', + }, + }, + { + name: 'gap0', + docs: ['No data is stored here.'], + type: { + array: ['u8', 3], + }, + }, + { + name: 'postedTimestamp', + docs: ['Time the posted message was created.'], + type: { + defined: 'Timestamp', + }, + }, + { + name: 'nonce', + docs: ['Unique id for this message.'], + type: 'u32', + }, + { + name: 'sequence', + docs: ['Sequence number of this message.'], + type: 'u64', + }, + { + name: 'solanaChainId', + docs: [ + 'Always `1`.', + '', + 'NOTE: Saving this value is silly, but we are keeping it to be consistent with how the posted', + 'message account is written.', + ], + type: { + defined: 'ChainIdSolanaOnly', + }, + }, + { + name: 'emitter', + docs: [ + 'Emitter of the message. This may either be the emitter authority or a program ID.', + ], + type: 'publicKey', + }, + ], + }, + }, + { + name: 'PostedMessageV1Data', + docs: [ + 'Underlying data for either [PostedMessageV1](crate::legacy::state::PostedMessageV1) or', + '[PostedMessageV1Unreliable](crate::legacy::state::PostedMessageV1Unreliable).', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'info', + docs: ['Message metadata.'], + type: { + defined: 'PostedMessageV1Info', + }, + }, + { + name: 'payload', + docs: ['Encoded message.'], + type: 'bytes', + }, + ], + }, + }, + { + name: 'PostedMessageV1', + docs: [ + 'Account used to store a published Wormhole message.', + '', + 'NOTE: If your integration requires reusable message accounts, please see', + '[PostedMessageV1Unreliable](crate::legacy::state::PostedMessageV1Unreliable).', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'data', + docs: ['Message data.'], + type: { + defined: 'PostedMessageV1Data', + }, + }, + ], + }, + }, + { + name: 'PostedVaaV1Info', + docs: [ + 'VAA metadata defining information about a Wormhole message attested for by an active guardian', + 'set.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'consistencyLevel', + docs: ['Level of consistency requested by the emitter.'], + type: 'u8', + }, + { + name: 'timestamp', + docs: ['Time the message was submitted.'], + type: { + defined: 'Timestamp', + }, + }, + { + name: 'signatureSet', + docs: [ + "Pubkey of [SignatureSet](crate::state::SignatureSet) account that represents this VAA's", + 'signature verification.', + ], + type: 'publicKey', + }, + { + name: 'guardianSetIndex', + docs: [ + 'Guardian set index used to verify signatures for [SignatureSet](crate::state::SignatureSet).', + '', + 'NOTE: In the previous implementation, this member was referred to as the "posted timestamp",', + 'which is zero for VAA data (posted messages and VAAs resemble the same account schema). By', + 'changing this to the guardian set index, we patch a bug with verifying governance VAAs for', + 'the Core Bridge (other Core Bridge implementations require that the guardian set that', + 'attested for the governance VAA is the current one).', + ], + type: 'u32', + }, + { + name: 'nonce', + docs: ['Unique ID for this message.'], + type: 'u32', + }, + { + name: 'sequence', + docs: ['Sequence number of this message.'], + type: 'u64', + }, + { + name: 'emitterChain', + docs: [ + 'The Wormhole chain ID denoting the origin of this message.', + ], + type: 'u16', + }, + { + name: 'emitterAddress', + docs: ['Emitter of the message.'], + type: { + array: ['u8', 32], + }, + }, + ], + }, + }, + { + name: 'PostedVaaV1', + docs: ['Account used to store a verified VAA.'], + type: { + kind: 'struct', + fields: [ + { + name: 'info', + docs: ['VAA metadata.'], + type: { + defined: 'PostedVaaV1Info', + }, + }, + { + name: 'payload', + docs: ['Message payload.'], + type: 'bytes', + }, + ], + }, + }, + { + name: 'WriteEncodedVaaArgs', + docs: [ + 'Arguments for the [write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa)', + 'instruction.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'index', + docs: ['Index of VAA buffer.'], + type: 'u32', + }, + { + name: 'data', + docs: [ + 'Data representing subset of VAA buffer starting at specified index.', + ], + type: 'bytes', + }, + ], + }, + }, + { + name: 'InitMessageV1Args', + docs: [ + 'Arguments for the [init_message_v1](crate::wormhole_core_bridge_solana::init_message_v1)', + 'instruction.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'nonce', + docs: ['Unique id for this message.'], + type: 'u32', + }, + { + name: 'commitment', + docs: ['Solana commitment level for Guardian observation.'], + type: { + defined: 'Commitment', + }, + }, + { + name: 'cpiProgramId', + docs: [ + 'Optional program ID if the emitter address will be your program ID.', + '', + 'NOTE: If `Some(program_id)`, your emitter authority seeds to be \\[b"emitter\\].', + ], + type: { + option: 'publicKey', + }, + }, + ], + }, + }, + { + name: 'WriteMessageV1Args', + docs: [ + 'Arguments for the [write_message_v1](crate::wormhole_core_bridge_solana::write_message_v1)', + 'instruction.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'index', + docs: ['Index of message buffer.'], + type: 'u32', + }, + { + name: 'data', + docs: [ + 'Data representing subset of message buffer starting at specified index.', + ], + type: 'bytes', + }, + ], + }, + }, + { + name: 'Header', + docs: ['`EncodedVaa` account header.'], + type: { + kind: 'struct', + fields: [ + { + name: 'status', + docs: [ + 'Processing status. **This encoded VAA is only considered usable when this status is set', + 'to [Verified](ProcessingStatus::Verified).**', + ], + type: { + defined: 'ProcessingStatus', + }, + }, + { + name: 'writeAuthority', + docs: ['The authority that has write privilege to this account.'], + type: 'publicKey', + }, + { + name: 'version', + docs: [ + 'VAA version. Only when the VAA is verified is this version set to a value.', + ], + type: 'u8', + }, + ], + }, + }, + { + name: 'Timestamp', + docs: [ + 'This struct defines unix timestamp as u32 (as opposed to more modern systems that have adopted', + "i64). Methods for this struct are meant to convert Solana's clock type to this type assuming we", + 'are far from year 2038.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'value', + type: 'u32', + }, + ], + }, + }, + { + name: 'Duration', + docs: [ + 'To be used with the [Timestamp] type, this struct defines a duration in seconds.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'seconds', + type: 'u32', + }, + ], + }, + }, + { + name: 'MessageHash', + docs: ['This type is used to represent a message hash (keccak).'], + type: { + kind: 'struct', + fields: [ + { + name: 'bytes', + type: { + array: ['u8', 32], + }, + }, + ], + }, + }, + { + name: 'ChainIdSolanaOnly', + docs: [ + 'This type is kind of silly. But because [PostedMessageV1](crate::state::PostedMessageV1) has the', + "emitter chain ID as a field, which is unnecessary since it is always Solana's chain ID, we use", + 'this type to guarantee that the encoded chain ID is always `1`.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'chainId', + type: 'u16', + }, + ], + }, + }, + { + name: 'EmitterInfo', + type: { + kind: 'struct', + fields: [ + { + name: 'chain', + type: 'u16', + }, + { + name: 'address', + type: { + array: ['u8', 32], + }, + }, + { + name: 'sequence', + type: 'u64', + }, + ], + }, + }, + { + name: 'LegacyInstruction', + docs: [ + 'Legacy instruction selector.', + '', + 'NOTE: No more instructions should be added to this enum. Instead, add them as Anchor instruction', + 'handlers, which will inevitably live in', + '[wormhole_core_bridge_solana](crate::wormhole_core_bridge_solana).', + ], + type: { + kind: 'enum', + variants: [ + { + name: 'Initialize', + }, + { + name: 'PostMessage', + }, + { + name: 'PostVaa', + }, + { + name: 'SetMessageFee', + }, + { + name: 'TransferFees', + }, + { + name: 'UpgradeContract', + }, + { + name: 'GuardianSetUpdate', + }, + { + name: 'VerifySignatures', + }, + { + name: 'PostMessageUnreliable', + }, + ], + }, + }, + { + name: 'EmitterType', + type: { + kind: 'enum', + variants: [ + { + name: 'Unset', + }, + { + name: 'Legacy', + }, + { + name: 'Executable', + }, + ], + }, + }, + { + name: 'MessageStatus', + docs: [ + 'Status of a message. When a message is posted, its status is', + '[Published](MessageStatus::Published).', + ], + type: { + kind: 'enum', + variants: [ + { + name: 'Published', + }, + { + name: 'Writing', + }, + { + name: 'ReadyForPublishing', + }, + ], + }, + }, + { + name: 'PublishMessageDirective', + docs: ['Directive used to determine how to post a Core Bridge message.'], + type: { + kind: 'enum', + variants: [ + { + name: 'Message', + fields: [ + { + name: 'nonce', + type: 'u32', + }, + { + name: 'payload', + type: 'bytes', + }, + { + name: 'commitment', + type: { + defined: 'Commitment', + }, + }, + ], + }, + { + name: 'ProgramMessage', + fields: [ + { + name: 'programId', + type: 'publicKey', + }, + { + name: 'nonce', + type: 'u32', + }, + { + name: 'payload', + type: 'bytes', + }, + { + name: 'commitment', + type: { + defined: 'Commitment', + }, + }, + ], + }, + { + name: 'PreparedMessage', + }, + ], + }, + }, + { + name: 'ProcessingStatus', + docs: ["Encoded VAA's processing status."], + type: { + kind: 'enum', + variants: [ + { + name: 'Unset', + }, + { + name: 'Writing', + }, + { + name: 'Verified', + }, + ], + }, + }, + { + name: 'Commitment', + docs: [ + "Representation of Solana's commitment levels. This enum is not exhaustive because Wormhole only", + 'considers these two commitment levels in its Guardian observation.', + '', + 'See for more info.', + ], + type: { + kind: 'enum', + variants: [ + { + name: 'Confirmed', + }, + { + name: 'Finalized', + }, + ], + }, + }, + ], + errors: [ + { + code: 6002, + name: 'InvalidInstructionArgument', + msg: 'InvalidInstructionArgument', + }, + { + code: 6003, + name: 'AccountNotZeroed', + msg: 'AccountNotZeroed', + }, + { + code: 6004, + name: 'InvalidDataConversion', + msg: 'InvalidDataConversion', + }, + { + code: 6006, + name: 'U64Overflow', + msg: 'U64Overflow', + }, + { + code: 6008, + name: 'InvalidComputeSize', + msg: 'InvalidComputeSize', + }, + { + code: 6016, + name: 'InvalidChain', + msg: 'InvalidChain', + }, + { + code: 6032, + name: 'InvalidGovernanceEmitter', + msg: 'InvalidGovernanceEmitter', + }, + { + code: 6034, + name: 'InvalidGovernanceAction', + msg: 'InvalidGovernanceAction', + }, + { + code: 6036, + name: 'LatestGuardianSetRequired', + msg: 'LatestGuardianSetRequired', + }, + { + code: 6038, + name: 'GovernanceForAnotherChain', + msg: 'GovernanceForAnotherChain', + }, + { + code: 6040, + name: 'InvalidGovernanceVaa', + msg: 'InvalidGovernanceVaa', + }, + { + code: 6256, + name: 'InsufficientFees', + msg: 'InsufficientFees', + }, + { + code: 6258, + name: 'EmitterMismatch', + msg: 'EmitterMismatch', + }, + { + code: 6260, + name: 'NotReadyForPublishing', + msg: 'NotReadyForPublishing', + }, + { + code: 6262, + name: 'InvalidPreparedMessage', + msg: 'InvalidPreparedMessage', + }, + { + code: 6264, + name: 'ExecutableEmitter', + msg: 'ExecutableEmitter', + }, + { + code: 6266, + name: 'LegacyEmitter', + msg: 'LegacyEmitter', + }, + { + code: 6512, + name: 'InvalidSignatureSet', + msg: 'InvalidSignatureSet', + }, + { + code: 6514, + name: 'InvalidMessageHash', + msg: 'InvalidMessageHash', + }, + { + code: 6515, + name: 'NoQuorum', + msg: 'NoQuorum', + }, + { + code: 6516, + name: 'MessageMismatch', + msg: 'MessageMismatch', + }, + { + code: 7024, + name: 'NotEnoughLamports', + msg: 'NotEnoughLamports', + }, + { + code: 7026, + name: 'InvalidFeeRecipient', + msg: 'InvalidFeeRecipient', + }, + { + code: 7280, + name: 'ImplementationMismatch', + msg: 'ImplementationMismatch', + }, + { + code: 7536, + name: 'InvalidGuardianSetIndex', + msg: 'InvalidGuardianSetIndex', + }, + { + code: 7792, + name: 'GuardianSetMismatch', + msg: 'GuardianSetMismatch', + }, + { + code: 7794, + name: 'InstructionAtWrongIndex', + msg: 'InstructionAtWrongIndex', + }, + { + code: 7795, + name: 'EmptySigVerifyInstruction', + msg: 'EmptySigVerifyInstruction', + }, + { + code: 7796, + name: 'InvalidSigVerifyInstruction', + msg: 'InvalidSigVerifyInstruction', + }, + { + code: 7798, + name: 'GuardianSetExpired', + msg: 'GuardianSetExpired', + }, + { + code: 7800, + name: 'InvalidGuardianKeyRecovery', + msg: 'InvalidGuardianKeyRecovery', + }, + { + code: 7802, + name: 'SignerIndicesMismatch', + msg: 'SignerIndicesMismatch', + }, + { + code: 8048, + name: 'PayloadSizeMismatch', + msg: 'PayloadSizeMismatch', + }, + { + code: 10112, + name: 'ZeroGuardians', + msg: 'ZeroGuardians', + }, + { + code: 10128, + name: 'GuardianZeroAddress', + msg: 'GuardianZeroAddress', + }, + { + code: 10144, + name: 'DuplicateGuardianAddress', + msg: 'DuplicateGuardianAddress', + }, + { + code: 10160, + name: 'MessageAlreadyPublished', + msg: 'MessageAlreadyPublished', + }, + { + code: 10176, + name: 'VaaWritingDisallowed', + msg: 'VaaWritingDisallowed', + }, + { + code: 10192, + name: 'VaaAlreadyVerified', + msg: 'VaaAlreadyVerified', + }, + { + code: 10208, + name: 'InvalidGuardianIndex', + msg: 'InvalidGuardianIndex', + }, + { + code: 10224, + name: 'InvalidSignature', + msg: 'InvalidSignature', + }, + { + code: 10256, + name: 'UnverifiedVaa', + msg: 'UnverifiedVaa', + }, + { + code: 10258, + name: 'VaaStillProcessing', + msg: 'VaaStillProcessing', + }, + { + code: 10260, + name: 'InWritingStatus', + msg: 'InWritingStatus', + }, + { + code: 10262, + name: 'NotInWritingStatus', + msg: 'NotInWritingStatus', + }, + { + code: 10264, + name: 'InvalidMessageStatus', + msg: 'InvalidMessageStatus', + }, + { + code: 10266, + name: 'HashNotComputed', + msg: 'HashNotComputed', + }, + { + code: 10268, + name: 'InvalidVaaVersion', + msg: 'InvalidVaaVersion', + }, + { + code: 10270, + name: 'InvalidCreatedAccountSize', + msg: 'InvalidCreatedAccountSize', + }, + { + code: 10272, + name: 'DataOverflow', + msg: 'DataOverflow', + }, + { + code: 10274, + name: 'ExceedsMaxPayloadSize', + msg: 'ExceedsMaxPayloadSize (30KB)', + }, + { + code: 10276, + name: 'CannotParseVaa', + msg: 'CannotParseVaa', + }, + { + code: 10278, + name: 'EmitterAuthorityMismatch', + msg: 'EmitterAuthorityMismatch', + }, + { + code: 10280, + name: 'InvalidProgramEmitter', + msg: 'InvalidProgramEmitter', + }, + { + code: 10282, + name: 'WriteAuthorityMismatch', + msg: 'WriteAuthorityMismatch', + }, + { + code: 10284, + name: 'PostedVaaPayloadTooLarge', + msg: 'PostedVaaPayloadTooLarge', + }, + { + code: 10286, + name: 'ExecutableDisallowed', + msg: 'ExecutableDisallowed', + }, + ], +}; + +export type PythSolanaReceiver = { + version: '0.1.0'; + name: 'pyth_solana_receiver'; + instructions: [ + { + name: 'initialize'; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + { + name: 'systemProgram'; + isMut: false; + isSigner: false; + }, + ]; + args: [ + { + name: 'initialConfig'; + type: { + defined: 'Config'; + }; + }, + ]; + }, + { + name: 'requestGovernanceAuthorityTransfer'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'targetGovernanceAuthority'; + type: 'publicKey'; + }, + ]; + }, + { + name: 'acceptGovernanceAuthorityTransfer'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: []; + }, + { + name: 'setDataSources'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'validDataSources'; + type: { + vec: { + defined: 'DataSource'; + }; + }; + }, + ]; + }, + { + name: 'setFee'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'singleUpdateFeeInLamports'; + type: 'u64'; + }, + ]; + }, + { + name: 'setWormholeAddress'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'wormhole'; + type: 'publicKey'; + }, + ]; + }, + { + name: 'setMinimumSignatures'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'minimumSignatures'; + type: 'u8'; + }, + ]; + }, + { + name: 'postUpdateAtomic'; + docs: [ + 'Post a price update using a VAA and a MerklePriceUpdate.', + 'This function allows you to post a price update in a single transaction.', + "Compared to post_update, it is less secure since you won't be able to verify all guardian signatures if you use this function because of transaction size limitations.", + 'Typically, you can fit 5 guardian signatures in a transaction that uses this.', + ]; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + }, + { + name: 'guardianSet'; + isMut: false; + isSigner: false; + docs: [ + 'Instead we do the same steps in deserialize_guardian_set_checked.', + ]; + }, + { + name: 'config'; + isMut: false; + isSigner: false; + }, + { + name: 'treasury'; + isMut: true; + isSigner: false; + }, + { + name: 'priceUpdateAccount'; + isMut: true; + isSigner: true; + docs: [ + 'The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.', + "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized", + ]; + }, + { + name: 'systemProgram'; + isMut: false; + isSigner: false; + }, + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + }, + ]; + args: [ + { + name: 'params'; + type: { + defined: 'PostUpdateAtomicParams'; + }; + }, + ]; + }, + { + name: 'postUpdate'; + docs: [ + 'Post a price update using an encoded_vaa account and a MerklePriceUpdate calldata.', + 'This should be called after the client has already verified the Vaa via the Wormhole contract.', + 'Check out target_chains/solana/cli/src/main.rs for an example of how to do this.', + ]; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + }, + { + name: 'encodedVaa'; + isMut: false; + isSigner: false; + }, + { + name: 'config'; + isMut: false; + isSigner: false; + }, + { + name: 'treasury'; + isMut: true; + isSigner: false; + }, + { + name: 'priceUpdateAccount'; + isMut: true; + isSigner: true; + docs: [ + 'The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.', + "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized", + ]; + }, + { + name: 'systemProgram'; + isMut: false; + isSigner: false; + }, + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + }, + ]; + args: [ + { + name: 'params'; + type: { + defined: 'PostUpdateParams'; + }; + }, + ]; + }, + { + name: 'reclaimRent'; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + }, + { + name: 'priceUpdateAccount'; + isMut: true; + isSigner: false; + }, + ]; + args: []; + }, + ]; + accounts: [ + { + name: 'Config'; + type: { + kind: 'struct'; + fields: [ + { + name: 'governanceAuthority'; + type: 'publicKey'; + }, + { + name: 'targetGovernanceAuthority'; + type: { + option: 'publicKey'; + }; + }, + { + name: 'wormhole'; + type: 'publicKey'; + }, + { + name: 'validDataSources'; + type: { + vec: { + defined: 'DataSource'; + }; + }; + }, + { + name: 'singleUpdateFeeInLamports'; + type: 'u64'; + }, + { + name: 'minimumSignatures'; + type: 'u8'; + }, + ]; + }; + }, + { + name: 'priceUpdateV2'; + type: { + kind: 'struct'; + fields: [ + { + name: 'writeAuthority'; + type: 'publicKey'; + }, + { + name: 'verificationLevel'; + type: { + defined: 'VerificationLevel'; + }; + }, + { + name: 'priceMessage'; + type: { + defined: 'PriceFeedMessage'; + }; + }, + { + name: 'postedSlot'; + type: 'u64'; + }, + ]; + }; + }, + ]; + types: [ + { + name: 'PriceFeedMessage'; + type: { + kind: 'struct'; + fields: [ + { + name: 'feedId'; + type: { + array: ['u8', 32]; + }; + }, + { + name: 'price'; + type: 'i64'; + }, + { + name: 'conf'; + type: 'u64'; + }, + { + name: 'exponent'; + type: 'i32'; + }, + { + name: 'publishTime'; + type: 'i64'; + }, + { + name: 'prevPublishTime'; + type: 'i64'; + }, + { + name: 'emaPrice'; + type: 'i64'; + }, + { + name: 'emaConf'; + type: 'u64'; + }, + ]; + }; + }, + { + name: 'MerklePriceUpdate'; + type: { + kind: 'struct'; + fields: [ + { + name: 'message'; + type: 'bytes'; + }, + { + name: 'proof'; + type: { + vec: { + array: ['u8', 20]; + }; + }; + }, + ]; + }; + }, + { + name: 'DataSource'; + type: { + kind: 'struct'; + fields: [ + { + name: 'chain'; + type: 'u16'; + }, + { + name: 'emitter'; + type: 'publicKey'; + }, + ]; + }; + }, + { + name: 'PostUpdateAtomicParams'; + type: { + kind: 'struct'; + fields: [ + { + name: 'vaa'; + type: 'bytes'; + }, + { + name: 'merklePriceUpdate'; + type: { + defined: 'MerklePriceUpdate'; + }; + }, + { + name: 'treasuryId'; + type: 'u8'; + }, + ]; + }; + }, + { + name: 'PostUpdateParams'; + type: { + kind: 'struct'; + fields: [ + { + name: 'merklePriceUpdate'; + type: { + defined: 'MerklePriceUpdate'; + }; + }, + { + name: 'treasuryId'; + type: 'u8'; + }, + ]; + }; + }, + { + name: 'VerificationLevel'; + docs: [ + '* This enum represents how many guardian signatures were checked for a Pythnet price update\n * If full, guardian quorum has been attained\n * If partial, at least config.minimum signatures have been verified, but in the case config.minimum_signatures changes in the future we also include the number of signatures that were checked', + ]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Partial'; + fields: [ + { + name: 'numSignatures'; + type: 'u8'; + }, + ]; + }, + { + name: 'Full'; + }, + ]; + }; + }, + ]; + errors: [ + { + code: 6000; + name: 'InvalidWormholeMessage'; + msg: 'Received an invalid wormhole message'; + }, + { + code: 6001; + name: 'DeserializeMessageFailed'; + msg: 'An error occurred when deserializing the message'; + }, + { + code: 6002; + name: 'InvalidPriceUpdate'; + msg: 'Received an invalid price update'; + }, + { + code: 6003; + name: 'UnsupportedMessageType'; + msg: 'This type of message is not supported currently'; + }, + { + code: 6004; + name: 'InvalidDataSource'; + msg: "The tuple emitter chain, emitter doesn't match one of the valid data sources."; + }, + { + code: 6005; + name: 'InsufficientFunds'; + msg: 'Funds are insufficient to pay the receiving fee'; + }, + { + code: 6006; + name: 'WrongWriteAuthority'; + msg: "This signer can't write to price update account"; + }, + { + code: 6007; + name: 'WrongVaaOwner'; + msg: 'The posted VAA account has the wrong owner.'; + }, + { + code: 6008; + name: 'DeserializeVaaFailed'; + msg: 'An error occurred when deserializing the VAA.'; + }, + { + code: 6009; + name: 'InsufficientGuardianSignatures'; + msg: 'The number of guardian signatures is below the minimum'; + }, + { + code: 6010; + name: 'InvalidVaaVersion'; + msg: 'Invalid VAA version'; + }, + { + code: 6011; + name: 'GuardianSetMismatch'; + msg: "Guardian set version in the VAA doesn't match the guardian set passed"; + }, + { + code: 6012; + name: 'InvalidGuardianOrder'; + msg: 'Guardian signature indices must be increasing'; + }, + { + code: 6013; + name: 'InvalidGuardianIndex'; + msg: 'Guardian index exceeds the number of guardians in the set'; + }, + { + code: 6014; + name: 'InvalidSignature'; + msg: 'A VAA signature is invalid'; + }, + { + code: 6015; + name: 'InvalidGuardianKeyRecovery'; + msg: "The recovered guardian public key doesn't match the guardian set"; + }, + { + code: 6016; + name: 'WrongGuardianSetOwner'; + msg: 'The guardian set account is owned by the wrong program'; + }, + { + code: 6017; + name: 'InvalidGuardianSetPda'; + msg: "The Guardian Set account doesn't match the PDA derivation"; + }, + { + code: 6018; + name: 'GuardianSetExpired'; + msg: 'The Guardian Set is expired'; + }, + { + code: 6019; + name: 'GovernanceAuthorityMismatch'; + msg: 'The signer is not authorized to perform this governance action'; + }, + { + code: 6020; + name: 'TargetGovernanceAuthorityMismatch'; + msg: 'The signer is not authorized to accept the governance authority'; + }, + { + code: 6021; + name: 'NonexistentGovernanceAuthorityTransferRequest'; + msg: 'The governance authority needs to request a transfer first'; + }, + ]; +}; + +export const IDL: PythSolanaReceiver = { + version: '0.1.0', + name: 'pyth_solana_receiver', + instructions: [ + { + name: 'initialize', + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'initialConfig', + type: { + defined: 'Config', + }, + }, + ], + }, + { + name: 'requestGovernanceAuthorityTransfer', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'targetGovernanceAuthority', + type: 'publicKey', + }, + ], + }, + { + name: 'acceptGovernanceAuthorityTransfer', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [], + }, + { + name: 'setDataSources', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'validDataSources', + type: { + vec: { + defined: 'DataSource', + }, + }, + }, + ], + }, + { + name: 'setFee', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'singleUpdateFeeInLamports', + type: 'u64', + }, + ], + }, + { + name: 'setWormholeAddress', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'wormhole', + type: 'publicKey', + }, + ], + }, + { + name: 'setMinimumSignatures', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'minimumSignatures', + type: 'u8', + }, + ], + }, + { + name: 'postUpdateAtomic', + docs: [ + 'Post a price update using a VAA and a MerklePriceUpdate.', + 'This function allows you to post a price update in a single transaction.', + "Compared to post_update, it is less secure since you won't be able to verify all guardian signatures if you use this function because of transaction size limitations.", + 'Typically, you can fit 5 guardian signatures in a transaction that uses this.', + ], + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'guardianSet', + isMut: false, + isSigner: false, + docs: [ + 'Instead we do the same steps in deserialize_guardian_set_checked.', + ], + }, + { + name: 'config', + isMut: false, + isSigner: false, + }, + { + name: 'treasury', + isMut: true, + isSigner: false, + }, + { + name: 'priceUpdateAccount', + isMut: true, + isSigner: true, + docs: [ + 'The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.', + "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized", + ], + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + }, + ], + args: [ + { + name: 'params', + type: { + defined: 'PostUpdateAtomicParams', + }, + }, + ], + }, + { + name: 'postUpdate', + docs: [ + 'Post a price update using an encoded_vaa account and a MerklePriceUpdate calldata.', + 'This should be called after the client has already verified the Vaa via the Wormhole contract.', + 'Check out target_chains/solana/cli/src/main.rs for an example of how to do this.', + ], + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'encodedVaa', + isMut: false, + isSigner: false, + }, + { + name: 'config', + isMut: false, + isSigner: false, + }, + { + name: 'treasury', + isMut: true, + isSigner: false, + }, + { + name: 'priceUpdateAccount', + isMut: true, + isSigner: true, + docs: [ + 'The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.', + "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized", + ], + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + }, + ], + args: [ + { + name: 'params', + type: { + defined: 'PostUpdateParams', + }, + }, + ], + }, + { + name: 'reclaimRent', + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'priceUpdateAccount', + isMut: true, + isSigner: false, + }, + ], + args: [], + }, + ], + accounts: [ + { + name: 'Config', + type: { + kind: 'struct', + fields: [ + { + name: 'governanceAuthority', + type: 'publicKey', + }, + { + name: 'targetGovernanceAuthority', + type: { + option: 'publicKey', + }, + }, + { + name: 'wormhole', + type: 'publicKey', + }, + { + name: 'validDataSources', + type: { + vec: { + defined: 'DataSource', + }, + }, + }, + { + name: 'singleUpdateFeeInLamports', + type: 'u64', + }, + { + name: 'minimumSignatures', + type: 'u8', + }, + ], + }, + }, + { + name: 'priceUpdateV2', + type: { + kind: 'struct', + fields: [ + { + name: 'writeAuthority', + type: 'publicKey', + }, + { + name: 'verificationLevel', + type: { + defined: 'VerificationLevel', + }, + }, + { + name: 'priceMessage', + type: { + defined: 'PriceFeedMessage', + }, + }, + { + name: 'postedSlot', + type: 'u64', + }, + ], + }, + }, + ], + types: [ + { + name: 'PriceFeedMessage', + type: { + kind: 'struct', + fields: [ + { + name: 'feedId', + type: { + array: ['u8', 32], + }, + }, + { + name: 'price', + type: 'i64', + }, + { + name: 'conf', + type: 'u64', + }, + { + name: 'exponent', + type: 'i32', + }, + { + name: 'publishTime', + type: 'i64', + }, + { + name: 'prevPublishTime', + type: 'i64', + }, + { + name: 'emaPrice', + type: 'i64', + }, + { + name: 'emaConf', + type: 'u64', + }, + ], + }, + }, + { + name: 'MerklePriceUpdate', + type: { + kind: 'struct', + fields: [ + { + name: 'message', + type: 'bytes', + }, + { + name: 'proof', + type: { + vec: { + array: ['u8', 20], + }, + }, + }, + ], + }, + }, + { + name: 'DataSource', + type: { + kind: 'struct', + fields: [ + { + name: 'chain', + type: 'u16', + }, + { + name: 'emitter', + type: 'publicKey', + }, + ], + }, + }, + { + name: 'PostUpdateAtomicParams', + type: { + kind: 'struct', + fields: [ + { + name: 'vaa', + type: 'bytes', + }, + { + name: 'merklePriceUpdate', + type: { + defined: 'MerklePriceUpdate', + }, + }, + { + name: 'treasuryId', + type: 'u8', + }, + ], + }, + }, + { + name: 'PostUpdateParams', + type: { + kind: 'struct', + fields: [ + { + name: 'merklePriceUpdate', + type: { + defined: 'MerklePriceUpdate', + }, + }, + { + name: 'treasuryId', + type: 'u8', + }, + ], + }, + }, + { + name: 'VerificationLevel', + docs: [ + '* This enum represents how many guardian signatures were checked for a Pythnet price update\n * If full, guardian quorum has been attained\n * If partial, at least config.minimum signatures have been verified, but in the case config.minimum_signatures changes in the future we also include the number of signatures that were checked', + ], + type: { + kind: 'enum', + variants: [ + { + name: 'Partial', + fields: [ + { + name: 'numSignatures', + type: 'u8', + }, + ], + }, + { + name: 'Full', + }, + ], + }, + }, + ], + errors: [ + { + code: 6000, + name: 'InvalidWormholeMessage', + msg: 'Received an invalid wormhole message', + }, + { + code: 6001, + name: 'DeserializeMessageFailed', + msg: 'An error occurred when deserializing the message', + }, + { + code: 6002, + name: 'InvalidPriceUpdate', + msg: 'Received an invalid price update', + }, + { + code: 6003, + name: 'UnsupportedMessageType', + msg: 'This type of message is not supported currently', + }, + { + code: 6004, + name: 'InvalidDataSource', + msg: "The tuple emitter chain, emitter doesn't match one of the valid data sources.", + }, + { + code: 6005, + name: 'InsufficientFunds', + msg: 'Funds are insufficient to pay the receiving fee', + }, + { + code: 6006, + name: 'WrongWriteAuthority', + msg: "This signer can't write to price update account", + }, + { + code: 6007, + name: 'WrongVaaOwner', + msg: 'The posted VAA account has the wrong owner.', + }, + { + code: 6008, + name: 'DeserializeVaaFailed', + msg: 'An error occurred when deserializing the VAA.', + }, + { + code: 6009, + name: 'InsufficientGuardianSignatures', + msg: 'The number of guardian signatures is below the minimum', + }, + { + code: 6010, + name: 'InvalidVaaVersion', + msg: 'Invalid VAA version', + }, + { + code: 6011, + name: 'GuardianSetMismatch', + msg: "Guardian set version in the VAA doesn't match the guardian set passed", + }, + { + code: 6012, + name: 'InvalidGuardianOrder', + msg: 'Guardian signature indices must be increasing', + }, + { + code: 6013, + name: 'InvalidGuardianIndex', + msg: 'Guardian index exceeds the number of guardians in the set', + }, + { + code: 6014, + name: 'InvalidSignature', + msg: 'A VAA signature is invalid', + }, + { + code: 6015, + name: 'InvalidGuardianKeyRecovery', + msg: "The recovered guardian public key doesn't match the guardian set", + }, + { + code: 6016, + name: 'WrongGuardianSetOwner', + msg: 'The guardian set account is owned by the wrong program', + }, + { + code: 6017, + name: 'InvalidGuardianSetPda', + msg: "The Guardian Set account doesn't match the PDA derivation", + }, + { + code: 6018, + name: 'GuardianSetExpired', + msg: 'The Guardian Set is expired', + }, + { + code: 6019, + name: 'GovernanceAuthorityMismatch', + msg: 'The signer is not authorized to perform this governance action', + }, + { + code: 6020, + name: 'TargetGovernanceAuthorityMismatch', + msg: 'The signer is not authorized to accept the governance authority', + }, + { + code: 6021, + name: 'NonexistentGovernanceAuthorityTransferRequest', + msg: 'The governance authority needs to request a transfer first', + }, + ], +}; + +export declare const PYTH_SOLANA_RECEIVER_IDL: PythSolanaReceiver; +//# sourceMappingURL=pyth_solana_receiver.d.ts.map + +export type PriceUpdateAccount = + IdlAccounts['priceUpdateV2']; diff --git a/sdk/src/pyth/utils.ts b/sdk/src/pyth/utils.ts new file mode 100644 index 0000000000..4c3492042d --- /dev/null +++ b/sdk/src/pyth/utils.ts @@ -0,0 +1,13 @@ +import { PublicKey } from '@solana/web3.js'; + +export const getGuardianSetPda = ( + guardianSetIndex: number, + wormholeProgramId: PublicKey +) => { + const guardianSetIndexBuf = Buffer.alloc(4); + guardianSetIndexBuf.writeUInt32BE(guardianSetIndex, 0); + return PublicKey.findProgramAddressSync( + [Buffer.from('GuardianSet'), guardianSetIndexBuf], + wormholeProgramId + )[0]; +}; diff --git a/sdk/tests/decode/test.ts b/sdk/tests/decode/test.ts index 20f18bebdd..6156a4a7fd 100644 --- a/sdk/tests/decode/test.ts +++ b/sdk/tests/decode/test.ts @@ -187,10 +187,11 @@ function testPerpPosition(anchor: PerpPosition, custom: PerpPosition) { assert(anchor.openAsks.eq(custom.openAsks)); assert(anchor.settledPnl.eq(custom.settledPnl)); assert(anchor.lpShares.eq(custom.lpShares)); - assert(anchor.lastBaseAssetAmountPerLp.eq(custom.lastBaseAssetAmountPerLp)); assert(anchor.lastQuoteAssetAmountPerLp.eq(custom.lastQuoteAssetAmountPerLp)); assert(anchor.openOrders === custom.openOrders); assert(anchor.perLpBase === custom.perLpBase); + assert(anchor.isolatedPositionScaledBalance.eq(custom.isolatedPositionScaledBalance)); + assert(anchor.positionFlag === custom.positionFlag); } function* getOrders(orders: Order[]) { diff --git a/sdk/tests/dlob/helpers.ts b/sdk/tests/dlob/helpers.ts index 69ff661bc0..397b020456 100644 --- a/sdk/tests/dlob/helpers.ts +++ b/sdk/tests/dlob/helpers.ts @@ -41,7 +41,6 @@ export const mockPerpPosition: PerpPosition = { settledPnl: new BN(0), lpShares: new BN(0), remainderBaseAssetAmount: 0, - lastBaseAssetAmountPerLp: new BN(0), lastQuoteAssetAmountPerLp: new BN(0), perLpBase: 0, maxMarginRatio: 1, diff --git a/sdk/yarn.lock b/sdk/yarn.lock index 8f438b3526..c2f0c90876 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -3,11 +3,11 @@ "@babel/code-frame@^7.12.13": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" + integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== dependencies: - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" picocolors "^1.1.1" @@ -16,30 +16,30 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== -"@babel/parser@^7.26.7", "@babel/parser@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" - integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== +"@babel/parser@^7.26.7", "@babel/parser@^7.28.5": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" + integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== dependencies: - "@babel/types" "^7.28.0" + "@babel/types" "^7.28.6" "@babel/runtime@^7.10.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.25.0": - version "7.27.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.6.tgz#ec4070a04d76bae8ddbb10770ba55714a417b7c6" - integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b" + integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== -"@babel/types@^7.28.0": - version "7.28.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.2.tgz#da9db0856a9a88e0a13b019881d7513588cf712b" - integrity sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ== +"@babel/types@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" + integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== dependencies: "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": version "0.30.1" @@ -263,16 +263,16 @@ integrity sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" - integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" + integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== dependencies: eslint-visitor-keys "^3.4.3" "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -393,10 +393,10 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7" - integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.5.5": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -467,22 +467,17 @@ spok "^1.4.3" "@msgpack/msgpack@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.1.2.tgz#fdd25cc2202297519798bbaf4689152ad9609e19" - integrity sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ== + version "3.1.3" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.1.3.tgz#c4bff2b9539faf0882f3ee03537a7e9a4b3a7864" + integrity sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA== "@noble/curves@^1.4.2": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.2.tgz#73388356ce733922396214a933ff7c95afcef911" - integrity sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g== + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== dependencies: "@noble/hashes" "1.8.0" -"@noble/ed25519@^1.7.1": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.5.tgz#94df8bdb9fec9c4644a56007eecb57b0e9fbd0d7" - integrity sha512-xuS0nwRMQBvSxDa7UxMb61xTiH3MxTgUfhyPUALVIe0FlOAz4sjELwyDRyUvqeEYfRSG9qNjFIycqLZppg4RSA== - "@noble/hashes@1.8.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" @@ -627,35 +622,6 @@ dependencies: bn.js "^5.2.1" -"@pythnetwork/price-service-sdk@>=1.6.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.8.0.tgz#f5f01f654963eb9a0cf12127b4f1a89b60ef008a" - integrity sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA== - dependencies: - bn.js "^5.2.1" - -"@pythnetwork/pyth-solana-receiver@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@pythnetwork/pyth-solana-receiver/-/pyth-solana-receiver-0.7.0.tgz#253a0d15a135d625ceca7ba1b47940dd03b9cab6" - integrity sha512-OoEAHh92RPRdKkfjkcKGrjC+t0F3SEL754iKFmixN9zyS8pIfZSVfFntmkHa9pWmqEMxdx/i925a8B5ny8Tuvg== - 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.5" - resolved "https://registry.yarnpkg.com/@pythnetwork/solana-utils/-/solana-utils-0.4.5.tgz#7c5af4b6794769e57b56ad1c680faa6dbf70b919" - integrity sha512-NoLdC2rRAx9a66L0hSOAGt6Wj/YxfnKkw+mbb7Tn/Nn1du4HyShi41DiN6B+2XXqnMthNGbf9FSHvj4NXXABvA== - dependencies: - "@coral-xyz/anchor" "^0.29.0" - "@solana/web3.js" "^1.90.0" - bs58 "^5.0.0" - jito-ts "^3.0.1" - ts-log "^2.2.7" - "@sinclair/typebox@^0.24.1": version "0.24.51" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" @@ -683,12 +649,11 @@ "@sinonjs/commons" "^3.0.1" "@sinonjs/samsam@^8.0.0": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" - integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== + version "8.0.3" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.3.tgz#eb6ffaef421e1e27783cc9b52567de20cb28072d" + integrity sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ== dependencies: "@sinonjs/commons" "^3.0.1" - lodash.get "^4.4.2" type-detect "^4.1.0" "@sinonjs/text-encoding@^0.7.3": @@ -711,7 +676,7 @@ resolved "https://registry.yarnpkg.com/@solana-program/system/-/system-0.7.0.tgz#3e21c9fb31d3795eb65ba5cb663947c19b305bad" integrity sha512-FKTBsKHpvHHNc1ATRm7SlC5nF/VdJtOSjldhcyfMN9R7xo712Mo2jHIzvBgn8zQO5Kg0DcWuKB7268Kv1ocicw== -"@solana-program/token-2022@^0.4.1": +"@solana-program/token-2022@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@solana-program/token-2022/-/token-2022-0.4.2.tgz#f90a638de82acb7933a114e884a24ac4be8ef635" integrity sha512-zIpR5t4s9qEU3hZKupzIBxJ6nUV5/UVyIT400tu9vT1HMs5JHxaTTsb5GUhYjiiTvNwU0MQavbwc4Dl29L0Xvw== @@ -1119,7 +1084,7 @@ dependencies: "@solana/codecs" "2.0.0-rc.1" -"@solana/spl-token@0.4.13", "@solana/spl-token@^0.4.0": +"@solana/spl-token@0.4.13": version "0.4.13" resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.13.tgz#8f65c3c2b315e1a00a91b8d0f60922c6eb71de62" integrity sha512-cite/pYWQZZVvLbg5lsodSovbetK/eA24gaR0eeUeMuBAMNrT8XFCwaygKy0N2WSg3gSyjjNpIeAGBAKZaY/1w== @@ -1152,6 +1117,17 @@ "@solana/spl-token-metadata" "^0.1.2" buffer "^6.0.3" +"@solana/spl-token@^0.4.0": + version "0.4.14" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.14.tgz#b86bc8a17f50e9680137b585eca5f5eb9d55c025" + integrity sha512-u09zr96UBpX4U685MnvQsNzlvw9TiY005hk1vJmJr7gMJldoPG1eYU5/wNEyOA5lkMLiR/gOi9SFD4MefOYEsA== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.7" + "@solana/spl-token-metadata" "^0.1.6" + buffer "^6.0.3" + "@solana/subscribable@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/subscribable/-/subscribable-2.3.0.tgz#4e48f1a4eeb1ccf22065b46fb8e3ed80d1a27f80" @@ -1240,9 +1216,9 @@ superstruct "^2.0.2" "@swc/helpers@^0.5.11": - version "0.5.17" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.17.tgz#5a7be95ac0f0bf186e7e6e890e7a6f6cda6ce971" - integrity sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A== + version "0.5.18" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.18.tgz#feeeabea0d10106ee25aaf900165df911ab6d3b1" + integrity sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ== dependencies: tslib "^2.8.0" @@ -1263,9 +1239,9 @@ yaml "^2.6.1" "@switchboard-xyz/common@>=3.0.0": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-3.4.1.tgz#3144c0730649e60129ea8c9b3c04062ceff35c6e" - integrity sha512-TropBlBYuDeBnmGHkPSmgC3clLqAxy51ZGbwk4ejAgadnszWOgYHcH7taRG4Ha17DYSCWw/LGMBKbunGo+Aoaw== + version "5.6.1" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-5.6.1.tgz#a379005af3a72a504f8f6ba88ea8991d328f6336" + integrity sha512-2Sz3iAusCnpEp+lJLOcwstRxGQCkbCdLDNgAYl/gTqApCA+drdQni8WoeKdahAXtcxhr72pd9PhFi/4N25im+w== dependencies: "@solana/web3.js" "^1.98.2" axios "^1.9.0" @@ -1276,8 +1252,6 @@ decimal.js "^10.4.3" js-sha256 "^0.11.0" protobufjs "^7.4.0" - yaml "^2.6.1" - zod "4.0.0-beta.20250505T195954" "@switchboard-xyz/on-demand@2.4.1": version "2.4.1" @@ -1327,9 +1301,9 @@ "@ts-graphviz/common" "^2.1.5" "@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + version "1.0.12" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.12.tgz#be57ceac1e4692b41be9de6be8c32a106636dba4" + integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ== "@tsconfig/node12@^1.0.7": version "1.0.11" @@ -1416,11 +1390,11 @@ integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== "@types/node@*", "@types/node@>=13.7.0": - version "24.0.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.13.tgz#93ed8c05c7b188a59760be0ce2ee3fa7ad0f83f6" - integrity sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ== + version "25.0.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.8.tgz#e54e00f94fe1db2497b3e42d292b8376a2678c8d" + integrity sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg== dependencies: - undici-types "~7.8.0" + undici-types "~7.16.0" "@types/node@^12.12.54": version "12.20.55" @@ -1428,9 +1402,9 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^18.11.13": - version "18.19.118" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.118.tgz#e8ad99b8fb0c350773dfd9c5acda1a4bfb84a688" - integrity sha512-hIPK0hSrrcaoAu/gJMzN3QClXE4QdCdFvaenJ0JsjIbExP1JFFVH+RHcBt25c9n8bx5dkIfqKE+uw6BmBns7ug== + version "18.19.130" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.130.tgz#da4c6324793a79defb7a62cba3947ec5add00d59" + integrity sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg== dependencies: undici-types "~5.26.4" @@ -1442,9 +1416,9 @@ protobufjs "*" "@types/semver@^7.5.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" - integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== + version "7.7.1" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.1.tgz#3ce3af1a5524ef327d2da9e4fd8b6d95c8d70528" + integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== "@types/stack-utils@^2.0.0": version "2.0.3" @@ -1476,9 +1450,9 @@ integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": - version "17.0.33" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" - integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + version "17.0.35" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== dependencies: "@types/yargs-parser" "*" @@ -1510,14 +1484,14 @@ "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" -"@typescript-eslint/project-service@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.38.0.tgz#4900771f943163027fd7d2020a062892056b5e2f" - integrity sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg== +"@typescript-eslint/project-service@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.53.0.tgz#327c67c61c16a1c8b12a440b0779b41eb77cc7df" + integrity sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.38.0" - "@typescript-eslint/types" "^8.38.0" - debug "^4.3.4" + "@typescript-eslint/tsconfig-utils" "^8.53.0" + "@typescript-eslint/types" "^8.53.0" + debug "^4.4.3" "@typescript-eslint/scope-manager@6.21.0": version "6.21.0" @@ -1527,10 +1501,10 @@ "@typescript-eslint/types" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" -"@typescript-eslint/tsconfig-utils@8.38.0", "@typescript-eslint/tsconfig-utils@^8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz#6de4ce224a779601a8df667db56527255c42c4d0" - integrity sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ== +"@typescript-eslint/tsconfig-utils@8.53.0", "@typescript-eslint/tsconfig-utils@^8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz#105279d7969a7abdc8345cc9c57cff83cf910f8f" + integrity sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA== "@typescript-eslint/type-utils@6.21.0": version "6.21.0" @@ -1547,10 +1521,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== -"@typescript-eslint/types@8.38.0", "@typescript-eslint/types@^8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.38.0.tgz#297351c994976b93c82ac0f0e206c8143aa82529" - integrity sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw== +"@typescript-eslint/types@8.53.0", "@typescript-eslint/types@^8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.53.0.tgz#1adcad3fa32bc2c4cbf3785ba07a5e3151819efb" + integrity sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ== "@typescript-eslint/typescript-estree@6.21.0": version "6.21.0" @@ -1567,20 +1541,19 @@ ts-api-utils "^1.0.1" "@typescript-eslint/typescript-estree@^8.23.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz#82262199eb6778bba28a319e25ad05b1158957df" - integrity sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ== - dependencies: - "@typescript-eslint/project-service" "8.38.0" - "@typescript-eslint/tsconfig-utils" "8.38.0" - "@typescript-eslint/types" "8.38.0" - "@typescript-eslint/visitor-keys" "8.38.0" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^2.1.0" + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz#7805b46b7a8ce97e91b7bb56fc8b1ba26ca8ef52" + integrity sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw== + dependencies: + "@typescript-eslint/project-service" "8.53.0" + "@typescript-eslint/tsconfig-utils" "8.53.0" + "@typescript-eslint/types" "8.53.0" + "@typescript-eslint/visitor-keys" "8.53.0" + debug "^4.4.3" + minimatch "^9.0.5" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.4.0" "@typescript-eslint/utils@6.21.0": version "6.21.0" @@ -1603,12 +1576,12 @@ "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" -"@typescript-eslint/visitor-keys@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz#a9765a527b082cb8fc60fd8a16e47c7ad5b60ea5" - integrity sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g== +"@typescript-eslint/visitor-keys@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz#9a785664ddae7e3f7e570ad8166e48dbc9c6cf02" + integrity sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw== dependencies: - "@typescript-eslint/types" "8.38.0" + "@typescript-eslint/types" "8.53.0" eslint-visitor-keys "^4.2.1" "@ungap/structured-clone@^1.2.0": @@ -1616,57 +1589,52 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== -"@vue/compiler-core@3.5.18": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.18.tgz#521a138cdd970d9bfd27e42168d12f77a04b2074" - integrity sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw== +"@vue/compiler-core@3.5.26": + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.26.tgz#1a91ea90980528bedff7b1c292690bfb30612485" + integrity sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w== dependencies: - "@babel/parser" "^7.28.0" - "@vue/shared" "3.5.18" - entities "^4.5.0" + "@babel/parser" "^7.28.5" + "@vue/shared" "3.5.26" + entities "^7.0.0" estree-walker "^2.0.2" source-map-js "^1.2.1" -"@vue/compiler-dom@3.5.18": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz#e13504492c3061ec5bbe6a2e789f15261d4f03a7" - integrity sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A== +"@vue/compiler-dom@3.5.26": + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz#66c36b6ed8bdf43236d7188ea332bc9d078eb286" + integrity sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A== dependencies: - "@vue/compiler-core" "3.5.18" - "@vue/shared" "3.5.18" + "@vue/compiler-core" "3.5.26" + "@vue/shared" "3.5.26" "@vue/compiler-sfc@^3.5.13": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz#ba1e849561337d809937994cdaf900539542eeca" - integrity sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA== - dependencies: - "@babel/parser" "^7.28.0" - "@vue/compiler-core" "3.5.18" - "@vue/compiler-dom" "3.5.18" - "@vue/compiler-ssr" "3.5.18" - "@vue/shared" "3.5.18" + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz#fb1c6c4bf9a9e22bb169e039e19437cb6995917a" + integrity sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA== + dependencies: + "@babel/parser" "^7.28.5" + "@vue/compiler-core" "3.5.26" + "@vue/compiler-dom" "3.5.26" + "@vue/compiler-ssr" "3.5.26" + "@vue/shared" "3.5.26" estree-walker "^2.0.2" - magic-string "^0.30.17" + magic-string "^0.30.21" postcss "^8.5.6" source-map-js "^1.2.1" -"@vue/compiler-ssr@3.5.18": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz#aecde0b0bff268a9c9014ba66799307c4a784328" - integrity sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g== +"@vue/compiler-ssr@3.5.26": + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz#f6e94bccbb5339180779036ddfb614f998a197ea" + integrity sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw== dependencies: - "@vue/compiler-dom" "3.5.18" - "@vue/shared" "3.5.18" + "@vue/compiler-dom" "3.5.26" + "@vue/shared" "3.5.26" -"@vue/shared@3.5.18": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.18.tgz#529f24a88d3ed678d50fd5c07455841fbe8ac95e" - integrity sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA== - -"@zod/core@0.11.6": - version "0.11.6" - resolved "https://registry.yarnpkg.com/@zod/core/-/core-0.11.6.tgz#9216e98848dc9364eda35e3da90f5362f10e8887" - integrity sha512-03Bv82fFSfjDAvMfdHHdGSS6SOJs0iCcJlWJv1kJHRtoTT02hZpyip/2Lk6oo4l4FtjuwTrsEQTwg/LD8I7dJA== +"@vue/shared@3.5.26": + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.26.tgz#1e02ef2d64aced818cd31d81ce5175711dc90a9f" + integrity sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A== acorn-jsx@^5.3.2: version "5.3.2" @@ -1685,7 +1653,7 @@ acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== -agentkeepalive@^4.3.0, agentkeepalive@^4.5.0: +agentkeepalive@^4.5.0: version "4.6.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== @@ -1810,12 +1778,12 @@ available-typed-arrays@^1.0.7: possible-typed-array-names "^1.0.0" axios@^1.8.3, axios@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.10.0.tgz#af320aee8632eaf2a400b6a1979fa75856f38d54" - integrity sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw== + version "1.13.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" + integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== dependencies: follow-redirects "^1.15.6" - form-data "^4.0.0" + form-data "^4.0.4" proxy-from-env "^1.1.0" backslash@<0.2.1: @@ -1863,9 +1831,9 @@ bigint-buffer@^1.1.5: bindings "^1.3.0" bignumber.js@^9.0.1: - version "9.3.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.0.tgz#bdba7e2a4c1a2eba08290e8dcad4f36393c92acd" - integrity sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA== + version "9.3.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" + integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== binary-extensions@^2.0.0: version "2.3.0" @@ -2042,9 +2010,9 @@ buffer@^5.5.0: ieee754 "^1.1.13" bufferutil@^4.0.1: - version "4.0.9" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.9.tgz#6e81739ad48a95cad45a279588e13e95e24a800a" - integrity sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw== + version "4.1.0" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.1.0.tgz#a4623541dd23867626bb08a051ec0d2ec0b70294" + integrity sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw== dependencies: node-gyp-build "^4.3.0" @@ -2324,7 +2292,7 @@ crypto-hash@^1.3.0: resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== -debug@<4.4.2, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5: +debug@<4.4.2, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.4.3: version "4.4.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== @@ -2538,11 +2506,6 @@ 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.6.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" - integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== - dunder-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" @@ -2578,17 +2541,17 @@ encoding@0.1.13: iconv-lite "^0.6.2" enhanced-resolve@^5.18.0: - version "5.18.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz#7903c5b32ffd4b2143eeb4b92472bd68effd5464" - integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ== + version "5.18.4" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz#c22d33055f3952035ce6a144ce092447c525f828" + integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -entities@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +entities@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.0.tgz#2ae4e443f3f17d152d3f5b0f79b932c1e59deb7a" + integrity sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ== error-ex@<1.3.3: version "1.3.2" @@ -2783,9 +2746,9 @@ esprima@^4.0.0, esprima@^4.0.1: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + version "1.7.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d" + integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== dependencies: estraverse "^5.1.0" @@ -2855,7 +2818,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9, fast-glob@^3.3.2: +fast-glob@^3.2.9: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -2882,12 +2845,17 @@ fast-stable-stringify@^1.0.0: integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + version "1.20.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== dependencies: reusify "^1.0.4" +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -2968,9 +2936,9 @@ flatted@^3.2.9: integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== for-each@^0.3.5: version "0.3.5" @@ -2979,10 +2947,10 @@ for-each@^0.3.5: dependencies: is-callable "^1.2.7" -form-data@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.3.tgz#608b1b3f3e28be0fccf5901fc85fb3641e5cf0ae" - integrity sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA== +form-data@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -3005,6 +2973,11 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +generator-function@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" + integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== + get-amd-module-type@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-amd-module-type/-/get-amd-module-type-6.0.1.tgz#191f479ae8706c246b52bf402fbe1bb0965d9f1e" @@ -3044,7 +3017,7 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-proto@^1.0.0, get-proto@^1.0.1: +get-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== @@ -3053,17 +3026,17 @@ get-proto@^1.0.0, get-proto@^1.0.1: es-object-atoms "^1.0.0" gill@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/gill/-/gill-0.10.2.tgz#593c031c9964739739a07480199d0c409da40fb5" - integrity sha512-upWoY2dfOzKHOcX3UnD+B3h9WUunPv0oxeKzsIgKSaLyURpWK9oI+K2NHWbwrUFsXEK6ozu/sgkhuqyAcVTZCg== + version "0.10.3" + resolved "https://registry.yarnpkg.com/gill/-/gill-0.10.3.tgz#0eeeaf18b9a6ec7adc17967f51f86be042ee2f24" + integrity sha512-4LIVA32lKcWoqU/dbwu+YpJbR59QQT6mvCtqkElBWF2aT9upmewjKN3/anhfTGy+o/RJykAV21i3RzCj9FR0Xg== dependencies: "@solana-program/address-lookup-table" "^0.7.0" "@solana-program/compute-budget" "^0.8.0" "@solana-program/system" "^0.7.0" - "@solana-program/token-2022" "^0.4.1" + "@solana-program/token-2022" "^0.4.2" "@solana/assertions" "^2.1.1" "@solana/codecs" "^2.1.1" - "@solana/kit" "^2.1.1" + "@solana/kit" "^2.3.0" "@solana/transaction-confirmation" "^2.1.1" glob-parent@^5.1.2, glob-parent@~5.1.2: @@ -3352,7 +3325,7 @@ is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.16.0: +is-core-module@^2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -3370,12 +3343,13 @@ is-fullwidth-code-point@^3.0.0: integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-function@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" - integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5" + integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== dependencies: - call-bound "^1.0.3" - get-proto "^1.0.0" + call-bound "^1.0.4" + generator-function "^2.0.0" + get-proto "^1.0.1" has-tostringtag "^1.0.2" safe-regex-test "^1.1.0" @@ -3476,10 +3450,10 @@ isomorphic-ws@^4.0.1: resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== -jayson@^4.0.0, jayson@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.2.0.tgz#b71762393fa40bc9637eaf734ca6f40d3b8c0c93" - integrity sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg== +jayson@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.3.0.tgz#22eb8f3dcf37a5e893830e5451f32bde6d1bde4d" + integrity sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ== dependencies: "@types/connect" "^3.4.33" "@types/node" "^12.12.54" @@ -3546,20 +3520,6 @@ jest-util@^28.1.3: graceful-fs "^4.2.9" picomatch "^2.2.3" -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.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.1.tgz#712262e8fc9569d6f7f6eea72c0d8e5ccc7c976c" @@ -3576,9 +3536,9 @@ js-tokens@^4.0.0: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 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== + version "4.1.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== dependencies: argparse "^2.0.1" @@ -3639,11 +3599,6 @@ lodash.camelcase@^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" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -3704,12 +3659,12 @@ madge@^8.0.0: ts-graphviz "^2.1.2" walkdir "^0.4.1" -magic-string@^0.30.17: - version "0.30.17" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" - integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== +magic-string@^0.30.21: + version "0.30.21" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/sourcemap-codec" "^1.5.5" make-error@^1.1.1: version "1.3.6" @@ -3799,7 +3754,7 @@ minimatch@^5.0.1, minimatch@^5.1.6: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.4: +minimatch@^9.0.5: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -3901,7 +3856,7 @@ node-cache@5.1.2: dependencies: clone "2.x" -node-fetch@^2.6.7, node-fetch@^2.7.0: +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== @@ -4071,9 +4026,9 @@ path-parse@^1.0.7: integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-to-regexp@^8.1.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" - integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== + version "8.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz#aa818a6981f99321003a08987d3cec9c3474cd1f" + integrity sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA== path-type@^4.0.0: version "4.0.0" @@ -4107,6 +4062,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" @@ -4162,9 +4122,9 @@ prelude-ls@^1.2.1: integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + version "1.0.1" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz#6a31f88a4bad6c7adda253de12ba4edaea80ebcd" + integrity sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg== dependencies: fast-diff "^1.1.2" @@ -4205,10 +4165,10 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -protobufjs@*, protobufjs@^7.5.3: - version "7.5.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" - integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== +protobufjs@*: + version "8.0.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-8.0.0.tgz#d884102c1fe8d0b1e2493789ad37bc7ea47c0893" + integrity sha512-jx6+sE9h/UryaCZhsJWbJtTEy47yXoGNYI4z8ZaRncM0zBKeRqjO2JEcOUYwrYGb1WLhXM1FfMzW3annvFv0rw== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -4223,10 +4183,10 @@ protobufjs@*, protobufjs@^7.5.3: "@types/node" ">=13.7.0" long "^5.0.0" -protobufjs@^7.2.5, protobufjs@^7.4.0: - version "7.5.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.3.tgz#13f95a9e3c84669995ec3652db2ac2fb00b89363" - integrity sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw== +protobufjs@^7.4.0, protobufjs@^7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" + integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -4346,9 +4306,9 @@ requirejs-config-file@^4.0.0: stringify-object "^3.2.1" requirejs@^2.3.7: - version "2.3.7" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.7.tgz#0b22032e51a967900e0ae9f32762c23a87036bd0" - integrity sha512-DouTG8T1WanGok6Qjg2SXuCMzszOo0eHeH9hDZ5Y4x8Je+9JB38HdTLT4/VA8OaUhBa0JPVHJ0pyBkM1z+pDsw== + version "2.3.8" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.8.tgz#bca0614b618ab2122462597e44878db7558bbba3" + integrity sha512-7/cTSLOdYkNBNJcDMWf+luFvMriVm7eYxp4BcFCsAX0wF421Vyce5SXP17c+Jd5otXKGNehIonFlyQXSowL6Mw== resolve-dependency-path@^4.0.1: version "4.0.1" @@ -4361,11 +4321,11 @@ resolve-from@^4.0.0: integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.22.10: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== dependencies: - is-core-module "^2.16.0" + is-core-module "^2.16.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -4411,9 +4371,9 @@ rpc-websockets@7.5.1: utf-8-validate "^5.0.2" rpc-websockets@^9.0.2: - version "9.1.1" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.1.1.tgz#5764336f3623ee1c5cc8653b7335183e3c0c78bd" - integrity sha512-1IXGM/TfPT6nfYMIXkJdzn+L4JEsmb0FL1O2OBjaH03V3yuUDdKFulGLMFG6ErV+8pZ5HVC0limve01RyO+saA== + version "9.3.2" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.3.2.tgz#26b4d7ebaf8e53422528619a3c314e83590d85bf" + integrity sha512-VuW2xJDnl1k8n8kjbdRSWawPRkwaVqUQNjE1TdeTawf0y0abGhtVJFTXCLfgpgGDBkO/Fj6kny8Dc/nvOW78MA== dependencies: "@swc/helpers" "^0.5.11" "@types/uuid" "^8.3.4" @@ -4465,10 +4425,10 @@ sass-lookup@^6.1.0: commander "^12.1.0" enhanced-resolve "^5.18.0" -semver@^7.3.7, semver@^7.5.4, semver@^7.6.0: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== +semver@^7.3.7, semver@^7.5.4, semver@^7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== serialize-javascript@^6.0.2: version "6.0.2" @@ -4718,11 +4678,6 @@ 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.3: - 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" @@ -4749,9 +4704,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== tapable@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" - integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" + integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== text-encoding-utf-8@^1.0.2: version "1.0.2" @@ -4763,6 +4718,14 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.2.tgz#ffe59ef7522ada0a2d1cb5dfe03bb8abc3cdc133" @@ -4799,10 +4762,10 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== -ts-api-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" - integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== +ts-api-utils@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" + integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== ts-graphviz@^2.1.2: version "2.1.6" @@ -4814,11 +4777,6 @@ ts-graphviz@^2.1.2: "@ts-graphviz/common" "^2.1.5" "@ts-graphviz/core" "^2.0.7" -ts-log@^2.2.7: - version "2.2.7" - resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.7.tgz#4f4512144898b77c9984e91587076fcb8518688e" - integrity sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg== - ts-node@10.9.2: version "10.9.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" @@ -4899,24 +4857,24 @@ typescript@5.4.5: integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== typescript@^5.7.3, typescript@^5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" - integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== undici-types@^7.11.0: - version "7.12.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.12.0.tgz#15c5c7475c2a3ba30659529f5cdb4674b622fafb" - integrity sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ== + version "7.18.2" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9" + integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w== undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~7.8.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" - integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== uri-js@^4.2.2: version "4.4.1" @@ -5038,9 +4996,9 @@ ws@^7.5.10: integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.5.0: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + version "8.19.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" + integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== y18n@^5.0.5: version "5.0.8" @@ -5048,9 +5006,9 @@ y18n@^5.0.5: integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yaml@^2.6.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" - integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== + version "2.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" + integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" @@ -5108,13 +5066,6 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod@4.0.0-beta.20250505T195954: - version "4.0.0-beta.20250505T195954" - resolved "https://registry.yarnpkg.com/zod/-/zod-4.0.0-beta.20250505T195954.tgz#ba9da025671de2dde9d4d033089f03c37a35022f" - integrity sha512-iB8WvxkobVIXMARvQu20fKvbS7mUTiYRpcD8OQV1xjRhxO0EEpYIRJBk6yfBzHAHEdOSDh3SxDITr5Eajr2vtg== - dependencies: - "@zod/core" "0.11.6" - zod@4.0.17: version "4.0.17" resolved "https://registry.yarnpkg.com/zod/-/zod-4.0.17.tgz#95931170715f73f7426c385c237b7477750d6c8d" diff --git a/tests/pythPull.ts b/tests/pythPull.ts index 5118651af6..62a77457f0 100644 --- a/tests/pythPull.ts +++ b/tests/pythPull.ts @@ -9,9 +9,9 @@ import { TestBulkAccountLoader } from '../sdk/src/accounts/testBulkAccountLoader import { BankrunContextWrapper } from '../sdk/src/bankrun/bankrunConnection'; import { startAnchor } from 'solana-bankrun'; import { AccountInfo, LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js'; -import { DEFAULT_WORMHOLE_PROGRAM_ID } from '@pythnetwork/pyth-solana-receiver'; import { WORMHOLE_DATA } from './pythPullOracleData'; import { initializeQuoteSpotMarket, mockUSDCMint } from './testHelpers'; +import { DEFAULT_WORMHOLE_PROGRAM_ID } from '../sdk/src/pyth'; // set up account infos to load into banks client const GUARDIAN_SET_ACCOUNT_INFO: AccountInfo = { diff --git a/yarn.lock b/yarn.lock index 2678bc1b59..42cc7be1db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -123,24 +123,6 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@grpc/grpc-js@^1.8.13": - version "1.13.4" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.13.4.tgz#922fbc496e229c5fa66802d2369bf181c1df1c5a" - integrity sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg== - dependencies: - "@grpc/proto-loader" "^0.7.13" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/proto-loader@^0.7.13": - version "0.7.15" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.15.tgz#4cdfbf35a35461fc843abe8b9e2c0770b5095e60" - integrity sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.5" - yargs "^17.7.2" - "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -165,11 +147,6 @@ resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== -"@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" @@ -225,19 +202,19 @@ snake-case "^3.0.4" spok "^1.4.3" -"@noble/curves@^1.0.0", "@noble/curves@^1.4.2": +"@noble/curves@^1.4.2": version "1.9.2" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.2.tgz#73388356ce733922396214a933ff7c95afcef911" integrity sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g== dependencies: "@noble/hashes" "1.8.0" -"@noble/ed25519@^1.7.0", "@noble/ed25519@^1.7.1": +"@noble/ed25519@^1.7.0": version "1.7.5" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.5.tgz#94df8bdb9fec9c4644a56007eecb57b0e9fbd0d7" integrity sha512-xuS0nwRMQBvSxDa7UxMb61xTiH3MxTgUfhyPUALVIe0FlOAz4sjELwyDRyUvqeEYfRSG9qNjFIycqLZppg4RSA== -"@noble/hashes@1.8.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": +"@noble/hashes@1.8.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== @@ -391,35 +368,13 @@ ts-log "^2.2.4" ws "^8.6.0" -"@pythnetwork/price-service-sdk@*", "@pythnetwork/price-service-sdk@>=1.6.0": +"@pythnetwork/price-service-sdk@*": version "1.8.0" resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.8.0.tgz#f5f01f654963eb9a0cf12127b4f1a89b60ef008a" integrity sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA== 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.5" - resolved "https://registry.yarnpkg.com/@pythnetwork/solana-utils/-/solana-utils-0.4.5.tgz#7c5af4b6794769e57b56ad1c680faa6dbf70b919" - integrity sha512-NoLdC2rRAx9a66L0hSOAGt6Wj/YxfnKkw+mbb7Tn/Nn1du4HyShi41DiN6B+2XXqnMthNGbf9FSHvj4NXXABvA== - dependencies: - "@coral-xyz/anchor" "^0.29.0" - "@solana/web3.js" "^1.90.0" - bs58 "^5.0.0" - jito-ts "^3.0.1" - ts-log "^2.2.7" - "@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" @@ -592,7 +547,7 @@ rpc-websockets "^7.5.0" superstruct "^0.14.2" -"@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.90.0", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2": +"@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2": version "1.98.2" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.2.tgz#45167a5cfb64436944bf4dc1e8be8482bd6d4c14" integrity sha512-BqVwEG+TaG2yCkBMbD3C4hdpustR4FpuUFRPUmqRZYYlPI9Hg4XMWxHWOWRzHE9Lkc9NDjzXFX7lDXSgzC7R1A== @@ -613,27 +568,6 @@ 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" - "@swc/helpers@^0.5.11": version "0.5.17" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.17.tgz#5a7be95ac0f0bf186e7e6e890e7a6f6cda6ce971" @@ -873,7 +807,7 @@ acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== -agentkeepalive@^4.2.1, agentkeepalive@^4.3.0, agentkeepalive@^4.5.0: +agentkeepalive@^4.2.1, agentkeepalive@^4.5.0: version "4.6.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== @@ -1199,15 +1133,6 @@ 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" - color-convert@<3.1.1, color-convert@^2.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-3.1.0.tgz#ce16ebb832f9d7522649ed9e11bc0ccb9433a524" @@ -1373,11 +1298,6 @@ dotenv@16.4.5: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== -dotenv@^16.0.3: - version "16.6.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" - integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== - dunder-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" @@ -1438,11 +1358,6 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -escalade@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -1698,11 +1613,6 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -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" @@ -1997,7 +1907,7 @@ jayson@^3.4.4: uuid "^8.3.2" ws "^7.4.5" -jayson@^4.0.0, jayson@^4.1.0, jayson@^4.1.1: +jayson@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.2.0.tgz#b71762393fa40bc9637eaf734ca6f40d3b8c0c93" integrity sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg== @@ -2015,20 +1925,6 @@ jayson@^4.0.0, jayson@^4.1.0, jayson@^4.1.1: uuid "^8.3.2" ws "^7.5.10" -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.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.1.tgz#712262e8fc9569d6f7f6eea72c0d8e5ccc7c976c" @@ -2112,11 +2008,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.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" @@ -2240,7 +2131,7 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@2, node-fetch@^2.6.7, node-fetch@^2.7.0: +node-fetch@2, 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== @@ -2379,7 +2270,7 @@ prettier@^2.5.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -protobufjs@^7.2.5, protobufjs@^7.4.0: +protobufjs@^7.4.0: version "7.5.3" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.3.tgz#13f95a9e3c84669995ec3652db2ac2fb00b89363" integrity sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw== @@ -2412,11 +2303,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -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== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -2447,7 +2333,7 @@ rpc-websockets@7.5.1: bufferutil "^4.0.1" utf-8-validate "^5.0.2" -rpc-websockets@^7.5.0, rpc-websockets@^7.5.1: +rpc-websockets@^7.5.0: 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== @@ -2622,7 +2508,7 @@ stream-json@^1.9.1: dependencies: stream-chain "^2.2.5" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0: 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== @@ -2668,11 +2554,6 @@ 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.3: - 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" @@ -2740,7 +2621,7 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== -ts-log@^2.2.4, ts-log@^2.2.7: +ts-log@^2.2.4: version "2.2.7" resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.7.tgz#4f4512144898b77c9984e91587076fcb8518688e" integrity sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg== @@ -2870,7 +2751,7 @@ 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, wrap-ansi@^7.0.0: +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== @@ -2894,34 +2775,11 @@ ws@^8.5.0, ws@^8.6.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== -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== - yaml@^2.6.1: version "2.8.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== -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" - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"