diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..0dbec593 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,21 @@ +name: Continuous Integration +on: + pull_request: + push: + branches: [master] +jobs: + ci: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v3 + + scan: + needs: ci + if: github.event_name == 'pull_request' + uses: circlefin/circle-public-github-workflows/.github/workflows/pr-scan.yaml@v1 + + release-sbom: + needs: ci + if: github.event_name == 'push' + uses: circlefin/circle-public-github-workflows/.github/workflows/attach-release-assets.yaml@v1 diff --git a/.gitignore b/.gitignore index d4b159ee..230aad65 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ .anchor .DS_Store target +!examples/target **/*.rs.bk node_modules test-ledger diff --git a/Anchor.toml b/Anchor.toml index 6a8bda22..07b6d450 100644 --- a/Anchor.toml +++ b/Anchor.toml @@ -1,3 +1,6 @@ +[toolchain] +anchor_version = "0.28.0" + [features] seeds = false skip-lint = false diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..dd5b3a58 --- /dev/null +++ b/LICENSE @@ -0,0 +1,174 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. diff --git a/README.md b/README.md index b51dc399..55da4d6f 100644 --- a/README.md +++ b/README.md @@ -5,17 +5,19 @@ - [Introduction](#introduction) - [Deployments](#deployments) - [Contract Design](#contract-design) -- [Protocol Module](#protocol-module) - [TokenMessenger Module](#tokenmessenger-module) - [MessageTransmitter Module](#messagetransmitter-module) - [TokenMinter Module](#tokenminter-module) - [Permissions](#permissions) -- [Audits](#audits) - [Deployment guide](#deployment-guide) ## Introduction -The Cross-Chain Transfer Protocol (CCTP) is an on-chain utility that facilitates a safer and more efficient transfer of tokens across different blockchains. Unlike traditional "lock-and-mint" bridges that pose security risks and provide a poor user experience, CCTP uses smart contracts to burn and mint native tokens, maintaining liquidity and reducing fragmentation. It opens up opportunities for developers to create innovative cross-chain applications that integrate various functionalities such as trading, lending, payments, NFTs, and gaming, making the process user-friendly. In essence, CCTP streamlines cross-chain transactions and paves the way for a more interconnected Web3. +[Cross-Chain Transfer Protocol (CCTP)](https://circle.com/cctp) is a permissionless on-chain utility that facilitates USDC transfers securely between blockchains networks via native burning and minting. Circle created it to improve capital efficiency and minimize trust requirements when using USDC across blockchain networks. CCTP enables developers to build multi-chain applications that provide secure, 1:1 transfers of USDC across blockchains for their users. + +## Developer Documentation + +To learn more about how to integrate with CCTP, please see our developer documentation [here](https://developers.circle.com/stablecoins/docs/cctp-getting-started). ## Deployments @@ -26,24 +28,37 @@ The Cross-Chain Transfer Protocol (CCTP) is an on-chain utility that facilitates | Mainnet | | | -------------------- | ----- | -| MessageTransmitter | [TBD] | -| TokenMessengerMinter | [TBD] | +| MessageTransmitter | CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd | +| TokenMessengerMinter | CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3 | + +### Program Verification + +Mainnet on-chain progams can be verified with the following steps: + +```sh +# Checkout deployed commit +git checkout 4e8f1d7bd4c95c3e1f4cb8ba2118897b7163c7c4 +# Build a verifiable build +anchor build --verifiable +# Verify MessageTransmitter +anchor verify --program-name message_transmitter --provider.cluster mainnet --skip-build CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd +# Verify TokenMessengerMinter +anchor verify --program-name token_messenger_minter --provider.cluster mainnet --skip-build CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3 +``` ## Contract Design Solana offers a different smart contract model to traditional EVM-based blockchains. In traditional EVM-based chains, contract code/logic and state are combined into a single contract deployed on-chain. With Solana, a smart contract is read-only or stateless and contains just program logic. This creates a logical separation of state (accounts) and contract logic (programs). This model allows for a single generic Solana program to operate across various accounts without requiring additional deployments. This is the crucial difference between Solana and EVM-based smart contracts. -The Solana runtime allows programs to call each other via a mechanism called cross-program invocation. Calling between programs is achieved by one program invoking an instruction of the other. But unlike Ethereum, in order to invoke a CPI, Solana program must first receive a full list of accounts that the invoked program will use. It then needs to construct a new instruction serializing input data before executing the call. This increases the complexity of the contract and client and also increases compute units cost. Unless strictly necessary, it is beneficial to encapsulate the project's logic inside a single program. - CCTP protocol on EVM chains consists of three contracts: - **MessageTransmitter**: Generic message passing. Sends all messages on the source chain, and receives all messages on the destination chain. - **TokenMessenger**: Entrypoint for cross-chain token transfer. Routes messages to burn a token on source chain, and mint it on destination chain. - **TokenMinter**: Responsible for minting and burning tokens. Contains chain-specific settings used by minters and burners. -Because TokenMessengers and TokenMinter can be deployed permissionlessly by ecosystem teams to leverage CCTP transfers for their custom tokens, on Solana, the CCTP protocol implementation is split into two programs: MessageTransmitter and TokenMessengerMinter. Where TokenMessengerMinter encapsulates the functionality of both TokenMessenger and TokenMinter contracts. To ensure alignment with EVM contracts' logic and state and to facilitate future upgrades and maintenance, the code and state of Solana programs reflect the EVM counterparts as closely as possible. +On Solana, the CCTP protocol implementation is split into two programs: MessageTransmitter and TokenMessengerMinter. Where TokenMessengerMinter encapsulates the functionality of both TokenMessenger and TokenMinter contracts. To ensure alignment with EVM contracts' logic and state and to facilitate future upgrades and maintenance, the code and state of Solana programs reflect the EVM counterparts as closely as possible. -Solana CCTP programs are written in Rust and leverages Anchor framework that makes it easier and more efficient for developers to create, deploy, and manage smart contracts on the Solana blockchain. Along with the program, an IDL (Interface Description Language) can be generated and deployed on-chain making it much easier for developers to interact with the CCTP program. See [Deployment guide](#deployment-guide) for more details. +Solana CCTP programs are written in Rust and leverage the Anchor framework that makes it easier and more efficient for developers to create, deploy, and manage smart contracts on the Solana blockchain. Along with the program, an IDL (Interface Description Language) can be generated and deployed on-chain making it much easier for developers to interact with the CCTP program. See [Deployment guide](#deployment-guide) for more details. Each CCTP program instruction emits one or more events upon execution. Depending on the purpose of instruction, events are emitted via Anchor's CPI events functionality or by creating new stand-alone accounts where such events are stored. Stand-alone account addresses are randomly generated on a client and passed to the program. The program initializes the account, writes the event, and sets itself as the owner. Replace instructions don't update previously created event accounts but create new ones. This is done to make it easier for the client to generate a replace instruction because it doesn't need to look up the original account address. At this time, only `MessageSent` events are emitted via stand-alone accounts. @@ -525,7 +540,7 @@ Emitted when a remote TokenMessenger is removed. | domain | u32 | Domain of remote TokenMessenger | | tokenMessenger | Pubkey | Address of remote TokenMessenger | -## TokenMinter +## TokenMinter Module ### **Instructions** @@ -786,10 +801,6 @@ The following table shows the permissions for calling each instruction: | TokenMinter | pause | | x | | | | | | | | TokenMinter | unpause | | x | | | | | | | -## Audits - -[TBD] - ## Deployment guide ### Setup Environment @@ -811,7 +822,7 @@ Rustfmt is used to format the code. It requires `nightly` features to be activat ### Build -First, generate a new key for the program address with `solana-keygen new -o `. Then replace the existing program ID with the newly generated address in `Anchor.toml` and `programs/cctp/src/lib.rs`. +First, generate new keys for the program addresses with `solana-keygen new -o `. Then, replace the existing program IDs with the newly generated addresses in `Anchor.toml`, `programs/message-transmitter/src/lib.rs`, and `programs/token-messenger-minter/src/lib.rs`. Also, ensure the path to your wallet in `Anchor.toml` is correct. Alternatively, when running Anchor deploy or test commands, you can specify your wallet with `--provider.wallet` argument. The wallet's pubkey will be set as an upgrade authority upon initial deployment of the program. It is strongly recommended to use multisig upgrade authority when deploying to the mainnet. @@ -822,6 +833,12 @@ cd solana-cctp-contracts anchor build ``` +#### Cargo Dependencies + +To ensure with certainty that packages are not changed unexpectedly as well as to enable reproducible, +verifiable builds, all Cargo dependencies are vendored locally in the [vendor](/vendor/) directory and +enabled via the [.cargo/config.toml](.cargo/config.toml) file. + ### Test Unit tests are executed with the `cargo test` command: @@ -844,10 +861,16 @@ By default, integration tests are executed on a local validator, so it won't cos To deploy the program to the devnet and upload the IDL use the following commands: ```sh -anchor deploy --provider.cluster devnet --program-keypair -anchor idl init --provider.cluster devnet --filepath ./target/idl/cctp.json +anchor deploy --provider.cluster devnet --program-name message_transmitter --program-keypair +anchor deploy --provider.cluster devnet --program-name token_messenger_minter --program-keypair +anchor idl init --provider.cluster devnet --filepath ./target/idl/message_transmitter.json +anchor idl init --provider.cluster devnet --filepath ./target/idl/token_messenger_minter.json ``` ### Initialize -Before the first use of the CCTP program it must be initialized with the [init](#protocol-module) instruction and one or more TokenMinters added with [addTokenMinter](#protocol-module) instruction. +Before the first use of the CCTP programs they must be initialized with the [MessageTransmitter#initialize](#messagetransmitter-module) and [TokenMessenger#initialize](#tokenmessenger-module) instructions. + +--- + +License: [LICENSE](./LICENSE) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..dee1a300 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,5 @@ +# Security Policy + +## Reporting a Vulnerability + +Please do not file public issues on Github for security vulnerabilities. All security vulnerabilities should be reported to Circle privately, through Circle's [Vulnerability Disclosure Program](https://hackerone.com/circle). Please read through the program policy before submitting a report. diff --git a/examples/.env b/examples/.env new file mode 100644 index 00000000..df2399b6 --- /dev/null +++ b/examples/.env @@ -0,0 +1,16 @@ +# ReceiveMessage env vars +REMOTE_TOKEN_HEX=0x5425890298aed601595a70ab815c96711a31bc65 # USDCAVAX on Fuji Testnet by default +REMOTE_DOMAIN=1 # Avax by default +MESSAGE_HEX= # Insert message as hex here +ATTESTATION_HEX= # Insert attestation as hex here + +# Deposit for burn env vars +AMOUNT=1 +DEST_DOMAIN=1 # Avax Fuji Testnet by default +MINT_RECIPIENT_HEX= # Insert mint recipient in hex here + +# Shared env vars +ANCHOR_PROVIDER_URL=https://api.devnet.solana.com +USDC_ADDRESS=4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU # USDCSOL devnet address +ANCHOR_WALLET=devnetUser.json +USER_TOKEN_ACCOUNT= # Insert burning user token account here diff --git a/examples/Anchor.toml b/examples/Anchor.toml new file mode 100644 index 00000000..94c733f2 --- /dev/null +++ b/examples/Anchor.toml @@ -0,0 +1,10 @@ +[programs.localnet] +message_transmitter = "CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd" +token_messenger_minter = "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3" + +[programs.devnet] +message_transmitter = "CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd" +token_messenger_minter = "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3" + +[provider] +cluster = "Devnet" diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..4a984a9f --- /dev/null +++ b/examples/README.md @@ -0,0 +1,65 @@ +# CCTP on Solana Example Scripts + +This directory provides example scripts for calling depositForBurn and receiveMessage on Solana Devnet. + +For more information see our [developer documentation](https://developers.circle.com/stablecoins/docs/cctp-getting-started). + +## Prerequisites + +1. Install the [Solana CLI](https://docs.solanalabs.com/cli/install) +and [spl-token CLI](https://spl.solana.com/token#setup). + +2. Install dependencies: + +```bash +npm install +``` + +3. Create a local Devnet wallet (if needed), get some Devnet SOL, and create a USDC token account: + +```bash +solana-keygen new -o devnetUser.json +solana-keygen pubkey devnetUser.json +solana airdrop -u devnet 5
+spl-token create-account -u devnet --owner devnetUser.json 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU +``` + +## Deposit For Burn + +To initiate a depositForBurn instruction from Solana to another chain follow these steps: + +1. Set the new token account created in Prerequisites to the `USER_TOKEN_ACCOUNT` variable in [.env](./.env). + +2. Get some Devnet USDCSOL to transfer: . + +3. Set an EVM address in hex to the `MINT_RECIPIENT_HEX` variable in [.env](./.env). This address will receive the +minted tokens on the destination chain (AVAX by default, destination can be changed with `DESTINATION_CHAIN` +env var). + +4. Call depositForBurn script: + +```bash +npm run depositForBurn +``` + +5. The output `message` and `attestation` can be used to call `receiveMessage` on the destination +blockchain CCTP contracts: +. + +## Receive Message + +1. Call `depositForBurn` on an EVM chain with a `destinationDomain` of 5 for Solana, and a `mintRecipient` of +the desired **user token account** on Solana Devnet (you can use the account created in Prerequisites). This address must be decoded from base58 to hex first using +something like [this](https://appdevtools.com/base58-encoder-decoder). +For more info and scripts to help with calling depositForBurn on a different chain, see our EVM docs +[here](https://developers.circle.com/stablecoins/docs/transfer-usdc-on-testnet-from-ethereum-to-avalanche). + +2. Set `MESSAGE_HEX` and `ATTESTATION_HEX` in [.env](./.env) from the transaction in step 1. These can be easily found by calling the messages API: `https://iris-api-sandbox.circle.com/messages/${sourceDomainId}/${depositForBurnTxHash}`. + +3. Set the token account used for the `mintRecipient` in step 1 to the `USER_TOKEN_ACCOUNT` variable in [.env](./.env). + +4. Call receiveMessage script: + +```bash +npm run receiveMessage +``` diff --git a/examples/depositForBurn.ts b/examples/depositForBurn.ts new file mode 100644 index 00000000..4750b274 --- /dev/null +++ b/examples/depositForBurn.ts @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import 'dotenv/config'; +import * as anchor from "@coral-xyz/anchor"; +import { PublicKey, Keypair } from '@solana/web3.js'; +import * as spl from '@solana/spl-token'; +import { getBytes } from 'ethers'; + +import { SOLANA_USDC_ADDRESS, evmAddressToBytes32, getAnchorConnection, getDepositForBurnPdas, getMessages, getPrograms, solanaAddressToHex } from './utils'; + +const main = async () => { + const provider = getAnchorConnection(); + + const { messageTransmitterProgram, tokenMessengerMinterProgram } = getPrograms(provider); + + // Init needed variables + const usdcAddress = new PublicKey(SOLANA_USDC_ADDRESS); + const userTokenAccount = new PublicKey(process.env.USER_TOKEN_ACCOUNT); + + // Default to 1 USDCSOL (e.g. $0.000001) + const amount = new anchor.BN(process.env.AMOUNT ?? 1); + const destinationDomain = Number(process.env.DEST_DOMAIN!); + // mintRecipient is a bytes32 type so pad with 0's then convert to a solana PublicKey + const mintRecipient = new PublicKey(getBytes(evmAddressToBytes32(process.env.MINT_RECIPIENT_HEX!))); + + // Get pdas + const pdas = getDepositForBurnPdas({messageTransmitterProgram, tokenMessengerMinterProgram}, usdcAddress, destinationDomain); + + // Generate a new keypair for the MessageSent event account. + const messageSentEventAccountKeypair = Keypair.generate(); + + console.log("\n\nCalling depositForBurn with parameters: "); + console.log("amount:", amount.toString()); + console.log("destinationDomain:", destinationDomain); + console.log("mintRecipient (hex):", process.env.MINT_RECIPIENT_HEX); + console.log("mintRecipient (bytes52):", mintRecipient.toString()); + console.log("remoteTokenMessenger (hexa):", solanaAddressToHex(pdas.remoteTokenMessengerKey.publicKey.toString())) + console.log("remoteTokenMessenger (bytes52):", pdas.remoteTokenMessengerKey.publicKey.toString()); + console.log("burnToken:", usdcAddress.toString()); + console.log("\n\n"); + + // Call depositForBurn + const depositForBurnTx = await tokenMessengerMinterProgram.methods + .depositForBurn({ + amount, + destinationDomain, + mintRecipient, + }) + // eventAuthority and program accounts are implicitly added by Anchor + .accounts({ + owner: provider.wallet.publicKey, + eventRentPayer: provider.wallet.publicKey, + senderAuthorityPda: pdas.authorityPda.publicKey, + burnTokenAccount: userTokenAccount, + messageTransmitter: pdas.messageTransmitterAccount.publicKey, + tokenMessenger: pdas.tokenMessengerAccount.publicKey, + remoteTokenMessenger: pdas.remoteTokenMessengerKey.publicKey, + tokenMinter: pdas.tokenMinterAccount.publicKey, + localToken: pdas.localToken.publicKey, + burnTokenMint: usdcAddress, + messageTransmitterProgram: messageTransmitterProgram.programId, + tokenMessengerMinterProgram: tokenMessengerMinterProgram.programId, + messageSentEventData: messageSentEventAccountKeypair.publicKey, + tokenProgram: spl.TOKEN_PROGRAM_ID, + }) + // messageSentEventAccountKeypair must be a signer so the MessageTransmitter program can take control of it and write to it. + // provider.wallet is also an implicit signer + .signers([messageSentEventAccountKeypair]) + .rpc(); + + // Fetch message and attestation + console.log("depositForBurn txHash:", depositForBurnTx); + const response = await getMessages(depositForBurnTx); + console.log("depositForBurn message information:", response.messages[0]); + console.log("message and attestation can be used to receive the message on destination chain with domain", destinationDomain); + const {attestation: attestationHex} = response.messages[0]; + + // Now, you can call receiveMessage on an EVM chain, see public quickstart for more information: + // https://developers.circle.com/stablecoin/docs/cctp-usdc-transfer-quickstart + + // Example of reclaiming the rent from the MessageSent event account: + const reclaimEventAccountTx = await messageTransmitterProgram.methods + .reclaimEventAccount({ + attestation: Buffer.from(attestationHex.replace("0x", ""), "hex"), + }) + .accounts({ + payee: provider.wallet.publicKey, + messageTransmitter: pdas.messageTransmitterAccount.publicKey, + messageSentEventData: messageSentEventAccountKeypair.publicKey, + }) + .rpc(); + console.log("\n\nreclaimEventAccount txHash: ", reclaimEventAccountTx); + console.log("Event account has been reclaimed and SOL paid for rent returned to payee."); +} + +main(); diff --git a/examples/package-lock.json b/examples/package-lock.json new file mode 100644 index 00000000..ff5f951a --- /dev/null +++ b/examples/package-lock.json @@ -0,0 +1,1314 @@ +{ + "name": "solana-cctp-examples", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "solana-cctp-examples", + "version": "1.0.0", + "dependencies": { + "@coral-xyz/anchor": "^0.29.0", + "@solana/spl-token": "^0.4.1", + "@solana/web3.js": "^1.90.2", + "dotenv": "^16.4.5", + "ethers": "^6.11.1", + "tsx": "^4.7.1" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, + "node_modules/@babel/runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@coral-xyz/anchor": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.29.0.tgz", + "integrity": "sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==", + "dependencies": { + "@coral-xyz/borsh": "^0.29.0", + "@noble/hashes": "^1.3.1", + "@solana/web3.js": "^1.68.0", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "superstruct": "^0.15.4", + "toml": "^3.0.0" + }, + "engines": { + "node": ">=11" + } + }, + "node_modules/@coral-xyz/anchor/node_modules/superstruct": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", + "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==" + }, + "node_modules/@coral-xyz/borsh": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", + "dependencies": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^1.68.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "dependencies": { + "@noble/hashes": "1.3.3" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@solana/buffer-layout": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "dependencies": { + "buffer": "~6.0.3" + }, + "engines": { + "node": ">=5.10" + } + }, + "node_modules/@solana/buffer-layout-utils": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz", + "integrity": "sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/web3.js": "^1.32.0", + "bigint-buffer": "^1.1.5", + "bignumber.js": "^9.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@solana/codecs-core": { + "version": "2.0.0-experimental.8618508", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-experimental.8618508.tgz", + "integrity": "sha512-JCz7mKjVKtfZxkuDtwMAUgA7YvJcA2BwpZaA1NOLcted4OMC4Prwa3DUe3f3181ixPYaRyptbF0Ikq2MbDkYEA==" + }, + "node_modules/@solana/codecs-data-structures": { + "version": "2.0.0-experimental.8618508", + "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-experimental.8618508.tgz", + "integrity": "sha512-sLpjL9sqzaDdkloBPV61Rht1tgaKq98BCtIKRuyscIrmVPu3wu0Bavk2n/QekmUzaTsj7K1pVSniM0YqCdnEBw==", + "dependencies": { + "@solana/codecs-core": "2.0.0-experimental.8618508", + "@solana/codecs-numbers": "2.0.0-experimental.8618508" + } + }, + "node_modules/@solana/codecs-numbers": { + "version": "2.0.0-experimental.8618508", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-experimental.8618508.tgz", + "integrity": "sha512-EXQKfzFr3CkKKNzKSZPOOOzchXsFe90TVONWsSnVkonO9z+nGKALE0/L9uBmIFGgdzhhU9QQVFvxBMclIDJo2Q==", + "dependencies": { + "@solana/codecs-core": "2.0.0-experimental.8618508" + } + }, + "node_modules/@solana/codecs-strings": { + "version": "2.0.0-experimental.8618508", + "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-experimental.8618508.tgz", + "integrity": "sha512-b2yhinr1+oe+JDmnnsV0641KQqqDG8AQ16Z/x7GVWO+AWHMpRlHWVXOq8U1yhPMA4VXxl7i+D+C6ql0VGFp0GA==", + "dependencies": { + "@solana/codecs-core": "2.0.0-experimental.8618508", + "@solana/codecs-numbers": "2.0.0-experimental.8618508" + }, + "peerDependencies": { + "fastestsmallesttextencoderdecoder": "^1.0.22" + } + }, + "node_modules/@solana/options": { + "version": "2.0.0-experimental.8618508", + "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-experimental.8618508.tgz", + "integrity": "sha512-fy/nIRAMC3QHvnKi63KEd86Xr/zFBVxNW4nEpVEU2OT0gCEKwHY4Z55YHf7XujhyuM3PNpiBKg/YYw5QlRU4vg==", + "dependencies": { + "@solana/codecs-core": "2.0.0-experimental.8618508", + "@solana/codecs-numbers": "2.0.0-experimental.8618508" + } + }, + "node_modules/@solana/spl-token": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.1.tgz", + "integrity": "sha512-DEe15GI0l+XLHwtau/3GUwGQJ9YY/VWNE0k/QuXaaGKo4adMZLEAIQUktRc/S2sRqPjvUdR5anZGxQ9p5khWZw==", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.90.0" + } + }, + "node_modules/@solana/spl-token-metadata": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@solana/spl-token-metadata/-/spl-token-metadata-0.1.2.tgz", + "integrity": "sha512-hJYnAJNkDrtkE2Q41YZhCpeOGU/0JgRFXbtrtOuGGeKc3pkEUHB9DDoxZAxx+XRno13GozUleyBi0qypz4c3bw==", + "dependencies": { + "@solana/codecs-core": "2.0.0-experimental.8618508", + "@solana/codecs-data-structures": "2.0.0-experimental.8618508", + "@solana/codecs-numbers": "2.0.0-experimental.8618508", + "@solana/codecs-strings": "2.0.0-experimental.8618508", + "@solana/options": "2.0.0-experimental.8618508", + "@solana/spl-type-length-value": "0.1.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.87.6" + } + }, + "node_modules/@solana/spl-type-length-value": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz", + "integrity": "sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==", + "dependencies": { + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@solana/web3.js": { + "version": "1.90.2", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.90.2.tgz", + "integrity": "sha512-ZIaw/kLaRXnztFL1ddGsUMni/XKWsR4xQkaMLgoWsga5CulXteL8DAyPSiAvJpKAuHOPK7e33Z5+A43xODMT9A==", + "dependencies": { + "@babel/runtime": "^7.23.4", + "@noble/curves": "^1.2.0", + "@noble/hashes": "^1.3.3", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", + "bigint-buffer": "^1.1.5", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.0", + "node-fetch": "^2.7.0", + "rpc-websockets": "^7.5.1", + "superstruct": "^0.14.2" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bigint-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", + "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.3.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-layout": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz", + "integrity": "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==", + "engines": { + "node": ">=4.5" + } + }, + "node_modules/bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/crypto-hash": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", + "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/ethers": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.11.1.tgz", + "integrity": "sha512-mxTAE6wqJQAbp5QAe/+o+rXOID7Nw91OZXvgpjDa1r4fAbq2Nu314oEZSbjoRLacuCzs7kUC3clEvkCQowffGg==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ethers/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethers/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "node_modules/ethers/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" + }, + "node_modules/fastestsmallesttextencoderdecoder": { + "version": "1.0.22", + "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", + "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", + "peer": true + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jayson": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", + "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "uuid": "^8.3.2", + "ws": "^7.4.5" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/rpc-websockets": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.9.0.tgz", + "integrity": "sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "eventemitter3": "^4.0.7", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + }, + "optionalDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + } + }, + "node_modules/rpc-websockets/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/superstruct": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", + "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + }, + "node_modules/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tsx": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", + "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==", + "dependencies": { + "esbuild": "~0.19.10", + "get-tsconfig": "^4.7.2" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/examples/package.json b/examples/package.json new file mode 100644 index 00000000..f75ec227 --- /dev/null +++ b/examples/package.json @@ -0,0 +1,17 @@ +{ + "name": "solana-cctp-examples", + "version": "1.0.0", + "description": "", + "scripts": { + "depositForBurn": "tsx depositForBurn.ts", + "receiveMessage": "tsx receiveMessage.ts" + }, + "dependencies": { + "@coral-xyz/anchor": "^0.29.0", + "@solana/spl-token": "^0.4.1", + "@solana/web3.js": "^1.90.2", + "dotenv": "^16.4.5", + "ethers": "^6.11.1", + "tsx": "^4.7.1" + } +} diff --git a/examples/receiveMessage.ts b/examples/receiveMessage.ts new file mode 100644 index 00000000..a882ce0c --- /dev/null +++ b/examples/receiveMessage.ts @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import 'dotenv/config'; +import { PublicKey, SystemProgram } from '@solana/web3.js'; +import * as spl from '@solana/spl-token'; +import { SOLANA_USDC_ADDRESS, decodeEventNonceFromMessage, getAnchorConnection, getPrograms, getReceiveMessagePdas } from './utils'; + +const main = async () => { + const provider = getAnchorConnection(); + + const { messageTransmitterProgram, tokenMessengerMinterProgram } = getPrograms(provider); + + // Init needed variables + const usdcAddress = new PublicKey(SOLANA_USDC_ADDRESS); + const userTokenAccount = new PublicKey(process.env.USER_TOKEN_ACCOUNT) + const remoteTokenAddressHex = process.env.REMOTE_TOKEN_HEX!; + const remoteDomain = process.env.REMOTE_DOMAIN!; + const messageHex = process.env.MESSAGE_HEX!; + const attestationHex = process.env.ATTESTATION_HEX!; + const nonce = decodeEventNonceFromMessage(messageHex); + + // Get PDAs + const pdas = await getReceiveMessagePdas( + {messageTransmitterProgram, tokenMessengerMinterProgram}, + usdcAddress, + remoteTokenAddressHex, + remoteDomain, + nonce + ) + + // accountMetas list to pass to remainingAccounts + const accountMetas: any[] = []; + accountMetas.push({ + isSigner: false, + isWritable: false, + pubkey: pdas.tokenMessengerAccount.publicKey, + }); + accountMetas.push({ + isSigner: false, + isWritable: false, + pubkey: pdas.remoteTokenMessengerKey.publicKey, + }); + accountMetas.push({ + isSigner: false, + isWritable: true, + pubkey: pdas.tokenMinterAccount.publicKey, + }); + accountMetas.push({ + isSigner: false, + isWritable: true, + pubkey: pdas.localToken.publicKey, + }); + accountMetas.push({ + isSigner: false, + isWritable: false, + pubkey: pdas.tokenPair.publicKey, + }); + accountMetas.push({ + isSigner: false, + isWritable: true, + pubkey: userTokenAccount, + }); + accountMetas.push({ + isSigner: false, + isWritable: true, + pubkey: pdas.custodyTokenAccount.publicKey, + }); + accountMetas.push({ + isSigner: false, + isWritable: false, + pubkey: spl.TOKEN_PROGRAM_ID, + }); + accountMetas.push({ + isSigner: false, + isWritable: false, + pubkey: pdas.tokenMessengerEventAuthority.publicKey, + }); + accountMetas.push({ + isSigner: false, + isWritable: false, + pubkey: tokenMessengerMinterProgram.programId, + }); + + const receiveMessageTx = await messageTransmitterProgram.methods + .receiveMessage({ + message: Buffer.from(messageHex.replace("0x", ""), "hex"), + attestation: Buffer.from(attestationHex.replace("0x", ""), "hex"), + }) + .accounts({ + payer: provider.wallet.publicKey, + caller: provider.wallet.publicKey, + authorityPda: pdas.authorityPda, + messageTransmitter: pdas.messageTransmitterAccount.publicKey, + usedNonces: pdas.usedNonces, + receiver: tokenMessengerMinterProgram.programId, + systemProgram: SystemProgram.programId, + }) + .remainingAccounts(accountMetas) + .rpc(); + + console.log("\n\nreceiveMessage Tx: ", receiveMessageTx); +} + +main(); diff --git a/examples/target/idl/message_transmitter.json b/examples/target/idl/message_transmitter.json new file mode 100644 index 00000000..8c30a7b4 --- /dev/null +++ b/examples/target/idl/message_transmitter.json @@ -0,0 +1,1377 @@ +{ + "version": "0.1.0", + "name": "message_transmitter", + "instructions": [ + { + "name": "initialize", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "upgradeAuthority", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageTransmitterProgramData", + "isMut": false, + "isSigner": false + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "InitializeParams" + } + } + ] + }, + { + "name": "transferOwnership", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "TransferOwnershipParams" + } + } + ] + }, + { + "name": "acceptOwnership", + "accounts": [ + { + "name": "pendingOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AcceptOwnershipParams" + } + } + ] + }, + { + "name": "updatePauser", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UpdatePauserParams" + } + } + ] + }, + { + "name": "updateAttesterManager", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UpdateAttesterManagerParams" + } + } + ] + }, + { + "name": "pause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "PauseParams" + } + } + ] + }, + { + "name": "unpause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UnpauseParams" + } + } + ] + }, + { + "name": "setMaxMessageBodySize", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetMaxMessageBodySizeParams" + } + } + ] + }, + { + "name": "enableAttester", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "attesterManager", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "EnableAttesterParams" + } + } + ] + }, + { + "name": "disableAttester", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "attesterManager", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "DisableAttesterParams" + } + } + ] + }, + { + "name": "setSignatureThreshold", + "accounts": [ + { + "name": "attesterManager", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetSignatureThresholdParams" + } + } + ] + }, + { + "name": "sendMessage", + "accounts": [ + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "senderProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SendMessageParams" + } + } + ], + "returns": "u64" + }, + { + "name": "sendMessageWithCaller", + "accounts": [ + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "senderProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SendMessageWithCallerParams" + } + } + ], + "returns": "u64" + }, + { + "name": "replaceMessage", + "accounts": [ + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "senderProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReplaceMessageParams" + } + } + ], + "returns": "u64" + }, + { + "name": "receiveMessage", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "caller", + "isMut": false, + "isSigner": true + }, + { + "name": "authorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": false, + "isSigner": false + }, + { + "name": "usedNonces", + "isMut": true, + "isSigner": false + }, + { + "name": "receiver", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReceiveMessageParams" + } + } + ] + }, + { + "name": "reclaimEventAccount", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true, + "docs": [ + "rent SOL receiver, should match original rent payer" + ] + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReclaimEventAccountParams" + } + } + ] + }, + { + "name": "getNoncePda", + "accounts": [ + { + "name": "messageTransmitter", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "GetNoncePDAParams" + } + } + ], + "returns": "publicKey" + }, + { + "name": "isNonceUsed", + "accounts": [ + { + "name": "usedNonces", + "isMut": false, + "isSigner": false, + "docs": [ + "Account will be explicitly loaded to avoid error when it's not initialized" + ] + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "IsNonceUsedParams" + } + } + ], + "returns": "bool" + } + ], + "accounts": [ + { + "name": "MessageSent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "rentPayer", + "type": "publicKey" + }, + { + "name": "message", + "type": "bytes" + } + ] + } + }, + { + "name": "MessageTransmitter", + "docs": [ + "Main state of the MessageTransmitter program" + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "owner", + "type": "publicKey" + }, + { + "name": "pendingOwner", + "type": "publicKey" + }, + { + "name": "attesterManager", + "type": "publicKey" + }, + { + "name": "pauser", + "type": "publicKey" + }, + { + "name": "paused", + "type": "bool" + }, + { + "name": "localDomain", + "type": "u32" + }, + { + "name": "version", + "type": "u32" + }, + { + "name": "signatureThreshold", + "type": "u32" + }, + { + "name": "enabledAttesters", + "type": { + "vec": "publicKey" + } + }, + { + "name": "maxMessageBodySize", + "type": "u64" + }, + { + "name": "nextAvailableNonce", + "type": "u64" + } + ] + } + }, + { + "name": "UsedNonces", + "docs": [ + "UsedNonces account holds an array of bits that indicate which nonces were already used", + "so they can't be resused to receive new messages. Array starts with the first_nonce and", + "holds flags for UsedNonces::MAX_NONCES. Nonces are recorded separately for each remote_domain." + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "firstNonce", + "type": "u64" + }, + { + "name": "usedNonces", + "type": { + "array": [ + "u64", + 100 + ] + } + } + ] + } + } + ], + "types": [ + { + "name": "AcceptOwnershipParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "DisableAttesterParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "attester", + "type": "publicKey" + } + ] + } + }, + { + "name": "EnableAttesterParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newAttester", + "type": "publicKey" + } + ] + } + }, + { + "name": "GetNoncePDAParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "u64" + }, + { + "name": "sourceDomain", + "type": "u32" + } + ] + } + }, + { + "name": "InitializeParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "localDomain", + "type": "u32" + }, + { + "name": "attester", + "type": "publicKey" + }, + { + "name": "maxMessageBodySize", + "type": "u64" + }, + { + "name": "version", + "type": "u32" + } + ] + } + }, + { + "name": "IsNonceUsedParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "u64" + } + ] + } + }, + { + "name": "PauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "ReceiveMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "message", + "type": "bytes" + }, + { + "name": "attestation", + "type": "bytes" + } + ] + } + }, + { + "name": "HandleReceiveMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "sender", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + }, + { + "name": "authorityBump", + "type": "u8" + } + ] + } + }, + { + "name": "ReclaimEventAccountParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "attestation", + "type": "bytes" + } + ] + } + }, + { + "name": "ReplaceMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "originalMessage", + "type": "bytes" + }, + { + "name": "originalAttestation", + "type": "bytes" + }, + { + "name": "newMessageBody", + "type": "bytes" + }, + { + "name": "newDestinationCaller", + "type": "publicKey" + } + ] + } + }, + { + "name": "SendMessageWithCallerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "recipient", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + }, + { + "name": "destinationCaller", + "type": "publicKey" + } + ] + } + }, + { + "name": "SendMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "recipient", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + } + ] + } + }, + { + "name": "SetMaxMessageBodySizeParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newMaxMessageBodySize", + "type": "u64" + } + ] + } + }, + { + "name": "SetSignatureThresholdParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newSignatureThreshold", + "type": "u32" + } + ] + } + }, + { + "name": "TransferOwnershipParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newOwner", + "type": "publicKey" + } + ] + } + }, + { + "name": "UnpauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "UpdateAttesterManagerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newAttesterManager", + "type": "publicKey" + } + ] + } + }, + { + "name": "UpdatePauserParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newPauser", + "type": "publicKey" + } + ] + } + }, + { + "name": "MathError", + "type": { + "kind": "enum", + "variants": [ + { + "name": "MathOverflow" + }, + { + "name": "MathUnderflow" + }, + { + "name": "ErrorInDivision" + } + ] + } + } + ], + "events": [ + { + "name": "OwnershipTransferStarted", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "OwnershipTransferred", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "PauserChanged", + "fields": [ + { + "name": "newAddress", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "AttesterManagerUpdated", + "fields": [ + { + "name": "previousAttesterManager", + "type": "publicKey", + "index": false + }, + { + "name": "newAttesterManager", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "MessageReceived", + "fields": [ + { + "name": "caller", + "type": "publicKey", + "index": false + }, + { + "name": "sourceDomain", + "type": "u32", + "index": false + }, + { + "name": "nonce", + "type": "u64", + "index": false + }, + { + "name": "sender", + "type": "publicKey", + "index": false + }, + { + "name": "messageBody", + "type": "bytes", + "index": false + } + ] + }, + { + "name": "SignatureThresholdUpdated", + "fields": [ + { + "name": "oldSignatureThreshold", + "type": "u32", + "index": false + }, + { + "name": "newSignatureThreshold", + "type": "u32", + "index": false + } + ] + }, + { + "name": "AttesterEnabled", + "fields": [ + { + "name": "attester", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "AttesterDisabled", + "fields": [ + { + "name": "attester", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "MaxMessageBodySizeUpdated", + "fields": [ + { + "name": "newMaxMessageBodySize", + "type": "u64", + "index": false + } + ] + }, + { + "name": "Pause", + "fields": [] + }, + { + "name": "Unpause", + "fields": [] + } + ], + "errors": [ + { + "code": 6000, + "name": "InvalidAuthority", + "msg": "Invalid authority" + }, + { + "code": 6001, + "name": "ProgramPaused", + "msg": "Instruction is not allowed at this time" + }, + { + "code": 6002, + "name": "InvalidMessageTransmitterState", + "msg": "Invalid message transmitter state" + }, + { + "code": 6003, + "name": "InvalidSignatureThreshold", + "msg": "Invalid signature threshold" + }, + { + "code": 6004, + "name": "SignatureThresholdAlreadySet", + "msg": "Signature threshold already set" + }, + { + "code": 6005, + "name": "InvalidOwner", + "msg": "Invalid owner" + }, + { + "code": 6006, + "name": "InvalidPauser", + "msg": "Invalid pauser" + }, + { + "code": 6007, + "name": "InvalidAttesterManager", + "msg": "Invalid attester manager" + }, + { + "code": 6008, + "name": "InvalidAttester", + "msg": "Invalid attester" + }, + { + "code": 6009, + "name": "AttesterAlreadyEnabled", + "msg": "Attester already enabled" + }, + { + "code": 6010, + "name": "TooFewEnabledAttesters", + "msg": "Too few enabled attesters" + }, + { + "code": 6011, + "name": "SignatureThresholdTooLow", + "msg": "Signature threshold is too low" + }, + { + "code": 6012, + "name": "AttesterAlreadyDisabled", + "msg": "Attester already disabled" + }, + { + "code": 6013, + "name": "MessageBodyLimitExceeded", + "msg": "Message body exceeds max size" + }, + { + "code": 6014, + "name": "InvalidDestinationCaller", + "msg": "Invalid destination caller" + }, + { + "code": 6015, + "name": "InvalidRecipient", + "msg": "Invalid message recipient" + }, + { + "code": 6016, + "name": "SenderNotPermitted", + "msg": "Sender is not permitted" + }, + { + "code": 6017, + "name": "InvalidSourceDomain", + "msg": "Invalid source domain" + }, + { + "code": 6018, + "name": "InvalidDestinationDomain", + "msg": "Invalid destination domain" + }, + { + "code": 6019, + "name": "InvalidMessageVersion", + "msg": "Invalid message version" + }, + { + "code": 6020, + "name": "InvalidUsedNoncesAccount", + "msg": "Invalid used nonces account" + }, + { + "code": 6021, + "name": "InvalidRecipientProgram", + "msg": "Invalid recipient program" + }, + { + "code": 6022, + "name": "InvalidNonce", + "msg": "Invalid nonce" + }, + { + "code": 6023, + "name": "NonceAlreadyUsed", + "msg": "Nonce already used" + }, + { + "code": 6024, + "name": "MessageTooShort", + "msg": "Message is too short" + }, + { + "code": 6025, + "name": "MalformedMessage", + "msg": "Malformed message" + }, + { + "code": 6026, + "name": "InvalidSignatureOrderOrDupe", + "msg": "Invalid signature order or dupe" + }, + { + "code": 6027, + "name": "InvalidAttesterSignature", + "msg": "Invalid attester signature" + }, + { + "code": 6028, + "name": "InvalidAttestationLength", + "msg": "Invalid attestation length" + }, + { + "code": 6029, + "name": "InvalidSignatureRecoveryId", + "msg": "Invalid signature recovery ID" + }, + { + "code": 6030, + "name": "InvalidSignatureSValue", + "msg": "Invalid signature S value" + }, + { + "code": 6031, + "name": "InvalidMessageHash", + "msg": "Invalid message hash" + } + ], + "metadata": { + "address": "CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd" + } +} \ No newline at end of file diff --git a/examples/target/idl/token_messenger_minter.json b/examples/target/idl/token_messenger_minter.json new file mode 100644 index 00000000..254f8f84 --- /dev/null +++ b/examples/target/idl/token_messenger_minter.json @@ -0,0 +1,1763 @@ +{ + "version": "0.1.0", + "name": "token_messenger_minter", + "instructions": [ + { + "name": "initialize", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "upgradeAuthority", + "isMut": false, + "isSigner": true + }, + { + "name": "authorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgramData", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "InitializeParams" + } + } + ] + }, + { + "name": "transferOwnership", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "TransferOwnershipParams" + } + } + ] + }, + { + "name": "acceptOwnership", + "accounts": [ + { + "name": "pendingOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AcceptOwnershipParams" + } + } + ] + }, + { + "name": "addRemoteTokenMessenger", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AddRemoteTokenMessengerParams" + } + } + ] + }, + { + "name": "removeRemoteTokenMessenger", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "RemoveRemoteTokenMessengerParams" + } + } + ] + }, + { + "name": "depositForBurn", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "burnTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "burnTokenMint", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "DepositForBurnParams" + } + } + ], + "returns": "u64" + }, + { + "name": "depositForBurnWithCaller", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "burnTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "burnTokenMint", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "DepositForBurnWithCallerParams" + } + } + ], + "returns": "u64" + }, + { + "name": "replaceDepositForBurn", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReplaceDepositForBurnParams" + } + } + ], + "returns": "u64" + }, + { + "name": "handleReceiveMessage", + "accounts": [ + { + "name": "authorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenPair", + "isMut": false, + "isSigner": false + }, + { + "name": "recipientTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "HandleReceiveMessageParams" + } + } + ] + }, + { + "name": "setTokenController", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetTokenControllerParams" + } + } + ] + }, + { + "name": "pause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "PauseParams" + } + } + ] + }, + { + "name": "unpause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UnpauseParams" + } + } + ] + }, + { + "name": "updatePauser", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UpdatePauserParams" + } + } + ] + }, + { + "name": "setMaxBurnAmountPerMessage", + "accounts": [ + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetMaxBurnAmountPerMessageParams" + } + } + ] + }, + { + "name": "addLocalToken", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "localTokenMint", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AddLocalTokenParams" + } + } + ] + }, + { + "name": "removeLocalToken", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "RemoveLocalTokenParams" + } + } + ] + }, + { + "name": "linkTokenPair", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenPair", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "LinkTokenPairParams" + } + } + ] + }, + { + "name": "unlinkTokenPair", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenPair", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UninkTokenPairParams" + } + } + ] + }, + { + "name": "burnTokenCustody", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": false, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenMint", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "BurnTokenCustodyParams" + } + } + ] + } + ], + "accounts": [ + { + "name": "TokenMessenger", + "type": { + "kind": "struct", + "fields": [ + { + "name": "owner", + "type": "publicKey" + }, + { + "name": "pendingOwner", + "type": "publicKey" + }, + { + "name": "localMessageTransmitter", + "type": "publicKey" + }, + { + "name": "messageBodyVersion", + "type": "u32" + }, + { + "name": "authorityBump", + "type": "u8" + } + ] + } + }, + { + "name": "RemoteTokenMessenger", + "type": { + "kind": "struct", + "fields": [ + { + "name": "domain", + "type": "u32" + }, + { + "name": "tokenMessenger", + "type": "publicKey" + } + ] + } + }, + { + "name": "TokenMinter", + "type": { + "kind": "struct", + "fields": [ + { + "name": "tokenController", + "type": "publicKey" + }, + { + "name": "pauser", + "type": "publicKey" + }, + { + "name": "paused", + "type": "bool" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + }, + { + "name": "TokenPair", + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "remoteToken", + "type": "publicKey" + }, + { + "name": "localToken", + "type": "publicKey" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + }, + { + "name": "LocalToken", + "type": { + "kind": "struct", + "fields": [ + { + "name": "custody", + "type": "publicKey" + }, + { + "name": "mint", + "type": "publicKey" + }, + { + "name": "burnLimitPerMessage", + "type": "u64" + }, + { + "name": "messagesSent", + "type": "u64" + }, + { + "name": "messagesReceived", + "type": "u64" + }, + { + "name": "amountSent", + "type": "u128" + }, + { + "name": "amountReceived", + "type": "u128" + }, + { + "name": "bump", + "type": "u8" + }, + { + "name": "custodyBump", + "type": "u8" + } + ] + } + } + ], + "types": [ + { + "name": "AcceptOwnershipParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "AddRemoteTokenMessengerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "domain", + "type": "u32" + }, + { + "name": "tokenMessenger", + "type": "publicKey" + } + ] + } + }, + { + "name": "DepositForBurnWithCallerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "mintRecipient", + "type": "publicKey" + }, + { + "name": "destinationCaller", + "type": "publicKey" + } + ] + } + }, + { + "name": "DepositForBurnParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "mintRecipient", + "type": "publicKey" + } + ] + } + }, + { + "name": "HandleReceiveMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "sender", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + }, + { + "name": "authorityBump", + "type": "u8" + } + ] + } + }, + { + "name": "InitializeParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "tokenController", + "type": "publicKey" + }, + { + "name": "localMessageTransmitter", + "type": "publicKey" + }, + { + "name": "messageBodyVersion", + "type": "u32" + } + ] + } + }, + { + "name": "RemoveRemoteTokenMessengerParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "ReplaceDepositForBurnParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "originalMessage", + "type": "bytes" + }, + { + "name": "originalAttestation", + "type": "bytes" + }, + { + "name": "newDestinationCaller", + "type": "publicKey" + }, + { + "name": "newMintRecipient", + "type": "publicKey" + } + ] + } + }, + { + "name": "TransferOwnershipParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newOwner", + "type": "publicKey" + } + ] + } + }, + { + "name": "AddLocalTokenParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "BurnTokenCustodyParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "amount", + "type": "u64" + } + ] + } + }, + { + "name": "LinkTokenPairParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "localToken", + "type": "publicKey" + }, + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "remoteToken", + "type": "publicKey" + } + ] + } + }, + { + "name": "PauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "RemoveLocalTokenParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "SetMaxBurnAmountPerMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "burnLimitPerMessage", + "type": "u64" + } + ] + } + }, + { + "name": "SetTokenControllerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "tokenController", + "type": "publicKey" + } + ] + } + }, + { + "name": "UninkTokenPairParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "UnpauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "UpdatePauserParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newPauser", + "type": "publicKey" + } + ] + } + }, + { + "name": "TokenMinterError", + "type": { + "kind": "enum", + "variants": [ + { + "name": "InvalidAuthority" + }, + { + "name": "InvalidTokenMinterState" + }, + { + "name": "ProgramPaused" + }, + { + "name": "InvalidTokenPairState" + }, + { + "name": "InvalidLocalTokenState" + }, + { + "name": "InvalidPauser" + }, + { + "name": "InvalidTokenController" + }, + { + "name": "BurnAmountExceeded" + }, + { + "name": "InvalidAmount" + } + ] + } + } + ], + "events": [ + { + "name": "OwnershipTransferStarted", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "OwnershipTransferred", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "DepositForBurn", + "fields": [ + { + "name": "nonce", + "type": "u64", + "index": false + }, + { + "name": "burnToken", + "type": "publicKey", + "index": false + }, + { + "name": "amount", + "type": "u64", + "index": false + }, + { + "name": "depositor", + "type": "publicKey", + "index": false + }, + { + "name": "mintRecipient", + "type": "publicKey", + "index": false + }, + { + "name": "destinationDomain", + "type": "u32", + "index": false + }, + { + "name": "destinationTokenMessenger", + "type": "publicKey", + "index": false + }, + { + "name": "destinationCaller", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "MintAndWithdraw", + "fields": [ + { + "name": "mintRecipient", + "type": "publicKey", + "index": false + }, + { + "name": "amount", + "type": "u64", + "index": false + }, + { + "name": "mintToken", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "RemoteTokenMessengerAdded", + "fields": [ + { + "name": "domain", + "type": "u32", + "index": false + }, + { + "name": "tokenMessenger", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "RemoteTokenMessengerRemoved", + "fields": [ + { + "name": "domain", + "type": "u32", + "index": false + }, + { + "name": "tokenMessenger", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "SetTokenController", + "fields": [ + { + "name": "tokenController", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "PauserChanged", + "fields": [ + { + "name": "newAddress", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "SetBurnLimitPerMessage", + "fields": [ + { + "name": "token", + "type": "publicKey", + "index": false + }, + { + "name": "burnLimitPerMessage", + "type": "u64", + "index": false + } + ] + }, + { + "name": "LocalTokenAdded", + "fields": [ + { + "name": "custody", + "type": "publicKey", + "index": false + }, + { + "name": "mint", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "LocalTokenRemoved", + "fields": [ + { + "name": "custody", + "type": "publicKey", + "index": false + }, + { + "name": "mint", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "TokenPairLinked", + "fields": [ + { + "name": "localToken", + "type": "publicKey", + "index": false + }, + { + "name": "remoteDomain", + "type": "u32", + "index": false + }, + { + "name": "remoteToken", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "TokenPairUnlinked", + "fields": [ + { + "name": "localToken", + "type": "publicKey", + "index": false + }, + { + "name": "remoteDomain", + "type": "u32", + "index": false + }, + { + "name": "remoteToken", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "Pause", + "fields": [] + }, + { + "name": "Unpause", + "fields": [] + }, + { + "name": "TokenCustodyBurned", + "fields": [ + { + "name": "custodyTokenAccount", + "type": "publicKey", + "index": false + }, + { + "name": "amount", + "type": "u64", + "index": false + } + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "InvalidAuthority", + "msg": "Invalid authority" + }, + { + "code": 6001, + "name": "InvalidTokenMessengerState", + "msg": "Invalid token messenger state" + }, + { + "code": 6002, + "name": "InvalidTokenMessenger", + "msg": "Invalid token messenger" + }, + { + "code": 6003, + "name": "InvalidOwner", + "msg": "Invalid owner" + }, + { + "code": 6004, + "name": "MalformedMessage", + "msg": "Malformed message" + }, + { + "code": 6005, + "name": "InvalidMessageBodyVersion", + "msg": "Invalid message body version" + }, + { + "code": 6006, + "name": "InvalidAmount", + "msg": "Invalid amount" + }, + { + "code": 6007, + "name": "InvalidDestinationDomain", + "msg": "Invalid destination domain" + }, + { + "code": 6008, + "name": "InvalidDestinationCaller", + "msg": "Invalid destination caller" + }, + { + "code": 6009, + "name": "InvalidMintRecipient", + "msg": "Invalid mint recipient" + }, + { + "code": 6010, + "name": "InvalidSender", + "msg": "Invalid sender" + }, + { + "code": 6011, + "name": "InvalidTokenPair", + "msg": "Invalid token pair" + }, + { + "code": 6012, + "name": "InvalidTokenMint", + "msg": "Invalid token mint" + } + ], + "metadata": { + "address": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3" + } +} \ No newline at end of file diff --git a/examples/target/types/message_transmitter.ts b/examples/target/types/message_transmitter.ts new file mode 100644 index 00000000..9d24c238 --- /dev/null +++ b/examples/target/types/message_transmitter.ts @@ -0,0 +1,2749 @@ +export type MessageTransmitter = { + "version": "0.1.0", + "name": "message_transmitter", + "instructions": [ + { + "name": "initialize", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "upgradeAuthority", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageTransmitterProgramData", + "isMut": false, + "isSigner": false + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "InitializeParams" + } + } + ] + }, + { + "name": "transferOwnership", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "TransferOwnershipParams" + } + } + ] + }, + { + "name": "acceptOwnership", + "accounts": [ + { + "name": "pendingOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AcceptOwnershipParams" + } + } + ] + }, + { + "name": "updatePauser", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UpdatePauserParams" + } + } + ] + }, + { + "name": "updateAttesterManager", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UpdateAttesterManagerParams" + } + } + ] + }, + { + "name": "pause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "PauseParams" + } + } + ] + }, + { + "name": "unpause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UnpauseParams" + } + } + ] + }, + { + "name": "setMaxMessageBodySize", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetMaxMessageBodySizeParams" + } + } + ] + }, + { + "name": "enableAttester", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "attesterManager", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "EnableAttesterParams" + } + } + ] + }, + { + "name": "disableAttester", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "attesterManager", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "DisableAttesterParams" + } + } + ] + }, + { + "name": "setSignatureThreshold", + "accounts": [ + { + "name": "attesterManager", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetSignatureThresholdParams" + } + } + ] + }, + { + "name": "sendMessage", + "accounts": [ + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "senderProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SendMessageParams" + } + } + ], + "returns": "u64" + }, + { + "name": "sendMessageWithCaller", + "accounts": [ + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "senderProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SendMessageWithCallerParams" + } + } + ], + "returns": "u64" + }, + { + "name": "replaceMessage", + "accounts": [ + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "senderProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReplaceMessageParams" + } + } + ], + "returns": "u64" + }, + { + "name": "receiveMessage", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "caller", + "isMut": false, + "isSigner": true + }, + { + "name": "authorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": false, + "isSigner": false + }, + { + "name": "usedNonces", + "isMut": true, + "isSigner": false + }, + { + "name": "receiver", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReceiveMessageParams" + } + } + ] + }, + { + "name": "reclaimEventAccount", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true, + "docs": [ + "rent SOL receiver, should match original rent payer" + ] + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReclaimEventAccountParams" + } + } + ] + }, + { + "name": "getNoncePda", + "accounts": [ + { + "name": "messageTransmitter", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "GetNoncePDAParams" + } + } + ], + "returns": "publicKey" + }, + { + "name": "isNonceUsed", + "accounts": [ + { + "name": "usedNonces", + "isMut": false, + "isSigner": false, + "docs": [ + "Account will be explicitly loaded to avoid error when it's not initialized" + ] + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "IsNonceUsedParams" + } + } + ], + "returns": "bool" + } + ], + "accounts": [ + { + "name": "messageSent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "rentPayer", + "type": "publicKey" + }, + { + "name": "message", + "type": "bytes" + } + ] + } + }, + { + "name": "messageTransmitter", + "docs": [ + "Main state of the MessageTransmitter program" + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "owner", + "type": "publicKey" + }, + { + "name": "pendingOwner", + "type": "publicKey" + }, + { + "name": "attesterManager", + "type": "publicKey" + }, + { + "name": "pauser", + "type": "publicKey" + }, + { + "name": "paused", + "type": "bool" + }, + { + "name": "localDomain", + "type": "u32" + }, + { + "name": "version", + "type": "u32" + }, + { + "name": "signatureThreshold", + "type": "u32" + }, + { + "name": "enabledAttesters", + "type": { + "vec": "publicKey" + } + }, + { + "name": "maxMessageBodySize", + "type": "u64" + }, + { + "name": "nextAvailableNonce", + "type": "u64" + } + ] + } + }, + { + "name": "usedNonces", + "docs": [ + "UsedNonces account holds an array of bits that indicate which nonces were already used", + "so they can't be resused to receive new messages. Array starts with the first_nonce and", + "holds flags for UsedNonces::MAX_NONCES. Nonces are recorded separately for each remote_domain." + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "firstNonce", + "type": "u64" + }, + { + "name": "usedNonces", + "type": { + "array": [ + "u64", + 100 + ] + } + } + ] + } + } + ], + "types": [ + { + "name": "AcceptOwnershipParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "DisableAttesterParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "attester", + "type": "publicKey" + } + ] + } + }, + { + "name": "EnableAttesterParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newAttester", + "type": "publicKey" + } + ] + } + }, + { + "name": "GetNoncePDAParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "u64" + }, + { + "name": "sourceDomain", + "type": "u32" + } + ] + } + }, + { + "name": "InitializeParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "localDomain", + "type": "u32" + }, + { + "name": "attester", + "type": "publicKey" + }, + { + "name": "maxMessageBodySize", + "type": "u64" + }, + { + "name": "version", + "type": "u32" + } + ] + } + }, + { + "name": "IsNonceUsedParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "u64" + } + ] + } + }, + { + "name": "PauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "ReceiveMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "message", + "type": "bytes" + }, + { + "name": "attestation", + "type": "bytes" + } + ] + } + }, + { + "name": "HandleReceiveMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "sender", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + }, + { + "name": "authorityBump", + "type": "u8" + } + ] + } + }, + { + "name": "ReclaimEventAccountParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "attestation", + "type": "bytes" + } + ] + } + }, + { + "name": "ReplaceMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "originalMessage", + "type": "bytes" + }, + { + "name": "originalAttestation", + "type": "bytes" + }, + { + "name": "newMessageBody", + "type": "bytes" + }, + { + "name": "newDestinationCaller", + "type": "publicKey" + } + ] + } + }, + { + "name": "SendMessageWithCallerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "recipient", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + }, + { + "name": "destinationCaller", + "type": "publicKey" + } + ] + } + }, + { + "name": "SendMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "recipient", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + } + ] + } + }, + { + "name": "SetMaxMessageBodySizeParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newMaxMessageBodySize", + "type": "u64" + } + ] + } + }, + { + "name": "SetSignatureThresholdParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newSignatureThreshold", + "type": "u32" + } + ] + } + }, + { + "name": "TransferOwnershipParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newOwner", + "type": "publicKey" + } + ] + } + }, + { + "name": "UnpauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "UpdateAttesterManagerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newAttesterManager", + "type": "publicKey" + } + ] + } + }, + { + "name": "UpdatePauserParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newPauser", + "type": "publicKey" + } + ] + } + }, + { + "name": "MathError", + "type": { + "kind": "enum", + "variants": [ + { + "name": "MathOverflow" + }, + { + "name": "MathUnderflow" + }, + { + "name": "ErrorInDivision" + } + ] + } + } + ], + "events": [ + { + "name": "OwnershipTransferStarted", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "OwnershipTransferred", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "PauserChanged", + "fields": [ + { + "name": "newAddress", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "AttesterManagerUpdated", + "fields": [ + { + "name": "previousAttesterManager", + "type": "publicKey", + "index": false + }, + { + "name": "newAttesterManager", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "MessageReceived", + "fields": [ + { + "name": "caller", + "type": "publicKey", + "index": false + }, + { + "name": "sourceDomain", + "type": "u32", + "index": false + }, + { + "name": "nonce", + "type": "u64", + "index": false + }, + { + "name": "sender", + "type": "publicKey", + "index": false + }, + { + "name": "messageBody", + "type": "bytes", + "index": false + } + ] + }, + { + "name": "SignatureThresholdUpdated", + "fields": [ + { + "name": "oldSignatureThreshold", + "type": "u32", + "index": false + }, + { + "name": "newSignatureThreshold", + "type": "u32", + "index": false + } + ] + }, + { + "name": "AttesterEnabled", + "fields": [ + { + "name": "attester", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "AttesterDisabled", + "fields": [ + { + "name": "attester", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "MaxMessageBodySizeUpdated", + "fields": [ + { + "name": "newMaxMessageBodySize", + "type": "u64", + "index": false + } + ] + }, + { + "name": "Pause", + "fields": [] + }, + { + "name": "Unpause", + "fields": [] + } + ], + "errors": [ + { + "code": 6000, + "name": "InvalidAuthority", + "msg": "Invalid authority" + }, + { + "code": 6001, + "name": "ProgramPaused", + "msg": "Instruction is not allowed at this time" + }, + { + "code": 6002, + "name": "InvalidMessageTransmitterState", + "msg": "Invalid message transmitter state" + }, + { + "code": 6003, + "name": "InvalidSignatureThreshold", + "msg": "Invalid signature threshold" + }, + { + "code": 6004, + "name": "SignatureThresholdAlreadySet", + "msg": "Signature threshold already set" + }, + { + "code": 6005, + "name": "InvalidOwner", + "msg": "Invalid owner" + }, + { + "code": 6006, + "name": "InvalidPauser", + "msg": "Invalid pauser" + }, + { + "code": 6007, + "name": "InvalidAttesterManager", + "msg": "Invalid attester manager" + }, + { + "code": 6008, + "name": "InvalidAttester", + "msg": "Invalid attester" + }, + { + "code": 6009, + "name": "AttesterAlreadyEnabled", + "msg": "Attester already enabled" + }, + { + "code": 6010, + "name": "TooFewEnabledAttesters", + "msg": "Too few enabled attesters" + }, + { + "code": 6011, + "name": "SignatureThresholdTooLow", + "msg": "Signature threshold is too low" + }, + { + "code": 6012, + "name": "AttesterAlreadyDisabled", + "msg": "Attester already disabled" + }, + { + "code": 6013, + "name": "MessageBodyLimitExceeded", + "msg": "Message body exceeds max size" + }, + { + "code": 6014, + "name": "InvalidDestinationCaller", + "msg": "Invalid destination caller" + }, + { + "code": 6015, + "name": "InvalidRecipient", + "msg": "Invalid message recipient" + }, + { + "code": 6016, + "name": "SenderNotPermitted", + "msg": "Sender is not permitted" + }, + { + "code": 6017, + "name": "InvalidSourceDomain", + "msg": "Invalid source domain" + }, + { + "code": 6018, + "name": "InvalidDestinationDomain", + "msg": "Invalid destination domain" + }, + { + "code": 6019, + "name": "InvalidMessageVersion", + "msg": "Invalid message version" + }, + { + "code": 6020, + "name": "InvalidUsedNoncesAccount", + "msg": "Invalid used nonces account" + }, + { + "code": 6021, + "name": "InvalidRecipientProgram", + "msg": "Invalid recipient program" + }, + { + "code": 6022, + "name": "InvalidNonce", + "msg": "Invalid nonce" + }, + { + "code": 6023, + "name": "NonceAlreadyUsed", + "msg": "Nonce already used" + }, + { + "code": 6024, + "name": "MessageTooShort", + "msg": "Message is too short" + }, + { + "code": 6025, + "name": "MalformedMessage", + "msg": "Malformed message" + }, + { + "code": 6026, + "name": "InvalidSignatureOrderOrDupe", + "msg": "Invalid signature order or dupe" + }, + { + "code": 6027, + "name": "InvalidAttesterSignature", + "msg": "Invalid attester signature" + }, + { + "code": 6028, + "name": "InvalidAttestationLength", + "msg": "Invalid attestation length" + }, + { + "code": 6029, + "name": "InvalidSignatureRecoveryId", + "msg": "Invalid signature recovery ID" + }, + { + "code": 6030, + "name": "InvalidSignatureSValue", + "msg": "Invalid signature S value" + }, + { + "code": 6031, + "name": "InvalidMessageHash", + "msg": "Invalid message hash" + } + ] +}; + +export const IDL: MessageTransmitter = { + "version": "0.1.0", + "name": "message_transmitter", + "instructions": [ + { + "name": "initialize", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "upgradeAuthority", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageTransmitterProgramData", + "isMut": false, + "isSigner": false + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "InitializeParams" + } + } + ] + }, + { + "name": "transferOwnership", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "TransferOwnershipParams" + } + } + ] + }, + { + "name": "acceptOwnership", + "accounts": [ + { + "name": "pendingOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AcceptOwnershipParams" + } + } + ] + }, + { + "name": "updatePauser", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UpdatePauserParams" + } + } + ] + }, + { + "name": "updateAttesterManager", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UpdateAttesterManagerParams" + } + } + ] + }, + { + "name": "pause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "PauseParams" + } + } + ] + }, + { + "name": "unpause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UnpauseParams" + } + } + ] + }, + { + "name": "setMaxMessageBodySize", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetMaxMessageBodySizeParams" + } + } + ] + }, + { + "name": "enableAttester", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "attesterManager", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "EnableAttesterParams" + } + } + ] + }, + { + "name": "disableAttester", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "attesterManager", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "DisableAttesterParams" + } + } + ] + }, + { + "name": "setSignatureThreshold", + "accounts": [ + { + "name": "attesterManager", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetSignatureThresholdParams" + } + } + ] + }, + { + "name": "sendMessage", + "accounts": [ + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "senderProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SendMessageParams" + } + } + ], + "returns": "u64" + }, + { + "name": "sendMessageWithCaller", + "accounts": [ + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "senderProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SendMessageWithCallerParams" + } + } + ], + "returns": "u64" + }, + { + "name": "replaceMessage", + "accounts": [ + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "senderProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReplaceMessageParams" + } + } + ], + "returns": "u64" + }, + { + "name": "receiveMessage", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "caller", + "isMut": false, + "isSigner": true + }, + { + "name": "authorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": false, + "isSigner": false + }, + { + "name": "usedNonces", + "isMut": true, + "isSigner": false + }, + { + "name": "receiver", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReceiveMessageParams" + } + } + ] + }, + { + "name": "reclaimEventAccount", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true, + "docs": [ + "rent SOL receiver, should match original rent payer" + ] + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReclaimEventAccountParams" + } + } + ] + }, + { + "name": "getNoncePda", + "accounts": [ + { + "name": "messageTransmitter", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "GetNoncePDAParams" + } + } + ], + "returns": "publicKey" + }, + { + "name": "isNonceUsed", + "accounts": [ + { + "name": "usedNonces", + "isMut": false, + "isSigner": false, + "docs": [ + "Account will be explicitly loaded to avoid error when it's not initialized" + ] + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "IsNonceUsedParams" + } + } + ], + "returns": "bool" + } + ], + "accounts": [ + { + "name": "messageSent", + "type": { + "kind": "struct", + "fields": [ + { + "name": "rentPayer", + "type": "publicKey" + }, + { + "name": "message", + "type": "bytes" + } + ] + } + }, + { + "name": "messageTransmitter", + "docs": [ + "Main state of the MessageTransmitter program" + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "owner", + "type": "publicKey" + }, + { + "name": "pendingOwner", + "type": "publicKey" + }, + { + "name": "attesterManager", + "type": "publicKey" + }, + { + "name": "pauser", + "type": "publicKey" + }, + { + "name": "paused", + "type": "bool" + }, + { + "name": "localDomain", + "type": "u32" + }, + { + "name": "version", + "type": "u32" + }, + { + "name": "signatureThreshold", + "type": "u32" + }, + { + "name": "enabledAttesters", + "type": { + "vec": "publicKey" + } + }, + { + "name": "maxMessageBodySize", + "type": "u64" + }, + { + "name": "nextAvailableNonce", + "type": "u64" + } + ] + } + }, + { + "name": "usedNonces", + "docs": [ + "UsedNonces account holds an array of bits that indicate which nonces were already used", + "so they can't be resused to receive new messages. Array starts with the first_nonce and", + "holds flags for UsedNonces::MAX_NONCES. Nonces are recorded separately for each remote_domain." + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "firstNonce", + "type": "u64" + }, + { + "name": "usedNonces", + "type": { + "array": [ + "u64", + 100 + ] + } + } + ] + } + } + ], + "types": [ + { + "name": "AcceptOwnershipParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "DisableAttesterParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "attester", + "type": "publicKey" + } + ] + } + }, + { + "name": "EnableAttesterParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newAttester", + "type": "publicKey" + } + ] + } + }, + { + "name": "GetNoncePDAParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "u64" + }, + { + "name": "sourceDomain", + "type": "u32" + } + ] + } + }, + { + "name": "InitializeParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "localDomain", + "type": "u32" + }, + { + "name": "attester", + "type": "publicKey" + }, + { + "name": "maxMessageBodySize", + "type": "u64" + }, + { + "name": "version", + "type": "u32" + } + ] + } + }, + { + "name": "IsNonceUsedParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "nonce", + "type": "u64" + } + ] + } + }, + { + "name": "PauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "ReceiveMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "message", + "type": "bytes" + }, + { + "name": "attestation", + "type": "bytes" + } + ] + } + }, + { + "name": "HandleReceiveMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "sender", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + }, + { + "name": "authorityBump", + "type": "u8" + } + ] + } + }, + { + "name": "ReclaimEventAccountParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "attestation", + "type": "bytes" + } + ] + } + }, + { + "name": "ReplaceMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "originalMessage", + "type": "bytes" + }, + { + "name": "originalAttestation", + "type": "bytes" + }, + { + "name": "newMessageBody", + "type": "bytes" + }, + { + "name": "newDestinationCaller", + "type": "publicKey" + } + ] + } + }, + { + "name": "SendMessageWithCallerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "recipient", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + }, + { + "name": "destinationCaller", + "type": "publicKey" + } + ] + } + }, + { + "name": "SendMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "recipient", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + } + ] + } + }, + { + "name": "SetMaxMessageBodySizeParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newMaxMessageBodySize", + "type": "u64" + } + ] + } + }, + { + "name": "SetSignatureThresholdParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newSignatureThreshold", + "type": "u32" + } + ] + } + }, + { + "name": "TransferOwnershipParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newOwner", + "type": "publicKey" + } + ] + } + }, + { + "name": "UnpauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "UpdateAttesterManagerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newAttesterManager", + "type": "publicKey" + } + ] + } + }, + { + "name": "UpdatePauserParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newPauser", + "type": "publicKey" + } + ] + } + }, + { + "name": "MathError", + "type": { + "kind": "enum", + "variants": [ + { + "name": "MathOverflow" + }, + { + "name": "MathUnderflow" + }, + { + "name": "ErrorInDivision" + } + ] + } + } + ], + "events": [ + { + "name": "OwnershipTransferStarted", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "OwnershipTransferred", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "PauserChanged", + "fields": [ + { + "name": "newAddress", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "AttesterManagerUpdated", + "fields": [ + { + "name": "previousAttesterManager", + "type": "publicKey", + "index": false + }, + { + "name": "newAttesterManager", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "MessageReceived", + "fields": [ + { + "name": "caller", + "type": "publicKey", + "index": false + }, + { + "name": "sourceDomain", + "type": "u32", + "index": false + }, + { + "name": "nonce", + "type": "u64", + "index": false + }, + { + "name": "sender", + "type": "publicKey", + "index": false + }, + { + "name": "messageBody", + "type": "bytes", + "index": false + } + ] + }, + { + "name": "SignatureThresholdUpdated", + "fields": [ + { + "name": "oldSignatureThreshold", + "type": "u32", + "index": false + }, + { + "name": "newSignatureThreshold", + "type": "u32", + "index": false + } + ] + }, + { + "name": "AttesterEnabled", + "fields": [ + { + "name": "attester", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "AttesterDisabled", + "fields": [ + { + "name": "attester", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "MaxMessageBodySizeUpdated", + "fields": [ + { + "name": "newMaxMessageBodySize", + "type": "u64", + "index": false + } + ] + }, + { + "name": "Pause", + "fields": [] + }, + { + "name": "Unpause", + "fields": [] + } + ], + "errors": [ + { + "code": 6000, + "name": "InvalidAuthority", + "msg": "Invalid authority" + }, + { + "code": 6001, + "name": "ProgramPaused", + "msg": "Instruction is not allowed at this time" + }, + { + "code": 6002, + "name": "InvalidMessageTransmitterState", + "msg": "Invalid message transmitter state" + }, + { + "code": 6003, + "name": "InvalidSignatureThreshold", + "msg": "Invalid signature threshold" + }, + { + "code": 6004, + "name": "SignatureThresholdAlreadySet", + "msg": "Signature threshold already set" + }, + { + "code": 6005, + "name": "InvalidOwner", + "msg": "Invalid owner" + }, + { + "code": 6006, + "name": "InvalidPauser", + "msg": "Invalid pauser" + }, + { + "code": 6007, + "name": "InvalidAttesterManager", + "msg": "Invalid attester manager" + }, + { + "code": 6008, + "name": "InvalidAttester", + "msg": "Invalid attester" + }, + { + "code": 6009, + "name": "AttesterAlreadyEnabled", + "msg": "Attester already enabled" + }, + { + "code": 6010, + "name": "TooFewEnabledAttesters", + "msg": "Too few enabled attesters" + }, + { + "code": 6011, + "name": "SignatureThresholdTooLow", + "msg": "Signature threshold is too low" + }, + { + "code": 6012, + "name": "AttesterAlreadyDisabled", + "msg": "Attester already disabled" + }, + { + "code": 6013, + "name": "MessageBodyLimitExceeded", + "msg": "Message body exceeds max size" + }, + { + "code": 6014, + "name": "InvalidDestinationCaller", + "msg": "Invalid destination caller" + }, + { + "code": 6015, + "name": "InvalidRecipient", + "msg": "Invalid message recipient" + }, + { + "code": 6016, + "name": "SenderNotPermitted", + "msg": "Sender is not permitted" + }, + { + "code": 6017, + "name": "InvalidSourceDomain", + "msg": "Invalid source domain" + }, + { + "code": 6018, + "name": "InvalidDestinationDomain", + "msg": "Invalid destination domain" + }, + { + "code": 6019, + "name": "InvalidMessageVersion", + "msg": "Invalid message version" + }, + { + "code": 6020, + "name": "InvalidUsedNoncesAccount", + "msg": "Invalid used nonces account" + }, + { + "code": 6021, + "name": "InvalidRecipientProgram", + "msg": "Invalid recipient program" + }, + { + "code": 6022, + "name": "InvalidNonce", + "msg": "Invalid nonce" + }, + { + "code": 6023, + "name": "NonceAlreadyUsed", + "msg": "Nonce already used" + }, + { + "code": 6024, + "name": "MessageTooShort", + "msg": "Message is too short" + }, + { + "code": 6025, + "name": "MalformedMessage", + "msg": "Malformed message" + }, + { + "code": 6026, + "name": "InvalidSignatureOrderOrDupe", + "msg": "Invalid signature order or dupe" + }, + { + "code": 6027, + "name": "InvalidAttesterSignature", + "msg": "Invalid attester signature" + }, + { + "code": 6028, + "name": "InvalidAttestationLength", + "msg": "Invalid attestation length" + }, + { + "code": 6029, + "name": "InvalidSignatureRecoveryId", + "msg": "Invalid signature recovery ID" + }, + { + "code": 6030, + "name": "InvalidSignatureSValue", + "msg": "Invalid signature S value" + }, + { + "code": 6031, + "name": "InvalidMessageHash", + "msg": "Invalid message hash" + } + ] +}; diff --git a/examples/target/types/token_messenger_minter.ts b/examples/target/types/token_messenger_minter.ts new file mode 100644 index 00000000..9c1d35ac --- /dev/null +++ b/examples/target/types/token_messenger_minter.ts @@ -0,0 +1,3521 @@ +export type TokenMessengerMinter = { + "version": "0.1.0", + "name": "token_messenger_minter", + "instructions": [ + { + "name": "initialize", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "upgradeAuthority", + "isMut": false, + "isSigner": true + }, + { + "name": "authorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgramData", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "InitializeParams" + } + } + ] + }, + { + "name": "transferOwnership", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "TransferOwnershipParams" + } + } + ] + }, + { + "name": "acceptOwnership", + "accounts": [ + { + "name": "pendingOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AcceptOwnershipParams" + } + } + ] + }, + { + "name": "addRemoteTokenMessenger", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AddRemoteTokenMessengerParams" + } + } + ] + }, + { + "name": "removeRemoteTokenMessenger", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "RemoveRemoteTokenMessengerParams" + } + } + ] + }, + { + "name": "depositForBurn", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "burnTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "burnTokenMint", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "DepositForBurnParams" + } + } + ], + "returns": "u64" + }, + { + "name": "depositForBurnWithCaller", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "burnTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "burnTokenMint", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "DepositForBurnWithCallerParams" + } + } + ], + "returns": "u64" + }, + { + "name": "replaceDepositForBurn", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReplaceDepositForBurnParams" + } + } + ], + "returns": "u64" + }, + { + "name": "handleReceiveMessage", + "accounts": [ + { + "name": "authorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenPair", + "isMut": false, + "isSigner": false + }, + { + "name": "recipientTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "HandleReceiveMessageParams" + } + } + ] + }, + { + "name": "setTokenController", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetTokenControllerParams" + } + } + ] + }, + { + "name": "pause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "PauseParams" + } + } + ] + }, + { + "name": "unpause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UnpauseParams" + } + } + ] + }, + { + "name": "updatePauser", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UpdatePauserParams" + } + } + ] + }, + { + "name": "setMaxBurnAmountPerMessage", + "accounts": [ + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetMaxBurnAmountPerMessageParams" + } + } + ] + }, + { + "name": "addLocalToken", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "localTokenMint", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AddLocalTokenParams" + } + } + ] + }, + { + "name": "removeLocalToken", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "RemoveLocalTokenParams" + } + } + ] + }, + { + "name": "linkTokenPair", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenPair", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "LinkTokenPairParams" + } + } + ] + }, + { + "name": "unlinkTokenPair", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenPair", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UninkTokenPairParams" + } + } + ] + }, + { + "name": "burnTokenCustody", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": false, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenMint", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "BurnTokenCustodyParams" + } + } + ] + } + ], + "accounts": [ + { + "name": "tokenMessenger", + "type": { + "kind": "struct", + "fields": [ + { + "name": "owner", + "type": "publicKey" + }, + { + "name": "pendingOwner", + "type": "publicKey" + }, + { + "name": "localMessageTransmitter", + "type": "publicKey" + }, + { + "name": "messageBodyVersion", + "type": "u32" + }, + { + "name": "authorityBump", + "type": "u8" + } + ] + } + }, + { + "name": "remoteTokenMessenger", + "type": { + "kind": "struct", + "fields": [ + { + "name": "domain", + "type": "u32" + }, + { + "name": "tokenMessenger", + "type": "publicKey" + } + ] + } + }, + { + "name": "tokenMinter", + "type": { + "kind": "struct", + "fields": [ + { + "name": "tokenController", + "type": "publicKey" + }, + { + "name": "pauser", + "type": "publicKey" + }, + { + "name": "paused", + "type": "bool" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + }, + { + "name": "tokenPair", + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "remoteToken", + "type": "publicKey" + }, + { + "name": "localToken", + "type": "publicKey" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + }, + { + "name": "localToken", + "type": { + "kind": "struct", + "fields": [ + { + "name": "custody", + "type": "publicKey" + }, + { + "name": "mint", + "type": "publicKey" + }, + { + "name": "burnLimitPerMessage", + "type": "u64" + }, + { + "name": "messagesSent", + "type": "u64" + }, + { + "name": "messagesReceived", + "type": "u64" + }, + { + "name": "amountSent", + "type": "u128" + }, + { + "name": "amountReceived", + "type": "u128" + }, + { + "name": "bump", + "type": "u8" + }, + { + "name": "custodyBump", + "type": "u8" + } + ] + } + } + ], + "types": [ + { + "name": "AcceptOwnershipParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "AddRemoteTokenMessengerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "domain", + "type": "u32" + }, + { + "name": "tokenMessenger", + "type": "publicKey" + } + ] + } + }, + { + "name": "DepositForBurnWithCallerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "mintRecipient", + "type": "publicKey" + }, + { + "name": "destinationCaller", + "type": "publicKey" + } + ] + } + }, + { + "name": "DepositForBurnParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "mintRecipient", + "type": "publicKey" + } + ] + } + }, + { + "name": "HandleReceiveMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "sender", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + }, + { + "name": "authorityBump", + "type": "u8" + } + ] + } + }, + { + "name": "InitializeParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "tokenController", + "type": "publicKey" + }, + { + "name": "localMessageTransmitter", + "type": "publicKey" + }, + { + "name": "messageBodyVersion", + "type": "u32" + } + ] + } + }, + { + "name": "RemoveRemoteTokenMessengerParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "ReplaceDepositForBurnParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "originalMessage", + "type": "bytes" + }, + { + "name": "originalAttestation", + "type": "bytes" + }, + { + "name": "newDestinationCaller", + "type": "publicKey" + }, + { + "name": "newMintRecipient", + "type": "publicKey" + } + ] + } + }, + { + "name": "TransferOwnershipParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newOwner", + "type": "publicKey" + } + ] + } + }, + { + "name": "AddLocalTokenParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "BurnTokenCustodyParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "amount", + "type": "u64" + } + ] + } + }, + { + "name": "LinkTokenPairParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "localToken", + "type": "publicKey" + }, + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "remoteToken", + "type": "publicKey" + } + ] + } + }, + { + "name": "PauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "RemoveLocalTokenParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "SetMaxBurnAmountPerMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "burnLimitPerMessage", + "type": "u64" + } + ] + } + }, + { + "name": "SetTokenControllerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "tokenController", + "type": "publicKey" + } + ] + } + }, + { + "name": "UninkTokenPairParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "UnpauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "UpdatePauserParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newPauser", + "type": "publicKey" + } + ] + } + }, + { + "name": "TokenMinterError", + "type": { + "kind": "enum", + "variants": [ + { + "name": "InvalidAuthority" + }, + { + "name": "InvalidTokenMinterState" + }, + { + "name": "ProgramPaused" + }, + { + "name": "InvalidTokenPairState" + }, + { + "name": "InvalidLocalTokenState" + }, + { + "name": "InvalidPauser" + }, + { + "name": "InvalidTokenController" + }, + { + "name": "BurnAmountExceeded" + }, + { + "name": "InvalidAmount" + } + ] + } + } + ], + "events": [ + { + "name": "OwnershipTransferStarted", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "OwnershipTransferred", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "DepositForBurn", + "fields": [ + { + "name": "nonce", + "type": "u64", + "index": false + }, + { + "name": "burnToken", + "type": "publicKey", + "index": false + }, + { + "name": "amount", + "type": "u64", + "index": false + }, + { + "name": "depositor", + "type": "publicKey", + "index": false + }, + { + "name": "mintRecipient", + "type": "publicKey", + "index": false + }, + { + "name": "destinationDomain", + "type": "u32", + "index": false + }, + { + "name": "destinationTokenMessenger", + "type": "publicKey", + "index": false + }, + { + "name": "destinationCaller", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "MintAndWithdraw", + "fields": [ + { + "name": "mintRecipient", + "type": "publicKey", + "index": false + }, + { + "name": "amount", + "type": "u64", + "index": false + }, + { + "name": "mintToken", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "RemoteTokenMessengerAdded", + "fields": [ + { + "name": "domain", + "type": "u32", + "index": false + }, + { + "name": "tokenMessenger", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "RemoteTokenMessengerRemoved", + "fields": [ + { + "name": "domain", + "type": "u32", + "index": false + }, + { + "name": "tokenMessenger", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "SetTokenController", + "fields": [ + { + "name": "tokenController", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "PauserChanged", + "fields": [ + { + "name": "newAddress", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "SetBurnLimitPerMessage", + "fields": [ + { + "name": "token", + "type": "publicKey", + "index": false + }, + { + "name": "burnLimitPerMessage", + "type": "u64", + "index": false + } + ] + }, + { + "name": "LocalTokenAdded", + "fields": [ + { + "name": "custody", + "type": "publicKey", + "index": false + }, + { + "name": "mint", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "LocalTokenRemoved", + "fields": [ + { + "name": "custody", + "type": "publicKey", + "index": false + }, + { + "name": "mint", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "TokenPairLinked", + "fields": [ + { + "name": "localToken", + "type": "publicKey", + "index": false + }, + { + "name": "remoteDomain", + "type": "u32", + "index": false + }, + { + "name": "remoteToken", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "TokenPairUnlinked", + "fields": [ + { + "name": "localToken", + "type": "publicKey", + "index": false + }, + { + "name": "remoteDomain", + "type": "u32", + "index": false + }, + { + "name": "remoteToken", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "Pause", + "fields": [] + }, + { + "name": "Unpause", + "fields": [] + }, + { + "name": "TokenCustodyBurned", + "fields": [ + { + "name": "custodyTokenAccount", + "type": "publicKey", + "index": false + }, + { + "name": "amount", + "type": "u64", + "index": false + } + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "InvalidAuthority", + "msg": "Invalid authority" + }, + { + "code": 6001, + "name": "InvalidTokenMessengerState", + "msg": "Invalid token messenger state" + }, + { + "code": 6002, + "name": "InvalidTokenMessenger", + "msg": "Invalid token messenger" + }, + { + "code": 6003, + "name": "InvalidOwner", + "msg": "Invalid owner" + }, + { + "code": 6004, + "name": "MalformedMessage", + "msg": "Malformed message" + }, + { + "code": 6005, + "name": "InvalidMessageBodyVersion", + "msg": "Invalid message body version" + }, + { + "code": 6006, + "name": "InvalidAmount", + "msg": "Invalid amount" + }, + { + "code": 6007, + "name": "InvalidDestinationDomain", + "msg": "Invalid destination domain" + }, + { + "code": 6008, + "name": "InvalidDestinationCaller", + "msg": "Invalid destination caller" + }, + { + "code": 6009, + "name": "InvalidMintRecipient", + "msg": "Invalid mint recipient" + }, + { + "code": 6010, + "name": "InvalidSender", + "msg": "Invalid sender" + }, + { + "code": 6011, + "name": "InvalidTokenPair", + "msg": "Invalid token pair" + }, + { + "code": 6012, + "name": "InvalidTokenMint", + "msg": "Invalid token mint" + } + ] +}; + +export const IDL: TokenMessengerMinter = { + "version": "0.1.0", + "name": "token_messenger_minter", + "instructions": [ + { + "name": "initialize", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "upgradeAuthority", + "isMut": false, + "isSigner": true + }, + { + "name": "authorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgramData", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "InitializeParams" + } + } + ] + }, + { + "name": "transferOwnership", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "TransferOwnershipParams" + } + } + ] + }, + { + "name": "acceptOwnership", + "accounts": [ + { + "name": "pendingOwner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AcceptOwnershipParams" + } + } + ] + }, + { + "name": "addRemoteTokenMessenger", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AddRemoteTokenMessengerParams" + } + } + ] + }, + { + "name": "removeRemoteTokenMessenger", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "RemoveRemoteTokenMessengerParams" + } + } + ] + }, + { + "name": "depositForBurn", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "burnTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "burnTokenMint", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "DepositForBurnParams" + } + } + ], + "returns": "u64" + }, + { + "name": "depositForBurnWithCaller", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "burnTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "burnTokenMint", + "isMut": true, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "DepositForBurnWithCallerParams" + } + } + ], + "returns": "u64" + }, + { + "name": "replaceDepositForBurn", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "eventRentPayer", + "isMut": true, + "isSigner": true + }, + { + "name": "senderAuthorityPda", + "isMut": false, + "isSigner": false + }, + { + "name": "messageTransmitter", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "messageSentEventData", + "isMut": true, + "isSigner": true + }, + { + "name": "messageTransmitterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMessengerMinterProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ReplaceDepositForBurnParams" + } + } + ], + "returns": "u64" + }, + { + "name": "handleReceiveMessage", + "accounts": [ + { + "name": "authorityPda", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "remoteTokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenPair", + "isMut": false, + "isSigner": false + }, + { + "name": "recipientTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "HandleReceiveMessageParams" + } + } + ] + }, + { + "name": "setTokenController", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetTokenControllerParams" + } + } + ] + }, + { + "name": "pause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "PauseParams" + } + } + ] + }, + { + "name": "unpause", + "accounts": [ + { + "name": "pauser", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UnpauseParams" + } + } + ] + }, + { + "name": "updatePauser", + "accounts": [ + { + "name": "owner", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMessenger", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenMinter", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UpdatePauserParams" + } + } + ] + }, + { + "name": "setMaxBurnAmountPerMessage", + "accounts": [ + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "SetMaxBurnAmountPerMessageParams" + } + } + ] + }, + { + "name": "addLocalToken", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "localTokenMint", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "AddLocalTokenParams" + } + } + ] + }, + { + "name": "removeLocalToken", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "RemoveLocalTokenParams" + } + } + ] + }, + { + "name": "linkTokenPair", + "accounts": [ + { + "name": "payer", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenPair", + "isMut": true, + "isSigner": false + }, + { + "name": "systemProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "LinkTokenPairParams" + } + } + ] + }, + { + "name": "unlinkTokenPair", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "tokenPair", + "isMut": true, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "UninkTokenPairParams" + } + } + ] + }, + { + "name": "burnTokenCustody", + "accounts": [ + { + "name": "payee", + "isMut": true, + "isSigner": true + }, + { + "name": "tokenController", + "isMut": false, + "isSigner": true + }, + { + "name": "tokenMinter", + "isMut": false, + "isSigner": false + }, + { + "name": "localToken", + "isMut": false, + "isSigner": false + }, + { + "name": "custodyTokenAccount", + "isMut": true, + "isSigner": false + }, + { + "name": "custodyTokenMint", + "isMut": true, + "isSigner": false + }, + { + "name": "tokenProgram", + "isMut": false, + "isSigner": false + }, + { + "name": "eventAuthority", + "isMut": false, + "isSigner": false + }, + { + "name": "program", + "isMut": false, + "isSigner": false + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "BurnTokenCustodyParams" + } + } + ] + } + ], + "accounts": [ + { + "name": "tokenMessenger", + "type": { + "kind": "struct", + "fields": [ + { + "name": "owner", + "type": "publicKey" + }, + { + "name": "pendingOwner", + "type": "publicKey" + }, + { + "name": "localMessageTransmitter", + "type": "publicKey" + }, + { + "name": "messageBodyVersion", + "type": "u32" + }, + { + "name": "authorityBump", + "type": "u8" + } + ] + } + }, + { + "name": "remoteTokenMessenger", + "type": { + "kind": "struct", + "fields": [ + { + "name": "domain", + "type": "u32" + }, + { + "name": "tokenMessenger", + "type": "publicKey" + } + ] + } + }, + { + "name": "tokenMinter", + "type": { + "kind": "struct", + "fields": [ + { + "name": "tokenController", + "type": "publicKey" + }, + { + "name": "pauser", + "type": "publicKey" + }, + { + "name": "paused", + "type": "bool" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + }, + { + "name": "tokenPair", + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "remoteToken", + "type": "publicKey" + }, + { + "name": "localToken", + "type": "publicKey" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + }, + { + "name": "localToken", + "type": { + "kind": "struct", + "fields": [ + { + "name": "custody", + "type": "publicKey" + }, + { + "name": "mint", + "type": "publicKey" + }, + { + "name": "burnLimitPerMessage", + "type": "u64" + }, + { + "name": "messagesSent", + "type": "u64" + }, + { + "name": "messagesReceived", + "type": "u64" + }, + { + "name": "amountSent", + "type": "u128" + }, + { + "name": "amountReceived", + "type": "u128" + }, + { + "name": "bump", + "type": "u8" + }, + { + "name": "custodyBump", + "type": "u8" + } + ] + } + } + ], + "types": [ + { + "name": "AcceptOwnershipParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "AddRemoteTokenMessengerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "domain", + "type": "u32" + }, + { + "name": "tokenMessenger", + "type": "publicKey" + } + ] + } + }, + { + "name": "DepositForBurnWithCallerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "mintRecipient", + "type": "publicKey" + }, + { + "name": "destinationCaller", + "type": "publicKey" + } + ] + } + }, + { + "name": "DepositForBurnParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "amount", + "type": "u64" + }, + { + "name": "destinationDomain", + "type": "u32" + }, + { + "name": "mintRecipient", + "type": "publicKey" + } + ] + } + }, + { + "name": "HandleReceiveMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "sender", + "type": "publicKey" + }, + { + "name": "messageBody", + "type": "bytes" + }, + { + "name": "authorityBump", + "type": "u8" + } + ] + } + }, + { + "name": "InitializeParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "tokenController", + "type": "publicKey" + }, + { + "name": "localMessageTransmitter", + "type": "publicKey" + }, + { + "name": "messageBodyVersion", + "type": "u32" + } + ] + } + }, + { + "name": "RemoveRemoteTokenMessengerParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "ReplaceDepositForBurnParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "originalMessage", + "type": "bytes" + }, + { + "name": "originalAttestation", + "type": "bytes" + }, + { + "name": "newDestinationCaller", + "type": "publicKey" + }, + { + "name": "newMintRecipient", + "type": "publicKey" + } + ] + } + }, + { + "name": "TransferOwnershipParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newOwner", + "type": "publicKey" + } + ] + } + }, + { + "name": "AddLocalTokenParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "BurnTokenCustodyParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "amount", + "type": "u64" + } + ] + } + }, + { + "name": "LinkTokenPairParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "localToken", + "type": "publicKey" + }, + { + "name": "remoteDomain", + "type": "u32" + }, + { + "name": "remoteToken", + "type": "publicKey" + } + ] + } + }, + { + "name": "PauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "RemoveLocalTokenParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "SetMaxBurnAmountPerMessageParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "burnLimitPerMessage", + "type": "u64" + } + ] + } + }, + { + "name": "SetTokenControllerParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "tokenController", + "type": "publicKey" + } + ] + } + }, + { + "name": "UninkTokenPairParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "UnpauseParams", + "type": { + "kind": "struct", + "fields": [] + } + }, + { + "name": "UpdatePauserParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "newPauser", + "type": "publicKey" + } + ] + } + }, + { + "name": "TokenMinterError", + "type": { + "kind": "enum", + "variants": [ + { + "name": "InvalidAuthority" + }, + { + "name": "InvalidTokenMinterState" + }, + { + "name": "ProgramPaused" + }, + { + "name": "InvalidTokenPairState" + }, + { + "name": "InvalidLocalTokenState" + }, + { + "name": "InvalidPauser" + }, + { + "name": "InvalidTokenController" + }, + { + "name": "BurnAmountExceeded" + }, + { + "name": "InvalidAmount" + } + ] + } + } + ], + "events": [ + { + "name": "OwnershipTransferStarted", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "OwnershipTransferred", + "fields": [ + { + "name": "previousOwner", + "type": "publicKey", + "index": false + }, + { + "name": "newOwner", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "DepositForBurn", + "fields": [ + { + "name": "nonce", + "type": "u64", + "index": false + }, + { + "name": "burnToken", + "type": "publicKey", + "index": false + }, + { + "name": "amount", + "type": "u64", + "index": false + }, + { + "name": "depositor", + "type": "publicKey", + "index": false + }, + { + "name": "mintRecipient", + "type": "publicKey", + "index": false + }, + { + "name": "destinationDomain", + "type": "u32", + "index": false + }, + { + "name": "destinationTokenMessenger", + "type": "publicKey", + "index": false + }, + { + "name": "destinationCaller", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "MintAndWithdraw", + "fields": [ + { + "name": "mintRecipient", + "type": "publicKey", + "index": false + }, + { + "name": "amount", + "type": "u64", + "index": false + }, + { + "name": "mintToken", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "RemoteTokenMessengerAdded", + "fields": [ + { + "name": "domain", + "type": "u32", + "index": false + }, + { + "name": "tokenMessenger", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "RemoteTokenMessengerRemoved", + "fields": [ + { + "name": "domain", + "type": "u32", + "index": false + }, + { + "name": "tokenMessenger", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "SetTokenController", + "fields": [ + { + "name": "tokenController", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "PauserChanged", + "fields": [ + { + "name": "newAddress", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "SetBurnLimitPerMessage", + "fields": [ + { + "name": "token", + "type": "publicKey", + "index": false + }, + { + "name": "burnLimitPerMessage", + "type": "u64", + "index": false + } + ] + }, + { + "name": "LocalTokenAdded", + "fields": [ + { + "name": "custody", + "type": "publicKey", + "index": false + }, + { + "name": "mint", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "LocalTokenRemoved", + "fields": [ + { + "name": "custody", + "type": "publicKey", + "index": false + }, + { + "name": "mint", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "TokenPairLinked", + "fields": [ + { + "name": "localToken", + "type": "publicKey", + "index": false + }, + { + "name": "remoteDomain", + "type": "u32", + "index": false + }, + { + "name": "remoteToken", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "TokenPairUnlinked", + "fields": [ + { + "name": "localToken", + "type": "publicKey", + "index": false + }, + { + "name": "remoteDomain", + "type": "u32", + "index": false + }, + { + "name": "remoteToken", + "type": "publicKey", + "index": false + } + ] + }, + { + "name": "Pause", + "fields": [] + }, + { + "name": "Unpause", + "fields": [] + }, + { + "name": "TokenCustodyBurned", + "fields": [ + { + "name": "custodyTokenAccount", + "type": "publicKey", + "index": false + }, + { + "name": "amount", + "type": "u64", + "index": false + } + ] + } + ], + "errors": [ + { + "code": 6000, + "name": "InvalidAuthority", + "msg": "Invalid authority" + }, + { + "code": 6001, + "name": "InvalidTokenMessengerState", + "msg": "Invalid token messenger state" + }, + { + "code": 6002, + "name": "InvalidTokenMessenger", + "msg": "Invalid token messenger" + }, + { + "code": 6003, + "name": "InvalidOwner", + "msg": "Invalid owner" + }, + { + "code": 6004, + "name": "MalformedMessage", + "msg": "Malformed message" + }, + { + "code": 6005, + "name": "InvalidMessageBodyVersion", + "msg": "Invalid message body version" + }, + { + "code": 6006, + "name": "InvalidAmount", + "msg": "Invalid amount" + }, + { + "code": 6007, + "name": "InvalidDestinationDomain", + "msg": "Invalid destination domain" + }, + { + "code": 6008, + "name": "InvalidDestinationCaller", + "msg": "Invalid destination caller" + }, + { + "code": 6009, + "name": "InvalidMintRecipient", + "msg": "Invalid mint recipient" + }, + { + "code": 6010, + "name": "InvalidSender", + "msg": "Invalid sender" + }, + { + "code": 6011, + "name": "InvalidTokenPair", + "msg": "Invalid token pair" + }, + { + "code": 6012, + "name": "InvalidTokenMint", + "msg": "Invalid token mint" + } + ] +}; diff --git a/examples/utils.ts b/examples/utils.ts new file mode 100644 index 00000000..82e0ee74 --- /dev/null +++ b/examples/utils.ts @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import 'dotenv/config'; +import * as anchor from "@coral-xyz/anchor"; +import { PublicKey } from '@solana/web3.js'; +import { hexlify } from 'ethers'; +import fetch from 'node-fetch'; +import { bs58 } from '@coral-xyz/anchor/dist/cjs/utils/bytes'; + +import { MessageTransmitter } from './target/types/message_transmitter'; +import { TokenMessengerMinter } from './target/types/token_messenger_minter'; + +export const IRIS_API_URL = process.env.IRIS_API_URL ?? "https://iris-api-sandbox.circle.com"; +export const SOLANA_SRC_DOMAIN_ID = 5; +export const SOLANA_USDC_ADDRESS = process.env.SOLANA_USDC_ADDRESS ?? "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"; + +export interface FindProgramAddressResponse { + publicKey: anchor.web3.PublicKey; + bump: number; +} + +// Configure client to use the provider and return it. +// Must set ANCHOR_WALLET (solana keypair path) and ANCHOR_PROVIDER_URL (node URL) env vars +export const getAnchorConnection = () => { + const provider = anchor.AnchorProvider.env(); + anchor.setProvider(provider); + return provider; +}; + +export const getPrograms = (provider: anchor.AnchorProvider) => { + // Initialize contracts + const messageTransmitterProgram = anchor.workspace.MessageTransmitter as anchor.Program; + const tokenMessengerMinterProgram = anchor.workspace.TokenMessengerMinter as anchor.Program; + return { messageTransmitterProgram, tokenMessengerMinterProgram }; +} + +export const getDepositForBurnPdas = ( + {messageTransmitterProgram, tokenMessengerMinterProgram}: ReturnType, + usdcAddress: PublicKey, + destinationDomain: Number +) => { + const messageTransmitterAccount = findProgramAddress("message_transmitter", messageTransmitterProgram.programId); + const tokenMessengerAccount = findProgramAddress("token_messenger", tokenMessengerMinterProgram.programId); + const tokenMinterAccount = findProgramAddress("token_minter", tokenMessengerMinterProgram.programId); + const localToken = findProgramAddress("local_token", tokenMessengerMinterProgram.programId, [usdcAddress]); + const remoteTokenMessengerKey = findProgramAddress("remote_token_messenger", tokenMessengerMinterProgram.programId, [ + destinationDomain.toString(), + ]); + const authorityPda = findProgramAddress("sender_authority", tokenMessengerMinterProgram.programId); + + return { + messageTransmitterAccount, + tokenMessengerAccount, + tokenMinterAccount, + localToken, + remoteTokenMessengerKey, + authorityPda + } +} + +export const getReceiveMessagePdas = async ( + {messageTransmitterProgram, tokenMessengerMinterProgram}: ReturnType, + solUsdcAddress: PublicKey, + remoteUsdcAddressHex: string, + remoteDomain: string, + nonce: string +) => { + const tokenMessengerAccount = findProgramAddress("token_messenger", tokenMessengerMinterProgram.programId); + const messageTransmitterAccount = findProgramAddress("message_transmitter", messageTransmitterProgram.programId); + const tokenMinterAccount = findProgramAddress("token_minter", tokenMessengerMinterProgram.programId); + const localToken = findProgramAddress("local_token", tokenMessengerMinterProgram.programId, [solUsdcAddress]); + const remoteTokenMessengerKey = findProgramAddress("remote_token_messenger", tokenMessengerMinterProgram.programId, [remoteDomain]); + const remoteTokenKey = new PublicKey(hexToBytes(remoteUsdcAddressHex)); + const tokenPair = findProgramAddress("token_pair", tokenMessengerMinterProgram.programId, [ + remoteDomain, + remoteTokenKey, + ]); + const custodyTokenAccount = findProgramAddress("custody", tokenMessengerMinterProgram.programId, [ + solUsdcAddress, + ]); + const authorityPda = findProgramAddress( + "message_transmitter_authority", + messageTransmitterProgram.programId, + [tokenMessengerMinterProgram.programId] + ).publicKey; + const tokenMessengerEventAuthority = findProgramAddress("__event_authority", tokenMessengerMinterProgram.programId); + + const usedNonces = await messageTransmitterProgram.methods + .getNoncePda({ + nonce: new anchor.BN(nonce), + sourceDomain: Number(remoteDomain) + }) + .accounts({ + messageTransmitter: messageTransmitterAccount.publicKey + }) + .view(); + + return { + messageTransmitterAccount, + tokenMessengerAccount, + tokenMinterAccount, + localToken, + remoteTokenMessengerKey, + remoteTokenKey, + tokenPair, + custodyTokenAccount, + authorityPda, + tokenMessengerEventAuthority, + usedNonces + } +} + +export const solanaAddressToHex = (solanaAddress: string): string => + hexlify(bs58.decode(solanaAddress)); + +export const evmAddressToSolana = (evmAddress: string): string => + bs58.encode(hexToBytes(evmAddress)); + +export const evmAddressToBytes32 = (address: string): string => `0x000000000000000000000000${address.replace("0x", "")}`; + +export const hexToBytes = (hex: string): Buffer => Buffer.from(hex.replace("0x", ""), "hex"); + +// Convenience wrapper for PublicKey.findProgramAddressSync +export const findProgramAddress = ( + label: string, + programId: PublicKey, + extraSeeds: (string | number[] | Buffer | PublicKey)[] = null +): FindProgramAddressResponse => { + const seeds = [Buffer.from(anchor.utils.bytes.utf8.encode(label))]; + if (extraSeeds) { + for (const extraSeed of extraSeeds) { + if (typeof extraSeed === "string") { + seeds.push(Buffer.from(anchor.utils.bytes.utf8.encode(extraSeed))); + } else if (Array.isArray(extraSeed)) { + seeds.push(Buffer.from(extraSeed as number[])); + } else if (Buffer.isBuffer(extraSeed)) { + seeds.push(extraSeed); + } else { + seeds.push(extraSeed.toBuffer()); + } + } + } + const res = PublicKey.findProgramAddressSync(seeds, programId); + return { publicKey: res[0], bump: res[1] }; +}; + +// Fetches attestation from attestation service given the txHash +export const getMessages = async (txHash: string) => { + console.log("Fetching messages for tx...", txHash); + let attestationResponse: any = {}; + while(attestationResponse.error || !attestationResponse.messages || attestationResponse.messages?.[0]?.attestation === 'PENDING') { + const response = await fetch(`${IRIS_API_URL}/messages/${SOLANA_SRC_DOMAIN_ID}/${txHash}`); + attestationResponse = await response.json(); + // Wait 2 seconds to avoid getting rate limited + if (attestationResponse.error || !attestationResponse.messages || attestationResponse.messages?.[0]?.attestation === 'PENDING') { + await new Promise(r => setTimeout(r, 2000)) + } + } + + return attestationResponse; +} + +export const decodeEventNonceFromMessage = (messageHex: string): string => { + const nonceIndex = 12; + const nonceBytesLength = 8; + const message = hexToBytes(messageHex); + const eventNonceBytes = message.subarray(nonceIndex, nonceIndex + nonceBytesLength); + const eventNonceHex = hexlify(eventNonceBytes); + return BigInt(eventNonceHex).toString(); +}; diff --git a/migrations/deploy.ts b/migrations/deploy.ts deleted file mode 100644 index 82fb175f..00000000 --- a/migrations/deploy.ts +++ /dev/null @@ -1,12 +0,0 @@ -// Migrations are an early feature. Currently, they're nothing more than this -// single deploy script that's invoked from the CLI, injecting a provider -// configured from the workspace's Anchor.toml. - -const anchor = require("@coral-xyz/anchor"); - -module.exports = async function (provider) { - // Configure client to use the provider. - anchor.setProvider(provider); - - // Add your deploy script here. -}; diff --git a/package-lock.json b/package-lock.json index 8b8bd668..2bcebd09 100644 --- a/package-lock.json +++ b/package-lock.json @@ -997,9 +997,9 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" @@ -3067,9 +3067,9 @@ "dev": true }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "glob": { diff --git a/programs/message-transmitter/src/error.rs b/programs/message-transmitter/src/error.rs index 01ad431f..06d4eefe 100644 --- a/programs/message-transmitter/src/error.rs +++ b/programs/message-transmitter/src/error.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + //! Error types use anchor_lang::prelude::*; diff --git a/programs/message-transmitter/src/events.rs b/programs/message-transmitter/src/events.rs index 3d995914..942a8341 100644 --- a/programs/message-transmitter/src/events.rs +++ b/programs/message-transmitter/src/events.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + //! Events use { diff --git a/programs/message-transmitter/src/instructions.rs b/programs/message-transmitter/src/instructions.rs index bb72a1ca..d227cd2a 100644 --- a/programs/message-transmitter/src/instructions.rs +++ b/programs/message-transmitter/src/instructions.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + //! Instructions pub mod accept_ownership; diff --git a/programs/message-transmitter/src/instructions/accept_ownership.rs b/programs/message-transmitter/src/instructions/accept_ownership.rs index 2360e6ea..2591461c 100644 --- a/programs/message-transmitter/src/instructions/accept_ownership.rs +++ b/programs/message-transmitter/src/instructions/accept_ownership.rs @@ -1,4 +1,22 @@ -//! AcceptOwnership instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! AcceptOwnership instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/disable_attester.rs b/programs/message-transmitter/src/instructions/disable_attester.rs index 6b046d75..221f319c 100644 --- a/programs/message-transmitter/src/instructions/disable_attester.rs +++ b/programs/message-transmitter/src/instructions/disable_attester.rs @@ -1,4 +1,22 @@ -//! DisableAttester instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! DisableAttester instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/enable_attester.rs b/programs/message-transmitter/src/instructions/enable_attester.rs index b5edccb7..06e6892d 100644 --- a/programs/message-transmitter/src/instructions/enable_attester.rs +++ b/programs/message-transmitter/src/instructions/enable_attester.rs @@ -1,4 +1,22 @@ -//! EnableAttester instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! EnableAttester instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/get_nonce_pda.rs b/programs/message-transmitter/src/instructions/get_nonce_pda.rs index 1ca91f3a..295ea7df 100644 --- a/programs/message-transmitter/src/instructions/get_nonce_pda.rs +++ b/programs/message-transmitter/src/instructions/get_nonce_pda.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + //! GetNoncePDA instruction handler use { diff --git a/programs/message-transmitter/src/instructions/initialize.rs b/programs/message-transmitter/src/instructions/initialize.rs index 20a60010..540ec57a 100644 --- a/programs/message-transmitter/src/instructions/initialize.rs +++ b/programs/message-transmitter/src/instructions/initialize.rs @@ -1,4 +1,22 @@ -//! Initialize instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Initialize instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/is_nonce_used.rs b/programs/message-transmitter/src/instructions/is_nonce_used.rs index 81271e3f..bf47dc1f 100644 --- a/programs/message-transmitter/src/instructions/is_nonce_used.rs +++ b/programs/message-transmitter/src/instructions/is_nonce_used.rs @@ -1,4 +1,22 @@ -//! IsNonceUsed instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! IsNonceUsed instruction handler use {crate::state::UsedNonces, anchor_lang::prelude::*}; diff --git a/programs/message-transmitter/src/instructions/pause.rs b/programs/message-transmitter/src/instructions/pause.rs index fb8062f6..5ac456ef 100644 --- a/programs/message-transmitter/src/instructions/pause.rs +++ b/programs/message-transmitter/src/instructions/pause.rs @@ -1,4 +1,22 @@ -//! Pause instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Pause instruction handler use { crate::{error::MessageTransmitterError, events::Pause, state::MessageTransmitter}, diff --git a/programs/message-transmitter/src/instructions/receive_message.rs b/programs/message-transmitter/src/instructions/receive_message.rs index 5b8562b2..3bdaf17b 100644 --- a/programs/message-transmitter/src/instructions/receive_message.rs +++ b/programs/message-transmitter/src/instructions/receive_message.rs @@ -1,4 +1,22 @@ -//! ReceiveMessage instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! ReceiveMessage instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/reclaim_event_account.rs b/programs/message-transmitter/src/instructions/reclaim_event_account.rs index 5ddc1f62..57a6d232 100644 --- a/programs/message-transmitter/src/instructions/reclaim_event_account.rs +++ b/programs/message-transmitter/src/instructions/reclaim_event_account.rs @@ -1,4 +1,22 @@ -//! ReclaimEventAccount instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! ReclaimEventAccount instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/replace_message.rs b/programs/message-transmitter/src/instructions/replace_message.rs index 5d689680..f0db5150 100644 --- a/programs/message-transmitter/src/instructions/replace_message.rs +++ b/programs/message-transmitter/src/instructions/replace_message.rs @@ -1,4 +1,22 @@ -//! ReplaceMessage instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! ReplaceMessage instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/send_message.rs b/programs/message-transmitter/src/instructions/send_message.rs index 18f0066b..9cdcc3ad 100644 --- a/programs/message-transmitter/src/instructions/send_message.rs +++ b/programs/message-transmitter/src/instructions/send_message.rs @@ -1,4 +1,22 @@ -//! SendMessage instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! SendMessage instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/send_message_with_caller.rs b/programs/message-transmitter/src/instructions/send_message_with_caller.rs index b8f1280e..b27be90d 100644 --- a/programs/message-transmitter/src/instructions/send_message_with_caller.rs +++ b/programs/message-transmitter/src/instructions/send_message_with_caller.rs @@ -1,4 +1,22 @@ -//! SendMessageWithCaller instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! SendMessageWithCaller instruction handler use { crate::{error::MessageTransmitterError, instructions::SendMessageContext}, diff --git a/programs/message-transmitter/src/instructions/set_max_message_body_size.rs b/programs/message-transmitter/src/instructions/set_max_message_body_size.rs index 43b3680b..d8b6678d 100644 --- a/programs/message-transmitter/src/instructions/set_max_message_body_size.rs +++ b/programs/message-transmitter/src/instructions/set_max_message_body_size.rs @@ -1,4 +1,22 @@ -//! SetMaxMessageBodySize instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! SetMaxMessageBodySize instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/set_signature_threshold.rs b/programs/message-transmitter/src/instructions/set_signature_threshold.rs index de775889..670dc2bc 100644 --- a/programs/message-transmitter/src/instructions/set_signature_threshold.rs +++ b/programs/message-transmitter/src/instructions/set_signature_threshold.rs @@ -1,4 +1,22 @@ -//! SetSignatureThreshold instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! SetSignatureThreshold instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/transfer_ownership.rs b/programs/message-transmitter/src/instructions/transfer_ownership.rs index 22b93b64..7af1e7f2 100644 --- a/programs/message-transmitter/src/instructions/transfer_ownership.rs +++ b/programs/message-transmitter/src/instructions/transfer_ownership.rs @@ -1,4 +1,22 @@ -//! TransferOwnership instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! TransferOwnership instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/unpause.rs b/programs/message-transmitter/src/instructions/unpause.rs index 2f3e3f00..97e0a179 100644 --- a/programs/message-transmitter/src/instructions/unpause.rs +++ b/programs/message-transmitter/src/instructions/unpause.rs @@ -1,4 +1,22 @@ -//! Unpause instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Unpause instruction handler use { crate::{error::MessageTransmitterError, events::Unpause, state::MessageTransmitter}, diff --git a/programs/message-transmitter/src/instructions/update_attester_manager.rs b/programs/message-transmitter/src/instructions/update_attester_manager.rs index 04dc2b3d..52c06678 100644 --- a/programs/message-transmitter/src/instructions/update_attester_manager.rs +++ b/programs/message-transmitter/src/instructions/update_attester_manager.rs @@ -1,4 +1,22 @@ -//! UpdateAttesterManager instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! UpdateAttesterManager instruction handler use { crate::{ diff --git a/programs/message-transmitter/src/instructions/update_pauser.rs b/programs/message-transmitter/src/instructions/update_pauser.rs index 13b29fd8..317dd9ad 100644 --- a/programs/message-transmitter/src/instructions/update_pauser.rs +++ b/programs/message-transmitter/src/instructions/update_pauser.rs @@ -1,4 +1,22 @@ -//! UpdatePauser instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! UpdatePauser instruction handler use { crate::{error::MessageTransmitterError, events::PauserChanged, state::MessageTransmitter}, diff --git a/programs/message-transmitter/src/lib.rs b/programs/message-transmitter/src/lib.rs index 393b03af..e057712c 100644 --- a/programs/message-transmitter/src/lib.rs +++ b/programs/message-transmitter/src/lib.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + //! MessageTransmitter program entrypoint #![allow(clippy::result_large_err)] @@ -15,10 +33,8 @@ use {anchor_lang::prelude::*, instructions::*}; solana_security_txt::security_txt! { name: "Message Transmitter for CCTP", project_url: "https://github.com/circlefin/solana-cctp-contracts", - contacts: "security@circle.com", - policy: "", - preferred_languages: "en", - auditors: "Halborn" + contacts: "link:https://hackerone.com/circle", + policy: "https://github.com/circlefin/solana-cctp-contracts/blob/master/SECURITY.md" } declare_id!("CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd"); diff --git a/programs/message-transmitter/src/message.rs b/programs/message-transmitter/src/message.rs index f7da8378..2da7dd94 100644 --- a/programs/message-transmitter/src/message.rs +++ b/programs/message-transmitter/src/message.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + //! Message use { diff --git a/programs/message-transmitter/src/state.rs b/programs/message-transmitter/src/state.rs index c3853261..0d97a8dc 100644 --- a/programs/message-transmitter/src/state.rs +++ b/programs/message-transmitter/src/state.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + //! State use { diff --git a/programs/message-transmitter/src/utils.rs b/programs/message-transmitter/src/utils.rs index f9971c7c..066f1d6a 100644 --- a/programs/message-transmitter/src/utils.rs +++ b/programs/message-transmitter/src/utils.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + //! Common utility functions. use {crate::error::MathError, anchor_lang::prelude::*, std::fmt::Display}; diff --git a/programs/token-messenger-minter/src/lib.rs b/programs/token-messenger-minter/src/lib.rs index 54dda1a6..44dbf334 100644 --- a/programs/token-messenger-minter/src/lib.rs +++ b/programs/token-messenger-minter/src/lib.rs @@ -1,4 +1,22 @@ -//! TokenMessenger and TokenMinter program entrypoint +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! TokenMessenger and TokenMinter program entrypoint #![allow(clippy::result_large_err)] @@ -10,10 +28,8 @@ use {anchor_lang::prelude::*, token_messenger::*, token_minter::*}; solana_security_txt::security_txt! { name: "Token Messenger and Minter for CCTP", project_url: "https://github.com/circlefin/solana-cctp-contracts", - contacts: "security@circle.com", - policy: "", - preferred_languages: "en", - auditors: "Halborn" + contacts: "link:https://hackerone.com/circle", + policy: "https://github.com/circlefin/solana-cctp-contracts/blob/master/SECURITY.md" } declare_id!("CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3"); diff --git a/programs/token-messenger-minter/src/token_messenger.rs b/programs/token-messenger-minter/src/token_messenger.rs index b4f7c8d6..f6c52d9e 100644 --- a/programs/token-messenger-minter/src/token_messenger.rs +++ b/programs/token-messenger-minter/src/token_messenger.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + pub mod burn_message; pub mod error; pub mod events; diff --git a/programs/token-messenger-minter/src/token_messenger/burn_message.rs b/programs/token-messenger-minter/src/token_messenger/burn_message.rs index 7a715242..428f477e 100644 --- a/programs/token-messenger-minter/src/token_messenger/burn_message.rs +++ b/programs/token-messenger-minter/src/token_messenger/burn_message.rs @@ -1,4 +1,22 @@ -//! BurnMessage +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! BurnMessage use { crate::token_messenger::error::TokenMessengerError, anchor_lang::prelude::*, diff --git a/programs/token-messenger-minter/src/token_messenger/error.rs b/programs/token-messenger-minter/src/token_messenger/error.rs index 591e5839..a03eff5b 100644 --- a/programs/token-messenger-minter/src/token_messenger/error.rs +++ b/programs/token-messenger-minter/src/token_messenger/error.rs @@ -1,4 +1,22 @@ -//! Error types +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Error types use anchor_lang::prelude::*; diff --git a/programs/token-messenger-minter/src/token_messenger/events.rs b/programs/token-messenger-minter/src/token_messenger/events.rs index c24fa567..4d505f50 100644 --- a/programs/token-messenger-minter/src/token_messenger/events.rs +++ b/programs/token-messenger-minter/src/token_messenger/events.rs @@ -1,4 +1,22 @@ -//! Events +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Events use anchor_lang::prelude::*; diff --git a/programs/token-messenger-minter/src/token_messenger/instructions.rs b/programs/token-messenger-minter/src/token_messenger/instructions.rs index 1ab2a953..11f9ebce 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions.rs @@ -1,4 +1,22 @@ -//! Instructions +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Instructions pub mod accept_ownership; pub mod add_remote_token_messenger; diff --git a/programs/token-messenger-minter/src/token_messenger/instructions/accept_ownership.rs b/programs/token-messenger-minter/src/token_messenger/instructions/accept_ownership.rs index 2b239e8b..ea4a7522 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions/accept_ownership.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions/accept_ownership.rs @@ -1,4 +1,22 @@ -//! AcceptOwnership instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! AcceptOwnership instruction handler use { crate::token_messenger::{ diff --git a/programs/token-messenger-minter/src/token_messenger/instructions/add_remote_token_messenger.rs b/programs/token-messenger-minter/src/token_messenger/instructions/add_remote_token_messenger.rs index 1da30629..b1a1f9e6 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions/add_remote_token_messenger.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions/add_remote_token_messenger.rs @@ -1,4 +1,22 @@ -//! AddRemoteTokenMessenger instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! AddRemoteTokenMessenger instruction handler use { crate::token_messenger::{ diff --git a/programs/token-messenger-minter/src/token_messenger/instructions/deposit_for_burn.rs b/programs/token-messenger-minter/src/token_messenger/instructions/deposit_for_burn.rs index 6cf3da84..6d27ed69 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions/deposit_for_burn.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions/deposit_for_burn.rs @@ -1,4 +1,22 @@ -//! DepositForBurn instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! DepositForBurn instruction handler use { crate::{ diff --git a/programs/token-messenger-minter/src/token_messenger/instructions/deposit_for_burn_with_caller.rs b/programs/token-messenger-minter/src/token_messenger/instructions/deposit_for_burn_with_caller.rs index 681db5ee..8296f414 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions/deposit_for_burn_with_caller.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions/deposit_for_burn_with_caller.rs @@ -1,4 +1,22 @@ -//! DepositForBurnWithCaller instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! DepositForBurnWithCaller instruction handler use { crate::{ diff --git a/programs/token-messenger-minter/src/token_messenger/instructions/handle_receive_message.rs b/programs/token-messenger-minter/src/token_messenger/instructions/handle_receive_message.rs index bd6c6593..892636a9 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions/handle_receive_message.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions/handle_receive_message.rs @@ -1,4 +1,22 @@ -//! HandleReceiveMessage instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! HandleReceiveMessage instruction handler use { crate::{ diff --git a/programs/token-messenger-minter/src/token_messenger/instructions/initialize.rs b/programs/token-messenger-minter/src/token_messenger/instructions/initialize.rs index b3a0d10f..2dc9806c 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions/initialize.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions/initialize.rs @@ -1,4 +1,22 @@ -//! Initialize instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Initialize instruction handler use { crate::{ diff --git a/programs/token-messenger-minter/src/token_messenger/instructions/remove_remote_token_messenger.rs b/programs/token-messenger-minter/src/token_messenger/instructions/remove_remote_token_messenger.rs index 2463e8c6..53556711 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions/remove_remote_token_messenger.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions/remove_remote_token_messenger.rs @@ -1,4 +1,22 @@ -//! RemoveRemoteTokenMessenger instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! RemoveRemoteTokenMessenger instruction handler use { crate::token_messenger::{ diff --git a/programs/token-messenger-minter/src/token_messenger/instructions/replace_deposit_for_burn.rs b/programs/token-messenger-minter/src/token_messenger/instructions/replace_deposit_for_burn.rs index 565bd97f..b3df6c55 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions/replace_deposit_for_burn.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions/replace_deposit_for_burn.rs @@ -1,4 +1,22 @@ -//! ReplaceDepositForBurn instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! ReplaceDepositForBurn instruction handler use { crate::{ diff --git a/programs/token-messenger-minter/src/token_messenger/instructions/transfer_ownership.rs b/programs/token-messenger-minter/src/token_messenger/instructions/transfer_ownership.rs index 6e5577e9..ebb4f8ee 100644 --- a/programs/token-messenger-minter/src/token_messenger/instructions/transfer_ownership.rs +++ b/programs/token-messenger-minter/src/token_messenger/instructions/transfer_ownership.rs @@ -1,4 +1,22 @@ -//! TransferOwnership instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! TransferOwnership instruction handler use { crate::token_messenger::{ diff --git a/programs/token-messenger-minter/src/token_messenger/state.rs b/programs/token-messenger-minter/src/token_messenger/state.rs index d7ef74cf..839be553 100644 --- a/programs/token-messenger-minter/src/token_messenger/state.rs +++ b/programs/token-messenger-minter/src/token_messenger/state.rs @@ -1,4 +1,22 @@ -//! State +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! State use anchor_lang::prelude::*; diff --git a/programs/token-messenger-minter/src/token_minter.rs b/programs/token-messenger-minter/src/token_minter.rs index 7b42ffdf..1ce7e15e 100644 --- a/programs/token-messenger-minter/src/token_minter.rs +++ b/programs/token-messenger-minter/src/token_minter.rs @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + pub mod error; pub mod events; pub mod instructions; diff --git a/programs/token-messenger-minter/src/token_minter/error.rs b/programs/token-messenger-minter/src/token_minter/error.rs index 58621e17..c2c75c9a 100644 --- a/programs/token-messenger-minter/src/token_minter/error.rs +++ b/programs/token-messenger-minter/src/token_minter/error.rs @@ -1,4 +1,22 @@ -//! Error types +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Error types use anchor_lang::prelude::*; diff --git a/programs/token-messenger-minter/src/token_minter/events.rs b/programs/token-messenger-minter/src/token_minter/events.rs index 6438e131..475d5694 100644 --- a/programs/token-messenger-minter/src/token_minter/events.rs +++ b/programs/token-messenger-minter/src/token_minter/events.rs @@ -1,4 +1,22 @@ -//! Events +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Events use anchor_lang::prelude::*; diff --git a/programs/token-messenger-minter/src/token_minter/instructions.rs b/programs/token-messenger-minter/src/token_minter/instructions.rs index dba5f2e5..88973161 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions.rs @@ -1,4 +1,22 @@ -//! Instructions +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Instructions pub mod add_local_token; pub mod burn_token_custody; diff --git a/programs/token-messenger-minter/src/token_minter/instructions/add_local_token.rs b/programs/token-messenger-minter/src/token_minter/instructions/add_local_token.rs index c1fd052c..314ba0b5 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/add_local_token.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/add_local_token.rs @@ -1,4 +1,22 @@ -//! AddLocalToken instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! AddLocalToken instruction handler use { crate::token_minter::{ diff --git a/programs/token-messenger-minter/src/token_minter/instructions/burn_token_custody.rs b/programs/token-messenger-minter/src/token_minter/instructions/burn_token_custody.rs index fcc35f65..b813c3f0 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/burn_token_custody.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/burn_token_custody.rs @@ -1,4 +1,22 @@ -//! BurnTokenCustody instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! BurnTokenCustody instruction handler use { crate::token_minter::{ diff --git a/programs/token-messenger-minter/src/token_minter/instructions/link_token_pair.rs b/programs/token-messenger-minter/src/token_minter/instructions/link_token_pair.rs index ec31f64b..b5122479 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/link_token_pair.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/link_token_pair.rs @@ -1,4 +1,22 @@ -//! LinkTokenPair instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! LinkTokenPair instruction handler use { crate::token_minter::{ diff --git a/programs/token-messenger-minter/src/token_minter/instructions/pause.rs b/programs/token-messenger-minter/src/token_minter/instructions/pause.rs index b857c59b..57076bd5 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/pause.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/pause.rs @@ -1,4 +1,22 @@ -//! Pause instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Pause instruction handler use { crate::token_minter::{error::TokenMinterError, events::Pause, state::TokenMinter}, diff --git a/programs/token-messenger-minter/src/token_minter/instructions/remove_local_token.rs b/programs/token-messenger-minter/src/token_minter/instructions/remove_local_token.rs index 0a9848c4..900d1d00 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/remove_local_token.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/remove_local_token.rs @@ -1,4 +1,22 @@ -//! RemoveLocalToken instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! RemoveLocalToken instruction handler use { crate::token_minter::{ diff --git a/programs/token-messenger-minter/src/token_minter/instructions/set_max_burn_amount_per_message.rs b/programs/token-messenger-minter/src/token_minter/instructions/set_max_burn_amount_per_message.rs index c7e555b3..a1b9c683 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/set_max_burn_amount_per_message.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/set_max_burn_amount_per_message.rs @@ -1,4 +1,22 @@ -//! SetMaxBurnAmountPerMessage instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! SetMaxBurnAmountPerMessage instruction handler use { crate::token_minter::{ diff --git a/programs/token-messenger-minter/src/token_minter/instructions/set_token_controller.rs b/programs/token-messenger-minter/src/token_minter/instructions/set_token_controller.rs index dbfa6ebb..44107dad 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/set_token_controller.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/set_token_controller.rs @@ -1,4 +1,22 @@ -//! SetTokenController instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! SetTokenController instruction handler use { crate::{ diff --git a/programs/token-messenger-minter/src/token_minter/instructions/unlink_token_pair.rs b/programs/token-messenger-minter/src/token_minter/instructions/unlink_token_pair.rs index 69b5dd84..5685bbf6 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/unlink_token_pair.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/unlink_token_pair.rs @@ -1,4 +1,22 @@ -//! UnlinkTokenPair instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! UnlinkTokenPair instruction handler use { crate::token_minter::{ diff --git a/programs/token-messenger-minter/src/token_minter/instructions/unpause.rs b/programs/token-messenger-minter/src/token_minter/instructions/unpause.rs index 0149b49f..48642224 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/unpause.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/unpause.rs @@ -1,4 +1,22 @@ -//! Unpause instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! Unpause instruction handler use { crate::token_minter::{error::TokenMinterError, events::Unpause, state::TokenMinter}, diff --git a/programs/token-messenger-minter/src/token_minter/instructions/update_pauser.rs b/programs/token-messenger-minter/src/token_minter/instructions/update_pauser.rs index e79136d8..2405d3bf 100644 --- a/programs/token-messenger-minter/src/token_minter/instructions/update_pauser.rs +++ b/programs/token-messenger-minter/src/token_minter/instructions/update_pauser.rs @@ -1,4 +1,22 @@ -//! UpdatePauser instruction handler +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! UpdatePauser instruction handler use { crate::{ diff --git a/programs/token-messenger-minter/src/token_minter/state.rs b/programs/token-messenger-minter/src/token_minter/state.rs index e2c14327..4f4d6eb3 100644 --- a/programs/token-messenger-minter/src/token_minter/state.rs +++ b/programs/token-messenger-minter/src/token_minter/state.rs @@ -1,4 +1,22 @@ -//! State +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + //! State use { crate::token_minter::error::TokenMinterError, diff --git a/tests/message-transmitter/test_client.ts b/tests/message-transmitter/test_client.ts index 2b013b95..f4fa231a 100644 --- a/tests/message-transmitter/test_client.ts +++ b/tests/message-transmitter/test_client.ts @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import * as anchor from "@coral-xyz/anchor"; import { MessageTransmitter } from "../../target/types/message_transmitter"; import * as utils from "../utils"; diff --git a/tests/message-transmitter/tests.ts b/tests/message-transmitter/tests.ts index 81219063..85ae1af3 100644 --- a/tests/message-transmitter/tests.ts +++ b/tests/message-transmitter/tests.ts @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { TestClient } from "./test_client"; import { PublicKey } from "@solana/web3.js"; import { expect, assert } from "chai"; diff --git a/tests/token_messenger_minter/test_client.ts b/tests/token_messenger_minter/test_client.ts index f6e5de53..97825467 100644 --- a/tests/token_messenger_minter/test_client.ts +++ b/tests/token_messenger_minter/test_client.ts @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import * as anchor from "@coral-xyz/anchor"; import * as ethutil from "ethereumjs-util"; import * as utils from "../utils"; diff --git a/tests/token_messenger_minter/tests.ts b/tests/token_messenger_minter/tests.ts index f8504a2b..4cfbcaf7 100644 --- a/tests/token_messenger_minter/tests.ts +++ b/tests/token_messenger_minter/tests.ts @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { TestClient } from "./test_client"; import { PublicKey, Keypair } from "@solana/web3.js"; import { expect, assert } from "chai"; diff --git a/tests/utils.ts b/tests/utils.ts index a3422381..e46f54d6 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024, Circle Internet Financial LTD All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import * as anchor from "@coral-xyz/anchor"; import { PublicKey, Connection } from "@solana/web3.js"; diff --git a/tsconfig.json b/tsconfig.json index 558b83e5..5436e66f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,11 @@ { - "compilerOptions": { - "types": ["mocha", "chai"], - "typeRoots": ["./node_modules/@types"], - "lib": ["es2015"], - "module": "commonjs", - "target": "es6", - "esModuleInterop": true - } - } + "compilerOptions": { + "types": ["mocha", "chai"], + "typeRoots": ["./node_modules/@types"], + "lib": ["es2015"], + "module": "commonjs", + "target": "es6", + "esModuleInterop": true + } +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index d195e994..00000000 --- a/yarn.lock +++ /dev/null @@ -1,2701 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 6 - cacheKey: 8 - -"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.17.2": - version: 7.22.5 - resolution: "@babel/runtime@npm:7.22.5" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: 12a50b7de2531beef38840d17af50c55a094253697600cee255311222390c68eed704829308d4fd305e1b3dfbce113272e428e9d9d45b1730e0fede997eaceb1 - languageName: node - linkType: hard - -"@coral-xyz/anchor@npm:^0.28.0": - version: 0.28.0 - resolution: "@coral-xyz/anchor@npm:0.28.0" - dependencies: - "@coral-xyz/borsh": ^0.28.0 - "@solana/web3.js": ^1.68.0 - base64-js: ^1.5.1 - bn.js: ^5.1.2 - bs58: ^4.0.1 - buffer-layout: ^1.2.2 - camelcase: ^6.3.0 - cross-fetch: ^3.1.5 - crypto-hash: ^1.3.0 - eventemitter3: ^4.0.7 - js-sha256: ^0.9.0 - pako: ^2.0.3 - snake-case: ^3.0.4 - superstruct: ^0.15.4 - toml: ^3.0.0 - checksum: 58b3677b5b2ce2c779045184ce4a0ef696966a6a58f41c1c56f6f178db0491acecb6ec677ce0502f0b382a2c724f9c2860d82cc88601784d556d95fbeda415e5 - languageName: node - linkType: hard - -"@coral-xyz/borsh@npm:^0.28.0": - version: 0.28.0 - resolution: "@coral-xyz/borsh@npm:0.28.0" - dependencies: - bn.js: ^5.1.2 - buffer-layout: ^1.2.0 - peerDependencies: - "@solana/web3.js": ^1.68.0 - checksum: bc2b06b777f9ed43d3b886d2350826bd44d5b932c4fd4471af5956e8755236f5854938c890ee4986d88f61d1439e1d84e715c43dcb6dca4e76198c1ce8dc7a58 - languageName: node - linkType: hard - -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: ^5.1.2 - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: ^7.0.1 - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: ^8.1.0 - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb - languageName: node - linkType: hard - -"@noble/curves@npm:^1.0.0": - version: 1.1.0 - resolution: "@noble/curves@npm:1.1.0" - dependencies: - "@noble/hashes": 1.3.1 - checksum: 2658cdd3f84f71079b4e3516c47559d22cf4b55c23ac8ee9d2b1f8e5b72916d9689e59820e0f9d9cb4a46a8423af5b56dc6bb7782405c88be06a015180508db5 - languageName: node - linkType: hard - -"@noble/hashes@npm:1.3.1, @noble/hashes@npm:^1.3.0": - version: 1.3.1 - resolution: "@noble/hashes@npm:1.3.1" - checksum: 7fdefc0f7a0c1ec27acc6ff88841793e3f93ec4ce6b8a6a12bfc0dd70ae6b7c4c82fe305fdfeda1735d5ad4a9eebe761e6693b3d355689c559e91242f4bc95b1 - languageName: node - linkType: hard - -"@npmcli/agent@npm:^2.0.0": - version: 2.2.0 - resolution: "@npmcli/agent@npm:2.2.0" - dependencies: - agent-base: ^7.1.0 - http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.1 - lru-cache: ^10.0.1 - socks-proxy-agent: ^8.0.1 - checksum: 3b25312edbdfaa4089af28e2d423b6f19838b945e47765b0c8174c1395c79d43c3ad6d23cb364b43f59fd3acb02c93e3b493f72ddbe3dfea04c86843a7311fc4 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/fs@npm:3.1.0" - dependencies: - semver: ^7.3.5 - checksum: a50a6818de5fc557d0b0e6f50ec780a7a02ab8ad07e5ac8b16bf519e0ad60a144ac64f97d05c443c3367235d337182e1d012bbac0eb8dbae8dc7b40b193efd0e - languageName: node - linkType: hard - -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f - languageName: node - linkType: hard - -"@solana/buffer-layout-utils@npm:^0.2.0": - version: 0.2.0 - resolution: "@solana/buffer-layout-utils@npm:0.2.0" - dependencies: - "@solana/buffer-layout": ^4.0.0 - "@solana/web3.js": ^1.32.0 - bigint-buffer: ^1.1.5 - bignumber.js: ^9.0.1 - checksum: 9284242245b18b49577195ba7548263850be865a4a2d183944fa01bb76382039db589aab8473698e9bb734b515ada9b4d70db0a72e341c5d567c59b83d6d0840 - languageName: node - linkType: hard - -"@solana/buffer-layout@npm:^4.0.0": - version: 4.0.1 - resolution: "@solana/buffer-layout@npm:4.0.1" - dependencies: - buffer: ~6.0.3 - checksum: bf846888e813187243d4008a7a9f58b49d16cbd995b9d7f1b72898aa510ed77b1ce5e8468e7b2fd26dd81e557a4e74a666e21fccb95f123c1f740d41138bbacd - languageName: node - linkType: hard - -"@solana/spl-token@npm:^0.3.8": - version: 0.3.8 - resolution: "@solana/spl-token@npm:0.3.8" - dependencies: - "@solana/buffer-layout": ^4.0.0 - "@solana/buffer-layout-utils": ^0.2.0 - buffer: ^6.0.3 - peerDependencies: - "@solana/web3.js": ^1.47.4 - checksum: 01f4f87112b0ad277701a3bcb8e03069b69449b92724b17959107686731082bfd3475b5f105e1e8f04badd2e810a43d5ef811744ced5178eea1232de8fd75147 - languageName: node - linkType: hard - -"@solana/web3.js@npm:^1.32.0, @solana/web3.js@npm:^1.68.0": - version: 1.77.3 - resolution: "@solana/web3.js@npm:1.77.3" - 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 - checksum: b73c903d9525393e436720997b78916b7bfcf007d229be14f86a810a99dba5926b97d48d2ec92931b8064aa3069ca1a07cc647ce406c436c28142099e741e731 - languageName: node - linkType: hard - -"@types/bn.js@npm:^5.1.0": - version: 5.1.1 - resolution: "@types/bn.js@npm:5.1.1" - dependencies: - "@types/node": "*" - checksum: e50ed2dd3abe997e047caf90e0352c71e54fc388679735217978b4ceb7e336e51477791b715f49fd77195ac26dd296c7bad08a3be9750e235f9b2e1edb1b51c2 - languageName: node - linkType: hard - -"@types/chai@npm:^4.3.0": - version: 4.3.5 - resolution: "@types/chai@npm:4.3.5" - checksum: c8f26a88c6b5b53a3275c7f5ff8f107028e3cbb9ff26795fff5f3d9dea07106a54ce9e2dce5e40347f7c4cc35657900aaf0c83934a25a1ae12e61e0f5516e431 - languageName: node - linkType: hard - -"@types/connect@npm:^3.4.33": - version: 3.4.35 - resolution: "@types/connect@npm:3.4.35" - dependencies: - "@types/node": "*" - checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 - languageName: node - linkType: hard - -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac - languageName: node - linkType: hard - -"@types/mocha@npm:^9.0.0": - version: 9.1.1 - resolution: "@types/mocha@npm:9.1.1" - checksum: 516077c0acd9806dc78317f88aaac0df5aaf0bdc2f63dfdadeabdf0b0137953b6ca65472e6ff7c30bc93ce4e0ae76eae70e8d46764b9a8eae4877a928b6ef49a - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 20.3.1 - resolution: "@types/node@npm:20.3.1" - checksum: 63a393ab6d947be17320817b35d7277ef03728e231558166ed07ee30b09fd7c08861be4d746f10fdc63ca7912e8cd023939d4eab887ff6580ff704ff24ed810c - languageName: node - linkType: hard - -"@types/node@npm:^12.12.54": - version: 12.20.55 - resolution: "@types/node@npm:12.20.55" - checksum: e4f86785f4092706e0d3b0edff8dca5a13b45627e4b36700acd8dfe6ad53db71928c8dee914d4276c7fd3b6ccd829aa919811c9eb708a2c8e4c6eb3701178c37 - languageName: node - linkType: hard - -"@types/pbkdf2@npm:^3.0.0": - version: 3.1.0 - resolution: "@types/pbkdf2@npm:3.1.0" - dependencies: - "@types/node": "*" - checksum: d15024b1957c21cf3b8887329d9bd8dfde754cf13a09d76ae25f1391cfc62bb8b8d7b760773c5dbaa748172fba8b3e0c3dbe962af6ccbd69b76df12a48dfba40 - languageName: node - linkType: hard - -"@types/secp256k1@npm:^4.0.1": - version: 4.0.4 - resolution: "@types/secp256k1@npm:4.0.4" - dependencies: - "@types/node": "*" - checksum: 6f521a08486a98e71c8529f5c3119f99e610196a47243cc6052c6160b216dff2c85dc50a8f3208ed47028dbb470bbb6fdee47a3fdc064687e46021d5a712767c - languageName: node - linkType: hard - -"@types/ws@npm:^7.4.4": - version: 7.4.7 - resolution: "@types/ws@npm:7.4.7" - dependencies: - "@types/node": "*" - checksum: b4c9b8ad209620c9b21e78314ce4ff07515c0cadab9af101c1651e7bfb992d7fd933bd8b9c99d110738fd6db523ed15f82f29f50b45510288da72e964dedb1a3 - languageName: node - linkType: hard - -"@ungap/promise-all-settled@npm:1.1.2": - version: 1.1.2 - resolution: "@ungap/promise-all-settled@npm:1.1.2" - checksum: 08d37fdfa23a6fe8139f1305313562ebad973f3fac01bcce2773b2bda5bcb0146dfdcf3cb6a722cf0a5f2ca0bc56a827eac8f1e7b3beddc548f654addf1fc34c - languageName: node - linkType: hard - -"JSONStream@npm:^1.3.5": - version: 1.3.5 - resolution: "JSONStream@npm:1.3.5" - dependencies: - jsonparse: ^1.2.0 - through: ">=2.2.7 <3" - bin: - JSONStream: ./bin.js - checksum: 2605fa124260c61bad38bb65eba30d2f72216a78e94d0ab19b11b4e0327d572b8d530c0c9cc3b0764f727ad26d39e00bf7ebad57781ca6368394d73169c59e46 - languageName: node - linkType: hard - -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 - languageName: node - linkType: hard - -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": - version: 7.1.0 - resolution: "agent-base@npm:7.1.0" - dependencies: - debug: ^4.3.4 - checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.2.1": - version: 4.3.0 - resolution: "agentkeepalive@npm:4.3.0" - dependencies: - debug: ^4.1.0 - depd: ^2.0.0 - humanize-ms: ^1.2.1 - checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ansi-colors@npm:4.1.1": - version: 4.1.1 - resolution: "ansi-colors@npm:4.1.1" - checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced - languageName: node - linkType: hard - -"arrify@npm:^1.0.0": - version: 1.0.1 - resolution: "arrify@npm:1.0.1" - checksum: 745075dd4a4624ff0225c331dacb99be501a515d39bcb7c84d24660314a6ec28e68131b137e6f7e16318170842ce97538cd298fc4cd6b2cc798e0b957f2747e7 - languageName: node - linkType: hard - -"assertion-error@npm:^1.1.0": - version: 1.1.0 - resolution: "assertion-error@npm:1.1.0" - checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"base-x@npm:^3.0.2": - version: 3.0.9 - resolution: "base-x@npm:3.0.9" - dependencies: - safe-buffer: ^5.0.1 - checksum: 957101d6fd09e1903e846fd8f69fd7e5e3e50254383e61ab667c725866bec54e5ece5ba49ce385128ae48f9ec93a26567d1d5ebb91f4d56ef4a9cc0d5a5481e8 - languageName: node - linkType: hard - -"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 - languageName: node - linkType: hard - -"bigint-buffer@npm:^1.1.5": - version: 1.1.5 - resolution: "bigint-buffer@npm:1.1.5" - dependencies: - bindings: ^1.3.0 - node-gyp: latest - checksum: d010c9f57758bcdaccb435d88b483ffcc95fe8bbc6e7fb3a44fb5221f29c894ffaf4a3c5a4a530e0e7d6608203c2cde9b79ee4f2386cd6d4462d1070bc8c9f4e - languageName: node - linkType: hard - -"bignumber.js@npm:^9.0.1": - version: 9.1.1 - resolution: "bignumber.js@npm:9.1.1" - checksum: ad243b7e2f9120b112d670bb3d674128f0bd2ca1745b0a6c9df0433bd2c0252c43e6315d944c2ac07b4c639e7496b425e46842773cf89c6a2dcd4f31e5c4b11e - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 - languageName: node - linkType: hard - -"bindings@npm:^1.3.0": - version: 1.5.0 - resolution: "bindings@npm:1.5.0" - dependencies: - file-uri-to-path: 1.0.0 - checksum: 65b6b48095717c2e6105a021a7da4ea435aa8d3d3cd085cb9e85bcb6e5773cf318c4745c3f7c504412855940b585bdf9b918236612a1c7a7942491de176f1ae7 - languageName: node - linkType: hard - -"blakejs@npm:^1.1.0": - version: 1.2.1 - resolution: "blakejs@npm:1.2.1" - checksum: d699ba116cfa21d0b01d12014a03e484dd76d483133e6dc9eb415aa70a119f08beb3bcefb8c71840106a00b542cba77383f8be60cd1f0d4589cb8afb922eefbe - languageName: node - linkType: hard - -"bn.js@npm:^4.11.9": - version: 4.12.0 - resolution: "bn.js@npm:4.12.0" - checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a12 - languageName: node - linkType: hard - -"bn.js@npm:^5.0.0, bn.js@npm:^5.1.2, bn.js@npm:^5.2.0": - version: 5.2.1 - resolution: "bn.js@npm:5.2.1" - checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3 - languageName: node - linkType: hard - -"borsh@npm:^0.7.0": - version: 0.7.0 - resolution: "borsh@npm:0.7.0" - dependencies: - bn.js: ^5.2.0 - bs58: ^4.0.0 - text-encoding-utf-8: ^1.0.2 - checksum: e98bfb5f7cfb820819c2870b884dac58dd4b4ce6a86c286c8fbf5c9ca582e73a8c6094df67e81a28c418ff07a309c6b118b2e27fdfea83fd92b8100c741da0b5 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 - languageName: node - linkType: hard - -"braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"brorand@npm:^1.1.0": - version: 1.1.0 - resolution: "brorand@npm:1.1.0" - checksum: 8a05c9f3c4b46572dec6ef71012b1946db6cae8c7bb60ccd4b7dd5a84655db49fe043ecc6272e7ef1f69dc53d6730b9e2a3a03a8310509a3d797a618cbee52be - languageName: node - linkType: hard - -"browser-stdout@npm:1.3.1": - version: 1.3.1 - resolution: "browser-stdout@npm:1.3.1" - checksum: b717b19b25952dd6af483e368f9bcd6b14b87740c3d226c2977a65e84666ffd67000bddea7d911f111a9b6ddc822b234de42d52ab6507bce4119a4cc003ef7b3 - languageName: node - linkType: hard - -"browserify-aes@npm:^1.2.0": - version: 1.2.0 - resolution: "browserify-aes@npm:1.2.0" - dependencies: - buffer-xor: ^1.0.3 - cipher-base: ^1.0.0 - create-hash: ^1.1.0 - evp_bytestokey: ^1.0.3 - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 4a17c3eb55a2aa61c934c286f34921933086bf6d67f02d4adb09fcc6f2fc93977b47d9d884c25619144fccd47b3b3a399e1ad8b3ff5a346be47270114bcf7104 - languageName: node - linkType: hard - -"bs58@npm:^4.0.0, bs58@npm:^4.0.1": - version: 4.0.1 - resolution: "bs58@npm:4.0.1" - dependencies: - base-x: ^3.0.2 - checksum: b3c5365bb9e0c561e1a82f1a2d809a1a692059fae016be233a6127ad2f50a6b986467c3a50669ce4c18929dcccb297c5909314dd347a25a68c21b68eb3e95ac2 - languageName: node - linkType: hard - -"bs58check@npm:^2.1.2": - version: 2.1.2 - resolution: "bs58check@npm:2.1.2" - dependencies: - bs58: ^4.0.0 - create-hash: ^1.1.0 - safe-buffer: ^5.1.2 - checksum: 43bdf08a5dd04581b78f040bc4169480e17008da482ffe2a6507327bbc4fc5c28de0501f7faf22901cfe57fbca79cbb202ca529003fedb4cb8dccd265b38e54d - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0, buffer-from@npm:^1.1.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb - languageName: node - linkType: hard - -"buffer-layout@npm:^1.2.0, buffer-layout@npm:^1.2.2": - version: 1.2.2 - resolution: "buffer-layout@npm:1.2.2" - checksum: e5809ba275530bf4e52fd09558b7c2111fbda5b405124f581acf364261d9c154e271800271898cd40473f9bcbb42c31584efb04219bde549d3460ca4bafeaa07 - languageName: node - linkType: hard - -"buffer-xor@npm:^1.0.3": - version: 1.0.3 - resolution: "buffer-xor@npm:1.0.3" - checksum: 10c520df29d62fa6e785e2800e586a20fc4f6dfad84bcdbd12e1e8a83856de1cb75c7ebd7abe6d036bbfab738a6cf18a3ae9c8e5a2e2eb3167ca7399ce65373a - languageName: node - linkType: hard - -"buffer@npm:6.0.3, buffer@npm:^6.0.3, buffer@npm:~6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" - dependencies: - base64-js: ^1.3.1 - ieee754: ^1.2.1 - checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 - languageName: node - linkType: hard - -"bufferutil@npm:^4.0.1": - version: 4.0.7 - resolution: "bufferutil@npm:4.0.7" - dependencies: - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: f75aa87e3d1b99b87a95f60a855e63f70af07b57fb8443e75a2ddfef2e47788d130fdd46e3a78fd7e0c10176082b26dfbed970c5b8632e1cc299cafa0e93ce45 - languageName: node - linkType: hard - -"cacache@npm:^18.0.0": - version: 18.0.0 - resolution: "cacache@npm:18.0.0" - dependencies: - "@npmcli/fs": ^3.1.0 - fs-minipass: ^3.0.0 - glob: ^10.2.2 - lru-cache: ^10.0.1 - minipass: ^7.0.3 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - p-map: ^4.0.0 - ssri: ^10.0.0 - tar: ^6.1.11 - unique-filename: ^3.0.0 - checksum: 2cd6bf15551abd4165acb3a4d1ef0593b3aa2fd6853ae16b5bb62199c2faecf27d36555a9545c0e07dd03347ec052e782923bdcece724a24611986aafb53e152 - languageName: node - linkType: hard - -"camelcase@npm:^6.0.0, camelcase@npm:^6.3.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - -"chai@npm:^4.3.4": - version: 4.3.7 - resolution: "chai@npm:4.3.7" - dependencies: - assertion-error: ^1.1.0 - check-error: ^1.0.2 - deep-eql: ^4.1.2 - get-func-name: ^2.0.0 - loupe: ^2.3.1 - pathval: ^1.1.1 - type-detect: ^4.0.5 - checksum: 0bba7d267848015246a66995f044ce3f0ebc35e530da3cbdf171db744e14cbe301ab913a8d07caf7952b430257ccbb1a4a983c570a7c5748dc537897e5131f7c - languageName: node - linkType: hard - -"chalk@npm:^4.1.0": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - -"check-error@npm:^1.0.2": - version: 1.0.2 - resolution: "check-error@npm:1.0.2" - checksum: d9d106504404b8addd1ee3f63f8c0eaa7cd962a1a28eb9c519b1c4a1dc7098be38007fc0060f045ee00f075fbb7a2a4f42abcf61d68323677e11ab98dc16042e - languageName: node - linkType: hard - -"chokidar@npm:3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.2 - glob-parent: ~5.1.2 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.6.0 - dependenciesMeta: - fsevents: - optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.4 - resolution: "cipher-base@npm:1.0.4" - dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 47d3568dbc17431a339bad1fe7dff83ac0891be8206911ace3d3b818fc695f376df809bea406e759cdea07fff4b454fa25f1013e648851bec790c1d75763032e - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^7.0.0 - checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"commander@npm:^2.20.3": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: ^1.0.1 - inherits: ^2.0.1 - md5.js: ^1.3.4 - ripemd160: ^2.0.1 - sha.js: ^2.4.0 - checksum: 02a6ae3bb9cd4afee3fabd846c1d8426a0e6b495560a977ba46120c473cb283be6aa1cace76b5f927cf4e499c6146fb798253e48e83d522feba807d6b722eaa9 - languageName: node - linkType: hard - -"create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": - version: 1.1.7 - resolution: "create-hmac@npm:1.1.7" - dependencies: - cipher-base: ^1.0.3 - create-hash: ^1.1.0 - inherits: ^2.0.1 - ripemd160: ^2.0.0 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: ba12bb2257b585a0396108c72830e85f882ab659c3320c83584b1037f8ab72415095167ced80dc4ce8e446a8ecc4b2acf36d87befe0707d73b26cf9dc77440ed - languageName: node - linkType: hard - -"cross-fetch@npm:^3.1.5": - version: 3.1.6 - resolution: "cross-fetch@npm:3.1.6" - dependencies: - node-fetch: ^2.6.11 - checksum: 704b3519ab7de488328cc49a52cf1aa14132ec748382be5b9557b22398c33ffa7f8c2530e8a97ed8cb55da52b0a9740a9791d361271c4591910501682d981d9c - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.0": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 - languageName: node - linkType: hard - -"crypto-hash@npm:^1.3.0": - version: 1.3.0 - resolution: "crypto-hash@npm:1.3.0" - checksum: a3a507e0d2b18fbd2da8088a1c62d0c53c009a99bbfa6d851cac069734ffa546922fa51bdd776d006459701cdda873463e5059ece3431aca048fd99e7573d138 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 - languageName: node - linkType: hard - -"debug@npm:4.3.3": - version: 4.3.3 - resolution: "debug@npm:4.3.3" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 14472d56fe4a94dbcfaa6dbed2dd3849f1d72ba78104a1a328047bb564643ca49df0224c3a17fa63533fd11dd3d4c8636cd861191232a2c6735af00cc2d4de16 - languageName: node - linkType: hard - -"decamelize@npm:^4.0.0": - version: 4.0.0 - resolution: "decamelize@npm:4.0.0" - checksum: b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 - languageName: node - linkType: hard - -"deep-eql@npm:^4.1.2": - version: 4.1.3 - resolution: "deep-eql@npm:4.1.3" - dependencies: - type-detect: ^4.0.0 - checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f - languageName: node - linkType: hard - -"delay@npm:^5.0.0": - version: 5.0.0 - resolution: "delay@npm:5.0.0" - checksum: 62f151151ecfde0d9afbb8a6be37a6d103c4cb24f35a20ef3fe56f920b0d0d0bb02bc9c0a3084d0179ef669ca332b91155f2ee4d9854622cd2cdba5fc95285f9 - languageName: node - linkType: hard - -"depd@npm:^2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - -"diff@npm:5.0.0": - version: 5.0.0 - resolution: "diff@npm:5.0.0" - checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 - languageName: node - linkType: hard - -"diff@npm:^3.1.0": - version: 3.5.0 - resolution: "diff@npm:3.5.0" - checksum: 00842950a6551e26ce495bdbce11047e31667deea546527902661f25cc2e73358967ebc78cf86b1a9736ec3e14286433225f9970678155753a6291c3bca5227b - languageName: node - linkType: hard - -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed - languageName: node - linkType: hard - -"elliptic@npm:^6.5.4": - version: 6.5.4 - resolution: "elliptic@npm:6.5.4" - dependencies: - bn.js: ^4.11.9 - brorand: ^1.1.0 - hash.js: ^1.0.0 - hmac-drbg: ^1.0.1 - inherits: ^2.0.4 - minimalistic-assert: ^1.0.1 - minimalistic-crypto-utils: ^1.0.1 - checksum: d56d21fd04e97869f7ffcc92e18903b9f67f2d4637a23c860492fbbff5a3155fd9ca0184ce0c865dd6eb2487d234ce9551335c021c376cd2d3b7cb749c7d10f4 - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 - languageName: node - linkType: hard - -"es6-promise@npm:^4.0.3": - version: 4.2.8 - resolution: "es6-promise@npm:4.2.8" - checksum: 95614a88873611cb9165a85d36afa7268af5c03a378b35ca7bda9508e1d4f1f6f19a788d4bc755b3fd37c8ebba40782018e02034564ff24c9d6fa37e959ad57d - languageName: node - linkType: hard - -"es6-promisify@npm:^5.0.0": - version: 5.0.0 - resolution: "es6-promisify@npm:5.0.0" - dependencies: - es6-promise: ^4.0.3 - checksum: fbed9d791598831413be84a5374eca8c24800ec71a16c1c528c43a98e2dadfb99331483d83ae6094ddb9b87e6f799a15d1553cebf756047e0865c753bc346b92 - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 - languageName: node - linkType: hard - -"escape-string-regexp@npm:4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 - languageName: node - linkType: hard - -"ethereum-cryptography@npm:^0.1.3": - version: 0.1.3 - resolution: "ethereum-cryptography@npm:0.1.3" - dependencies: - "@types/pbkdf2": ^3.0.0 - "@types/secp256k1": ^4.0.1 - blakejs: ^1.1.0 - browserify-aes: ^1.2.0 - bs58check: ^2.1.2 - create-hash: ^1.2.0 - create-hmac: ^1.1.7 - hash.js: ^1.1.7 - keccak: ^3.0.0 - pbkdf2: ^3.0.17 - randombytes: ^2.1.0 - safe-buffer: ^5.1.2 - scrypt-js: ^3.0.0 - secp256k1: ^4.0.1 - setimmediate: ^1.0.5 - checksum: 54bae7a4a96bd81398cdc35c91cfcc74339f71a95ed1b5b694663782e69e8e3afd21357de3b8bac9ff4877fd6f043601e200a7ad9133d94be6fd7d898ee0a449 - languageName: node - linkType: hard - -"ethereumjs-util@npm:^7.1.5": - version: 7.1.5 - resolution: "ethereumjs-util@npm:7.1.5" - dependencies: - "@types/bn.js": ^5.1.0 - bn.js: ^5.1.2 - create-hash: ^1.1.2 - ethereum-cryptography: ^0.1.3 - rlp: ^2.2.4 - checksum: 27a3c79d6e06b2df34b80d478ce465b371c8458b58f5afc14d91c8564c13363ad336e6e83f57eb0bd719fde94d10ee5697ceef78b5aa932087150c5287b286d1 - languageName: node - linkType: hard - -"eventemitter3@npm:^4.0.7": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 - languageName: node - linkType: hard - -"evp_bytestokey@npm:^1.0.3": - version: 1.0.3 - resolution: "evp_bytestokey@npm:1.0.3" - dependencies: - md5.js: ^1.3.4 - node-gyp: latest - safe-buffer: ^5.1.1 - checksum: ad4e1577f1a6b721c7800dcc7c733fe01f6c310732bb5bf2240245c2a5b45a38518b91d8be2c610611623160b9d1c0e91f1ce96d639f8b53e8894625cf20fa45 - languageName: node - linkType: hard - -"exponential-backoff@npm:^3.1.1": - version: 3.1.1 - resolution: "exponential-backoff@npm:3.1.1" - checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 - languageName: node - linkType: hard - -"eyes@npm:^0.1.8": - version: 0.1.8 - resolution: "eyes@npm:0.1.8" - checksum: c31703a92bf36ba75ee8d379ee7985c24ee6149f3a6175f44cec7a05b178c38bce9836d3ca48c9acb0329a960ac2c4b2ead4e60cdd4fe6e8c92cad7cd6913687 - languageName: node - linkType: hard - -"fast-stable-stringify@npm:^1.0.0": - version: 1.0.0 - resolution: "fast-stable-stringify@npm:1.0.0" - checksum: ef1203d246a7e8ac15e2bfbda0a89fa375947bccf9f7910be0ea759856dbe8ea5024a0d8cc2cceabe18a9cb67e95927b78bb6173a3ae37ec55a518cf36e5244b - languageName: node - linkType: hard - -"file-uri-to-path@npm:1.0.0": - version: 1.0.0 - resolution: "file-uri-to-path@npm:1.0.0" - checksum: b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"find-up@npm:5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d - languageName: node - linkType: hard - -"foreground-child@npm:^3.1.0": - version: 3.1.1 - resolution: "foreground-child@npm:3.1.1" - dependencies: - cross-spawn: ^7.0.0 - signal-exit: ^4.0.1 - checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" - dependencies: - minipass: ^7.0.3 - checksum: 8722a41109130851d979222d3ec88aabaceeaaf8f57b2a8f744ef8bd2d1ce95453b04a61daa0078822bc5cd21e008814f06fe6586f56fef511e71b8d2394d802 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:~2.3.2": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" - dependencies: - node-gyp: latest - checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d024317 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@~2.3.2#~builtin": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 - languageName: node - linkType: hard - -"get-func-name@npm:^2.0.0": - version: 2.0.0 - resolution: "get-func-name@npm:2.0.0" - checksum: 8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3 - languageName: node - linkType: hard - -"glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e - languageName: node - linkType: hard - -"glob@npm:7.2.0": - version: 7.2.0 - resolution: "glob@npm:7.2.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 - languageName: node - linkType: hard - -"glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.3.10 - resolution: "glob@npm:10.3.10" - dependencies: - foreground-child: ^3.1.0 - jackspeak: ^2.3.5 - minimatch: ^9.0.1 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - path-scurry: ^1.10.1 - bin: - glob: dist/esm/bin.mjs - checksum: 4f2fe2511e157b5a3f525a54092169a5f92405f24d2aed3142f4411df328baca13059f4182f1db1bf933e2c69c0bd89e57ae87edd8950cba8c7ccbe84f721cf3 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 - languageName: node - linkType: hard - -"growl@npm:1.10.5": - version: 1.10.5 - resolution: "growl@npm:1.10.5" - checksum: 4b86685de6831cebcbb19f93870bea624afee61124b0a20c49017013987cd129e73a8c4baeca295728f41d21265e1f859d25ef36731b142ca59c655fea94bb1a - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" - dependencies: - inherits: ^2.0.4 - readable-stream: ^3.6.0 - safe-buffer: ^5.2.0 - checksum: 26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc - languageName: node - linkType: hard - -"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3, hash.js@npm:^1.1.7": - version: 1.1.7 - resolution: "hash.js@npm:1.1.7" - dependencies: - inherits: ^2.0.3 - minimalistic-assert: ^1.0.1 - checksum: e350096e659c62422b85fa508e4b3669017311aa4c49b74f19f8e1bc7f3a54a584fdfd45326d4964d6011f2b2d882e38bea775a96046f2a61b7779a979629d8f - languageName: node - linkType: hard - -"he@npm:1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 - languageName: node - linkType: hard - -"hmac-drbg@npm:^1.0.1": - version: 1.0.1 - resolution: "hmac-drbg@npm:1.0.1" - dependencies: - hash.js: ^1.0.3 - minimalistic-assert: ^1.0.0 - minimalistic-crypto-utils: ^1.0.1 - checksum: bd30b6a68d7f22d63f10e1888aee497d7c2c5c0bb469e66bbdac99f143904d1dfe95f8131f95b3e86c86dd239963c9d972fcbe147e7cffa00e55d18585c43fe0 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "http-proxy-agent@npm:7.0.0" - dependencies: - agent-base: ^7.1.0 - debug: ^4.3.4 - checksum: 48d4fac997917e15f45094852b63b62a46d0c8a4f0b9c6c23ca26d27b8df8d178bed88389e604745e748bd9a01f5023e25093722777f0593c3f052009ff438b6 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.1": - version: 7.0.2 - resolution: "https-proxy-agent@npm:7.0.2" - dependencies: - agent-base: ^7.0.2 - debug: 4 - checksum: 088969a0dd476ea7a0ed0a2cf1283013682b08f874c3bc6696c83fa061d2c157d29ef0ad3eb70a2046010bb7665573b2388d10fdcb3e410a66995e5248444292 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - -"ieee754@npm:^1.2.1": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-plain-obj@npm:^2.1.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa - languageName: node - linkType: hard - -"is-unicode-supported@npm:^0.1.0": - version: 0.1.0 - resolution: "is-unicode-supported@npm:0.1.0" - checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e - languageName: node - linkType: hard - -"isomorphic-ws@npm:^4.0.1": - version: 4.0.1 - resolution: "isomorphic-ws@npm:4.0.1" - peerDependencies: - ws: "*" - checksum: d7190eadefdc28bdb93d67b5f0c603385aaf87724fa2974abb382ac1ec9756ed2cfb27065cbe76122879c2d452e2982bc4314317f3d6c737ddda6c047328771a - languageName: node - linkType: hard - -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" - dependencies: - "@isaacs/cliui": ^8.0.2 - "@pkgjs/parseargs": ^0.11.0 - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 - languageName: node - linkType: hard - -"jayson@npm:^4.1.0": - version: 4.1.0 - resolution: "jayson@npm:4.1.0" - dependencies: - "@types/connect": ^3.4.33 - "@types/node": ^12.12.54 - "@types/ws": ^7.4.4 - JSONStream: ^1.3.5 - commander: ^2.20.3 - delay: ^5.0.0 - es6-promisify: ^5.0.0 - eyes: ^0.1.8 - isomorphic-ws: ^4.0.1 - json-stringify-safe: ^5.0.1 - uuid: ^8.3.2 - ws: ^7.4.5 - bin: - jayson: bin/jayson.js - checksum: 86464322fbdc6db65d2bb4fc278cb6c86fad5c2a506065490d39459f09ba0d30f2b4fb740b33828a1424791419b6c8bd295dc54d361a4ad959bf70cc62b1ca7e - languageName: node - linkType: hard - -"js-sha256@npm:^0.9.0": - version: 0.9.0 - resolution: "js-sha256@npm:0.9.0" - checksum: ffad54b3373f81581e245866abfda50a62c483803a28176dd5c28fd2d313e0bdf830e77dac7ff8afd193c53031618920f3d98daf21cbbe80082753ab639c0365 - languageName: node - linkType: hard - -"js-yaml@npm:4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: ^2.0.1 - bin: - js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a - languageName: node - linkType: hard - -"json-stringify-safe@npm:^5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee - languageName: node - linkType: hard - -"json5@npm:^1.0.2": - version: 1.0.2 - resolution: "json5@npm:1.0.2" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 - languageName: node - linkType: hard - -"jsonparse@npm:^1.2.0": - version: 1.3.1 - resolution: "jsonparse@npm:1.3.1" - checksum: 6514a7be4674ebf407afca0eda3ba284b69b07f9958a8d3113ef1005f7ec610860c312be067e450c569aab8b89635e332cee3696789c750692bb60daba627f4d - languageName: node - linkType: hard - -"keccak@npm:^3.0.0": - version: 3.0.4 - resolution: "keccak@npm:3.0.4" - dependencies: - node-addon-api: ^2.0.0 - node-gyp: latest - node-gyp-build: ^4.2.0 - readable-stream: ^3.6.0 - checksum: 2bf27b97b2f24225b1b44027de62be547f5c7326d87d249605665abd0c8c599d774671c35504c62c9b922cae02758504c6f76a73a84234d23af8a2211afaaa11 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a - languageName: node - linkType: hard - -"log-symbols@npm:4.1.0": - version: 4.1.0 - resolution: "log-symbols@npm:4.1.0" - dependencies: - chalk: ^4.1.0 - is-unicode-supported: ^0.1.0 - checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 - languageName: node - linkType: hard - -"loupe@npm:^2.3.1": - version: 2.3.6 - resolution: "loupe@npm:2.3.6" - dependencies: - get-func-name: ^2.0.0 - checksum: cc83f1b124a1df7384601d72d8d1f5fe95fd7a8185469fec48bb2e4027e45243949e7a013e8d91051a138451ff0552310c32aa9786e60b6a30d1e801bdc2163f - languageName: node - linkType: hard - -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 - languageName: node - linkType: hard - -"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.1 - resolution: "lru-cache@npm:10.0.1" - checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" - dependencies: - "@npmcli/agent": ^2.0.0 - cacache: ^18.0.0 - http-cache-semantics: ^4.1.1 - is-lambda: ^1.0.1 - minipass: ^7.0.2 - minipass-fetch: ^3.0.0 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - ssri: ^10.0.0 - checksum: 7c7a6d381ce919dd83af398b66459a10e2fe8f4504f340d1d090d3fa3d1b0c93750220e1d898114c64467223504bd258612ba83efbc16f31b075cd56de24b4af - languageName: node - linkType: hard - -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: 098494d885684bcc4f92294b18ba61b7bd353c23147fbc4688c75b45cb8590f5a95fd4584d742415dcc52487f7a1ef6ea611cfa1543b0dc4492fe026357f3f0c - languageName: node - linkType: hard - -"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-assert@npm:1.0.1" - checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 - languageName: node - linkType: hard - -"minimalistic-crypto-utils@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 6e8a0422b30039406efd4c440829ea8f988845db02a3299f372fceba56ffa94994a9c0f2fd70c17f9969eedfbd72f34b5070ead9656a34d3f71c0bd72583a0ed - languageName: node - linkType: hard - -"minimatch@npm:4.2.1": - version: 4.2.1 - resolution: "minimatch@npm:4.2.1" - dependencies: - brace-expansion: ^1.1.7 - checksum: 2b1514e3d0f29a549912f0db7ae7b82c5cab4a8f2dd0369f1c6451a325b3f12b2cf473c95873b6157bb8df183d6cf6db82ff03614b6adaaf1d7e055beccdfd01 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.4": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a - languageName: node - linkType: hard - -"minimatch@npm:^9.0.1": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: ^2.0.1 - checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 - languageName: node - linkType: hard - -"minimist@npm:^1.2.0, minimist@npm:^1.2.6": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 - languageName: node - linkType: hard - -"minipass-fetch@npm:^3.0.0": - version: 3.0.4 - resolution: "minipass-fetch@npm:3.0.4" - dependencies: - encoding: ^0.1.13 - minipass: ^7.0.3 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 - dependenciesMeta: - encoding: - optional: true - checksum: af7aad15d5c128ab1ebe52e043bdf7d62c3c6f0cecb9285b40d7b395e1375b45dcdfd40e63e93d26a0e8249c9efd5c325c65575aceee192883970ff8cb11364a - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: ^4.0.0 - checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 - languageName: node - linkType: hard - -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.1": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: ^1.2.6 - bin: - mkdirp: bin/cmd.js - checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"mocha@npm:^9.0.3": - version: 9.2.2 - resolution: "mocha@npm:9.2.2" - dependencies: - "@ungap/promise-all-settled": 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.3 - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 4.2.1 - ms: 2.1.3 - nanoid: 3.3.1 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - workerpool: 6.2.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - bin: - _mocha: bin/_mocha - mocha: bin/mocha - checksum: 4d5ca4ce33fc66627e63acdf09a634e2358c9a00f61de7788b1091b6aad430da04f97f9ecb82d56dc034b623cb833b65576136fd010d77679c03fcea5bc1e12d - languageName: node - linkType: hard - -"ms@npm:2.1.2, ms@npm:^2.0.0": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:2.1.3": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"nanoid@npm:3.3.1": - version: 3.3.1 - resolution: "nanoid@npm:3.3.1" - bin: - nanoid: bin/nanoid.cjs - checksum: 4ef0969e1bbe866fc223eb32276cbccb0961900bfe79104fa5abe34361979dead8d0e061410a5c03bc3d47455685adf32c09d6f27790f4a6898fb51f7df7ec86 - languageName: node - linkType: hard - -"negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 - languageName: node - linkType: hard - -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: ^2.0.2 - tslib: ^2.0.3 - checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c - languageName: node - linkType: hard - -"node-addon-api@npm:^2.0.0": - version: 2.0.2 - resolution: "node-addon-api@npm:2.0.2" - dependencies: - node-gyp: latest - checksum: 31fb22d674648204f8dd94167eb5aac896c841b84a9210d614bf5d97c74ef059cc6326389cf0c54d2086e35312938401d4cc82e5fcd679202503eb8ac84814f8 - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.11, node-fetch@npm:^2.6.7": - version: 2.6.11 - resolution: "node-fetch@npm:2.6.11" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 249d0666a9497553384d46b5ab296ba223521ac88fed4d8a17d6ee6c2efb0fc890f3e8091cafe7f9fba8151a5b8d925db2671543b3409a56c3cd522b468b47b3 - languageName: node - linkType: hard - -"node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.3.0": - version: 4.6.0 - resolution: "node-gyp-build@npm:4.6.0" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 25d78c5ef1f8c24291f4a370c47ba52fcea14f39272041a90a7894cd50d766f7c8cb8fb06c0f42bf6f69b204b49d9be3c8fc344aac09714d5bdb95965499eb15 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 10.0.0 - resolution: "node-gyp@npm:10.0.0" - dependencies: - env-paths: ^2.2.0 - exponential-backoff: ^3.1.1 - glob: ^10.3.10 - graceful-fs: ^4.2.6 - make-fetch-happen: ^13.0.0 - nopt: ^7.0.0 - proc-log: ^3.0.0 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^4.0.0 - bin: - node-gyp: bin/node-gyp.js - checksum: 65fa5d9f8ef03fa22c5f2d34da23435a63d3743400ca941a4394eb943cf340796456697a7797af1451606dbbeecb663be9328995dadc0b99e58dd583dc3a7a0f - languageName: node - linkType: hard - -"nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" - dependencies: - abbrev: ^2.0.0 - bin: - nopt: bin/nopt.js - checksum: a9c0f57fb8cb9cc82ae47192ca2b7ef00e199b9480eed202482c962d61b59a7fbe7541920b2a5839a97b42ee39e288c0aed770e38057a608d7f579389dfde410 - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"pako@npm:^2.0.3": - version: 2.1.0 - resolution: "pako@npm:2.1.0" - checksum: 71666548644c9a4d056bcaba849ca6fd7242c6cf1af0646d3346f3079a1c7f4a66ffec6f7369ee0dc88f61926c10d6ab05da3e1fca44b83551839e89edd75a3e - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 - languageName: node - linkType: hard - -"path-scurry@npm:^1.10.1": - version: 1.10.1 - resolution: "path-scurry@npm:1.10.1" - dependencies: - lru-cache: ^9.1.1 || ^10.0.0 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 - languageName: node - linkType: hard - -"pathval@npm:^1.1.1": - version: 1.1.1 - resolution: "pathval@npm:1.1.1" - checksum: 090e3147716647fb7fb5b4b8c8e5b55e5d0a6086d085b6cd23f3d3c01fcf0ff56fd3cc22f2f4a033bd2e46ed55d61ed8379e123b42afe7d531a2a5fc8bb556d6 - languageName: node - linkType: hard - -"pbkdf2@npm:^3.0.17": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" - dependencies: - create-hash: ^1.1.2 - create-hmac: ^1.1.4 - ripemd160: ^2.0.1 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: 2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c92 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf - languageName: node - linkType: hard - -"prettier@npm:^2.6.2": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" - bin: - prettier: bin-prettier.js - checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 - languageName: node - linkType: hard - -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e02 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 - languageName: node - linkType: hard - -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 - languageName: node - linkType: hard - -"readable-stream@npm:^3.6.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: ^2.2.1 - checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.11": - version: 0.13.11 - resolution: "regenerator-runtime@npm:0.13.11" - checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" - dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - checksum: 006accc40578ee2beae382757c4ce2908a826b27e2b079efdcd2959ee544ddf210b7b5d7d5e80467807604244e7388427330f5c6d4cd61e6edaddc5773ccc393 - languageName: node - linkType: hard - -"rlp@npm:^2.2.4": - version: 2.2.7 - resolution: "rlp@npm:2.2.7" - dependencies: - bn.js: ^5.2.0 - bin: - rlp: bin/rlp - checksum: 3db4dfe5c793f40ac7e0be689a1f75d05e6f2ca0c66189aeb62adab8c436b857ab4420a419251ee60370d41d957a55698fc5e23ab1e1b41715f33217bc4bb558 - languageName: node - linkType: hard - -"root-workspace-0b6124@workspace:.": - version: 0.0.0-use.local - resolution: "root-workspace-0b6124@workspace:." - dependencies: - "@coral-xyz/anchor": ^0.28.0 - "@solana/spl-token": ^0.3.8 - "@types/bn.js": ^5.1.0 - "@types/chai": ^4.3.0 - "@types/mocha": ^9.0.0 - chai: ^4.3.4 - ethereumjs-util: ^7.1.5 - mocha: ^9.0.3 - prettier: ^2.6.2 - ts-mocha: ^10.0.0 - typescript: ^4.3.5 - languageName: unknown - linkType: soft - -"rpc-websockets@npm:^7.5.1": - version: 7.5.1 - resolution: "rpc-websockets@npm:7.5.1" - dependencies: - "@babel/runtime": ^7.17.2 - bufferutil: ^4.0.1 - eventemitter3: ^4.0.7 - utf-8-validate: ^5.0.2 - uuid: ^8.3.2 - ws: ^8.5.0 - dependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 9dda8c63a1d3e85e11597e1c364835ec6aa9a8de1b5cfb1629d0eafc3ae04509011d485025ed4f717c0b1dd048e2aafdd75080e866540b93e55fd8a2cd91bcfe - languageName: node - linkType: hard - -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"scrypt-js@npm:^3.0.0": - version: 3.0.1 - resolution: "scrypt-js@npm:3.0.1" - checksum: b7c7d1a68d6ca946f2fbb0778e0c4ec63c65501b54023b2af7d7e9f48fdb6c6580d6f7675cd53bda5944c5ebc057560d5a6365079752546865defb3b79dea454 - languageName: node - linkType: hard - -"secp256k1@npm:^4.0.1": - version: 4.0.3 - resolution: "secp256k1@npm:4.0.3" - dependencies: - elliptic: ^6.5.4 - node-addon-api: ^2.0.0 - node-gyp: latest - node-gyp-build: ^4.2.0 - checksum: 21e219adc0024fbd75021001358780a3cc6ac21273c3fcaef46943af73969729709b03f1df7c012a0baab0830fb9a06ccc6b42f8d50050c665cb98078eab477b - languageName: node - linkType: hard - -"semver@npm:^7.3.5": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 - languageName: node - linkType: hard - -"serialize-javascript@npm:6.0.0": - version: 6.0.0 - resolution: "serialize-javascript@npm:6.0.0" - dependencies: - randombytes: ^2.1.0 - checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 - languageName: node - linkType: hard - -"setimmediate@npm:^1.0.5": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd - languageName: node - linkType: hard - -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": - version: 2.4.11 - resolution: "sha.js@npm:2.4.11" - dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - bin: - sha.js: ./bin.js - checksum: ebd3f59d4b799000699097dadb831c8e3da3eb579144fd7eb7a19484cbcbb7aca3c68ba2bb362242eb09e33217de3b4ea56e4678184c334323eca24a58e3ad07 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 - languageName: node - linkType: hard - -"signal-exit@npm:^4.0.1": - version: 4.1.0 - resolution: "signal-exit@npm:4.1.0" - checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b - languageName: node - linkType: hard - -"snake-case@npm:^3.0.4": - version: 3.0.4 - resolution: "snake-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: 0a7a79900bbb36f8aaa922cf111702a3647ac6165736d5dc96d3ef367efc50465cac70c53cd172c382b022dac72ec91710608e5393de71f76d7142e6fd80e8a3 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^8.0.1": - version: 8.0.2 - resolution: "socks-proxy-agent@npm:8.0.2" - dependencies: - agent-base: ^7.0.2 - debug: ^4.3.4 - socks: ^2.7.1 - checksum: 4fb165df08f1f380881dcd887b3cdfdc1aba3797c76c1e9f51d29048be6e494c5b06d68e7aea2e23df4572428f27a3ec22b3d7c75c570c5346507433899a4b6d - languageName: node - linkType: hard - -"socks@npm:^2.7.1": - version: 2.7.1 - resolution: "socks@npm:2.7.1" - dependencies: - ip: ^2.0.0 - smart-buffer: ^4.2.0 - checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.6": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 - languageName: node - linkType: hard - -"source-map@npm:^0.6.0": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"ssri@npm:^10.0.0": - version: 10.0.5 - resolution: "ssri@npm:10.0.5" - dependencies: - minipass: ^7.0.3 - checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb750 - languageName: node - linkType: hard - -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: ^0.2.0 - emoji-regex: ^9.2.2 - strip-ansi: ^7.0.1 - checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" - dependencies: - ansi-regex: ^6.0.1 - checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b - languageName: node - linkType: hard - -"strip-json-comments@npm:3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 - languageName: node - linkType: hard - -"superstruct@npm:^0.14.2": - version: 0.14.2 - resolution: "superstruct@npm:0.14.2" - checksum: c5c4840f432da82125b923ec45faca5113217e83ae416e314d80eae012b8bb603d2e745025d173450758d116348820bc7028157f8c9a72b6beae879f94b837c0 - languageName: node - linkType: hard - -"superstruct@npm:^0.15.4": - version: 0.15.5 - resolution: "superstruct@npm:0.15.5" - checksum: 6d1f5249fee789424b7178fa0a1ffb2ace629c5480c39505885bd8c0046a4ff8b267569a3442fa53b8c560a7ba6599cf3f8af94225aebeb2cf6023f7dd911050 - languageName: node - linkType: hard - -"supports-color@npm:8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.0 - resolution: "tar@npm:6.2.0" - dependencies: - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - minipass: ^5.0.0 - minizlib: ^2.1.1 - mkdirp: ^1.0.3 - yallist: ^4.0.0 - checksum: db4d9fe74a2082c3a5016630092c54c8375ff3b280186938cfd104f2e089c4fd9bad58688ef6be9cf186a889671bf355c7cda38f09bbf60604b281715ca57f5c - languageName: node - linkType: hard - -"text-encoding-utf-8@npm:^1.0.2": - version: 1.0.2 - resolution: "text-encoding-utf-8@npm:1.0.2" - checksum: ec4c15d50e738c5dba7327ad432ebf0725ec75d4d69c0bd55609254c5a3bc5341272d7003691084a0a73d60d981c8eb0e87603676fdb6f3fed60f4c9192309f9 - languageName: node - linkType: hard - -"through@npm:>=2.2.7 <3": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"toml@npm:^3.0.0": - version: 3.0.0 - resolution: "toml@npm:3.0.0" - checksum: 5d7f1d8413ad7780e9bdecce8ea4c3f5130dd53b0a4f2e90b93340979a137739879d7b9ce2ce05c938b8cc828897fe9e95085197342a1377dd8850bf5125f15f - languageName: node - linkType: hard - -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 - languageName: node - linkType: hard - -"ts-mocha@npm:^10.0.0": - version: 10.0.0 - resolution: "ts-mocha@npm:10.0.0" - dependencies: - ts-node: 7.0.1 - tsconfig-paths: ^3.5.0 - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X - dependenciesMeta: - tsconfig-paths: - optional: true - bin: - ts-mocha: bin/ts-mocha - checksum: b11f2a8ceecf195b0db724da429159982fef12e4357088fe900289223587217e8c126ead7929679edd58bf19ad96c5da5911535d26f535386632e18fbff10c40 - languageName: node - linkType: hard - -"ts-node@npm:7.0.1": - version: 7.0.1 - resolution: "ts-node@npm:7.0.1" - dependencies: - arrify: ^1.0.0 - buffer-from: ^1.1.0 - diff: ^3.1.0 - make-error: ^1.1.1 - minimist: ^1.2.0 - mkdirp: ^0.5.1 - source-map-support: ^0.5.6 - yn: ^2.0.0 - bin: - ts-node: dist/bin.js - checksum: 07ed6ea1805361828737a767cfd6c57ea6e267ee8679282afb933610af02405e1a87c1f2aea1d38ed8e66b34fcbf6272b6021ab95d78849105d2e57fc283870b - languageName: node - linkType: hard - -"tsconfig-paths@npm:^3.5.0": - version: 3.14.2 - resolution: "tsconfig-paths@npm:3.14.2" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.2 - minimist: ^1.2.6 - strip-bom: ^3.0.0 - checksum: a6162eaa1aed680537f93621b82399c7856afd10ec299867b13a0675e981acac4e0ec00896860480efc59fc10fd0b16fdc928c0b885865b52be62cadac692447 - languageName: node - linkType: hard - -"tslib@npm:^2.0.3": - version: 2.5.3 - resolution: "tslib@npm:2.5.3" - checksum: 88902b309afaf83259131c1e13da1dceb0ad1682a213143a1346a649143924d78cf3760c448b84d796938fd76127183894f8d85cbb3bf9c4fddbfcc140c0003c - languageName: node - linkType: hard - -"type-detect@npm:^4.0.0, type-detect@npm:^4.0.5": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 - languageName: node - linkType: hard - -"typescript@npm:^4.3.5": - version: 4.9.5 - resolution: "typescript@npm:4.9.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db - languageName: node - linkType: hard - -"typescript@patch:typescript@^4.3.5#~builtin": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=289587" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 1f8f3b6aaea19f0f67cba79057674ba580438a7db55057eb89cc06950483c5d632115c14077f6663ea76fd09fce3c190e6414bb98582ec80aa5a4eaf345d5b68 - languageName: node - linkType: hard - -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" - dependencies: - unique-slug: ^4.0.0 - checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df - languageName: node - linkType: hard - -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" - dependencies: - imurmurhash: ^0.1.4 - checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15 - languageName: node - linkType: hard - -"utf-8-validate@npm:^5.0.2": - version: 5.0.10 - resolution: "utf-8-validate@npm:5.0.10" - dependencies: - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: 5579350a023c66a2326752b6c8804cc7b39dcd251bb088241da38db994b8d78352e388dcc24ad398ab98385ba3c5ffcadb6b5b14b2637e43f767869055e46ba6 - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: ~0.0.3 - webidl-conversions: ^3.0.0 - checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c - languageName: node - linkType: hard - -"which@npm:2.0.2, which@npm:^2.0.1": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" - dependencies: - isexe: ^3.1.1 - bin: - node-which: bin/which.js - checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 - languageName: node - linkType: hard - -"workerpool@npm:6.2.0": - version: 6.2.0 - resolution: "workerpool@npm:6.2.0" - checksum: 3493b4f0ef979a23d2c1583d7ef85f62fc9463cc02f82829d3e7e663b517f8ae9707da0249b382e46ac58986deb0ca2232ee1081713741211bda9254b429c9bb - languageName: node - linkType: hard - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" - dependencies: - ansi-styles: ^6.1.0 - string-width: ^5.0.1 - strip-ansi: ^7.0.1 - checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"ws@npm:^7.4.5": - version: 7.5.9 - resolution: "ws@npm:7.5.9" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 - languageName: node - linkType: hard - -"ws@npm:^8.5.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c - languageName: node - linkType: hard - -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"yargs-parser@npm:20.2.4, yargs-parser@npm:^20.2.2": - version: 20.2.4 - resolution: "yargs-parser@npm:20.2.4" - checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b924 - languageName: node - linkType: hard - -"yargs-unparser@npm:2.0.0": - version: 2.0.0 - resolution: "yargs-unparser@npm:2.0.0" - dependencies: - camelcase: ^6.0.0 - decamelize: ^4.0.0 - flat: ^5.0.2 - is-plain-obj: ^2.1.0 - checksum: 68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 - languageName: node - linkType: hard - -"yargs@npm:16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: ^7.0.2 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.0 - y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 - languageName: node - linkType: hard - -"yn@npm:^2.0.0": - version: 2.0.0 - resolution: "yn@npm:2.0.0" - checksum: 9d49527cb3e9a0948cc057223810bf30607bf04b9ff7666cc1681a6501d660b60d90000c16f9e29311b0f28d8a06222ada565ccdca5f1049cdfefb1908217572 - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 - languageName: node - linkType: hard