diff --git a/.changeset/brave-buckets-approve.md b/.changeset/brave-buckets-approve.md deleted file mode 100644 index 5b9cc69b5..000000000 --- a/.changeset/brave-buckets-approve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@layerzerolabs/oft-evm": minor ---- - -changed license for MintBurnOFTAdapter and periphery contracts to MIT from UNLICENSED diff --git a/.changeset/nice-buttons-work.md b/.changeset/nice-buttons-work.md deleted file mode 100644 index 478ac9bf1..000000000 --- a/.changeset/nice-buttons-work.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@layerzerolabs/oft-evm": minor ---- - -Added MintBurnOFTAdapter diff --git a/Dockerfile b/Dockerfile index 16d05ba9c..2c1ea2656 100644 --- a/Dockerfile +++ b/Dockerfile @@ -85,7 +85,7 @@ RUN apt-get install --yes \ libatomic1 libssl-dev # Install rust -ARG RUST_TOOLCHAIN_VERSION=1.75.0 +ARG RUST_TOOLCHAIN_VERSION=1.83.0 RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${RUST_TOOLCHAIN_VERSION} # Install docker diff --git a/README.md b/README.md index 0edd64665..df84ba5c0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@

- - LayerZero + + LayerZero + + + LayerZero

diff --git a/assets/logo-dark.svg b/assets/logo-dark.svg new file mode 100644 index 000000000..295bfb5ef --- /dev/null +++ b/assets/logo-dark.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/assets/logo-light.svg b/assets/logo-light.svg new file mode 100644 index 000000000..d488cdb57 --- /dev/null +++ b/assets/logo-light.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/examples/mint-burn-oft-adapter/CHANGELOG.md b/examples/mint-burn-oft-adapter/CHANGELOG.md new file mode 100644 index 000000000..33a86d28a --- /dev/null +++ b/examples/mint-burn-oft-adapter/CHANGELOG.md @@ -0,0 +1,7 @@ +# @layerzerolabs/mint-burn-oft-adapter-example + +## 0.0.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions diff --git a/examples/mint-burn-oft-adapter/package.json b/examples/mint-burn-oft-adapter/package.json index c0e207272..1e1a48074 100644 --- a/examples/mint-burn-oft-adapter/package.json +++ b/examples/mint-burn-oft-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/mint-burn-oft-adapter-example", - "version": "0.0.1", + "version": "0.0.2", "private": true, "license": "MIT", "scripts": { @@ -23,18 +23,18 @@ "devDependencies": { "@babel/core": "^7.23.9", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/oft-evm": "^3.0.0", + "@layerzerolabs/oft-evm": "^3.1.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/examples/native-oft-adapter/CHANGELOG.md b/examples/native-oft-adapter/CHANGELOG.md index 4e7ddbf31..0e0608dd4 100644 --- a/examples/native-oft-adapter/CHANGELOG.md +++ b/examples/native-oft-adapter/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/native-oft-adapter-example +## 0.2.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.2.2 ### Patch Changes diff --git a/examples/native-oft-adapter/package.json b/examples/native-oft-adapter/package.json index 361f9694d..83b06a785 100644 --- a/examples/native-oft-adapter/package.json +++ b/examples/native-oft-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/native-oft-adapter-example", - "version": "0.2.2", + "version": "0.2.3", "private": true, "license": "MIT", "scripts": { @@ -23,18 +23,18 @@ "devDependencies": { "@babel/core": "^7.23.9", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/oft-evm": "^3.0.0", + "@layerzerolabs/oft-evm": "^3.1.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "^5.0.0", + "@layerzerolabs/test-devtools-evm-foundry": "^6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/examples/oapp-read/CHANGELOG.md b/examples/oapp-read/CHANGELOG.md index 242b4b14a..57d94352f 100644 --- a/examples/oapp-read/CHANGELOG.md +++ b/examples/oapp-read/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/oapp-read-example +## 0.2.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.2.2 ### Patch Changes diff --git a/examples/oapp-read/package.json b/examples/oapp-read/package.json index 25322560b..4c2c09315 100644 --- a/examples/oapp-read/package.json +++ b/examples/oapp-read/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/oapp-read-example", - "version": "0.2.2", + "version": "0.2.3", "private": true, "license": "MIT", "scripts": { @@ -23,7 +23,7 @@ "devDependencies": { "@babel/core": "^7.23.9", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", @@ -31,9 +31,9 @@ "@layerzerolabs/oapp-evm": "^0.3.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/examples/oapp/CHANGELOG.md b/examples/oapp/CHANGELOG.md index 48d9f6a8f..17fe247bc 100644 --- a/examples/oapp/CHANGELOG.md +++ b/examples/oapp/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/oapp-example +## 0.5.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.5.2 ### Patch Changes diff --git a/examples/oapp/package.json b/examples/oapp/package.json index aca31a2fb..cb68234c8 100644 --- a/examples/oapp/package.json +++ b/examples/oapp/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/oapp-example", - "version": "0.5.2", + "version": "0.5.3", "private": true, "license": "MIT", "scripts": { @@ -23,7 +23,7 @@ "devDependencies": { "@babel/core": "^7.23.9", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", @@ -31,9 +31,9 @@ "@layerzerolabs/oapp-evm": "^0.3.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/examples/oft-adapter/CHANGELOG.md b/examples/oft-adapter/CHANGELOG.md index 4c8b59722..bd512e6ee 100644 --- a/examples/oft-adapter/CHANGELOG.md +++ b/examples/oft-adapter/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/oft-adapter-example +## 0.3.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.3.2 ### Patch Changes diff --git a/examples/oft-adapter/package.json b/examples/oft-adapter/package.json index f42f490de..43e29022e 100644 --- a/examples/oft-adapter/package.json +++ b/examples/oft-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/oft-adapter-example", - "version": "0.3.2", + "version": "0.3.3", "private": true, "license": "MIT", "scripts": { @@ -23,18 +23,18 @@ "devDependencies": { "@babel/core": "^7.23.9", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/oft-evm": "^3.0.0", + "@layerzerolabs/oft-evm": "^3.1.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/examples/oft-solana/CHANGELOG.md b/examples/oft-solana/CHANGELOG.md index d98b3f83d..bd4bfbc16 100644 --- a/examples/oft-solana/CHANGELOG.md +++ b/examples/oft-solana/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/oft-solana-example +## 0.4.5 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.4.4 ### Patch Changes diff --git a/examples/oft-solana/README.md b/examples/oft-solana/README.md index 3e767ca57..3743a997b 100644 --- a/examples/oft-solana/README.md +++ b/examples/oft-solana/README.md @@ -50,7 +50,7 @@ cargo install --git https://github.com/coral-xyz/anchor --tag v0.29.0 anchor-cli ### Get the code ```bash -LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE=1 npx create-lz-oapp@latest +LZ_ENABLE_SOLANA_OFT_EXAMPLE=1 npx create-lz-oapp@latest ``` ### Installing Dependencies @@ -79,29 +79,9 @@ We recommend that you request 5 devnet SOL, which should be sufficient for this cp .env.example .env ``` -In the `.env` just created, set `SOLANA_PRIVATE_KEY` to your private key value in base58 format. Since the locally stored keypair is in an integer array format, we'd need to encode it into base58 first. You can create a temporary script called `getBase58Pk.js` in your project root with the following contents: +In the `.env` just created, set `SOLANA_PRIVATE_KEY` to your private key value in base58 format. Since the locally stored keypair is in an integer array format, we'd need to encode it into base58 first. -
- View `getBase58Pk.js` script - -```js -import fs from "fs"; -import { Keypair } from "@solana/web3.js"; -import bs58 from "bs58"; - -const keypairFilePath = ``; // you can view this by running `solana config get` - -const data = fs.readFileSync(keypairFilePath, "utf8"); -const keypairJson = JSON.parse(data); -const keypair = Keypair.fromSecretKey(Uint8Array.from(keypairJson)); -const base58EncodedPrivateKey = bs58.encode(keypair.secretKey); - -console.log(base58EncodedPrivateKey); -``` - -Then, run `node getBase58Pk.js` - -
+You can run the `npx hardhat lz:solana:base-58` to output your private key in base58 format. Optionally, pass in a value for the `--keypair-file` flag if you want to use the keypair other than the default at `~/.config/solana.id.json` Also set the `RPC_URL_SOLANA_TESTNET` value. Note that while the naming used here is `TESTNET`, it refers to the [Solana Devnet](https://docs.layerzero.network/v2/developers/evm/technical-reference/deployed-contracts#solana-testnet). We use `TESTNET` to keep it consistent with the existing EVM testnets. diff --git a/examples/oft-solana/hardhat.config.ts b/examples/oft-solana/hardhat.config.ts index 4653a746f..e298b44c3 100644 --- a/examples/oft-solana/hardhat.config.ts +++ b/examples/oft-solana/hardhat.config.ts @@ -61,7 +61,7 @@ const config: HardhatUserConfig = { networks: { 'sepolia-testnet': { eid: EndpointId.SEPOLIA_V2_TESTNET, - url: process.env.RPC_URL_SEPOLIA || 'https://rpc.sepolia.org/', + url: process.env.RPC_URL_SEPOLIA || 'https://gateway.tenderly.co/public/sepolia', accounts, }, hardhat: { diff --git a/examples/oft-solana/package.json b/examples/oft-solana/package.json index 52fa708ff..ad9425563 100644 --- a/examples/oft-solana/package.json +++ b/examples/oft-solana/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/oft-solana-example", - "version": "0.4.4", + "version": "0.4.5", "private": true, "scripts": { "clean": "rm -rf target artifacts cache out .anchor", @@ -24,34 +24,34 @@ "devDependencies": { "@coral-xyz/anchor": "^0.29.0", "@ethersproject/bytes": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "^2.0.3", - "@layerzerolabs/devtools-solana": "~1.0.2", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "^2.0.4", + "@layerzerolabs/devtools-solana": "~1.0.4", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/io-devtools": "~0.1.11", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/lz-solana-sdk-v2": "3.0.0", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/oft-evm": "^3.0.0", + "@layerzerolabs/oft-evm": "^3.1.0", "@layerzerolabs/oft-v2-solana-sdk": "3.0.0", "@layerzerolabs/prettier-config-next": "^2.3.39", - "@layerzerolabs/protocol-devtools": "^1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.1", - "@layerzerolabs/protocol-devtools-solana": "^4.0.1", + "@layerzerolabs/protocol-devtools": "^1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/protocol-devtools-solana": "^4.0.3", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/test-devtools-evm-hardhat": "~0.5.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", - "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.4", - "@layerzerolabs/ua-devtools-solana": "~4.0.2", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", + "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.5", + "@layerzerolabs/ua-devtools-solana": "~4.0.4", "@metaplex-foundation/mpl-token-metadata": "^3.2.1", "@metaplex-foundation/mpl-toolbox": "^0.9.4", "@metaplex-foundation/umi": "^0.9.2", diff --git a/examples/oft-solana/tasks/index.ts b/examples/oft-solana/tasks/index.ts index 30d3f0c4a..9008859b3 100644 --- a/examples/oft-solana/tasks/index.ts +++ b/examples/oft-solana/tasks/index.ts @@ -6,5 +6,6 @@ import './solana/createOFTAdapter' import './solana/sendOFT' import './solana/setAuthority' import './solana/getPrioFees' +import './solana/base58' import './solana/setInboundRateLimit' import './solana/setOutboundRateLimit' diff --git a/examples/oft-solana/tasks/solana/base58.ts b/examples/oft-solana/tasks/solana/base58.ts new file mode 100644 index 000000000..9e4191c02 --- /dev/null +++ b/examples/oft-solana/tasks/solana/base58.ts @@ -0,0 +1,36 @@ +import assert from 'assert' +import fs from 'fs' +import path from 'path' + +import { Keypair } from '@solana/web3.js' +import bs58 from 'bs58' +import { task } from 'hardhat/config' + +import { types as devtoolsTypes } from '@layerzerolabs/devtools-evm-hardhat' + +interface Base58FeesTaskArgs { + /** + * The path to the keypair file to be used. + */ + keypairFile: string +} + +assert(process.env.HOME != undefined, 'process.env.HOME needs to be defined') + +const defaultKeypairFile = path.resolve(process.env.HOME, '.config/solana/id.json') + +task('lz:solana:base-58', 'Outputs the base58 string for a keypair') + .addParam( + 'keypairFile', + 'The path to the keypair file to be used. Defaults to ~/.config/solana/id.json', + defaultKeypairFile, + devtoolsTypes.string + ) + .setAction(async ({ keypairFile }: Base58FeesTaskArgs) => { + assert(fs.existsSync(keypairFile), `Keypair file not found: ${keypairFile}`) + const data = fs.readFileSync(keypairFile, 'utf8') + const keypairJson = JSON.parse(data) + const keypair = Keypair.fromSecretKey(Uint8Array.from(keypairJson)) + const base58EncodedPrivateKey = bs58.encode(keypair.secretKey) + console.log(base58EncodedPrivateKey) + }) diff --git a/examples/oft-upgradeable/CHANGELOG.md b/examples/oft-upgradeable/CHANGELOG.md index eb69cb01f..12f28d2f1 100644 --- a/examples/oft-upgradeable/CHANGELOG.md +++ b/examples/oft-upgradeable/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/oft-upgradeable-example +## 0.2.5 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.2.4 ### Patch Changes diff --git a/examples/oft-upgradeable/package.json b/examples/oft-upgradeable/package.json index 71ac4babb..de5774148 100644 --- a/examples/oft-upgradeable/package.json +++ b/examples/oft-upgradeable/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/oft-upgradeable-example", - "version": "0.2.4", + "version": "0.2.5", "private": true, "license": "MIT", "scripts": { @@ -22,9 +22,9 @@ }, "devDependencies": { "@babel/core": "^7.23.9", - "@layerzerolabs/devtools-evm-hardhat": "^2.0.3", + "@layerzerolabs/devtools-evm-hardhat": "^2.0.4", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-sdk-v2": "^3.0.21", @@ -32,13 +32,13 @@ "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", "@layerzerolabs/oapp-evm-upgradeable": "^0.1.0", - "@layerzerolabs/oft-evm": "^3.0.0", + "@layerzerolabs/oft-evm": "^3.1.0", "@layerzerolabs/oft-evm-upgradeable": "^3.0.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.2", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-waffle": "^2.0.6", "@openzeppelin/contracts": "^5.0.2", diff --git a/examples/oft/CHANGELOG.md b/examples/oft/CHANGELOG.md index b935a90fb..5c53acfff 100644 --- a/examples/oft/CHANGELOG.md +++ b/examples/oft/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/oft-example +## 0.5.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.5.2 ### Patch Changes diff --git a/examples/oft/package.json b/examples/oft/package.json index 1ef97f6dc..fe9447e90 100644 --- a/examples/oft/package.json +++ b/examples/oft/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/oft-example", - "version": "0.5.2", + "version": "0.5.3", "private": true, "license": "MIT", "scripts": { @@ -22,20 +22,20 @@ }, "devDependencies": { "@babel/core": "^7.23.9", - "@layerzerolabs/devtools-evm-hardhat": "^2.0.3", + "@layerzerolabs/devtools-evm-hardhat": "^2.0.4", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/oft-evm": "^3.0.0", + "@layerzerolabs/oft-evm": "^3.1.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/examples/onft721-zksync/CHANGELOG.md b/examples/onft721-zksync/CHANGELOG.md index 4194abfd4..d52a4dd22 100644 --- a/examples/onft721-zksync/CHANGELOG.md +++ b/examples/onft721-zksync/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/onft721-zksync-example +## 1.0.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 1.0.1 ### Patch Changes diff --git a/examples/onft721-zksync/package.json b/examples/onft721-zksync/package.json index c3744309f..f5fc53a3d 100644 --- a/examples/onft721-zksync/package.json +++ b/examples/onft721-zksync/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/onft721-zksync-example", - "version": "1.0.1", + "version": "1.0.2", "private": true, "license": "MIT", "scripts": { @@ -24,7 +24,7 @@ "devDependencies": { "@babel/core": "^7.23.9", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", @@ -33,9 +33,9 @@ "@layerzerolabs/onft-evm": "^0.1.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@matterlabs/hardhat-zksync-deploy": "~0.9.0", "@matterlabs/hardhat-zksync-solc": "~1.1.4", "@matterlabs/hardhat-zksync-verify": "^1.7.0", diff --git a/examples/onft721/CHANGELOG.md b/examples/onft721/CHANGELOG.md index 1d388a6fe..7b3184d71 100644 --- a/examples/onft721/CHANGELOG.md +++ b/examples/onft721/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/onft721-example +## 0.3.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.3.2 ### Patch Changes diff --git a/examples/onft721/package.json b/examples/onft721/package.json index 4e1231847..3457885af 100644 --- a/examples/onft721/package.json +++ b/examples/onft721/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/onft721-example", - "version": "0.3.2", + "version": "0.3.3", "license": "MIT", "scripts": { "clean": "rm -rf artifacts cache out", @@ -22,7 +22,7 @@ "devDependencies": { "@babel/core": "^7.23.9", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", @@ -31,9 +31,9 @@ "@layerzerolabs/onft-evm": "^0.1.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/examples/uniswap-read/CHANGELOG.md b/examples/uniswap-read/CHANGELOG.md index 48719d7fb..6761ab8cc 100644 --- a/examples/uniswap-read/CHANGELOG.md +++ b/examples/uniswap-read/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/uniswap-read-example +## 0.2.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.2.2 ### Patch Changes diff --git a/examples/uniswap-read/package.json b/examples/uniswap-read/package.json index 6a7cd56a2..48992e55c 100644 --- a/examples/uniswap-read/package.json +++ b/examples/uniswap-read/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/uniswap-read-example", - "version": "0.2.2", + "version": "0.2.3", "private": true, "license": "MIT", "scripts": { @@ -23,7 +23,7 @@ "devDependencies": { "@babel/core": "^7.23.9", "@layerzerolabs/eslint-config-next": "~2.3.39", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", @@ -31,9 +31,9 @@ "@layerzerolabs/oapp-evm": "^0.3.0", "@layerzerolabs/prettier-config-next": "^2.3.39", "@layerzerolabs/solhint-config": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", - "@layerzerolabs/toolbox-hardhat": "~0.6.1", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/packages/build-lz-options/package.json b/packages/build-lz-options/package.json index a092203c5..b8c6facfb 100644 --- a/packages/build-lz-options/package.json +++ b/packages/build-lz-options/package.json @@ -36,7 +36,7 @@ "@ethersproject/address": "~5.7.0", "@layerzerolabs/devtools": "~0.4.0", "@layerzerolabs/devtools-evm": "~1.0.0", - "@layerzerolabs/io-devtools": "~0.1.12", + "@layerzerolabs/io-devtools": "~0.1.14", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@types/prompts": "^2.4.9", "@types/react": "^17.0.74", diff --git a/packages/create-lz-oapp/package.json b/packages/create-lz-oapp/package.json index 694e79a97..e0fca7f52 100644 --- a/packages/create-lz-oapp/package.json +++ b/packages/create-lz-oapp/package.json @@ -33,7 +33,7 @@ "yoga-layout-prebuilt": "^1.10.0" }, "devDependencies": { - "@layerzerolabs/io-devtools": "~0.1.12", + "@layerzerolabs/io-devtools": "~0.1.14", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", diff --git a/packages/create-lz-oapp/src/config.ts b/packages/create-lz-oapp/src/config.ts index 3ceca0436..de9b75d35 100644 --- a/packages/create-lz-oapp/src/config.ts +++ b/packages/create-lz-oapp/src/config.ts @@ -112,7 +112,7 @@ export const getExamples = (): Example[] => { ] : []), // The Solana OFT example is feature flagged for the time being - ...(process.env.LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE + ...(process.env.LZ_ENABLE_SOLANA_OFT_EXAMPLE ? [ { id: 'oft-solana', diff --git a/packages/create-lz-oapp/test/config.test.ts b/packages/create-lz-oapp/test/config.test.ts index 6bf8d2e02..4d40a5bde 100644 --- a/packages/create-lz-oapp/test/config.test.ts +++ b/packages/create-lz-oapp/test/config.test.ts @@ -40,14 +40,14 @@ describe('config', () => { examples.forEach((example) => expect(example).toMatchObject({ ref: 'ohhello' })) }) - it('should not include Solana OFT example if LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE is empty', () => { - process.env.LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE = '' + it('should not include Solana OFT example if LZ_ENABLE_SOLANA_OFT_EXAMPLE is empty', () => { + process.env.LZ_ENABLE_SOLANA_OFT_EXAMPLE = '' expect(getExamples()).not.toContainEqual(expect.objectContaining({ id: 'oft-solana' })) }) - it('should include Solana OFT example if LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE is defined', () => { - process.env.LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE = 'yes' + it('should include Solana OFT example if LZ_ENABLE_SOLANA_OFT_EXAMPLE is defined', () => { + process.env.LZ_ENABLE_SOLANA_OFT_EXAMPLE = 'yes' expect(getExamples()).toContainEqual(expect.objectContaining({ id: 'oft-solana' })) }) diff --git a/packages/decode-lz-options/package.json b/packages/decode-lz-options/package.json index fc323b43b..746ccea04 100644 --- a/packages/decode-lz-options/package.json +++ b/packages/decode-lz-options/package.json @@ -36,7 +36,7 @@ "@ethersproject/address": "~5.7.0", "@layerzerolabs/devtools": "~0.4.0", "@layerzerolabs/devtools-evm": "~1.0.0", - "@layerzerolabs/io-devtools": "~0.1.12", + "@layerzerolabs/io-devtools": "~0.1.14", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@types/prompts": "^2.4.9", "@types/react": "^17.0.74", diff --git a/packages/devtools-cli/package.json b/packages/devtools-cli/package.json index 31b81bed7..1c5753049 100644 --- a/packages/devtools-cli/package.json +++ b/packages/devtools-cli/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@layerzerolabs/devtools": "~0.4.0", - "@layerzerolabs/io-devtools": "~0.1.12", + "@layerzerolabs/io-devtools": "~0.1.14", "@layerzerolabs/ua-devtools": "~3.0.0", "@types/prompts": "^2.4.9", "@types/react": "^17.0.74", diff --git a/packages/devtools-evm-hardhat/CHANGELOG.md b/packages/devtools-evm-hardhat/CHANGELOG.md index e6a916a6e..5a102a827 100644 --- a/packages/devtools-evm-hardhat/CHANGELOG.md +++ b/packages/devtools-evm-hardhat/CHANGELOG.md @@ -1,5 +1,14 @@ # @layerzerolabs/devtools-evm-hardhat +## 2.0.4 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/devtools-evm@1.0.2 + - @layerzerolabs/devtools@0.4.3 + ## 2.0.3 ### Patch Changes diff --git a/packages/devtools-evm-hardhat/package.json b/packages/devtools-evm-hardhat/package.json index cf1f2cd40..58165f674 100644 --- a/packages/devtools-evm-hardhat/package.json +++ b/packages/devtools-evm-hardhat/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/devtools-evm-hardhat", - "version": "2.0.3", + "version": "2.0.4", "description": "Hardhat utilities for LayerZero EVM projects", "repository": { "type": "git", @@ -55,12 +55,12 @@ "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@ethersproject/wallet": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/io-devtools": "~0.1.13", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-sdk-v1": "^3.0.12", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/test-devtools": "~0.4.2", "@layerzerolabs/test-devtools-evm-hardhat": "~0.5.0", "@nomiclabs/hardhat-ethers": "^2.2.3", "@swc/core": "^1.4.0", @@ -83,10 +83,10 @@ "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/io-devtools": "~0.1.13", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@nomiclabs/hardhat-ethers": "^2.2.3", "fp-ts": "^2.16.2", "hardhat": "^2.22.10", diff --git a/packages/devtools-evm/CHANGELOG.md b/packages/devtools-evm/CHANGELOG.md index 6402a12d3..56431ad1e 100644 --- a/packages/devtools-evm/CHANGELOG.md +++ b/packages/devtools-evm/CHANGELOG.md @@ -1,5 +1,13 @@ # @layerzerolabs/devtools-evm +## 1.0.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/devtools@0.4.3 + ## 1.0.1 ### Patch Changes diff --git a/packages/devtools-evm/package.json b/packages/devtools-evm/package.json index 40d906b2a..7611a356e 100644 --- a/packages/devtools-evm/package.json +++ b/packages/devtools-evm/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/devtools-evm", - "version": "1.0.1", + "version": "1.0.2", "description": "Utilities for LayerZero EVM projects", "repository": { "type": "git", @@ -50,10 +50,10 @@ "@ethersproject/constants": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.2", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/test-devtools": "~0.4.2", "@safe-global/safe-core-sdk-types": "^2.3.0", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", @@ -77,9 +77,9 @@ "@ethersproject/constants": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "fp-ts": "^2.16.2", "zod": "^3.22.4" }, diff --git a/packages/devtools-solana/CHANGELOG.md b/packages/devtools-solana/CHANGELOG.md index 6ad82f3e4..63e0977cb 100644 --- a/packages/devtools-solana/CHANGELOG.md +++ b/packages/devtools-solana/CHANGELOG.md @@ -1,5 +1,13 @@ # @layerzerolabs/devtools-solana +## 1.0.4 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/devtools@0.4.3 + ## 1.0.3 ### Patch Changes diff --git a/packages/devtools-solana/package.json b/packages/devtools-solana/package.json index 67e377553..b22cb7b5a 100644 --- a/packages/devtools-solana/package.json +++ b/packages/devtools-solana/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/devtools-solana", - "version": "1.0.3", + "version": "1.0.4", "description": "Utilities for LayerZero Solana projects", "repository": { "type": "git", @@ -42,10 +42,10 @@ "p-memoize": "~4.0.4" }, "devDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/test-devtools": "~0.4.2", "@layerzerolabs/test-devtools-solana": "~0.0.4", "@solana/web3.js": "~1.95.8", "@sqds/multisig": "^2.1.3", @@ -65,9 +65,9 @@ "zod": "^3.22.4" }, "peerDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@solana/web3.js": "^1.95.8", "bn.js": "^5.2.0", "fp-ts": "^2.16.2", diff --git a/packages/devtools-ton/CHANGELOG.md b/packages/devtools-ton/CHANGELOG.md index d2e505616..dff85a409 100644 --- a/packages/devtools-ton/CHANGELOG.md +++ b/packages/devtools-ton/CHANGELOG.md @@ -1,5 +1,16 @@ # @layerzerolabs/devtools-ton +## 0.1.0 + +### Minor Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + +### Patch Changes + +- Updated dependencies [1d2abff] + - @layerzerolabs/devtools@0.4.3 + ## 0.0.2 ### Patch Changes diff --git a/packages/devtools-ton/jest.config.ts b/packages/devtools-ton/jest.config.ts index bbb53d8eb..c34739457 100644 --- a/packages/devtools-ton/jest.config.ts +++ b/packages/devtools-ton/jest.config.ts @@ -4,13 +4,13 @@ const config: Config = { cache: false, reporters: [['github-actions', { silent: false }], 'default'], testEnvironment: 'node', - testTimeout: 60_000, moduleNameMapper: { '^@/(.*)$': '/src/$1', }, transform: { '^.+\\.(t|j)sx?$': '@swc/jest', }, + testTimeout: 60_000, } export default config diff --git a/packages/devtools-ton/package.json b/packages/devtools-ton/package.json index a34dcb6dc..1b9ed79a9 100644 --- a/packages/devtools-ton/package.json +++ b/packages/devtools-ton/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/devtools-ton", - "version": "0.0.2", + "version": "0.1.0", "description": "Developer utilities for working with LayerZero TON contracts", "repository": { "type": "git", @@ -31,15 +31,19 @@ "lint:fix": "eslint --fix '**/*.{js,ts,json}'", "test": "jest --ci" }, - "devDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/io-devtools": "~0.1.13", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@swc/core": "^1.4.0", - "@swc/jest": "^0.2.36", + "dependencies": { "@ton/core": "^0.59.0", "@ton/crypto": "^3.3.0", "@ton/ton": "^15.1.0", + "p-memoize": "~4.0.4" + }, + "devDependencies": { + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/lz-ton-sdk-v2": "^3.0.27", + "@swc/core": "^1.4.0", + "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", "fast-check": "^3.16.0", "jest": "^29.7.0", @@ -47,12 +51,12 @@ "ts-node": "^10.9.2", "tslib": "~2.6.2", "tsup": "~8.0.1", - "typescript": "^5.4.4" + "typescript": "^5.3.3" }, "peerDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/io-devtools": "~0.1.13", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@ton/core": "^0.59.0", "@ton/crypto": "^3.3.0", "@ton/ton": "^15.1.0" diff --git a/packages/devtools-ton/src/getDeploymentAddress.ts b/packages/devtools-ton/src/getDeploymentAddress.ts new file mode 100644 index 000000000..6371af8af --- /dev/null +++ b/packages/devtools-ton/src/getDeploymentAddress.ts @@ -0,0 +1,101 @@ +// TODO: Maybe use Stage or Environment imported +export type EnvironmentName = 'sandbox' | 'localnet' | 'local' | 'testnet' | 'mainnet' +export type TonDeployment = { + name: ContractName + network: string + address: string + compatibleVersions: string[] + deployer: string +} +type ContractName = + | 'AllStorages' + | 'Controller' + | 'Counter' + | 'Dvn' + | 'DvnProxy' + | 'Executor' + | 'ExecutorProxy' + | 'PriceFeedCache' + | 'PriceFeedCacheProxy' + | 'SmlManager' + | 'UlnManager' +const DEFAULT_PATH = '@layerzerolabs/lz-ton-sdk-v2/deployments' + +const envToFolder = (env: EnvironmentName) => { + switch (env) { + case 'sandbox': + case 'localnet': + case 'local': + return 'ton-sandbox-local' + case 'testnet': + return 'ton-testnet' + case 'mainnet': + return 'ton-mainnet' + } +} + +const envToFolderFallback = (env: EnvironmentName) => { + switch (env) { + case 'sandbox': + case 'localnet': + case 'local': + return 'ton-localnet' + case 'testnet': + return 'ton-testnet' + case 'mainnet': + return 'ton-mainnet' + } +} + +/** + * + * @param env The environment name for which to fetch the deployment + * @param name The name of the contract to fetch + * @returns A deployment record + */ +export const getDeployment = (env: EnvironmentName, name: ContractName): TonDeployment => { + try { + // eslint-disable-next-line @typescript-eslint/no-var-requires + return require(`${DEFAULT_PATH}/${envToFolder(env)}/${name}.json`) as TonDeployment + } catch (e) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + return require(`${DEFAULT_PATH}/${envToFolderFallback(env)}/${name}.json`) as TonDeployment + } +} +/** + * + * @param env The environment name for which to fetch the deployment + * @param name The name of the contract to fetch + * @param packageName The name of the package in which the deployment is located + * @returns A deployment record + */ +export const getDeploymentFromPackage = (env: EnvironmentName, name: string, packageName: string): TonDeployment => { + try { + // eslint-disable-next-line @typescript-eslint/no-var-requires + return require(`@layerzerolabs/${packageName}/deployments/${envToFolder(env)}/${name}.json`) as TonDeployment + } catch (e) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + return require( + `@layerzerolabs/${packageName}/deployments/${envToFolderFallback(env)}/${name}.json` + ) as TonDeployment + } +} + +/** + * + * @param env The environment name for which to fetch the address + * @param name The name of the contract to fetch the address from + * @returns A deployed contract address + */ +export const getDeploymentAddress = (env: EnvironmentName, name: ContractName): string => + getDeployment(env, name).address + +/** + * + * @param env The environment name for which to fetch the address + * @param name The name of the contract to fetch the address from + * @param packageName The name of the package in which the deployment is located + * @returns A deployed contract address + */ +export const getDeploymentAddressFromPackage = (env: EnvironmentName, name: string, packageName: string): string => + getDeploymentFromPackage(env, name, packageName).address diff --git a/packages/devtools-ton/src/index.ts b/packages/devtools-ton/src/index.ts index 880b550c4..3fb90973a 100644 --- a/packages/devtools-ton/src/index.ts +++ b/packages/devtools-ton/src/index.ts @@ -1 +1,3 @@ export * from './transactions' +export * from './omnigraph' +export * from './getDeploymentAddress' diff --git a/packages/devtools-ton/src/omnigraph/coordinates.ts b/packages/devtools-ton/src/omnigraph/coordinates.ts new file mode 100644 index 000000000..3d7fd0ae6 --- /dev/null +++ b/packages/devtools-ton/src/omnigraph/coordinates.ts @@ -0,0 +1,42 @@ +import { TonClient } from '@ton/ton' +import pMemoize from 'p-memoize' + +import { formatEid, OmniPoint, type RpcUrlFactory } from '@layerzerolabs/devtools' +import { ChainType, EndpointId, endpointIdToChainType } from '@layerzerolabs/lz-definitions' + +import { TonClientFactory } from './types' + +export const isOmniPointOnTon = ({ eid }: OmniPoint): boolean => endpointIdToChainType(eid) === ChainType.TON + +export const defaultRpcUrlFactory: RpcUrlFactory = (eid) => { + switch (eid) { + case EndpointId.TON_V2_MAINNET: + return 'https://toncenter.com/api/v2/' + case EndpointId.TON_V2_TESTNET: + return 'https://testnet.toncenter.com/api/v2/' + } + + throw new Error(`Could not find a default TON RPC URL for eid ${eid} (${formatEid(eid)})`) +} + +/** + * Creates a TON RPC URL factory with the ability to specify overrides + * for specific `EndpointId`s. + * + * This is a convenience method for when custom RPC URLs can be provided, e.g. + * from environment variables. + * + * ``` + * const rpcUrlFactory = createRpcUrlFactory({ [EndpointId.TON_V2_MAINNET]: process.env.NETWORK_URL_TON_MAINNET }) + * ``` + * + * @param {Partial>} [overrides] An object mapping `EndpointId`s to RPC URLs. + * @returns {RpcUrlFactory} + */ +export const createRpcUrlFactory = + (overrides: Partial> = {}): RpcUrlFactory => + (eid) => + overrides[eid] ?? defaultRpcUrlFactory(eid) + +export const createTonClientFactory = (urlFactory: RpcUrlFactory = defaultRpcUrlFactory): TonClientFactory => + pMemoize(async (eid) => new TonClient({ endpoint: await urlFactory(eid) })) diff --git a/packages/devtools-ton/src/omnigraph/index.ts b/packages/devtools-ton/src/omnigraph/index.ts new file mode 100644 index 000000000..02b48ea20 --- /dev/null +++ b/packages/devtools-ton/src/omnigraph/index.ts @@ -0,0 +1,3 @@ +export * from './coordinates' +export * from './sdk' +export * from './types' diff --git a/packages/devtools-ton/src/omnigraph/sdk.ts b/packages/devtools-ton/src/omnigraph/sdk.ts new file mode 100644 index 000000000..8a22c9982 --- /dev/null +++ b/packages/devtools-ton/src/omnigraph/sdk.ts @@ -0,0 +1,29 @@ +import { formatOmniPoint, type OmniPoint, type OmniTransaction, IOmniSDK } from '@layerzerolabs/devtools' +import { Logger, createModuleLogger } from '@layerzerolabs/io-devtools' +import { TonClient } from '@ton/ton' + +/** + * Base class for all TON SDKs, providing some common functionality + * to reduce the boilerplate + */ +export abstract class OmniSDK implements IOmniSDK { + constructor( + public readonly tonClient: TonClient, + public readonly point: OmniPoint, + protected readonly logger: Logger = createModuleLogger(`TON SDK ${new.target.name} @ ${formatOmniPoint(point)}`) + ) {} + + /** + * Human readable label for this SDK + */ + get label(): string { + return formatOmniPoint(this.point) + } + + protected createTransaction(data: string): OmniTransaction { + return { + point: this.point, + data, + } + } +} diff --git a/packages/devtools-ton/src/omnigraph/types.ts b/packages/devtools-ton/src/omnigraph/types.ts new file mode 100644 index 000000000..004538c67 --- /dev/null +++ b/packages/devtools-ton/src/omnigraph/types.ts @@ -0,0 +1,4 @@ +import { EndpointBasedFactory } from '@layerzerolabs/devtools' +import { TonClient } from '@ton/ton' + +export type TonClientFactory = EndpointBasedFactory diff --git a/packages/devtools-ton/src/transactions/serde.ts b/packages/devtools-ton/src/transactions/serde.ts index 1bff9a22c..d96c736d0 100644 --- a/packages/devtools-ton/src/transactions/serde.ts +++ b/packages/devtools-ton/src/transactions/serde.ts @@ -28,6 +28,15 @@ export const serializeMessage = (message: Message): string => export const serializeMessageRelaxed = (message: MessageRelaxed): string => messageRelaxedToCell(message).toBoc().toString('base64') +/** + * Serializes a MessageRelaxed array into a string that can be passed to OmniTransaction data + * + * @param {MessageRelaxed[]} messages + * @returns {string} Base64 serialized message string + */ +export const serializeMessagesRelaxed = (messages: MessageRelaxed[]): string => + messages.map((msg) => messageRelaxedToCell(msg).toBoc().toString('base64')).join(',') //comma is a safe separator for base64 + /** * Deserializes a Message object from Base64 serialized representation * @@ -45,6 +54,15 @@ export const deserializeMessage = (data: string): Message => loadMessage(Cell.fr export const deserializeMessageRelaxed = (data: string): MessageRelaxed => loadMessageRelaxed(Cell.fromBase64(data).beginParse()) +/** + * Deserializes a MessageRelaxed array from Base64 serialized representation + * + * @param {string} data + * @returns {MessageRelaxed[]} + */ +export const deserializeMessagesRelaxed = (data: string): MessageRelaxed[] => + data.split(',').map((datum) => loadMessageRelaxed(Cell.fromBase64(datum).beginParse())) + /** * Tries to deserialize Base64 serialized data into a Message or MessageRelaxed object * diff --git a/packages/devtools-ton/src/transactions/signer.ts b/packages/devtools-ton/src/transactions/signer.ts index 2ecd4b56a..073c28ac0 100644 --- a/packages/devtools-ton/src/transactions/signer.ts +++ b/packages/devtools-ton/src/transactions/signer.ts @@ -7,10 +7,11 @@ import { AsyncRetriable, } from '@layerzerolabs/devtools' import type { EndpointId } from '@layerzerolabs/lz-definitions' -import type { Cell, OpenedContract, Contract, ContractProvider, MessageRelaxed } from '@ton/core' +import { Cell } from '@ton/core' +import type { OpenedContract, Contract, ContractProvider, MessageRelaxed } from '@ton/core' import { TonClient } from '@ton/ton' import type { KeyPair } from '@ton/crypto' -import { deserializeMessageRelaxed } from './serde' +import { deserializeMessagesRelaxed } from './serde' import assert from 'assert' import { createIsCellInTransaction, hasTransactionBounced, isTransactionSuccessful } from './state' import { createModuleLogger, Logger } from '@layerzerolabs/io-devtools' @@ -49,9 +50,8 @@ export class OmniSignerTON extends Omni constructor( eid: EndpointId, public readonly keyPair: KeyPair, - public readonly endpoint: string, public readonly wallet: TWalletContract, - public readonly client: TonClient = new TonClient({ endpoint }), + public readonly client: TonClient, protected readonly logger: Logger = createModuleLogger('OmniSignerTON') ) { super(eid) @@ -60,20 +60,24 @@ export class OmniSignerTON extends Omni } override getPoint(): OmniPoint | Promise { - return { eid: this.eid, address: this.keyPair.publicKey.toString('base64') } + return { eid: this.eid, address: `0:${this.openWallet.address.hash.toString('hex')}` } } - override sign(_transaction: OmniTransaction): Promise { - throw new Error('Method not implemented.') + override async sign(_transaction: OmniTransaction): Promise { + const seqno = await this.openWallet.getSeqno() + return ( + await this.wallet.createTransfer({ + seqno, + secretKey: this.keyPair.secretKey, + messages: deserializeMessagesRelaxed(_transaction.data), + }) + ) + .toBoc() + .toString('base64') } override async signAndSend(omniTransaction: OmniTransaction): Promise { - const seqno = await this.openWallet.getSeqno() - const cell = await this.wallet.createTransfer({ - seqno, - secretKey: this.keyPair.secretKey, - messages: [deserializeMessageRelaxed(omniTransaction.data)], - }) + const cell = Cell.fromBase64(await this.sign(omniTransaction)) await this.openWallet.send(cell) @@ -98,7 +102,6 @@ export class OmniSignerTON extends Omni assert(transactionState != null, `Transaction '${transactionHash}' missing from the API`) assert(!hasTransactionBounced(transactionState), `Transaction '${transactionHash}' has bounced`) assert(isTransactionSuccessful(transactionState), `Transaction '${transactionHash}' has not succeeded`) - return { transactionHash } }, } @@ -109,6 +112,7 @@ export class OmniSignerTON extends Omni enabled: true, numAttempts: Number.POSITIVE_INFINITY, maxDelay: 1_000, + onRetry: () => {}, //need this to prevent trying to log error that is too large }) protected async waitForCellSubmitted(cell: Cell, limit: number = 100) { const transactions = await this.client.getTransactions(this.wallet.address, { @@ -117,7 +121,6 @@ export class OmniSignerTON extends Omni const transaction = transactions.find(createIsCellInTransaction(cell)) assert(transaction != null, `Failed to locate cell ${cell.toString()} among the last ${limit} transactions`) - return transaction } } diff --git a/packages/devtools-ton/test/transactions/serde.test.ts b/packages/devtools-ton/test/transactions/serde.test.ts index 963b57f90..ff3e29a02 100644 --- a/packages/devtools-ton/test/transactions/serde.test.ts +++ b/packages/devtools-ton/test/transactions/serde.test.ts @@ -5,10 +5,12 @@ import { deserialize, deserializeMessage, deserializeMessageRelaxed, + deserializeMessagesRelaxed, messageRelaxedToCell, messageToCell, serializeMessage, serializeMessageRelaxed, + serializeMessagesRelaxed, } from '@/transactions/serde' describe('transactions/serde', () => { @@ -136,6 +138,45 @@ describe('transactions/serde', () => { }) }) + describe('serializeMessagesRelaxed', () => { + it('should serialize and deserialize an array of internal messages', () => { + fc.assert( + fc.property(fc.bigInt({ min: 0n, max: 1000n }), fc.boolean(), cellArbitrary, (value, bounce, body) => { + const messageRelaxed = internal({ + value, + to: wallet.address, + bounce, + body, + }) + const messageRelaxed2 = internal({ + value, + to: wallet.address, + bounce, + body, + }) + + const serialized = serializeMessagesRelaxed([messageRelaxed, messageRelaxed2]) + const deserialized = deserializeMessagesRelaxed(serialized) + + // FIXME Jest comparison operators don't work well with message objects + // so a workaround expectation is used + // + // See https://github.com/ton-core/ton-core/blob/e0ed819973daf0484dfbacd0c30a0dcfe4714f8d/src/types/MessageRelaxed.spec.ts + const serializedData = serialized.split(',') + expect( + Cell.fromBase64(serializedData[0]!).equals(messageRelaxedToCell(messageRelaxed)) + ).toBeTruthy() + expect( + Cell.fromBase64(serializedData[1]!).equals(messageRelaxedToCell(messageRelaxed2)) + ).toBeTruthy() + + const reserialized = serializeMessagesRelaxed(deserialized) + expect(reserialized).toEqual(serialized) + }) + ) + }) + }) + describe('deserialize', () => { it('should throw if passed an invalid message', () => { fc.assert( diff --git a/packages/devtools-ton/test/transactions/signer.test.ts b/packages/devtools-ton/test/transactions/signer.test.ts index c0857e25f..adae1b01b 100644 --- a/packages/devtools-ton/test/transactions/signer.test.ts +++ b/packages/devtools-ton/test/transactions/signer.test.ts @@ -1,7 +1,7 @@ import { OmniSignerTON, serializeMessageRelaxed } from '@/transactions' import { OmniTransaction } from '@layerzerolabs/devtools' import { EndpointId } from '@layerzerolabs/lz-definitions' -import { internal, WalletContractV3R2, WalletContractV4 } from '@ton/ton' +import { internal, TonClient, WalletContractV3R2, WalletContractV4 } from '@ton/ton' import { mnemonicToWalletKey } from '@ton/crypto' describe('transactions/signer', () => { @@ -9,17 +9,18 @@ describe('transactions/signer', () => { const mnemonic = process.env.MNEMONIC_TON || 'spoon key tower goat diesel labor camera movie chaos entry panic ceiling panel move sibling genius grunt rival buzz just velvet medal butter foam' + const client = new TonClient({ endpoint }) describe('OmniSignerTON', () => { describe('signAndSend', () => { it('should send a token transfer', async () => { - const eid = EndpointId.TRON_SANDBOX + const eid = EndpointId.TON_V2_SANDBOX const keyPair = await mnemonicToWalletKey(mnemonic.split(' ')) const signer = new OmniSignerTON( - EndpointId.TRON_SANDBOX, + EndpointId.TON_V2_SANDBOX, keyPair, - endpoint, - WalletContractV3R2.create({ workchain: 0, publicKey: keyPair.publicKey, walletId: 42 }) + WalletContractV3R2.create({ workchain: 0, publicKey: keyPair.publicKey, walletId: 42 }), + client ) const anotherWallet = WalletContractV4.create({ diff --git a/packages/devtools-ton/tsconfig.json b/packages/devtools-ton/tsconfig.json index c208b5a1e..7e48a0c98 100644 --- a/packages/devtools-ton/tsconfig.json +++ b/packages/devtools-ton/tsconfig.json @@ -4,6 +4,8 @@ "include": ["src", "test", "*.config.ts"], "compilerOptions": { "experimentalDecorators": true, + "target": "ES2020", + "module": "commonjs", "types": ["node", "jest"], "paths": { "@/*": ["./src/*"] diff --git a/packages/devtools/CHANGELOG.md b/packages/devtools/CHANGELOG.md index 4f7482a19..7332b17fd 100644 --- a/packages/devtools/CHANGELOG.md +++ b/packages/devtools/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/devtools +## 0.4.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.4.2 ### Patch Changes diff --git a/packages/devtools/package.json b/packages/devtools/package.json index dcec86165..1b96116d6 100644 --- a/packages/devtools/package.json +++ b/packages/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/devtools", - "version": "0.4.2", + "version": "0.4.3", "description": "Core utilities for working with LayerZero on-chain infrastructure", "repository": { "type": "git", @@ -38,9 +38,9 @@ "devDependencies": { "@ethersproject/bytes": "~5.7.0", "@ethersproject/constants": "~5.7.0", - "@layerzerolabs/io-devtools": "~0.1.13", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/test-devtools": "~0.4.2", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", @@ -55,8 +55,8 @@ }, "peerDependencies": { "@ethersproject/bytes": "~5.7.0", - "@layerzerolabs/io-devtools": "~0.1.13", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "zod": "^3.22.4" }, "publishConfig": { diff --git a/packages/devtools/test/omnigraph/__snapshots__/format.test.ts.snap b/packages/devtools/test/omnigraph/__snapshots__/format.test.ts.snap index d4e3c284f..fcefb0194 100644 --- a/packages/devtools/test/omnigraph/__snapshots__/format.test.ts.snap +++ b/packages/devtools/test/omnigraph/__snapshots__/format.test.ts.snap @@ -214,6 +214,20 @@ exports[`omnigraph/format formatEid should format 330 correctly 1`] = `"ISLANDER exports[`omnigraph/format formatEid should format 331 correctly 1`] = `"MP1_MAINNET"`; +exports[`omnigraph/format formatEid should format 332 correctly 1`] = `"SONIC_MAINNET"`; + +exports[`omnigraph/format formatEid should format 333 correctly 1`] = `"ROOTSTOCK_MAINNET"`; + +exports[`omnigraph/format formatEid should format 334 correctly 1`] = `"SOPHON_MAINNET"`; + +exports[`omnigraph/format formatEid should format 335 correctly 1`] = `"SWELL_MAINNET"`; + +exports[`omnigraph/format formatEid should format 336 correctly 1`] = `"FLOW_MAINNET"`; + +exports[`omnigraph/format formatEid should format 337 correctly 1`] = `"BL4_MAINNET"`; + +exports[`omnigraph/format formatEid should format 338 correctly 1`] = `"BL5_MAINNET"`; + exports[`omnigraph/format formatEid should format 420 correctly 1`] = `"TRON_MAINNET"`; exports[`omnigraph/format formatEid should format 10102 correctly 1`] = `"BSC_TESTNET"`; @@ -544,6 +558,16 @@ exports[`omnigraph/format formatEid should format 10352 correctly 1`] = `"NIBIRU exports[`omnigraph/format formatEid should format 10353 correctly 1`] = `"SWELL_TESTNET"`; +exports[`omnigraph/format formatEid should format 10354 correctly 1`] = `"MEMECOREFORMICARIUM_TESTNET"`; + +exports[`omnigraph/format formatEid should format 10355 correctly 1`] = `"APEXFUSIONNEXUS_TESTNET"`; + +exports[`omnigraph/format formatEid should format 10356 correctly 1`] = `"GOAT_TESTNET"`; + +exports[`omnigraph/format formatEid should format 10357 correctly 1`] = `"BL6_TESTNET"`; + +exports[`omnigraph/format formatEid should format 10358 correctly 1`] = `"INK_TESTNET"`; + exports[`omnigraph/format formatEid should format 10420 correctly 1`] = `"TRON_TESTNET"`; exports[`omnigraph/format formatEid should format 20008 correctly 1`] = `"APTOS_SANDBOX"`; @@ -786,6 +810,20 @@ exports[`omnigraph/format formatEid should format 30330 correctly 1`] = `"ISLAND exports[`omnigraph/format formatEid should format 30331 correctly 1`] = `"MP1_V2_MAINNET"`; +exports[`omnigraph/format formatEid should format 30332 correctly 1`] = `"SONIC_V2_MAINNET"`; + +exports[`omnigraph/format formatEid should format 30333 correctly 1`] = `"ROOTSTOCK_V2_MAINNET"`; + +exports[`omnigraph/format formatEid should format 30334 correctly 1`] = `"SOPHON_V2_MAINNET"`; + +exports[`omnigraph/format formatEid should format 30335 correctly 1`] = `"SWELL_V2_MAINNET"`; + +exports[`omnigraph/format formatEid should format 30336 correctly 1`] = `"FLOW_V2_MAINNET"`; + +exports[`omnigraph/format formatEid should format 30337 correctly 1`] = `"BL4_V2_MAINNET"`; + +exports[`omnigraph/format formatEid should format 30338 correctly 1`] = `"BL5_V2_MAINNET"`; + exports[`omnigraph/format formatEid should format 30343 correctly 1`] = `"TON_V2_MAINNET"`; exports[`omnigraph/format formatEid should format 30420 correctly 1`] = `"TRON_V2_MAINNET"`; @@ -1120,6 +1158,16 @@ exports[`omnigraph/format formatEid should format 40352 correctly 1`] = `"NIBIRU exports[`omnigraph/format formatEid should format 40353 correctly 1`] = `"SWELL_V2_TESTNET"`; +exports[`omnigraph/format formatEid should format 40354 correctly 1`] = `"MEMECOREFORMICARIUM_V2_TESTNET"`; + +exports[`omnigraph/format formatEid should format 40355 correctly 1`] = `"APEXFUSIONNEXUS_V2_TESTNET"`; + +exports[`omnigraph/format formatEid should format 40356 correctly 1`] = `"GOAT_V2_TESTNET"`; + +exports[`omnigraph/format formatEid should format 40357 correctly 1`] = `"BL6_V2_TESTNET"`; + +exports[`omnigraph/format formatEid should format 40358 correctly 1`] = `"INK_V2_TESTNET"`; + exports[`omnigraph/format formatEid should format 40420 correctly 1`] = `"TRON_V2_TESTNET"`; exports[`omnigraph/format formatEid should format 50008 correctly 1`] = `"APTOS_V2_SANDBOX"`; diff --git a/packages/export-deployments/package.json b/packages/export-deployments/package.json index 049bff9ed..8aec073ce 100644 --- a/packages/export-deployments/package.json +++ b/packages/export-deployments/package.json @@ -30,7 +30,7 @@ "typescript": "^5.4.4" }, "devDependencies": { - "@layerzerolabs/io-devtools": "~0.1.12", + "@layerzerolabs/io-devtools": "~0.1.14", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", diff --git a/packages/metadata-tools/.eslintignore b/packages/metadata-tools/.eslintignore new file mode 100644 index 000000000..db4c6d9b6 --- /dev/null +++ b/packages/metadata-tools/.eslintignore @@ -0,0 +1,2 @@ +dist +node_modules \ No newline at end of file diff --git a/packages/metadata-tools/.eslintrc.json b/packages/metadata-tools/.eslintrc.json new file mode 100644 index 000000000..be97c53fb --- /dev/null +++ b/packages/metadata-tools/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "../../.eslintrc.json" +} diff --git a/packages/metadata-tools/.gitignore b/packages/metadata-tools/.gitignore new file mode 100644 index 000000000..06cf65390 --- /dev/null +++ b/packages/metadata-tools/.gitignore @@ -0,0 +1 @@ +cache diff --git a/packages/metadata-tools/.prettierignore b/packages/metadata-tools/.prettierignore new file mode 100644 index 000000000..763301fc0 --- /dev/null +++ b/packages/metadata-tools/.prettierignore @@ -0,0 +1,2 @@ +dist/ +node_modules/ \ No newline at end of file diff --git a/packages/metadata-tools/CHANGELOG.md b/packages/metadata-tools/CHANGELOG.md new file mode 100644 index 000000000..77ee065bb --- /dev/null +++ b/packages/metadata-tools/CHANGELOG.md @@ -0,0 +1,10 @@ +# @layerzerolabs/metadata-tools + +## 0.0.2 + +### Patch Changes + +- d255778: add metadata-tools package +- Updated dependencies [1d2abff] + - @layerzerolabs/devtools-evm-hardhat@2.0.4 + - @layerzerolabs/ua-devtools@3.0.2 diff --git a/packages/metadata-tools/README.md b/packages/metadata-tools/README.md new file mode 100644 index 000000000..396005d25 --- /dev/null +++ b/packages/metadata-tools/README.md @@ -0,0 +1,38 @@ +

+ + LayerZero + +

+ +

@layerzerolabs/metadata-tools

+ + +

+ + NPM Version + + Downloads + + NPM License +

+ +## Installation + +```bash +yarn add @layerzerolabs/metadata-tools + +pnpm add @layerzerolabs/metadata-tools + +npm install @layerzerolabs/metadata-tools +``` + +## Usage + +```typescript +import { generateConnectionsConfig } from "@layerzerolabs/metadata-tools"; + +// [srcContract, dstContract, [requiredDVNs, [optionalDVNs, threshold]], [srcToDstConfirmations, dstToSrcConfirmations]], [enforcedOptionsSrcToDst, enforcedOptionsDstToSrc] +const connections = await generateConnectionsConfig([ + [avalancheContract, polygonContract, [['LayerZero'], []], [1, 1], [EVM_ENFORCED_OPTIONS, EVM_ENFORCED_OPTIONS]], +]); +``` diff --git a/packages/metadata-tools/jest.config.js b/packages/metadata-tools/jest.config.js new file mode 100644 index 000000000..ff88d2a0a --- /dev/null +++ b/packages/metadata-tools/jest.config.js @@ -0,0 +1,12 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + cache: false, + reporters: [['github-actions', { silent: false }], 'default'], + testEnvironment: 'node', + moduleNameMapper: { + '^@/(.*)$': '/src/$1', + }, + transform: { + '^.+\\.(t|j)sx?$': '@swc/jest', + }, +}; diff --git a/packages/metadata-tools/package.json b/packages/metadata-tools/package.json new file mode 100644 index 000000000..5670645d5 --- /dev/null +++ b/packages/metadata-tools/package.json @@ -0,0 +1,56 @@ +{ + "name": "@layerzerolabs/metadata-tools", + "version": "0.0.2", + "description": "LayerZero metadata API tools", + "repository": { + "type": "git", + "url": "git+https://github.com/LayerZero-Labs/devtools.git", + "directory": "packages/metadata-tools" + }, + "license": "MIT", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/index.js", + "import": "./dist/index.mjs" + }, + "./*": { + "types": "./dist/*.d.ts", + "require": "./dist/*.js", + "import": "./dist/*.mjs" + } + }, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "prebuild": "$npm_execpath tsc --noEmit", + "build": "$npm_execpath tsup", + "clean": "rm -rf dist", + "dev": "$npm_execpath tsup --watch", + "lint": "$npm_execpath eslint '**/*.{js,ts,json}'", + "lint:fix": "eslint --fix '**/*.{js,ts,json}'", + "test": "jest" + }, + "devDependencies": { + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@swc/core": "^1.4.0", + "@swc/jest": "^0.2.36", + "@types/jest": "^29.5.12", + "jest": "^29.7.0", + "tslib": "~2.6.2", + "tsup": "~8.0.1", + "typescript": "^5.4.4" + }, + "peerDependencies": { + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/ua-devtools": "~3.0.2" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/metadata-tools/src/config-metadata.ts b/packages/metadata-tools/src/config-metadata.ts new file mode 100644 index 000000000..b8f089194 --- /dev/null +++ b/packages/metadata-tools/src/config-metadata.ts @@ -0,0 +1,208 @@ +import type { OmniEdgeHardhat } from '@layerzerolabs/devtools-evm-hardhat' +import type { OAppEdgeConfig } from '@layerzerolabs/ua-devtools' +import { IMetadata } from './types' +import { TwoWayConfig } from './types' + +const METADATA_URL = process.env.LZ_METADATA_URL || 'https://metadata.layerzero-api.com/v1/metadata' + +function getEndpointIdDeployment(eid: number, metadata: IMetadata) { + const srcEidString = eid.toString() + for (const objectKey in metadata) { + const entry = metadata[objectKey] + + if (typeof entry?.deployments !== 'undefined') { + for (const deployment of entry.deployments) { + if (srcEidString === deployment.eid) { + return deployment + } + } + } + } + + throw new Error(`Can't find endpoint with eid: "${eid}",`) +} + +export function DVNsToAddresses(dvns: string[], chainKey: string, metadata: IMetadata) { + if (dvns.length === 0) { + return [] + } + + const dvnAddresses: string[] = [] + const seenDVNs = new Set() + + if (!metadata[chainKey]?.dvns) { + throw new Error(`Can't find DVNs for chainKey: "${chainKey}".`) + } + + const metadataDVNs = Object.entries(metadata[chainKey].dvns) + + for (const dvn of dvns) { + if (seenDVNs.has(dvn)) { + throw new Error(`Duplicate DVN name found: "${dvn}".`) + } + seenDVNs.add(dvn) + + let i = 0 + for (const [dvnAddress, dvnDetails] of metadataDVNs) { + if (dvnDetails.canonicalName === dvn && !dvnDetails.lzReadCompatible) { + if (dvnDetails.deprecated) { + console.log(`Warning: DVN "${dvn}" is deprecated.`) + } + + dvnAddresses.push(dvnAddress) + break + } + + if (i === metadataDVNs.length - 1) { + throw new Error( + `Can't find DVN: "${dvn}" on chainKey: "${chainKey}". Double check you're using valid DVN canonical name (not an address).` + ) + } + + i++ + } + } + + if (dvns.length !== dvnAddresses.length) { + throw new Error(`Can't find all DVNs: "${dvns.join(', ')}".`) + } + + return dvnAddresses.sort() +} + +export async function translatePathwayToConfig( + pathway: TwoWayConfig, + metadata: IMetadata +): Promise[]> { + const configs: OmniEdgeHardhat[] = [] + + const sourceContract = pathway[0] + const destinationContract = pathway[1] + const [requiredDVNs, optionalDVNConfig] = pathway[2] + const [sourceToDestinationConfirmations, destinationToSourceConfirmations] = pathway[3] + const [enforcedOptionsSrcToDst, enforcedOptionsDstToSrc] = pathway[4] + + const optionalDVNs = optionalDVNConfig[0] + const optionalDVNThreshold = optionalDVNConfig[1] || 0 + + if (optionalDVNThreshold > (optionalDVNs?.length || 0)) { + throw new Error(`Optional DVN threshold is greater than the number of optional DVNs.`) + } + + const sourceLZDeployment = getEndpointIdDeployment(sourceContract.eid, metadata) + const destinationLZDeployment = getEndpointIdDeployment(destinationContract.eid, metadata) + + const sourceRequiredDVNs = DVNsToAddresses(requiredDVNs, sourceLZDeployment.chainKey, metadata) + const destinationRequiredDVNs = DVNsToAddresses(requiredDVNs, destinationLZDeployment.chainKey, metadata) + + let sourceOptionalDVNs: string[] = [] + let destinationOptionalDVNs: string[] = [] + + if (optionalDVNs) { + sourceOptionalDVNs = DVNsToAddresses(optionalDVNs, sourceLZDeployment.chainKey, metadata) + destinationOptionalDVNs = DVNsToAddresses(optionalDVNs, destinationLZDeployment.chainKey, metadata) + } + + if (!sourceLZDeployment.sendUln302 || !sourceLZDeployment.receiveUln302 || !sourceLZDeployment.executor) { + throw new Error( + `Can't find sendUln302, receiveUln302 or executor for source endpoint with eid: "${sourceContract.eid}".` + ) + } + + if ( + !destinationLZDeployment.sendUln302 || + !destinationLZDeployment.receiveUln302 || + !destinationLZDeployment.executor + ) { + throw new Error( + `Can't find sendUln302, receiveUln302 or executor for destination endpoint with eid: "${destinationContract.eid}".` + ) + } + + const sourceToDestinationConfig: OmniEdgeHardhat = { + from: sourceContract, + to: destinationContract, + config: { + sendLibrary: sourceLZDeployment.sendUln302.address, + receiveLibraryConfig: { + receiveLibrary: sourceLZDeployment.receiveUln302.address, + gracePeriod: BigInt(0), + }, + sendConfig: { + executorConfig: { + maxMessageSize: 10000, + executor: sourceLZDeployment.executor.address, + }, + ulnConfig: { + confirmations: BigInt(sourceToDestinationConfirmations), + requiredDVNs: sourceRequiredDVNs, + optionalDVNs: sourceOptionalDVNs, + optionalDVNThreshold, + }, + }, + enforcedOptions: enforcedOptionsSrcToDst, + }, + } + + const destinationToSourceConfig: OmniEdgeHardhat = { + from: destinationContract, + to: sourceContract, + config: { + sendLibrary: destinationLZDeployment.sendUln302.address, + receiveLibraryConfig: { + receiveLibrary: destinationLZDeployment.receiveUln302.address, + gracePeriod: BigInt(0), + }, + receiveConfig: { + ulnConfig: { + confirmations: BigInt(sourceToDestinationConfirmations), + requiredDVNs: destinationRequiredDVNs, + optionalDVNs: destinationOptionalDVNs, + optionalDVNThreshold, + }, + }, + }, + } + + if (destinationToSourceConfirmations) { + sourceToDestinationConfig.config.receiveConfig = { + ulnConfig: { + confirmations: BigInt(destinationToSourceConfirmations), + requiredDVNs: sourceRequiredDVNs, + optionalDVNs: sourceOptionalDVNs, + optionalDVNThreshold, + }, + } + + destinationToSourceConfig.config.enforcedOptions = enforcedOptionsDstToSrc + + destinationToSourceConfig.config.sendConfig = { + executorConfig: { + maxMessageSize: 10000, + executor: destinationLZDeployment.executor.address, + }, + ulnConfig: { + confirmations: BigInt(destinationToSourceConfirmations), + requiredDVNs: destinationRequiredDVNs, + optionalDVNs: destinationOptionalDVNs, + optionalDVNThreshold, + }, + } + } + + configs.push(sourceToDestinationConfig) + configs.push(destinationToSourceConfig) + + return configs +} + +export async function generateConnectionsConfig(pathways: TwoWayConfig[]) { + const metadata = (await fetch(METADATA_URL).then((res) => res.json())) as IMetadata + const connections: OmniEdgeHardhat[] = [] + + for (const pathway of pathways) { + connections.push(...(await translatePathwayToConfig(pathway, metadata))) + } + + return connections +} diff --git a/packages/metadata-tools/src/index.ts b/packages/metadata-tools/src/index.ts new file mode 100644 index 000000000..a0a0d111c --- /dev/null +++ b/packages/metadata-tools/src/index.ts @@ -0,0 +1,2 @@ +export * from './config-metadata' +export * from './types' diff --git a/packages/metadata-tools/src/types.ts b/packages/metadata-tools/src/types.ts new file mode 100644 index 000000000..2ccca4e14 --- /dev/null +++ b/packages/metadata-tools/src/types.ts @@ -0,0 +1,91 @@ +import type { OmniPointHardhat } from '@layerzerolabs/devtools-evm-hardhat' +import type { OAppEnforcedOption } from '@layerzerolabs/ua-devtools' + +// [srcContract, dstContract, [requiredDVNs, [optionalDVNs, threshold]], [srcToDstConfirmations, dstToSrcConfirmations]], [enforcedOptionsSrcToDst, enforcedOptionsDstToSrc] +export type TwoWayConfig = [ + OmniPointHardhat, // srcContract + OmniPointHardhat, // dstContract + [string[], [string[], number] | []], // [requiredDVNs, [optionalDVNs, threshold]] + [number, number | undefined], // [srcToDstConfirmations, dstToSrcConfirmations] + [OAppEnforcedOption[] | undefined, OAppEnforcedOption[] | undefined], // [enforcedOptionsSrcToDst, enforcedOptionsDstToSrc] +] + +export interface IMetadata { + [key: string]: { + created: string + updated: string + tableName: string + environment: string + blockExplorers?: { url: string }[] + deployments?: { + eid: string + chainKey: string + stage: string + version: number + endpoint?: { address: string } + relayerV2?: { address: string } + ultraLightNodeV2?: { address: string } + nonceContract?: { address: string } + executor?: { address: string } + deadDVN?: { address: string } + endpointV2?: { address: string } + sendUln302?: { address: string } + lzExecutor?: { address: string } + sendUln301?: { address: string } + receiveUln301?: { address: string } + receiveUln302?: { address: string } + }[] + chainDetails?: { + chainType: string + chainKey: string + nativeChainId?: number + chainLayer: string + chainStack?: string + nativeCurrency: { + name?: string + symbol: string + cgId?: string + cmcId: number + decimals: number + } + cgNetworkId?: string + shortName?: string + mainnetChainName?: string + name?: string + } + dvns?: { + [address: string]: { + version: number + canonicalName: string + id: string + deprecated?: boolean + lzReadCompatible?: boolean + } + } + rpcs?: { url: string; weight?: number }[] + addressToOApp?: { + [address: string]: { + id: string + canonicalName: string + type?: string + } + } + chainName: string + tokens?: { + [address: string]: { + symbol: string + cgId?: string + cmcId?: number + type: string + decimals: number + peggedTo?: { + symbol: string + chainName: string + address: string + programaticallyPegged?: boolean + } + } + } + chainKey: string + } +} diff --git a/packages/metadata-tools/test/__snapshots__/config-metadata.test.ts.snap b/packages/metadata-tools/test/__snapshots__/config-metadata.test.ts.snap new file mode 100644 index 000000000..63a37c699 --- /dev/null +++ b/packages/metadata-tools/test/__snapshots__/config-metadata.test.ts.snap @@ -0,0 +1,90 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`config-metadata translatePathwayToConfig should be able to translate a pathway to a config 1`] = ` +[ + { + "config": { + "enforcedOptions": undefined, + "receiveConfig": { + "ulnConfig": { + "confirmations": 1n, + "optionalDVNThreshold": 0, + "optionalDVNs": [], + "requiredDVNs": [ + "0x9f0e79aeb198750f963b6f30b99d87c6ee5a0467", + ], + }, + }, + "receiveLibraryConfig": { + "gracePeriod": 0n, + "receiveLibrary": "0x819F0FAF2cb1Fba15b9cB24c9A2BDaDb0f895daf", + }, + "sendConfig": { + "executorConfig": { + "executor": "0xa7BFA9D51032F82D649A501B6a1f922FC2f7d4e3", + "maxMessageSize": 10000, + }, + "ulnConfig": { + "confirmations": 1n, + "optionalDVNThreshold": 0, + "optionalDVNs": [], + "requiredDVNs": [ + "0x9f0e79aeb198750f963b6f30b99d87c6ee5a0467", + ], + }, + }, + "sendLibrary": "0x69BF5f48d2072DfeBc670A1D19dff91D0F4E8170", + }, + "from": { + "contractName": "MyOFT", + "eid": 40106, + }, + "to": { + "address": "HBTWw2VKNLuDBjg9e5dArxo5axJRX8csCEBcCo3CFdAy", + "eid": 40168, + }, + }, + { + "config": { + "enforcedOptions": undefined, + "receiveConfig": { + "ulnConfig": { + "confirmations": 1n, + "optionalDVNThreshold": 0, + "optionalDVNs": [], + "requiredDVNs": [ + "4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb", + ], + }, + }, + "receiveLibraryConfig": { + "gracePeriod": 0n, + "receiveLibrary": "7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH", + }, + "sendConfig": { + "executorConfig": { + "executor": "AwrbHeCyniXaQhiJZkLhgWdUCteeWSGaSN1sTfLiY7xK", + "maxMessageSize": 10000, + }, + "ulnConfig": { + "confirmations": 1n, + "optionalDVNThreshold": 0, + "optionalDVNs": [], + "requiredDVNs": [ + "4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb", + ], + }, + }, + "sendLibrary": "7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH", + }, + "from": { + "address": "HBTWw2VKNLuDBjg9e5dArxo5axJRX8csCEBcCo3CFdAy", + "eid": 40168, + }, + "to": { + "contractName": "MyOFT", + "eid": 40106, + }, + }, +] +`; diff --git a/packages/metadata-tools/test/config-metadata.test.ts b/packages/metadata-tools/test/config-metadata.test.ts new file mode 100644 index 000000000..67a4b8042 --- /dev/null +++ b/packages/metadata-tools/test/config-metadata.test.ts @@ -0,0 +1,108 @@ +import { DVNsToAddresses, translatePathwayToConfig } from '@/config-metadata' +import { IMetadata } from '@/types' + +import fujiMetadata from './data/fuji.json' +import solanaMainnetMetadata from './data/solana-mainnet.json' +import solanaTestnetMetadata from './data/solana-testnet.json' + +describe('config-metadata', () => { + const metadata: IMetadata = { + fuji: fujiMetadata, + solana: solanaMainnetMetadata, + 'solana-testnet': solanaTestnetMetadata, + } + + describe('translatePathwayToConfig', () => { + it('should be able to translate a pathway to a config', async () => { + const avalancheContract = { + eid: 40106, + contractName: 'MyOFT', + } + + const solanaContract = { + eid: 40168, + address: 'HBTWw2VKNLuDBjg9e5dArxo5axJRX8csCEBcCo3CFdAy', + } + + const translatedConfig = await translatePathwayToConfig( + [avalancheContract, solanaContract, [['LayerZero Labs'], []], [1, 1], [undefined, undefined]], + metadata + ) + + expect(translatedConfig).toMatchSnapshot() + }) + }) + + describe('DVNsToAddresses', () => { + it('returns an empty array if no DVNs are provided', () => { + expect(DVNsToAddresses([], 'fuji', metadata)).toStrictEqual([]) + }) + + it('should correctly parse DVN addresses', () => { + expect(DVNsToAddresses(['LayerZero Labs'], 'fuji', metadata)).toStrictEqual([ + '0x9f0e79aeb198750f963b6f30b99d87c6ee5a0467', + ]) + }) + + it('sorts the EVM addresses', () => { + expect( + DVNsToAddresses(['LayerZero Labs', 'Nethermind', 'Google', 'Gitcoin'], 'fuji', metadata) + ).toStrictEqual([ + '0x071fbf35b35d48afc3edf84f0397980c25531560', + '0x7883f83ea40a56137a63baf93bfee5b9b8c1c447', + '0x9f0e79aeb198750f963b6f30b99d87c6ee5a0467', + '0xa4652582077afc447ea7c9e984d656ee4963fe95', + ]) + }) + + it('sorts the Solana addresses', () => { + expect( + DVNsToAddresses(['LayerZero Labs', 'Nethermind', 'Paxos', 'Horizen', 'Google'], 'solana', metadata) + ).toStrictEqual([ + '4HxXbLv37XrivKukEbofybpHr7C8HUGJzd4B5T9USpGh', + '4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb', + 'F7gu9kLcpn4bSTZn183mhn2RXUuMy7zckdxJZdUjuALw', + 'GPjyWr8vCotGuFubDpTxDxy9Vj1ZeEN4F2dwRmFiaGab', + 'HR9NQKK1ynW9NzgdM37dU5CBtqRHTukmbMKS7qkwSkHX', + ]) + }) + + it('should not support hex string addresses', () => { + expect(() => + DVNsToAddresses(['0xa4652582077afc447ea7c9e984d656ee4963fe95', 'LayerZero Labs'], 'fuji', metadata) + ).toThrow( + `Can't find DVN: "0xa4652582077afc447ea7c9e984d656ee4963fe95" on chainKey: "fuji". Double check you're using valid DVN canonical name (not an address).` + ) + }) + + it('should not support Solana addresses', () => { + expect(() => DVNsToAddresses(['4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb'], 'solana', metadata)).toThrow( + `Can't find DVN: "4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb" on chainKey: "solana". Double check you're using valid DVN canonical name (not an address).` + ) + }) + + it('should throw error for invalid chain key', () => { + expect(() => DVNsToAddresses(['LayerZero Labs'], 'invalid_chain', metadata)).toThrow( + `Can't find DVNs for chainKey: "invalid_chain".` + ) + }) + + it('should throw error for non-existent DVN name', () => { + expect(() => DVNsToAddresses(['Non Existent DVN'], 'fuji', metadata)).toThrow( + `Can't find DVN: "Non Existent DVN" on chainKey: "fuji". Double check you're using valid DVN canonical name (not an address).` + ) + }) + + it('should be case sensitive for DVN names', () => { + expect(() => DVNsToAddresses(['layerzero labs'], 'fuji', metadata)).toThrow( + `Can't find DVN: "layerzero labs" on chainKey: "fuji". Double check you're using valid DVN canonical name (not an address).` + ) + }) + + it('should handle duplicate DVN names', () => { + expect(() => DVNsToAddresses(['LayerZero Labs', 'LayerZero Labs'], 'fuji', metadata)).toThrow( + `Duplicate DVN name found: "LayerZero Labs".` + ) + }) + }) +}) diff --git a/packages/metadata-tools/test/data/fuji.json b/packages/metadata-tools/test/data/fuji.json new file mode 100644 index 000000000..089cb6eeb --- /dev/null +++ b/packages/metadata-tools/test/data/fuji.json @@ -0,0 +1,346 @@ +{ + "created": "2024-12-12T03:31:20.000Z", + "updated": "2024-12-12T03:31:20.000Z", + "tableName": "layerzero-chain_metadata", + "environment": "testnet", + "blockExplorers": [ + { + "url": "https://cchain.explorer.avax-test.network" + } + ], + "deployments": [ + { + "ultraLightNode": { + "address": "0x0848B8AD17D4003dDe1f1B7eF1FdBA4B629Da97e" + }, + "eid": "10106", + "relayer": { + "address": "0xd035e64324bc470ee872062D508DA9c2772f14b5" + }, + "endpoint": { + "address": "0x93f54D755A063cE7bB9e6Ac47Eccc8e33411d706" + }, + "chainKey": "fuji", + "stage": "testnet", + "relayerV2": { + "address": "0xA30444B26C171B27c6B3698544490Affa2e12119" + }, + "ultraLightNodeV2": { + "address": "0xfDDAFFa49e71dA3ef0419a303a6888F94bB5Ba18" + }, + "version": 1, + "nonceContract": { + "address": "0xB401d261F971E550FAeE4Bb0D28f92a30E812105" + } + }, + { + "eid": "40106", + "chainKey": "fuji", + "stage": "testnet", + "executor": { + "address": "0xa7BFA9D51032F82D649A501B6a1f922FC2f7d4e3" + }, + "endpointV2": { + "address": "0x6EDCE65403992e310A62460808c4b910D972f10f" + }, + "sendUln302": { + "address": "0x69BF5f48d2072DfeBc670A1D19dff91D0F4E8170" + }, + "lzExecutor": { + "address": "0x1356D9201036A216836925803512649d6BB2395e" + }, + "sendUln301": { + "address": "0x184e24e31657Cf853602589fe5304b144a826c85" + }, + "receiveUln301": { + "address": "0x91df17bF1Ced54c6169e1E24722C0a88a447cBAf" + }, + "version": 2, + "receiveUln302": { + "address": "0x819F0FAF2cb1Fba15b9cB24c9A2BDaDb0f895daf" + } + } + ], + "chainDetails": { + "chainKey": "fuji", + "nativeChainId": 43113, + "chainLayer": "L1", + "nativeCurrency": { + "name": "Avalanche Token", + "symbol": "AVAX", + "cgId": "avalanche-2", + "cmcId": 5805, + "decimals": 18 + }, + "name": "Fuji", + "chainType": "evm", + "shortName": "Avalanche" + }, + "dvns": { + "0xca5ab7adcd3ea879f1a1c4eee81eaccd250173e4": { + "version": 2, + "canonicalName": "Switchboard", + "id": "switchboard" + }, + "0x8ca279897cde74350bd880737fd60c047d6d3d64": { + "version": 2, + "canonicalName": "Bitgo", + "id": "bitgo" + }, + "0x9f0e79aeb198750f963b6f30b99d87c6ee5a0467": { + "version": 2, + "canonicalName": "LayerZero Labs", + "id": "layerzero-labs" + }, + "0x92cfdb3789693c2ae7225fcc2c263de94d630be4": { + "version": 1, + "canonicalName": "TSS", + "id": "tss" + }, + "0xe0f3389bf8a8aa1576b420d888cd462483fdc2a0": { + "version": 2, + "canonicalName": "Delegate", + "id": "delegate" + }, + "0xfde647565009b33b1df02689d5873bffff15d907": { + "version": 2, + "canonicalName": "Stablelab", + "id": "stablelab" + }, + "0xdbec329a5e6d7fb0113eb0a098750d2afd61e9ae": { + "version": 2, + "canonicalName": "P2P", + "id": "p2p" + }, + "0xefdd92121acb3acd6e2f09dd810752d8da3dfdaf": { + "version": 2, + "canonicalName": "Republic", + "id": "republic-crypto" + }, + "0x071fbf35b35d48afc3edf84f0397980c25531560": { + "version": 2, + "canonicalName": "Gitcoin", + "id": "gitcoin" + }, + "0xa4652582077afc447ea7c9e984d656ee4963fe95": { + "version": 2, + "canonicalName": "Google", + "id": "google-cloud" + }, + "0x7883f83ea40a56137a63baf93bfee5b9b8c1c447": { + "version": 2, + "canonicalName": "Nethermind", + "id": "nethermind" + }, + "0x0d88ab4c8e8f89d8d758cbd5a6373f86f7bd737b": { + "version": 2, + "canonicalName": "BWare", + "id": "bware-labs" + } + }, + "rpcs": [ + { + "url": "https://api.avax-test.network/ext/bc/C/rpc" + }, + { + "url": "https://rpc.ankr.com/avalanche_fuji" + } + ], + "addressToOApp": { + "0x5164db46a18c8680393b6df36c0bcc724078a4d9": { + "id": "shibx", + "canonicalName": "SHIBX" + }, + "0x88fee109bc31132ca518165e4383f927cb140eca": { + "id": "dexalot", + "canonicalName": "Dexalot" + }, + "0xe9e30a0ad0d8af5cf2606ea720052e28d6fcbaaf": { + "id": "holograph", + "canonicalName": "Holograph" + }, + "0xa4125191e017cdf143255371a9e056f83a839b42": { + "id": "beam-bridge", + "canonicalName": "Beam Bridge" + }, + "0xc2b5190c4e766212eb0a7065acb623a4c003a4bc": { + "id": "swapsicle", + "canonicalName": "Swapsicle" + }, + "0xc360540950f50376e20ec3c06a5d93adf2728daf": { + "id": "beam-bridge", + "canonicalName": "Beam Bridge" + }, + "0xfa12ffef9d6f0b3f18c60b3d219b9e5136b81926": { + "id": "tradable", + "canonicalName": "Tradable" + }, + "0x9038f55ca0e2af8c4413bfe2855b912116ee0be7": { + "id": "synthr", + "canonicalName": "SYNTHR" + }, + "0xa67a22d0227a92fb40ed5b4d6aa8ed01e09e4b94": { + "id": "tapiocadao", + "canonicalName": "TapiocaDAO" + }, + "0xd315ead5c0fc0fb87fdb8b1bb48323fb2ad7adaf": { + "id": "tapiocadao", + "canonicalName": "TapiocaDAO" + }, + "0x6f484eacd997d9880205af22f6a4881ea0e1ccd7": { + "id": "holograph", + "canonicalName": "Holograph" + }, + "0x034697223c82c3abec358d0ccd68f5713fc21011": { + "id": "gh0stly-gh0sts", + "canonicalName": "Gh0stly Gh0sts" + }, + "0x225436ba1b4096afb14c374b8d1c6fd666e2fb41": { + "id": "synthr", + "canonicalName": "SYNTHR" + }, + "0x7e562c90c2ad0295e837b2b4a4b42301e19faa33": { + "id": "tapiocadao", + "canonicalName": "TapiocaDAO" + }, + "0x777c19834a1a2ff6353a1e9cfb7c799ed7943a11": { + "id": "holograph", + "canonicalName": "Holograph" + }, + "0xbdb2d676b35ee4ed0862614572e9f375b06c4a9a": { + "id": "orderly-network", + "canonicalName": "Orderly Network" + }, + "0x6175a322e284e6a5ff5f8bcdbe82d30b047e22d4": { + "id": "canto", + "canonicalName": "Canto" + }, + "0x803305930c1bbae396d03f496a7bf53ad7fd4303": { + "id": "holograph", + "canonicalName": "Holograph" + }, + "0xc9de4ee312b90d42e53377a0ca7ffc5c8bf2b490": { + "id": "tapiocadao", + "canonicalName": "TapiocaDAO" + }, + "0x9722c903eb9847bb88cd1e2391105171627ffc61": { + "id": "tapiocadao", + "canonicalName": "TapiocaDAO" + }, + "0x991a8980d07cc48e531727095b7145b662449f9f": { + "id": "hourglass", + "canonicalName": "Hourglass" + }, + "0xa4c2ad773b62e42b577d96865af4608fc77b58f3": { + "id": "hourglass", + "canonicalName": "Hourglass" + }, + "0xeadf4c87fa5ebdc5e925c09e989316199d42f108": { + "id": "volta-club", + "canonicalName": "Volta Club" + }, + "0xb86dd73015590dc0bee11740aec3492727e44953": { + "id": "tapiocadao", + "canonicalName": "TapiocaDAO" + }, + "0x66cdc567924d04e94abaa4d8bbbb33ef73d7713a": { + "id": "beam-bridge", + "canonicalName": "Beam Bridge" + }, + "0xc173624557f5c9b9c682eb82a04e1407d3794da6": { + "id": "lendvest", + "canonicalName": "Lendvest" + }, + "0xa30444b26c171b27c6b3698544490affa2e12119": { + "id": "toinou-oft", + "canonicalName": "TOINOU OFT" + }, + "0xf7a7fbf4edd64c9d0d8ff1149c1229cd38b2a261": { + "id": "tide-exchange", + "canonicalName": "Tide Exchange" + }, + "0xcfa841d8bb654c4c23bf60a39428f170a7035f29": { + "id": "ethenanova-space", + "canonicalName": "Ethenanova Space" + }, + "0x0b0f01f9214680cf1a67efabdd31d8281dc29551": { + "id": "tapiocadao", + "canonicalName": "TapiocaDAO" + }, + "0xc9264255e1ae0cc80ceadd0056c63dc1caed28ad": { + "id": "holograph", + "canonicalName": "Holograph" + }, + "0xdae4fa5e4a831931a94ef865ceb08f3d8640c6a0": { + "id": "beam-bridge", + "canonicalName": "Beam Bridge" + }, + "0xeef44c57d2fe281f5e10592ae2db7f45a463ea3d": { + "id": "betswirl", + "canonicalName": "BetSwirl" + }, + "0x1e9bc397180eb625b28f3464eade1c928df2a33b": { + "id": "tapiocadao", + "canonicalName": "TapiocaDAO" + }, + "0x0936a04505ea9c6ede026c81ec4e3d527388b706": { + "id": "tapiocadao", + "canonicalName": "TapiocaDAO" + }, + "0xb92de63eb7d8a652bf80385906812f92d49c5139": { + "id": "synthr", + "canonicalName": "SYNTHR" + }, + "0xe42bd199bfe8beb3fb0cdcce72bbcd512b2ba35d": { + "id": "beam-bridge", + "canonicalName": "Beam Bridge" + }, + "0x29fbc4e4092db862218c62a888a00f9521619230": { + "id": "stargate", + "canonicalName": "Stargate" + }, + "0x18fac63ab1576141a9163b4d9cf3867123a6cead": { + "id": "hourglass", + "canonicalName": "Hourglass" + }, + "0xf1e06e45913ec0dc5856232e022e0f003c7b2b3f": { + "id": "tutorial", + "canonicalName": "LayerZero Tutorial" + }, + "0x24e77cd450cb18eb71762273412d1a59d6df425b": { + "id": "term-finance", + "canonicalName": "Term Finance" + }, + "0x42443226e8f55f27c5bd4e33a0138f9fd21b0de8": { + "id": "layersync", + "canonicalName": "LayerSync" + }, + "0xc27a0e3e938ea734c379635b0107a8fe7d520f33": { + "id": "synthr", + "canonicalName": "SYNTHR" + }, + "0x40174bf6df1a49d8faa84dd1c6440ab59371116e": { + "id": "swapsicle", + "canonicalName": "Swapsicle" + }, + "0x0b78fd46cfae0ab2d3463ae7a384b81ff6e1bb43": { + "id": "tradable", + "canonicalName": "Tradable" + }, + "0x4a339b39fe35913f8e809949eeff6bc96796820d": { + "id": "layer3", + "canonicalName": "Layer3" + }, + "0x5788ecaa5e93485bb657828580d18790794729e7": { + "id": "hourglass", + "canonicalName": "Hourglass" + }, + "0xbec70f2e023c823442cf2d21b95ea21ff7575267": { + "id": "cashmere", + "canonicalName": "CashmereLabs" + } + }, + "chainName": "avalanche", + "tokens": {}, + "chainKey": "fuji" +} diff --git a/packages/metadata-tools/test/data/solana-mainnet.json b/packages/metadata-tools/test/data/solana-mainnet.json new file mode 100644 index 000000000..36745da49 --- /dev/null +++ b/packages/metadata-tools/test/data/solana-mainnet.json @@ -0,0 +1,117 @@ +{ + "created": "2024-12-12T03:31:22.000Z", + "updated": "2024-12-12T03:31:22.000Z", + "tableName": "layerzero-chain_metadata", + "environment": "mainnet", + "blockExplorers": [ + { + "url": "https://explorer.solana.com" + } + ], + "deployments": [ + { + "eid": "30168", + "chainKey": "solana", + "stage": "mainnet", + "pricefeed": { + "address": "8ahPGPjEbpgGaZx2NV1iG5Shj7TDwvsjkEDcGWjt94TP" + }, + "executor": { + "address": "AwrbHeCyniXaQhiJZkLhgWdUCteeWSGaSN1sTfLiY7xK" + }, + "endpointV2": { + "address": "76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6" + }, + "sendUln302": { + "address": "7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH" + }, + "blocked_messagelib": { + "address": "2XrYqmhBMPJgDsb4SVbjV1PnJBprurd5bzRCkHwiFCJB" + }, + "version": 2, + "receiveUln302": { + "address": "7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH" + }, + "dvn": { + "address": "HtEYV4xB4wvsj5fgTkcfuChYpvGYzgzwvNhgDZQNh7wW" + } + } + ], + "chainDetails": { + "chainType": "solana", + "chainKey": "solana", + "chainLayer": "L1", + "nativeCurrency": { + "symbol": "SOL", + "cgId": "solana", + "cmcId": 5426, + "decimals": 9 + }, + "cgNetworkId": "solana" + }, + "dvns": { + "4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb": { + "version": 2, + "canonicalName": "LayerZero Labs", + "id": "layerzero-labs" + }, + "GPjyWr8vCotGuFubDpTxDxy9Vj1ZeEN4F2dwRmFiaGab": { + "version": 2, + "canonicalName": "Nethermind", + "id": "nethermind" + }, + "4HxXbLv37XrivKukEbofybpHr7C8HUGJzd4B5T9USpGh": { + "version": 2, + "canonicalName": "Paxos", + "id": "paxos" + }, + "HR9NQKK1ynW9NzgdM37dU5CBtqRHTukmbMKS7qkwSkHX": { + "version": 2, + "canonicalName": "Horizen", + "id": "horizen-labs" + }, + "F7gu9kLcpn4bSTZn183mhn2RXUuMy7zckdxJZdUjuALw": { + "version": 2, + "canonicalName": "Google", + "id": "google-cloud" + } + }, + "rpcs": [ + { + "url": "https://api.mainnet-beta.solana.com" + } + ], + "addressToOApp": { + "auvw19qwit2bxzqcspgzlsbq2ziqosvrytnxe8uzsegh": { + "id": "paypal", + "canonicalName": "PayPal" + }, + "4x3oqtx4mhjtkgbexdzbttslz9cuwo5wan2uchauthts": { + "id": "ethena", + "canonicalName": "Ethena" + }, + "2uib9iipugq6rqyapftnydtpdfkaod2hmwpl9s1fs2ew": { + "id": "ox-fun", + "canonicalName": "OX.Fun" + }, + "anq6ibnkc2xayc2goqhnzrsodh2kfqtejj7s3j8je7js": { + "id": "dogwifhat", + "canonicalName": "DogWifHat ($WIF)" + }, + "9su66tvuugjjabajvnmfumz3zzhfrzdrsccxqqd1myaq": { + "id": "metalcore", + "canonicalName": "MetalCore" + }, + "d27yp9ir2uagd8bkbbwrhek6moosqu353njm3svmevxw": { + "id": "ethena", + "canonicalName": "Ethena" + }, + "d2hziynfqns9ygnrodtk7zajkjxc68139niz1mmd8aae": { + "id": "ethena", + "canonicalName": "Ethena" + } + }, + "chainName": "solana", + "tokens": {}, + "chainKey": "solana" +} diff --git a/packages/metadata-tools/test/data/solana-testnet.json b/packages/metadata-tools/test/data/solana-testnet.json new file mode 100644 index 000000000..321fe1619 --- /dev/null +++ b/packages/metadata-tools/test/data/solana-testnet.json @@ -0,0 +1,74 @@ +{ + "created": "2024-12-12T03:31:22.000Z", + "updated": "2024-12-12T03:31:22.000Z", + "tableName": "layerzero-chain_metadata", + "environment": "testnet", + "blockExplorers": [ + { + "url": "https://explorer.solana.com" + } + ], + "deployments": [ + { + "eid": "40168", + "chainKey": "solana-testnet", + "stage": "testnet", + "pricefeed": { + "address": "8ahPGPjEbpgGaZx2NV1iG5Shj7TDwvsjkEDcGWjt94TP" + }, + "executor": { + "address": "AwrbHeCyniXaQhiJZkLhgWdUCteeWSGaSN1sTfLiY7xK" + }, + "endpointV2": { + "address": "76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6" + }, + "sendUln302": { + "address": "7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH" + }, + "blocked_messagelib": { + "address": "2XrYqmhBMPJgDsb4SVbjV1PnJBprurd5bzRCkHwiFCJB" + }, + "version": 2, + "receiveUln302": { + "address": "7a4WjyR8VZ7yZz5XJAKm39BUGn5iT9CKcv2pmG9tdXVH" + }, + "dvn": { + "address": "HtEYV4xB4wvsj5fgTkcfuChYpvGYzgzwvNhgDZQNh7wW" + } + } + ], + "chainDetails": { + "chainKey": "solana-testnet", + "nativeChainId": 2, + "chainLayer": "L1", + "nativeCurrency": { + "name": "SOL", + "symbol": "SOL", + "cgId": "solana", + "cmcId": 5426, + "decimals": 9 + }, + "name": "Solana", + "chainType": "solana", + "shortName": "Solana testnet" + }, + "dvns": { + "4VDjp6XQaxoZf5RGwiPU9NR1EXSZn2TP4ATMmiSzLfhb": { + "version": 2, + "canonicalName": "LayerZero Labs", + "id": "layerzero-labs" + }, + "4HxXbLv37XrivKukEbofybpHr7C8HUGJzd4B5T9USpGh": { + "version": 2, + "canonicalName": "Paxos", + "id": "paxos" + } + }, + "rpcs": [ + { + "url": "https://api.devnet.solana.com" + } + ], + "chainName": "solana", + "chainKey": "solana-testnet" +} diff --git a/packages/metadata-tools/tsconfig.json b/packages/metadata-tools/tsconfig.json new file mode 100644 index 000000000..76ada60be --- /dev/null +++ b/packages/metadata-tools/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "exclude": ["dist", "node_modules"], + "include": ["src", "test", "*.config.ts"], + "compilerOptions": { + "module": "commonjs", + "types": ["node", "jest"], + "paths": { + "@/*": ["./src/*"] + } + }, + "files": [] +} diff --git a/packages/metadata-tools/tsup.config.ts b/packages/metadata-tools/tsup.config.ts new file mode 100644 index 000000000..ff3c6da84 --- /dev/null +++ b/packages/metadata-tools/tsup.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'tsup' + +export default defineConfig([ + { + entry: ['src/index.ts', 'src/type-extensions.ts', 'src/tasks/index.ts'], + outDir: './dist', + clean: true, + dts: true, + sourcemap: true, + splitting: false, + treeshake: true, + format: ['esm', 'cjs'], + loader: { + '.conf': 'text', + }, + }, +]) diff --git a/packages/oapp-alt-evm/package.json b/packages/oapp-alt-evm/package.json index ac7e6236e..ae2d46e64 100644 --- a/packages/oapp-alt-evm/package.json +++ b/packages/oapp-alt-evm/package.json @@ -43,7 +43,7 @@ "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "^0.1.9", "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/contracts-upgradeable": "^5.0.2" diff --git a/packages/oapp-evm-upgradeable/package.json b/packages/oapp-evm-upgradeable/package.json index 553135797..76002940b 100644 --- a/packages/oapp-evm-upgradeable/package.json +++ b/packages/oapp-evm-upgradeable/package.json @@ -41,7 +41,7 @@ "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "^0.1.9", "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/contracts-upgradeable": "^5.0.2" diff --git a/packages/oapp-evm/package.json b/packages/oapp-evm/package.json index 40983617e..fc662fe12 100644 --- a/packages/oapp-evm/package.json +++ b/packages/oapp-evm/package.json @@ -39,7 +39,7 @@ "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "^0.1.9", "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/contracts-upgradeable": "^5.0.2" diff --git a/packages/oft-alt-evm/package.json b/packages/oft-alt-evm/package.json index 629d87ca3..cd1d870c9 100644 --- a/packages/oft-alt-evm/package.json +++ b/packages/oft-alt-evm/package.json @@ -41,8 +41,8 @@ "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/oapp-alt-evm": "^0.0.1", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/oft-evm": "^3.0.0", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/oft-evm": "^3.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "^0.1.9", "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/contracts-upgradeable": "^5.0.2" diff --git a/packages/oft-evm-upgradeable/package.json b/packages/oft-evm-upgradeable/package.json index 6b9fe6a38..151bae0dd 100644 --- a/packages/oft-evm-upgradeable/package.json +++ b/packages/oft-evm-upgradeable/package.json @@ -49,8 +49,8 @@ "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", "@layerzerolabs/oapp-evm-upgradeable": "^0.1.0", - "@layerzerolabs/oft-evm": "^3.0.0", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/oft-evm": "^3.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "^0.1.9", "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/contracts-upgradeable": "^5.0.2", diff --git a/packages/oft-evm/CHANGELOG.md b/packages/oft-evm/CHANGELOG.md index dc5141224..d65fc3d77 100644 --- a/packages/oft-evm/CHANGELOG.md +++ b/packages/oft-evm/CHANGELOG.md @@ -1,5 +1,17 @@ # @layerzerolabs/oft-evm +## 3.1.0 + +### Minor Changes + +- 60cc71c: changed license for MintBurnOFTAdapter and periphery contracts to MIT from UNLICENSED +- 5c47a41: Added MintBurnOFTAdapter + +### Patch Changes + +- e90a1d3: Improve quoteOFT default implementation to use totalSupply() + - @layerzerolabs/oapp-evm@0.3.0 + ## 3.0.0 ### Patch Changes diff --git a/packages/oft-evm/artifacts/IOFT.sol/IOFT.json b/packages/oft-evm/artifacts/IOFT.sol/IOFT.json index b721e1313..7ee540c0a 100644 --- a/packages/oft-evm/artifacts/IOFT.sol/IOFT.json +++ b/packages/oft-evm/artifacts/IOFT.sol/IOFT.json @@ -359,7 +359,7 @@ "sharedDecimals()": "857749b0", "token()": "fc0c546a" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OftChain (OFT) token.Does not inherit ERC20 to accommodate usage by OFTAdapter as well.This specific interface ID is '0x02e49c2c'.\",\"kind\":\"dev\",\"methods\":{\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"_0\":\"limit The OFT limit information.\",\"_2\":\"receipt The OFT receipt information.\",\"oftFeeDetails\":\"The details of OFT fees.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"_0\":\"fee The calculated LayerZero messaging fee from the send() operation.\"}},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The fee information supplied by the caller. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds from fees etc. on the src.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"_0\":\"receipt The LayerZero messaging receipt from the send() operation.\",\"_1\":\"oftReceipt The OFT receipt information.\"}},\"sharedDecimals()\":{\"returns\":{\"_0\":\"sharedDecimals The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"_0\":\"token The address of the ERC20 token implementation.\"}}},\"title\":\"IOFT\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"notice\":\"Executes the send() operation.\"},\"sharedDecimals()\":{\"notice\":\"Retrieves the shared decimals of the OFT.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IOFT.sol\":\"IOFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x278e7bdeb2e8aa3f528373d8a3b3fedfe2e1bec050bcaf95065a136645cf56bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43d1789ca4f5cd81986bb52682a94caf188dc8910ecd84cf98bc59221847bd12\",\"dweb:/ipfs/QmSmvKyCukcqxCUvdvNQNyshp4nYt2xxiFaB7Uji4YSrBv\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OftChain (OFT) token.Does not inherit ERC20 to accommodate usage by OFTAdapter as well.This specific interface ID is '0x02e49c2c'.\",\"kind\":\"dev\",\"methods\":{\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"_0\":\"limit The OFT limit information.\",\"_2\":\"receipt The OFT receipt information.\",\"oftFeeDetails\":\"The details of OFT fees.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"_0\":\"fee The calculated LayerZero messaging fee from the send() operation.\"}},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The fee information supplied by the caller. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds from fees etc. on the src.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"_0\":\"receipt The LayerZero messaging receipt from the send() operation.\",\"_1\":\"oftReceipt The OFT receipt information.\"}},\"sharedDecimals()\":{\"returns\":{\"_0\":\"sharedDecimals The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"_0\":\"token The address of the ERC20 token implementation.\"}}},\"title\":\"IOFT\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"notice\":\"Executes the send() operation.\"},\"sharedDecimals()\":{\"notice\":\"Retrieves the shared decimals of the OFT.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IOFT.sol\":\"IOFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4\",\"dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" }, "language": "Solidity", @@ -860,10 +860,10 @@ }, "sources": { "contracts/interfaces/IOFT.sol": { - "keccak256": "0x278e7bdeb2e8aa3f528373d8a3b3fedfe2e1bec050bcaf95065a136645cf56bb", + "keccak256": "0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8", "urls": [ - "bzz-raw://43d1789ca4f5cd81986bb52682a94caf188dc8910ecd84cf98bc59221847bd12", - "dweb:/ipfs/QmSmvKyCukcqxCUvdvNQNyshp4nYt2xxiFaB7Uji4YSrBv" + "bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4", + "dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs" ], "license": "MIT" }, diff --git a/packages/oft-evm/artifacts/OFT.sol/OFT.json b/packages/oft-evm/artifacts/OFT.sol/OFT.json index 69f2e0e2e..fb7b20814 100644 --- a/packages/oft-evm/artifacts/OFT.sol/OFT.json +++ b/packages/oft-evm/artifacts/OFT.sol/OFT.json @@ -1064,7 +1064,7 @@ "transferFrom(address,address,uint256)": "23b872dd", "transferOwnership(address)": "f2fde38b" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approvalRequired()\":{\"details\":\"In the case of OFT where the contract IS the token, approval is NOT required.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor for the OFT contract.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_lzEndpoint\":\"The LayerZero endpoint address.\",\"_name\":\"The name of the OFT.\",\"_symbol\":\"The symbol of the OFT.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"token()\":{\"details\":\"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.\",\"returns\":{\"_0\":\"The address of the OFT token.\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFT Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/OFT.sol\":\"OFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/OFT.sol\":{\"keccak256\":\"0xdc3582e4a20e02a79050c17058a1f1f42a4335d1a70be06c0a52a3fb05d4c89a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://83c4bd42e68528246860a952a92a79e51e3a789dac79a0b62576ab2f609de9c7\",\"dweb:/ipfs/QmVj1x655j1cFTnPT8uBaM71TCSrhFVwPdoFkAkWhhadns\"]},\"contracts/OFTCore.sol\":{\"keccak256\":\"0x0a435802ad13dcaf74668923ec2716358b94bc2be1a63c85a931638defd7decc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc93e94b14b38ccd62dfa6664ccfc2e303d13d20b4799b415054c4b35f7cd03d\",\"dweb:/ipfs/QmZyCwjhuEHNGdFRYMAE6LjD81Puhstoj49HNrwtRPYPbc\"]},\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x278e7bdeb2e8aa3f528373d8a3b3fedfe2e1bec050bcaf95065a136645cf56bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43d1789ca4f5cd81986bb52682a94caf188dc8910ecd84cf98bc59221847bd12\",\"dweb:/ipfs/QmSmvKyCukcqxCUvdvNQNyshp4nYt2xxiFaB7Uji4YSrBv\"]},\"contracts/libs/OFTComposeMsgCodec.sol\":{\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e\",\"dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK\"]},\"contracts/libs/OFTMsgCodec.sol\":{\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7d0f1bf32a80af9b99cd93fefa373dac5c27463351cc35f62b9c2439d5b9258\",\"dweb:/ipfs/Qmb81qoxzMwV3PkPANRvnXf4fJTsZ5sjJ8r2df9V2vhh6q\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28\",\"dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075\",\"dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e\",\"dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc\",\"dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af\",\"dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82\",\"dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approvalRequired()\":{\"details\":\"In the case of OFT where the contract IS the token, approval is NOT required.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor for the OFT contract.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_lzEndpoint\":\"The LayerZero endpoint address.\",\"_name\":\"The name of the OFT.\",\"_symbol\":\"The symbol of the OFT.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"token()\":{\"details\":\"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.\",\"returns\":{\"_0\":\"The address of the OFT token.\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFT Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/OFT.sol\":\"OFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/OFT.sol\":{\"keccak256\":\"0xdc3582e4a20e02a79050c17058a1f1f42a4335d1a70be06c0a52a3fb05d4c89a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://83c4bd42e68528246860a952a92a79e51e3a789dac79a0b62576ab2f609de9c7\",\"dweb:/ipfs/QmVj1x655j1cFTnPT8uBaM71TCSrhFVwPdoFkAkWhhadns\"]},\"contracts/OFTCore.sol\":{\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cac6c48bbc05456b0fccd0782b1a8c2560b0420d425dcba109526af8188893e\",\"dweb:/ipfs/QmRoCZX37UNgBeVKXTsfBvR7DgibZGL1tfrPqfvyGafHor\"]},\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4\",\"dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs\"]},\"contracts/libs/OFTComposeMsgCodec.sol\":{\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e\",\"dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK\"]},\"contracts/libs/OFTMsgCodec.sol\":{\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7d0f1bf32a80af9b99cd93fefa373dac5c27463351cc35f62b9c2439d5b9258\",\"dweb:/ipfs/Qmb81qoxzMwV3PkPANRvnXf4fJTsZ5sjJ8r2df9V2vhh6q\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28\",\"dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075\",\"dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e\",\"dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc\",\"dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af\",\"dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82\",\"dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" }, "language": "Solidity", @@ -2508,18 +2508,18 @@ "license": "MIT" }, "contracts/OFTCore.sol": { - "keccak256": "0x0a435802ad13dcaf74668923ec2716358b94bc2be1a63c85a931638defd7decc", + "keccak256": "0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228", "urls": [ - "bzz-raw://cc93e94b14b38ccd62dfa6664ccfc2e303d13d20b4799b415054c4b35f7cd03d", - "dweb:/ipfs/QmZyCwjhuEHNGdFRYMAE6LjD81Puhstoj49HNrwtRPYPbc" + "bzz-raw://0cac6c48bbc05456b0fccd0782b1a8c2560b0420d425dcba109526af8188893e", + "dweb:/ipfs/QmRoCZX37UNgBeVKXTsfBvR7DgibZGL1tfrPqfvyGafHor" ], "license": "MIT" }, "contracts/interfaces/IOFT.sol": { - "keccak256": "0x278e7bdeb2e8aa3f528373d8a3b3fedfe2e1bec050bcaf95065a136645cf56bb", + "keccak256": "0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8", "urls": [ - "bzz-raw://43d1789ca4f5cd81986bb52682a94caf188dc8910ecd84cf98bc59221847bd12", - "dweb:/ipfs/QmSmvKyCukcqxCUvdvNQNyshp4nYt2xxiFaB7Uji4YSrBv" + "bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4", + "dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs" ], "license": "MIT" }, diff --git a/packages/oft-evm/artifacts/OFTAdapter.sol/OFTAdapter.json b/packages/oft-evm/artifacts/OFTAdapter.sol/OFTAdapter.json index d4e0cdf9e..cf5eb5461 100644 --- a/packages/oft-evm/artifacts/OFTAdapter.sol/OFTAdapter.json +++ b/packages/oft-evm/artifacts/OFTAdapter.sol/OFTAdapter.json @@ -881,7 +881,7 @@ "token()": "fc0c546a", "transferOwnership(address)": "f2fde38b" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"OFTAdapter is a contract that adapts an ERC-20 token to the OFT functionality.For existing ERC20 tokens, this can be used to convert the token to crosschain compatibility.WARNING: ONLY 1 of these should exist for a given global mesh, unless you make a NON-default implementation of OFT and needs to be done very carefully.WARNING: The default OFTAdapter implementation assumes LOSSLESS transfers, ie. 1 token in, 1 token out. IF the 'innerToken' applies something like a transfer fee, the default will NOT work... a pre/post balance check will need to be done to calculate the amountSentLD/amountReceivedLD.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"approvalRequired()\":{\"details\":\"In the case of default OFTAdapter, approval is required.In non-default OFTAdapter contracts with something like mint and burn privileges, it would NOT need approval.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor for the OFTAdapter contract.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_lzEndpoint\":\"The LayerZero endpoint address.\",\"_token\":\"The address of the ERC-20 token to be adapted.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"token()\":{\"details\":\"Retrieves the address of the underlying ERC20 implementation.In the case of OFTAdapter, address(this) and erc20 are NOT the same contract.\",\"returns\":{\"_0\":\"The address of the adapted ERC-20 token.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFTAdapter Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/OFTAdapter.sol\":\"OFTAdapter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/OFTAdapter.sol\":{\"keccak256\":\"0xd65041c093c19792b66369a04b4aea5c988c32e2cf4ab952a442315426407fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f1cc68778a40a45397f1ffcdba25920523a75d321da8852f7688f50885bbd08\",\"dweb:/ipfs/QmRUL7Q6dNxbc1Mz1hXgUz7eyCZDpt9eJD8BK1EMaJ9Yoz\"]},\"contracts/OFTCore.sol\":{\"keccak256\":\"0x0a435802ad13dcaf74668923ec2716358b94bc2be1a63c85a931638defd7decc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc93e94b14b38ccd62dfa6664ccfc2e303d13d20b4799b415054c4b35f7cd03d\",\"dweb:/ipfs/QmZyCwjhuEHNGdFRYMAE6LjD81Puhstoj49HNrwtRPYPbc\"]},\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x278e7bdeb2e8aa3f528373d8a3b3fedfe2e1bec050bcaf95065a136645cf56bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43d1789ca4f5cd81986bb52682a94caf188dc8910ecd84cf98bc59221847bd12\",\"dweb:/ipfs/QmSmvKyCukcqxCUvdvNQNyshp4nYt2xxiFaB7Uji4YSrBv\"]},\"contracts/libs/OFTComposeMsgCodec.sol\":{\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e\",\"dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK\"]},\"contracts/libs/OFTMsgCodec.sol\":{\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7d0f1bf32a80af9b99cd93fefa373dac5c27463351cc35f62b9c2439d5b9258\",\"dweb:/ipfs/Qmb81qoxzMwV3PkPANRvnXf4fJTsZ5sjJ8r2df9V2vhh6q\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28\",\"dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075\",\"dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e\",\"dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc\",\"dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af\",\"dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82\",\"dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"OFTAdapter is a contract that adapts an ERC-20 token to the OFT functionality.For existing ERC20 tokens, this can be used to convert the token to crosschain compatibility.WARNING: ONLY 1 of these should exist for a given global mesh, unless you make a NON-default implementation of OFT and needs to be done very carefully.WARNING: The default OFTAdapter implementation assumes LOSSLESS transfers, ie. 1 token in, 1 token out. IF the 'innerToken' applies something like a transfer fee, the default will NOT work... a pre/post balance check will need to be done to calculate the amountSentLD/amountReceivedLD.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"approvalRequired()\":{\"details\":\"In the case of default OFTAdapter, approval is required.In non-default OFTAdapter contracts with something like mint and burn privileges, it would NOT need approval.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor for the OFTAdapter contract.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_lzEndpoint\":\"The LayerZero endpoint address.\",\"_token\":\"The address of the ERC-20 token to be adapted.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"token()\":{\"details\":\"Retrieves the address of the underlying ERC20 implementation.In the case of OFTAdapter, address(this) and erc20 are NOT the same contract.\",\"returns\":{\"_0\":\"The address of the adapted ERC-20 token.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFTAdapter Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/OFTAdapter.sol\":\"OFTAdapter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/OFTAdapter.sol\":{\"keccak256\":\"0xd65041c093c19792b66369a04b4aea5c988c32e2cf4ab952a442315426407fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f1cc68778a40a45397f1ffcdba25920523a75d321da8852f7688f50885bbd08\",\"dweb:/ipfs/QmRUL7Q6dNxbc1Mz1hXgUz7eyCZDpt9eJD8BK1EMaJ9Yoz\"]},\"contracts/OFTCore.sol\":{\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cac6c48bbc05456b0fccd0782b1a8c2560b0420d425dcba109526af8188893e\",\"dweb:/ipfs/QmRoCZX37UNgBeVKXTsfBvR7DgibZGL1tfrPqfvyGafHor\"]},\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4\",\"dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs\"]},\"contracts/libs/OFTComposeMsgCodec.sol\":{\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e\",\"dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK\"]},\"contracts/libs/OFTMsgCodec.sol\":{\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7d0f1bf32a80af9b99cd93fefa373dac5c27463351cc35f62b9c2439d5b9258\",\"dweb:/ipfs/Qmb81qoxzMwV3PkPANRvnXf4fJTsZ5sjJ8r2df9V2vhh6q\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28\",\"dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075\",\"dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e\",\"dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc\",\"dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af\",\"dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82\",\"dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" }, "language": "Solidity", @@ -2115,18 +2115,18 @@ "license": "MIT" }, "contracts/OFTCore.sol": { - "keccak256": "0x0a435802ad13dcaf74668923ec2716358b94bc2be1a63c85a931638defd7decc", + "keccak256": "0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228", "urls": [ - "bzz-raw://cc93e94b14b38ccd62dfa6664ccfc2e303d13d20b4799b415054c4b35f7cd03d", - "dweb:/ipfs/QmZyCwjhuEHNGdFRYMAE6LjD81Puhstoj49HNrwtRPYPbc" + "bzz-raw://0cac6c48bbc05456b0fccd0782b1a8c2560b0420d425dcba109526af8188893e", + "dweb:/ipfs/QmRoCZX37UNgBeVKXTsfBvR7DgibZGL1tfrPqfvyGafHor" ], "license": "MIT" }, "contracts/interfaces/IOFT.sol": { - "keccak256": "0x278e7bdeb2e8aa3f528373d8a3b3fedfe2e1bec050bcaf95065a136645cf56bb", + "keccak256": "0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8", "urls": [ - "bzz-raw://43d1789ca4f5cd81986bb52682a94caf188dc8910ecd84cf98bc59221847bd12", - "dweb:/ipfs/QmSmvKyCukcqxCUvdvNQNyshp4nYt2xxiFaB7Uji4YSrBv" + "bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4", + "dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs" ], "license": "MIT" }, diff --git a/packages/oft-evm/artifacts/OFTCore.sol/OFTCore.json b/packages/oft-evm/artifacts/OFTCore.sol/OFTCore.json index 311cfaa20..452b892a9 100644 --- a/packages/oft-evm/artifacts/OFTCore.sol/OFTCore.json +++ b/packages/oft-evm/artifacts/OFTCore.sol/OFTCore.json @@ -881,7 +881,7 @@ "token()": "fc0c546a", "transferOwnership(address)": "f2fde38b" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract for the OftChain (OFT) token.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_endpoint\":\"The address of the LayerZero endpoint.\",\"_localDecimals\":\"The decimals of the token on the local chain (this chain).\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"_0\":\"token The address of the ERC20 token implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFTCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/OFTCore.sol\":\"OFTCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/OFTCore.sol\":{\"keccak256\":\"0x0a435802ad13dcaf74668923ec2716358b94bc2be1a63c85a931638defd7decc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc93e94b14b38ccd62dfa6664ccfc2e303d13d20b4799b415054c4b35f7cd03d\",\"dweb:/ipfs/QmZyCwjhuEHNGdFRYMAE6LjD81Puhstoj49HNrwtRPYPbc\"]},\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x278e7bdeb2e8aa3f528373d8a3b3fedfe2e1bec050bcaf95065a136645cf56bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43d1789ca4f5cd81986bb52682a94caf188dc8910ecd84cf98bc59221847bd12\",\"dweb:/ipfs/QmSmvKyCukcqxCUvdvNQNyshp4nYt2xxiFaB7Uji4YSrBv\"]},\"contracts/libs/OFTComposeMsgCodec.sol\":{\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e\",\"dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK\"]},\"contracts/libs/OFTMsgCodec.sol\":{\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7d0f1bf32a80af9b99cd93fefa373dac5c27463351cc35f62b9c2439d5b9258\",\"dweb:/ipfs/Qmb81qoxzMwV3PkPANRvnXf4fJTsZ5sjJ8r2df9V2vhh6q\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28\",\"dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075\",\"dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e\",\"dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc\",\"dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af\",\"dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82\",\"dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract for the OftChain (OFT) token.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_endpoint\":\"The address of the LayerZero endpoint.\",\"_localDecimals\":\"The decimals of the token on the local chain (this chain).\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"_0\":\"token The address of the ERC20 token implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFTCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/OFTCore.sol\":\"OFTCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/OFTCore.sol\":{\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cac6c48bbc05456b0fccd0782b1a8c2560b0420d425dcba109526af8188893e\",\"dweb:/ipfs/QmRoCZX37UNgBeVKXTsfBvR7DgibZGL1tfrPqfvyGafHor\"]},\"contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4\",\"dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs\"]},\"contracts/libs/OFTComposeMsgCodec.sol\":{\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e\",\"dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK\"]},\"contracts/libs/OFTMsgCodec.sol\":{\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7d0f1bf32a80af9b99cd93fefa373dac5c27463351cc35f62b9c2439d5b9258\",\"dweb:/ipfs/Qmb81qoxzMwV3PkPANRvnXf4fJTsZ5sjJ8r2df9V2vhh6q\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77415ae0820859e0faf3fabdce683cce9fa03ea026ae0f6fe081ef1c9205f933\",\"dweb:/ipfs/QmXd7APqoCunQ2jYy73AHvi5gsZofLpm3SzM6FPo7zRPfL\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cae7e35007a714f007ea08045ef7c0cfa6c91fd2425b5028b2d49abad357a5f0\",\"dweb:/ipfs/QmcDBs5tsiyB35b8cwzWQWNnpkawb3uuHRaqE77Hxm2tve\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://060f10ff7afc33c1c2f2b4b5ba29231fd3c943146488084d0e4ab99fce991d97\",\"dweb:/ipfs/QmaSsefAqqEqtf8FgFUmDYMwTsAty3X1pqDb6SiFvry6B3\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://2d4b2cf5c3b16dc76c6767f285b57c0af917972327b2be3f7cba5825402f5fc1\",\"dweb:/ipfs/QmQQWiHE2jKEDbjzGutSoZwtApSXYfLqZt5CxEpFj8xyvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\",\"urls\":[\"bzz-raw://de686666fc16fa432d4208d85cec87dc952faf3e481b683b9adf4b4610db4b09\",\"dweb:/ipfs/QmdmQeopzmxqRzi9DNB4EJDrYUXFfD7fUhnGhSni4QejUW\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1f8cf9f20a2b683a53c3883972aa0676af97a24c678f461fae08e1fb056df28\",\"dweb:/ipfs/QmPpKNqda3rgxDwnq3XiRTtT3NfWeqrCJT6LwmhYd2AoT2\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd12bb4fe5802c53911b9a0081a2ea10639b1f99925d1e5c1b1421d1bdc17075\",\"dweb:/ipfs/QmZonarwbKiEwQ8qoASKur2bbMjusdy9pqK9RCR4P1YPtc\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5222afde59bf086f67b39e0288ad36343f4f5ed683d250533f256a5db956f37e\",\"dweb:/ipfs/QmbEG9EMYsK3Y6Cz7QbNtkW4kHGzMuhp2y2seSoL8v1A5b\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e2eea8a93bb9fc3f629767118b362e9b4bda2443ff95eae21c6a894f3e334cc\",\"dweb:/ipfs/QmPRRNjAB4U19ke4gr3U7ZJGtdcVBxdXVBZ2BmB1riFkP7\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c236dfe386b508be33c3a1a74ae1d4fd64b8c77ae207767e9dbed0f2429518a2\",\"dweb:/ipfs/QmXVbZJjfryTRti98uN3BMh5qh4K7NuEs1RSCoBjRoYd4q\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a59dd6e3cfcc332f45a13d44585eb228588c4b9d470cbb19852df5753a4571af\",\"dweb:/ipfs/QmQJF1QU3MKhvmw42eq61u9z3bzKJJKMsEdQVYyPyYgTVS\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9778d7d5da941af2029410b6ac212f915ea1785573ae2865b0ed8f779fcca82\",\"dweb:/ipfs/QmNkVEkfecvgubgnMuaT5fEfSExd95vz8DQHhpZtMrVRjH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1dcea0267234654126f926a1b405743606d7b5e49185b621afb7bd94d18b9a\",\"dweb:/ipfs/QmZ9BXQmbWJcrhHKuBs4yhNtbCV5WUpUY3AXSX7rkWwX6y\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf49d59c14832ea0ddddcd12d512d4f9bd0fd254a1368442587bf3e77fe73e\",\"dweb:/ipfs/QmYUAvsyuUPiSYjbL4zVo6ZtiRSLCUPDvCesqgdZWbSGDg\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f70724c61d226743c2bd8ba6c09758805e4339780978949ce5b333c106be4edc\",\"dweb:/ipfs/QmX5rV9K1N7RgTz9xtf8CDG8SrYiitGAzFh9ec2tbnEec4\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" }, "language": "Solidity", @@ -2111,18 +2111,18 @@ }, "sources": { "contracts/OFTCore.sol": { - "keccak256": "0x0a435802ad13dcaf74668923ec2716358b94bc2be1a63c85a931638defd7decc", + "keccak256": "0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228", "urls": [ - "bzz-raw://cc93e94b14b38ccd62dfa6664ccfc2e303d13d20b4799b415054c4b35f7cd03d", - "dweb:/ipfs/QmZyCwjhuEHNGdFRYMAE6LjD81Puhstoj49HNrwtRPYPbc" + "bzz-raw://0cac6c48bbc05456b0fccd0782b1a8c2560b0420d425dcba109526af8188893e", + "dweb:/ipfs/QmRoCZX37UNgBeVKXTsfBvR7DgibZGL1tfrPqfvyGafHor" ], "license": "MIT" }, "contracts/interfaces/IOFT.sol": { - "keccak256": "0x278e7bdeb2e8aa3f528373d8a3b3fedfe2e1bec050bcaf95065a136645cf56bb", + "keccak256": "0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8", "urls": [ - "bzz-raw://43d1789ca4f5cd81986bb52682a94caf188dc8910ecd84cf98bc59221847bd12", - "dweb:/ipfs/QmSmvKyCukcqxCUvdvNQNyshp4nYt2xxiFaB7Uji4YSrBv" + "bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4", + "dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs" ], "license": "MIT" }, diff --git a/packages/oft-evm/contracts/OFTCore.sol b/packages/oft-evm/contracts/OFTCore.sol index 111a73468..597407b56 100644 --- a/packages/oft-evm/contracts/OFTCore.sol +++ b/packages/oft-evm/contracts/OFTCore.sol @@ -2,6 +2,8 @@ pragma solidity ^0.8.20; +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + import { OApp, Origin } from "@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol"; import { OAppOptionsType3 } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol"; import { IOAppMsgInspector } from "@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol"; @@ -112,7 +114,7 @@ abstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt) { uint256 minAmountLD = 0; // Unused in the default implementation. - uint256 maxAmountLD = type(uint64).max; // Unused in the default implementation. + uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation. oftLimit = OFTLimit(minAmountLD, maxAmountLD); // Unused in the default implementation; reserved for future complex fee details. diff --git a/packages/oft-evm/package.json b/packages/oft-evm/package.json index ef8400b3e..59d6da1b7 100644 --- a/packages/oft-evm/package.json +++ b/packages/oft-evm/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/oft-evm", - "version": "3.0.0", + "version": "3.1.0", "description": "LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation", "keywords": [ "LayerZero", @@ -48,7 +48,7 @@ "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "^0.1.9", "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/contracts-upgradeable": "^5.0.2", diff --git a/packages/oft-evm/test/OFT.t.sol b/packages/oft-evm/test/OFT.t.sol index 86b8de4d8..d5ec905c9 100644 --- a/packages/oft-evm/test/OFT.t.sol +++ b/packages/oft-evm/test/OFT.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import { OptionsBuilder } from "@layerzerolabs/oapp-evm/contracts/oapp/libs/OptionsBuilder.sol"; import { OFTMock } from "./mocks/OFTMock.sol"; -import { MessagingFee, MessagingReceipt } from "../contracts/OFTCore.sol"; +import { MessagingFee, MessagingReceipt, OFTFeeDetail, OFTLimit, OFTReceipt } from "../contracts/OFTCore.sol"; import { NativeOFTAdapterMock } from "./mocks/NativeOFTAdapterMock.sol"; import { OFTAdapterMock } from "./mocks/OFTAdapterMock.sol"; import { ERC20Mock } from "./mocks/ERC20Mock.sol"; @@ -776,4 +776,24 @@ contract OFTTest is TestHelperOz5 { vm.expectRevert(abi.encodeWithSelector(IOAppMsgInspector.InspectionFailed.selector, message, extraOptions)); (message, ) = aOFT.asOFTMock().buildMsgAndOptions(sendParam, amountToCreditLD); } + + function test_quoteOFT(uint256 _amountToSendLD) public { + bytes32 to = addressToBytes32(userA); + uint256 minAmountToCreditLD = aOFT.asOFTMock().removeDust(_amountToSendLD); + SendParam memory sendParam = SendParam( + B_EID, + to, + _amountToSendLD, + minAmountToCreditLD, + "", + "", + "" + ); + (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt) = aOFT.quoteOFT(sendParam); + assertEq(0, oftLimit.minAmountLD); + assertEq(IERC20(aOFT.token()).totalSupply(), oftLimit.maxAmountLD); + assertEq(0, oftFeeDetails.length); + assertEq(minAmountToCreditLD, oftReceipt.amountSentLD); + assertEq(minAmountToCreditLD, oftReceipt.amountReceivedLD); + } } diff --git a/packages/omnicounter-devtools-evm/CHANGELOG.md b/packages/omnicounter-devtools-evm/CHANGELOG.md index e3161a03a..3d777b5bd 100644 --- a/packages/omnicounter-devtools-evm/CHANGELOG.md +++ b/packages/omnicounter-devtools-evm/CHANGELOG.md @@ -1,5 +1,19 @@ # @layerzerolabs/omnicounter-devtools-evm +## 5.0.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/protocol-devtools-evm@3.0.3 + - @layerzerolabs/omnicounter-devtools@3.0.2 + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/ua-devtools-evm@5.0.3 + - @layerzerolabs/devtools-evm@1.0.2 + - @layerzerolabs/ua-devtools@3.0.2 + - @layerzerolabs/devtools@0.4.3 + ## 5.0.1 ### Patch Changes diff --git a/packages/omnicounter-devtools-evm/package.json b/packages/omnicounter-devtools-evm/package.json index 23337b71c..9f8ecaff0 100644 --- a/packages/omnicounter-devtools-evm/package.json +++ b/packages/omnicounter-devtools-evm/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/omnicounter-devtools-evm", - "version": "5.0.1", + "version": "5.0.2", "description": "Utilities for working with LayerZero OmniCounter contract", "repository": { "type": "git", @@ -33,14 +33,14 @@ "p-memoize": "~4.0.4" }, "devDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/omnicounter-devtools": "~3.0.1", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.1", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/omnicounter-devtools": "~3.0.2", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", @@ -52,14 +52,14 @@ "zod": "^3.22.4" }, "peerDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/omnicounter-devtools": "~3.0.1", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.1", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/omnicounter-devtools": "~3.0.2", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", "zod": "^3.22.4" }, "publishConfig": { diff --git a/packages/omnicounter-devtools/CHANGELOG.md b/packages/omnicounter-devtools/CHANGELOG.md index 74b0f3d91..0c5f134ff 100644 --- a/packages/omnicounter-devtools/CHANGELOG.md +++ b/packages/omnicounter-devtools/CHANGELOG.md @@ -1,5 +1,14 @@ # @layerzerolabs/omnicounter-devtools +## 3.0.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/devtools@0.4.3 + ## 3.0.1 ### Patch Changes diff --git a/packages/omnicounter-devtools/package.json b/packages/omnicounter-devtools/package.json index ba9520b02..581ad417a 100644 --- a/packages/omnicounter-devtools/package.json +++ b/packages/omnicounter-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/omnicounter-devtools", - "version": "3.0.1", + "version": "3.0.2", "description": "Utilities for working with LayerZero OmniCounter contract", "repository": { "type": "git", @@ -31,9 +31,9 @@ "lint:fix": "eslint --fix '**/*.{js,ts,json}'" }, "devDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/protocol-devtools": "~1.1.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/protocol-devtools": "~1.1.2", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", @@ -45,9 +45,9 @@ "zod": "^3.22.4" }, "peerDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/protocol-devtools": "~1.1.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/protocol-devtools": "~1.1.2", "zod": "^3.22.4" }, "publishConfig": { diff --git a/packages/onft-evm/package.json b/packages/onft-evm/package.json index 007d67496..fdbe0d563 100644 --- a/packages/onft-evm/package.json +++ b/packages/onft-evm/package.json @@ -46,7 +46,7 @@ "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/test-devtools-evm-foundry": "~5.1.0", + "@layerzerolabs/test-devtools-evm-foundry": "~6.0.0", "@layerzerolabs/toolbox-foundry": "~0.1.9", "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/contracts-upgradeable": "^5.0.2", diff --git a/packages/protocol-devtools-evm/CHANGELOG.md b/packages/protocol-devtools-evm/CHANGELOG.md index 7c44bdb4b..c0fc5b4e8 100644 --- a/packages/protocol-devtools-evm/CHANGELOG.md +++ b/packages/protocol-devtools-evm/CHANGELOG.md @@ -1,5 +1,15 @@ # @layerzerolabs/protocol-devtools-evm +## 3.0.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/devtools-evm@1.0.2 + - @layerzerolabs/devtools@0.4.3 + ## 3.0.2 ### Patch Changes diff --git a/packages/protocol-devtools-evm/package.json b/packages/protocol-devtools-evm/package.json index 72e55b581..1a8555f53 100644 --- a/packages/protocol-devtools-evm/package.json +++ b/packages/protocol-devtools-evm/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/protocol-devtools-evm", - "version": "3.0.2", + "version": "3.0.3", "description": "Utilities for LayerZero EVM protocol contracts", "repository": { "type": "git", @@ -45,13 +45,13 @@ "@ethersproject/constants": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.2", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-sdk-v2": "^3.0.21", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/test-devtools": "~0.4.2", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", @@ -70,11 +70,11 @@ "@ethersproject/constants": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/protocol-devtools": "~1.1.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/protocol-devtools": "~1.1.2", "zod": "^3.22.4" }, "publishConfig": { diff --git a/packages/protocol-devtools-solana/CHANGELOG.md b/packages/protocol-devtools-solana/CHANGELOG.md index ffbbd3a7a..672ea7ce2 100644 --- a/packages/protocol-devtools-solana/CHANGELOG.md +++ b/packages/protocol-devtools-solana/CHANGELOG.md @@ -1,5 +1,16 @@ # @layerzerolabs/protocol-devtools-solana +## 4.0.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/devtools-solana@1.0.4 + - @layerzerolabs/ua-devtools@3.0.2 + - @layerzerolabs/devtools@0.4.3 + ## 4.0.2 ### Patch Changes diff --git a/packages/protocol-devtools-solana/package.json b/packages/protocol-devtools-solana/package.json index 7d915e100..7bed54683 100644 --- a/packages/protocol-devtools-solana/package.json +++ b/packages/protocol-devtools-solana/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/protocol-devtools-solana", - "version": "4.0.2", + "version": "4.0.3", "description": "Utilities for LayerZero Solana protocol programs", "repository": { "type": "git", @@ -42,16 +42,16 @@ "p-memoize": "~4.0.4" }, "devDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-solana": "~1.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-solana": "~1.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-solana-sdk-v2": "^3.0.0", "@layerzerolabs/lz-v2-utilities": "^3.0.12", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/test-devtools": "~0.4.2", "@layerzerolabs/test-devtools-solana": "~0.0.4", - "@layerzerolabs/ua-devtools": "~3.0.1", + "@layerzerolabs/ua-devtools": "~3.0.2", "@solana/web3.js": "~1.95.8", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", @@ -67,14 +67,14 @@ "zod": "^3.22.4" }, "peerDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-solana": "~1.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-solana": "~1.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-solana-sdk-v2": "^3.0.0", "@layerzerolabs/lz-v2-utilities": "^3.0.12", - "@layerzerolabs/protocol-devtools": "^1.1.1", - "@layerzerolabs/ua-devtools": "^3.0.1", + "@layerzerolabs/protocol-devtools": "^1.1.2", + "@layerzerolabs/ua-devtools": "^3.0.2", "@solana/web3.js": "^1.95.8", "fp-ts": "^2.16.2", "zod": "^3.22.4" diff --git a/packages/protocol-devtools/CHANGELOG.md b/packages/protocol-devtools/CHANGELOG.md index 1040f75a1..df3f39210 100644 --- a/packages/protocol-devtools/CHANGELOG.md +++ b/packages/protocol-devtools/CHANGELOG.md @@ -1,5 +1,13 @@ # @layerzerolabs/protocol-devtools +## 1.1.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/devtools@0.4.3 + ## 1.1.1 ### Patch Changes diff --git a/packages/protocol-devtools/package.json b/packages/protocol-devtools/package.json index 113a190e6..7e9bfbfe2 100644 --- a/packages/protocol-devtools/package.json +++ b/packages/protocol-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/protocol-devtools", - "version": "1.1.1", + "version": "1.1.2", "description": "Utilities for working with LayerZero protocol contracts", "repository": { "type": "git", @@ -32,10 +32,10 @@ "test": "jest --ci" }, "devDependencies": { - "@layerzerolabs/devtools": "~0.4.2", + "@layerzerolabs/devtools": "~0.4.3", "@layerzerolabs/io-devtools": "~0.1.14", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/test-devtools": "~0.4.2", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", @@ -48,9 +48,9 @@ "zod": "^3.22.4" }, "peerDependencies": { - "@layerzerolabs/devtools": "~0.4.2", + "@layerzerolabs/devtools": "~0.4.3", "@layerzerolabs/io-devtools": "~0.1.14", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "zod": "^3.22.4" }, "publishConfig": { diff --git a/packages/test-devtools-evm-foundry/CHANGELOG.md b/packages/test-devtools-evm-foundry/CHANGELOG.md index d286af4be..5b997d4ad 100644 --- a/packages/test-devtools-evm-foundry/CHANGELOG.md +++ b/packages/test-devtools-evm-foundry/CHANGELOG.md @@ -1,5 +1,15 @@ # @layerzerolabs/test-devtools-evm-foundry +## 6.0.0 + +### Patch Changes + +- Updated dependencies [60cc71c] +- Updated dependencies [5c47a41] +- Updated dependencies [e90a1d3] + - @layerzerolabs/oft-evm@3.1.0 + - @layerzerolabs/oapp-evm@0.3.0 + ## 5.1.0 ### Minor Changes diff --git a/packages/test-devtools-evm-foundry/package.json b/packages/test-devtools-evm-foundry/package.json index b4ae71775..cbfce777b 100644 --- a/packages/test-devtools-evm-foundry/package.json +++ b/packages/test-devtools-evm-foundry/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/test-devtools-evm-foundry", - "version": "5.1.0", + "version": "6.0.0", "description": "Helpers for testing LayerZero EVM contracts using foundry", "repository": { "type": "git", @@ -34,7 +34,7 @@ "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/oft-evm": "^3.0.0", + "@layerzerolabs/oft-evm": "^3.1.0", "@openzeppelin/contracts": "^4.9.5 || ^5.0.0", "@openzeppelin/contracts-upgradeable": "^4.9.5 || ^5.0.0" }, diff --git a/packages/test-devtools/CHANGELOG.md b/packages/test-devtools/CHANGELOG.md index 76e737b84..9119f4247 100644 --- a/packages/test-devtools/CHANGELOG.md +++ b/packages/test-devtools/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/test-devtools +## 0.4.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.4.1 ### Patch Changes diff --git a/packages/test-devtools/package.json b/packages/test-devtools/package.json index c702f390d..438b11bd2 100644 --- a/packages/test-devtools/package.json +++ b/packages/test-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/test-devtools", - "version": "0.4.1", + "version": "0.4.2", "description": "Internal utilities for testing LayerZero packages", "repository": { "type": "git", @@ -33,7 +33,7 @@ "@scure/bip39": "~1.2.2" }, "devDependencies": { - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "bs58": "^6.0.0", "fast-check": "^3.15.1", "ts-node": "^10.9.2", @@ -42,7 +42,7 @@ "typescript": "^5.4.4" }, "peerDependencies": { - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/lz-definitions": "^3.0.27", "bs58": "^6.0.0", "fast-check": "^3.14.0" }, diff --git a/packages/toolbox-hardhat/CHANGELOG.md b/packages/toolbox-hardhat/CHANGELOG.md index 04a735f89..05b4c8dfa 100644 --- a/packages/toolbox-hardhat/CHANGELOG.md +++ b/packages/toolbox-hardhat/CHANGELOG.md @@ -1,5 +1,21 @@ # @layerzerolabs/toolbox-hardhat +## 0.6.3 + +### Patch Changes + +- d255778: add metadata-tools package +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/ua-devtools-evm-hardhat@6.0.5 + - @layerzerolabs/protocol-devtools-evm@3.0.3 + - @layerzerolabs/devtools-evm-hardhat@2.0.4 + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/ua-devtools-evm@5.0.3 + - @layerzerolabs/devtools-evm@1.0.2 + - @layerzerolabs/ua-devtools@3.0.2 + - @layerzerolabs/devtools@0.4.3 + ## 0.6.2 ### Patch Changes diff --git a/packages/toolbox-hardhat/package.json b/packages/toolbox-hardhat/package.json index 790efe4ec..ba3ae872f 100644 --- a/packages/toolbox-hardhat/package.json +++ b/packages/toolbox-hardhat/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/toolbox-hardhat", - "version": "0.6.2", + "version": "0.6.3", "description": "One-stop-shop for developing LayerZero applications using hardhat", "repository": { "type": "git", @@ -35,20 +35,20 @@ "@ethersproject/bytes": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/hash": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "~2.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-sdk-v1": "^3.0.12", "@layerzerolabs/lz-evm-sdk-v2": "^3.0.21", "@layerzerolabs/lz-v2-utilities": "^3.0.12", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.2", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", "@layerzerolabs/test-devtools-evm-hardhat": "~0.5.0", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", - "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.4", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", + "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.5", "fp-ts": "^2.16.2", "ink": "^3.2.0", "ink-gradient": "^2.0.0", diff --git a/packages/toolbox-hardhat/types/index.d.ts b/packages/toolbox-hardhat/types/index.d.ts index 7558145da..69566b51a 100644 --- a/packages/toolbox-hardhat/types/index.d.ts +++ b/packages/toolbox-hardhat/types/index.d.ts @@ -19,6 +19,7 @@ export type { // We also re-export all the relevant types from ua-devtools export type { OwnableNodeConfig, + OAppEnforcedOption, OAppReceiveConfig, OAppReceiveLibraryConfig, OAppSendConfig, diff --git a/packages/ua-devtools-evm-hardhat/CHANGELOG.md b/packages/ua-devtools-evm-hardhat/CHANGELOG.md index f47a5f004..83cf2c3f4 100644 --- a/packages/ua-devtools-evm-hardhat/CHANGELOG.md +++ b/packages/ua-devtools-evm-hardhat/CHANGELOG.md @@ -1,5 +1,19 @@ # @layerzerolabs/ua-devtools-evm-hardhat +## 6.0.5 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/protocol-devtools-evm@3.0.3 + - @layerzerolabs/devtools-evm-hardhat@2.0.4 + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/ua-devtools-evm@5.0.3 + - @layerzerolabs/devtools-evm@1.0.2 + - @layerzerolabs/ua-devtools@3.0.2 + - @layerzerolabs/devtools@0.4.3 + ## 6.0.4 ### Patch Changes diff --git a/packages/ua-devtools-evm-hardhat/package.json b/packages/ua-devtools-evm-hardhat/package.json index 88cb56d7a..a1b24d7d1 100644 --- a/packages/ua-devtools-evm-hardhat/package.json +++ b/packages/ua-devtools-evm-hardhat/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/ua-devtools-evm-hardhat", - "version": "6.0.4", + "version": "6.0.5", "description": "Hardhat utilities for working with LayerZero EVM contracts", "repository": { "type": "git", @@ -44,17 +44,17 @@ "@ethersproject/contracts": "^5.7.0", "@ethersproject/hash": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "~2.0.3", - "@layerzerolabs/io-devtools": "~0.1.13", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-v2-utilities": "^3.0.12", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.1", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", @@ -73,15 +73,15 @@ "@ethersproject/bytes": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/hash": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "~2.0.3", - "@layerzerolabs/io-devtools": "~0.1.13", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.1", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", "ethers": "^5.7.2", "hardhat": "^2.22.10", "hardhat-deploy": "^0.12.1" diff --git a/packages/ua-devtools-evm/CHANGELOG.md b/packages/ua-devtools-evm/CHANGELOG.md index d2217b820..4a4afa253 100644 --- a/packages/ua-devtools-evm/CHANGELOG.md +++ b/packages/ua-devtools-evm/CHANGELOG.md @@ -1,5 +1,17 @@ # @layerzerolabs/ua-devtools-evm +## 5.0.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/protocol-devtools-evm@3.0.3 + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/devtools-evm@1.0.2 + - @layerzerolabs/ua-devtools@3.0.2 + - @layerzerolabs/devtools@0.4.3 + ## 5.0.2 ### Patch Changes diff --git a/packages/ua-devtools-evm/package.json b/packages/ua-devtools-evm/package.json index 91997279c..97fe20e66 100644 --- a/packages/ua-devtools-evm/package.json +++ b/packages/ua-devtools-evm/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/ua-devtools-evm", - "version": "5.0.2", + "version": "5.0.3", "description": "Utilities for working with LayerZero contracts", "repository": { "type": "git", @@ -40,15 +40,15 @@ "@ethersproject/constants": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-v2-utilities": "^3.0.12", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.1", - "@layerzerolabs/test-devtools": "~0.4.1", - "@layerzerolabs/ua-devtools": "~3.0.1", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/test-devtools": "~0.4.2", + "@layerzerolabs/ua-devtools": "~3.0.2", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", @@ -63,14 +63,14 @@ "peerDependencies": { "@ethersproject/constants": "^5.7.0", "@ethersproject/contracts": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-v2-utilities": "^3.0.12", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.1", - "@layerzerolabs/ua-devtools": "~3.0.1", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/ua-devtools": "~3.0.2", "zod": "^3.22.4" }, "publishConfig": { diff --git a/packages/ua-devtools-solana/CHANGELOG.md b/packages/ua-devtools-solana/CHANGELOG.md index de20dac94..d24479c50 100644 --- a/packages/ua-devtools-solana/CHANGELOG.md +++ b/packages/ua-devtools-solana/CHANGELOG.md @@ -1,5 +1,17 @@ # @layerzerolabs/ua-devtools-solana +## 4.0.4 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/protocol-devtools-solana@4.0.3 + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/devtools-solana@1.0.4 + - @layerzerolabs/ua-devtools@3.0.2 + - @layerzerolabs/devtools@0.4.3 + ## 4.0.3 ### Patch Changes diff --git a/packages/ua-devtools-solana/package.json b/packages/ua-devtools-solana/package.json index 7cc3663e3..c751069f5 100644 --- a/packages/ua-devtools-solana/package.json +++ b/packages/ua-devtools-solana/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/ua-devtools-solana", - "version": "4.0.3", + "version": "4.0.4", "description": "Utilities for LayerZero Solana projects", "repository": { "type": "git", @@ -42,18 +42,18 @@ "p-memoize": "~4.0.4" }, "devDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-solana": "~1.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-solana": "~1.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-solana-sdk-v2": "^3.0.0", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oft-v2-solana-sdk": "^3.0.0", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-solana": "~4.0.2", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-solana": "~4.0.3", + "@layerzerolabs/test-devtools": "~0.4.2", "@layerzerolabs/test-devtools-solana": "~0.0.4", - "@layerzerolabs/ua-devtools": "~3.0.1", + "@layerzerolabs/ua-devtools": "~3.0.2", "@metaplex-foundation/mpl-toolbox": "^0.9.4", "@metaplex-foundation/umi": "^0.9.2", "@metaplex-foundation/umi-bundle-defaults": "^0.9.2", @@ -73,16 +73,16 @@ "zod": "^3.22.4" }, "peerDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-solana": "~1.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-solana": "~1.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-solana-sdk-v2": "^3.0.0", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oft-v2-solana-sdk": "^3.0.0", - "@layerzerolabs/protocol-devtools": "^1.1.1", - "@layerzerolabs/protocol-devtools-solana": "~4.0.2", - "@layerzerolabs/ua-devtools": "^3.0.1", + "@layerzerolabs/protocol-devtools": "^1.1.2", + "@layerzerolabs/protocol-devtools-solana": "~4.0.3", + "@layerzerolabs/ua-devtools": "^3.0.2", "@solana/web3.js": "^1.95.8", "fp-ts": "^2.16.2", "zod": "^3.22.4" diff --git a/packages/ua-devtools/CHANGELOG.md b/packages/ua-devtools/CHANGELOG.md index 02da0f1c1..606561e4a 100644 --- a/packages/ua-devtools/CHANGELOG.md +++ b/packages/ua-devtools/CHANGELOG.md @@ -1,5 +1,14 @@ # @layerzerolabs/ua-devtools +## 3.0.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/devtools@0.4.3 + ## 3.0.1 ### Patch Changes diff --git a/packages/ua-devtools/package.json b/packages/ua-devtools/package.json index 53c51e50d..7b3055a42 100644 --- a/packages/ua-devtools/package.json +++ b/packages/ua-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/ua-devtools", - "version": "3.0.1", + "version": "3.0.2", "description": "Utilities for working with LayerZero contracts", "repository": { "type": "git", @@ -31,12 +31,12 @@ "test": "jest --ci" }, "devDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-v2-utilities": "^3.0.12", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/test-devtools": "~0.4.2", "@swc/core": "^1.4.0", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", @@ -49,11 +49,11 @@ "zod": "^3.22.4" }, "peerDependencies": { - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-v2-utilities": "^3.0.12", - "@layerzerolabs/protocol-devtools": "~1.1.1", + "@layerzerolabs/protocol-devtools": "~1.1.2", "zod": "^3.22.4" }, "publishConfig": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 481fb6ec3..4a209d9cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,8 +84,8 @@ importers: specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.15)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -102,7 +102,7 @@ importers: specifier: ^0.3.0 version: link:../../packages/oapp-evm '@layerzerolabs/oft-evm': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../../packages/oft-evm '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 @@ -111,13 +111,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -198,8 +198,8 @@ importers: specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -216,7 +216,7 @@ importers: specifier: ^0.3.0 version: link:../../packages/oapp-evm '@layerzerolabs/oft-evm': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../../packages/oft-evm '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 @@ -225,13 +225,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ^5.0.0 + specifier: ^6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -312,8 +312,8 @@ importers: specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -336,13 +336,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -423,8 +423,8 @@ importers: specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -447,13 +447,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -531,14 +531,14 @@ importers: specifier: ^7.23.9 version: 7.23.9 '@layerzerolabs/devtools-evm-hardhat': - specifier: ^2.0.3 + specifier: ^2.0.4 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/eslint-config-next': specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -555,7 +555,7 @@ importers: specifier: ^0.3.0 version: link:../../packages/oapp-evm '@layerzerolabs/oft-evm': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../../packages/oft-evm '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 @@ -564,13 +564,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -651,8 +651,8 @@ importers: specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -669,7 +669,7 @@ importers: specifier: ^0.3.0 version: link:../../packages/oapp-evm '@layerzerolabs/oft-evm': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../../packages/oft-evm '@layerzerolabs/prettier-config-next': specifier: ^2.3.39 @@ -678,13 +678,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -888,26 +888,26 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../../packages/devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../../packages/devtools-evm '@layerzerolabs/devtools-evm-hardhat': - specifier: ^2.0.3 + specifier: ^2.0.4 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/devtools-solana': - specifier: ~1.0.2 + specifier: ~1.0.4 version: link:../../packages/devtools-solana '@layerzerolabs/eslint-config-next': specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/io-devtools': - specifier: ~0.1.11 + specifier: ~0.1.14 version: link:../../packages/io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -927,7 +927,7 @@ importers: specifier: ^0.3.0 version: link:../../packages/oapp-evm '@layerzerolabs/oft-evm': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../../packages/oft-evm '@layerzerolabs/oft-v2-solana-sdk': specifier: 3.0.0 @@ -936,19 +936,19 @@ importers: specifier: ^2.3.39 version: 2.3.44 '@layerzerolabs/protocol-devtools': - specifier: ^1.1.1 + specifier: ^1.1.2 version: link:../../packages/protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.1 + specifier: ~3.0.3 version: link:../../packages/protocol-devtools-evm '@layerzerolabs/protocol-devtools-solana': - specifier: ^4.0.1 + specifier: ^4.0.3 version: link:../../packages/protocol-devtools-solana '@layerzerolabs/solhint-config': specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/test-devtools-evm-hardhat': specifier: ~0.5.0 @@ -957,19 +957,19 @@ importers: specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../../packages/ua-devtools '@layerzerolabs/ua-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.3 version: link:../../packages/ua-devtools-evm '@layerzerolabs/ua-devtools-evm-hardhat': - specifier: ~6.0.4 + specifier: ~6.0.5 version: link:../../packages/ua-devtools-evm-hardhat '@layerzerolabs/ua-devtools-solana': - specifier: ~4.0.2 + specifier: ~4.0.4 version: link:../../packages/ua-devtools-solana '@metaplex-foundation/mpl-token-metadata': specifier: ^3.2.1 @@ -1110,14 +1110,14 @@ importers: specifier: ^7.23.9 version: 7.23.9 '@layerzerolabs/devtools-evm-hardhat': - specifier: ^2.0.3 + specifier: ^2.0.4 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/eslint-config-next': specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -1140,7 +1140,7 @@ importers: specifier: ^0.1.0 version: link:../../packages/oapp-evm-upgradeable '@layerzerolabs/oft-evm': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../../packages/oft-evm '@layerzerolabs/oft-evm-upgradeable': specifier: ^3.0.0 @@ -1152,13 +1152,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.2 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomiclabs/hardhat-ethers': specifier: ^2.2.3 @@ -1245,8 +1245,8 @@ importers: specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -1272,13 +1272,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -1356,8 +1356,8 @@ importers: specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -1383,13 +1383,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@matterlabs/hardhat-zksync-deploy': specifier: ~0.9.0 @@ -1479,8 +1479,8 @@ importers: specifier: ~2.3.39 version: 2.3.44(typescript@5.5.3) '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -1503,13 +1503,13 @@ importers: specifier: ^3.0.12 version: 3.0.12(typescript@5.5.3) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../../packages/test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 version: link:../../packages/toolbox-foundry '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.1 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -1630,7 +1630,7 @@ importers: specifier: ~1.0.0 version: link:../devtools-evm '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-v2-utilities': specifier: ^3.0.12 @@ -1679,7 +1679,7 @@ importers: version: 1.10.0 devDependencies: '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@swc/core': specifier: ^1.4.0 @@ -1764,7 +1764,7 @@ importers: specifier: ~1.0.0 version: link:../devtools-evm '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-v2-utilities': specifier: ^3.0.12 @@ -1825,13 +1825,13 @@ importers: specifier: ~5.7.0 version: 5.7.0 '@layerzerolabs/io-devtools': - specifier: ~0.1.13 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@swc/core': specifier: ^1.4.0 @@ -1877,7 +1877,7 @@ importers: specifier: ~0.4.0 version: link:../devtools '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/ua-devtools': specifier: ~3.0.0 @@ -1962,16 +1962,16 @@ importers: specifier: ^5.7.2 version: 5.7.2 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@safe-global/safe-core-sdk-types': specifier: ^2.3.0 @@ -2047,22 +2047,22 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../devtools-evm '@layerzerolabs/io-devtools': - specifier: ~0.1.13 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-sdk-v1': specifier: ^3.0.12 version: 3.0.12 '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@layerzerolabs/test-devtools-evm-hardhat': specifier: ~0.5.0 @@ -2126,16 +2126,16 @@ importers: version: 4.0.4 devDependencies: '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@layerzerolabs/test-devtools-solana': specifier: ~0.0.4 @@ -2190,31 +2190,38 @@ importers: version: 3.22.4 packages/devtools-ton: + dependencies: + '@ton/core': + specifier: ^0.59.0 + version: 0.59.0(@ton/crypto@3.3.0) + '@ton/crypto': + specifier: ^3.3.0 + version: 3.3.0 + '@ton/ton': + specifier: ^15.1.0 + version: 15.1.0(@ton/core@0.59.0)(@ton/crypto@3.3.0) + p-memoize: + specifier: ~4.0.4 + version: 4.0.4 devDependencies: '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/io-devtools': - specifier: ~0.1.13 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 + '@layerzerolabs/lz-ton-sdk-v2': + specifier: ^3.0.27 + version: 3.0.27 '@swc/core': specifier: ^1.4.0 version: 1.4.0 '@swc/jest': specifier: ^0.2.36 version: 0.2.36(@swc/core@1.4.0) - '@ton/core': - specifier: ^0.59.0 - version: 0.59.0(@ton/crypto@3.3.0) - '@ton/crypto': - specifier: ^3.3.0 - version: 3.3.0 - '@ton/ton': - specifier: ^15.1.0 - version: 15.1.0(@ton/core@0.59.0)(@ton/crypto@3.3.0) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -2237,7 +2244,7 @@ importers: specifier: ~8.0.1 version: 8.0.1(@swc/core@1.4.0)(ts-node@10.9.2)(typescript@5.5.3) typescript: - specifier: ^5.4.4 + specifier: ^5.3.3 version: 5.5.3 packages/export-deployments: @@ -2247,7 +2254,7 @@ importers: version: 5.5.3 devDependencies: '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@swc/core': specifier: ^1.4.0 @@ -2356,6 +2363,36 @@ importers: specifier: ^3.22.4 version: 3.22.4 + packages/metadata-tools: + devDependencies: + '@layerzerolabs/devtools-evm-hardhat': + specifier: ~2.0.4 + version: link:../devtools-evm-hardhat + '@layerzerolabs/ua-devtools': + specifier: ~3.0.2 + version: link:../ua-devtools + '@swc/core': + specifier: ^1.4.0 + version: 1.4.0 + '@swc/jest': + specifier: ^0.2.36 + version: 0.2.36(@swc/core@1.4.0) + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@18.18.14)(ts-node@10.9.2) + tslib: + specifier: ~2.6.2 + version: 2.6.3 + tsup: + specifier: ~8.0.1 + version: 8.0.1(@swc/core@1.4.0)(typescript@5.5.3) + typescript: + specifier: ^5.4.4 + version: 5.5.3 + packages/oapp-alt-evm: dependencies: ethers: @@ -2375,7 +2412,7 @@ importers: specifier: ^0.3.0 version: link:../oapp-evm '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.9 @@ -2403,7 +2440,7 @@ importers: specifier: ^3.0.12 version: 3.0.12(@openzeppelin/contracts-upgradeable@5.0.2)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4) '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.9 @@ -2434,7 +2471,7 @@ importers: specifier: ^0.3.0 version: link:../oapp-evm '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.9 @@ -2464,10 +2501,10 @@ importers: specifier: ^0.3.0 version: link:../oapp-evm '@layerzerolabs/oft-evm': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../oft-evm '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.9 @@ -2494,7 +2531,7 @@ importers: specifier: ^0.3.0 version: link:../oapp-evm '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.9 @@ -2527,10 +2564,10 @@ importers: specifier: ^0.1.0 version: link:../oapp-evm-upgradeable '@layerzerolabs/oft-evm': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../oft-evm '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ^0.1.9 @@ -2548,13 +2585,13 @@ importers: packages/omnicounter-devtools: devDependencies: '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../protocol-devtools '@swc/core': specifier: ^1.4.0 @@ -2591,28 +2628,28 @@ importers: version: 4.0.4 devDependencies: '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../devtools-evm '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/omnicounter-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../omnicounter-devtools '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.1 + specifier: ~3.0.3 version: link:../protocol-devtools-evm '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../ua-devtools '@layerzerolabs/ua-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.3 version: link:../ua-devtools-evm '@swc/core': specifier: ^1.4.0 @@ -2660,7 +2697,7 @@ importers: specifier: ^0.3.0 version: link:../oapp-evm '@layerzerolabs/test-devtools-evm-foundry': - specifier: ~5.1.0 + specifier: ~6.0.0 version: link:../test-devtools-evm-foundry '@layerzerolabs/toolbox-foundry': specifier: ~0.1.9 @@ -2678,16 +2715,16 @@ importers: packages/protocol-devtools: devDependencies: '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/io-devtools': specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@swc/core': specifier: ^1.4.0 @@ -2745,25 +2782,25 @@ importers: specifier: ^5.7.2 version: 5.7.2 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../devtools-evm '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-sdk-v2': specifier: ^3.0.21 version: 3.0.22 '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../protocol-devtools '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@swc/core': specifier: ^1.4.0 @@ -2812,17 +2849,17 @@ importers: version: 4.0.4 devDependencies: '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/devtools-solana': - specifier: ~1.0.3 + specifier: ~1.0.4 version: link:../devtools-solana '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-solana-sdk-v2': specifier: ^3.0.0 version: 3.0.0(fastestsmallesttextencoderdecoder@1.0.22) @@ -2830,16 +2867,16 @@ importers: specifier: ^3.0.12 version: 3.0.12 '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../protocol-devtools '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@layerzerolabs/test-devtools-solana': specifier: ~0.0.4 version: link:../test-devtools-solana '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../ua-devtools '@solana/web3.js': specifier: ~1.95.8 @@ -2888,8 +2925,8 @@ importers: version: 1.2.2 devDependencies: '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 bs58: specifier: ^6.0.0 version: 6.0.0 @@ -2915,7 +2952,7 @@ importers: specifier: ^0.3.0 version: link:../oapp-evm '@layerzerolabs/oft-evm': - specifier: ^3.0.0 + specifier: ^3.1.0 version: link:../oft-evm devDependencies: '@layerzerolabs/lz-evm-messagelib-v2': @@ -3090,20 +3127,20 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../devtools-evm '@layerzerolabs/devtools-evm-hardhat': - specifier: ~2.0.3 + specifier: ~2.0.4 version: link:../devtools-evm-hardhat '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-sdk-v1': specifier: ^3.0.12 version: 3.0.12 @@ -3114,22 +3151,22 @@ importers: specifier: ^3.0.12 version: 3.0.12 '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.2 + specifier: ~3.0.3 version: link:../protocol-devtools-evm '@layerzerolabs/test-devtools-evm-hardhat': specifier: ~0.5.0 version: link:../test-devtools-evm-hardhat '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../ua-devtools '@layerzerolabs/ua-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.3 version: link:../ua-devtools-evm '@layerzerolabs/ua-devtools-evm-hardhat': - specifier: ~6.0.4 + specifier: ~6.0.5 version: link:../ua-devtools-evm-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.2 @@ -3190,22 +3227,22 @@ importers: packages/ua-devtools: devDependencies: '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-v2-utilities': specifier: ^3.0.12 version: 3.0.12 '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../protocol-devtools '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@swc/core': specifier: ^1.4.0 @@ -3263,31 +3300,31 @@ importers: specifier: ^5.7.0 version: 5.7.2 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../devtools-evm '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-v2-utilities': specifier: ^3.0.12 version: 3.0.12 '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.1 + specifier: ~3.0.3 version: link:../protocol-devtools-evm '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../ua-devtools '@swc/core': specifier: ^1.4.0 @@ -3345,20 +3382,20 @@ importers: specifier: ^5.7.0 version: 5.7.2 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../devtools-evm '@layerzerolabs/devtools-evm-hardhat': - specifier: ~2.0.3 + specifier: ~2.0.4 version: link:../devtools-evm-hardhat '@layerzerolabs/io-devtools': - specifier: ~0.1.13 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.15)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.1.0)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -3366,16 +3403,16 @@ importers: specifier: ^3.0.12 version: 3.0.12 '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.1 + specifier: ~3.0.3 version: link:../protocol-devtools-evm '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../ua-devtools '@layerzerolabs/ua-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.3 version: link:../ua-devtools-evm '@swc/core': specifier: ^1.4.0 @@ -3430,17 +3467,17 @@ importers: version: 4.0.4 devDependencies: '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../devtools '@layerzerolabs/devtools-solana': - specifier: ~1.0.3 + specifier: ~1.0.4 version: link:../devtools-solana '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-solana-sdk-v2': specifier: ^3.0.0 version: 3.0.0(fastestsmallesttextencoderdecoder@1.0.22) @@ -3451,19 +3488,19 @@ importers: specifier: ^3.0.0 version: 3.0.0(fastestsmallesttextencoderdecoder@1.0.22) '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../protocol-devtools '@layerzerolabs/protocol-devtools-solana': - specifier: ~4.0.2 + specifier: ~4.0.3 version: link:../protocol-devtools-solana '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../test-devtools '@layerzerolabs/test-devtools-solana': specifier: ~0.0.4 version: link:../test-devtools-solana '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../ua-devtools '@metaplex-foundation/mpl-toolbox': specifier: ^0.9.4 @@ -3592,23 +3629,23 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../../packages/devtools '@layerzerolabs/devtools-cli': specifier: ~0.0.4 version: link:../../packages/devtools-cli '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../../packages/devtools-evm '@layerzerolabs/devtools-evm-hardhat': - specifier: ~2.0.3 + specifier: ~2.0.4 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../../packages/io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.15)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.4)(solidity-bytes-utils@0.8.2) @@ -3628,34 +3665,34 @@ importers: specifier: ^0.3.0 version: link:../../packages/oapp-evm '@layerzerolabs/omnicounter-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../../packages/omnicounter-devtools '@layerzerolabs/omnicounter-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.2 version: link:../../packages/omnicounter-devtools-evm '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../../packages/protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.2 + specifier: ~3.0.3 version: link:../../packages/protocol-devtools-evm '@layerzerolabs/test-devtools-evm-hardhat': specifier: ~0.5.0 version: link:../../packages/test-devtools-evm-hardhat '@layerzerolabs/test-setup-devtools-evm-hardhat': - specifier: ~6.0.1 + specifier: ~6.0.2 version: link:../test-setup-devtools-evm-hardhat '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.2 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../../packages/ua-devtools '@layerzerolabs/ua-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.3 version: link:../../packages/ua-devtools-evm '@layerzerolabs/ua-devtools-evm-hardhat': - specifier: ~6.0.4 + specifier: ~6.0.5 version: link:../../packages/ua-devtools-evm-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -3733,20 +3770,20 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../../packages/devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../../packages/devtools-evm '@layerzerolabs/devtools-evm-hardhat': - specifier: ~2.0.3 + specifier: ~2.0.4 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../../packages/io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.15)(@openzeppelin/contracts-upgradeable@4.9.5)(@openzeppelin/contracts@4.9.5)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -3763,28 +3800,28 @@ importers: specifier: ^3.0.12 version: 3.0.12 '@layerzerolabs/omnicounter-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../../packages/omnicounter-devtools '@layerzerolabs/omnicounter-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.2 version: link:../../packages/omnicounter-devtools-evm '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../../packages/protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.2 + specifier: ~3.0.3 version: link:../../packages/protocol-devtools-evm '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../../packages/test-devtools '@layerzerolabs/test-devtools-evm-hardhat': specifier: ~0.5.0 version: link:../../packages/test-devtools-evm-hardhat '@layerzerolabs/test-setup-devtools-evm-hardhat': - specifier: ~6.0.1 + specifier: ~6.0.2 version: link:../test-setup-devtools-evm-hardhat '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.2 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -3853,16 +3890,16 @@ importers: specifier: ^5.7.2 version: 5.7.2 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../../packages/devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../../packages/devtools-evm '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/test-devtools': - specifier: ~0.4.1 + specifier: ~0.4.2 version: link:../../packages/test-devtools '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -3907,7 +3944,7 @@ importers: specifier: ~0.0.13 version: link:../../packages/export-deployments '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../../packages/io-devtools '@layerzerolabs/test-setup-devtools-evm-hardhat': specifier: ~6.0.0 @@ -3985,31 +4022,31 @@ importers: specifier: ^5.7.2 version: 5.7.2 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../../packages/devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../../packages/devtools-evm '@layerzerolabs/devtools-evm-hardhat': - specifier: ~2.0.3 + specifier: ~2.0.4 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../../packages/io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../../packages/protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.1 + specifier: ~3.0.3 version: link:../../packages/protocol-devtools-evm '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../../packages/ua-devtools '@layerzerolabs/ua-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.3 version: link:../../packages/ua-devtools-evm '@types/jest': specifier: ^29.5.12 @@ -4063,20 +4100,20 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../../packages/devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../../packages/devtools-evm '@layerzerolabs/devtools-evm-hardhat': - specifier: ~2.0.3 + specifier: ~2.0.4 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../../packages/io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.15)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -4096,34 +4133,34 @@ importers: specifier: ^0.3.0 version: link:../../packages/oapp-evm '@layerzerolabs/omnicounter-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../../packages/omnicounter-devtools '@layerzerolabs/omnicounter-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.2 version: link:../../packages/omnicounter-devtools-evm '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../../packages/protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.2 + specifier: ~3.0.3 version: link:../../packages/protocol-devtools-evm '@layerzerolabs/test-devtools-evm-hardhat': specifier: ~0.5.0 version: link:../../packages/test-devtools-evm-hardhat '@layerzerolabs/test-setup-devtools-evm-hardhat': - specifier: ~6.0.1 + specifier: ~6.0.2 version: link:../test-setup-devtools-evm-hardhat '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.2 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../../packages/ua-devtools '@layerzerolabs/ua-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.3 version: link:../../packages/ua-devtools-evm '@layerzerolabs/ua-devtools-evm-hardhat': - specifier: ~6.0.4 + specifier: ~6.0.5 version: link:../../packages/ua-devtools-evm-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -4201,20 +4238,20 @@ importers: specifier: ^5.7.0 version: 5.7.0 '@layerzerolabs/devtools': - specifier: ~0.4.2 + specifier: ~0.4.3 version: link:../../packages/devtools '@layerzerolabs/devtools-evm': - specifier: ~1.0.1 + specifier: ~1.0.2 version: link:../../packages/devtools-evm '@layerzerolabs/devtools-evm-hardhat': - specifier: ~2.0.3 + specifier: ~2.0.4 version: link:../../packages/devtools-evm-hardhat '@layerzerolabs/io-devtools': - specifier: ~0.1.12 + specifier: ~0.1.14 version: link:../../packages/io-devtools '@layerzerolabs/lz-definitions': - specifier: ^3.0.21 - version: 3.0.21 + specifier: ^3.0.27 + version: 3.0.27 '@layerzerolabs/lz-evm-messagelib-v2': specifier: ^3.0.12 version: 3.0.12(@axelar-network/axelar-gmp-sdk-solidity@5.10.0)(@chainlink/contracts-ccip@0.7.6)(@eth-optimism/contracts@0.6.0)(@layerzerolabs/lz-evm-protocol-v2@3.0.12)(@layerzerolabs/lz-evm-v1-0.7@3.0.12)(@openzeppelin/contracts-upgradeable@5.1.0)(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.12.1)(solidity-bytes-utils@0.8.2) @@ -4240,34 +4277,34 @@ importers: specifier: ^0.3.0 version: link:../../packages/oapp-evm '@layerzerolabs/omnicounter-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../../packages/omnicounter-devtools '@layerzerolabs/omnicounter-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.2 version: link:../../packages/omnicounter-devtools-evm '@layerzerolabs/protocol-devtools': - specifier: ~1.1.1 + specifier: ~1.1.2 version: link:../../packages/protocol-devtools '@layerzerolabs/protocol-devtools-evm': - specifier: ~3.0.2 + specifier: ~3.0.3 version: link:../../packages/protocol-devtools-evm '@layerzerolabs/test-devtools-evm-hardhat': specifier: ~0.5.0 version: link:../../packages/test-devtools-evm-hardhat '@layerzerolabs/test-setup-devtools-evm-hardhat': - specifier: ~6.0.1 + specifier: ~6.0.2 version: link:../test-setup-devtools-evm-hardhat '@layerzerolabs/toolbox-hardhat': - specifier: ~0.6.2 + specifier: ~0.6.3 version: link:../../packages/toolbox-hardhat '@layerzerolabs/ua-devtools': - specifier: ~3.0.1 + specifier: ~3.0.2 version: link:../../packages/ua-devtools '@layerzerolabs/ua-devtools-evm': - specifier: ~5.0.1 + specifier: ~5.0.3 version: link:../../packages/ua-devtools-evm '@layerzerolabs/ua-devtools-evm-hardhat': - specifier: ~6.0.4 + specifier: ~6.0.5 version: link:../../packages/ua-devtools-evm-hardhat '@nomicfoundation/hardhat-ethers': specifier: ^3.0.5 @@ -6491,8 +6528,8 @@ packages: - utf-8-validate dev: true - /@layerzerolabs/lz-definitions@3.0.21: - resolution: {integrity: sha512-LirBj6+rODkk97wnZ/Z2zK8NPyopOh3taj3GG1tOVBILkoHO2j5HbXM16QOwHzmQeU/OrdnzCS5tPV225KVQmA==} + /@layerzerolabs/lz-definitions@3.0.27: + resolution: {integrity: sha512-XfYKb2BHef+rLRbBAQeys6ZqFrVIjiIgHKeztvMKgHigrlKjwL/5QyH/F9KdPP6buy25l5FbOlYVujCHb/li5A==} dependencies: tiny-invariant: 1.3.3 @@ -7052,7 +7089,7 @@ packages: /@layerzerolabs/lz-foundation@3.0.0: resolution: {integrity: sha512-vYuuZAfIaRQUEGaKnV4dCOiFTENhfc2w+Fcnza/T7+O/JIKL2p/GqdxcC21HqrMNdLGMmSWnUqLlou+eCk3ROQ==} dependencies: - '@layerzerolabs/lz-definitions': 3.0.21 + '@layerzerolabs/lz-definitions': 3.0.27 '@layerzerolabs/lz-utilities': 3.0.0 '@noble/ed25519': 1.7.3 '@noble/hashes': 1.4.0 @@ -7075,7 +7112,7 @@ packages: '@ethersproject/sha2': 5.7.0 '@ethersproject/solidity': 5.7.0 '@layerzerolabs/lz-corekit-solana': 3.0.0 - '@layerzerolabs/lz-definitions': 3.0.21 + '@layerzerolabs/lz-definitions': 3.0.27 '@layerzerolabs/lz-v2-utilities': 3.0.12 '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1 @@ -7095,12 +7132,26 @@ packages: - utf-8-validate dev: true + /@layerzerolabs/lz-ton-sdk-v2@3.0.27: + resolution: {integrity: sha512-AU1uOzmLjWvyHdJGTo689bXLsCS/QAmfQSjvZ4544muLfpGVLl3l6lOl8DwmN1UQuwKKK94C5rEvoElVUYf0zQ==} + dependencies: + '@ton/core': 0.59.0(@ton/crypto@3.3.0) + '@ton/crypto': 3.3.0 + bigint-buffer: 1.1.5 + crc-32: 1.2.2 + ethers: 5.7.2 + tiny-invariant: 1.3.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /@layerzerolabs/lz-utilities@3.0.0: resolution: {integrity: sha512-vlQXc4BdkNNMrQT0Zp4X20GLss6xwd3rzD0kYI6W3JnhCLrUo03FEZLbliTf6t2F3IgcQf80KyOQKRewMoU+ow==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/providers': 5.7.2 - '@layerzerolabs/lz-definitions': 3.0.21 + '@layerzerolabs/lz-definitions': 3.0.27 '@noble/hashes': 1.4.0 '@noble/secp256k1': 1.7.1 '@solana/web3.js': 1.95.8 @@ -8937,13 +8988,11 @@ packages: dependencies: '@ton/crypto': 3.3.0 symbol.inspect: 1.0.1 - dev: true /@ton/crypto-primitives@2.1.0: resolution: {integrity: sha512-PQesoyPgqyI6vzYtCXw4/ZzevePc4VGcJtFwf08v10OevVJHVfW238KBdpj1kEDQkxWLeuNHEpTECNFKnP6tow==} dependencies: jssha: 3.2.0 - dev: true /@ton/crypto@3.3.0: resolution: {integrity: sha512-/A6CYGgA/H36OZ9BbTaGerKtzWp50rg67ZCH2oIjV1NcrBaCK9Z343M+CxedvM7Haf3f/Ee9EhxyeTp0GKMUpA==} @@ -8951,7 +9000,6 @@ packages: '@ton/crypto-primitives': 2.1.0 jssha: 3.2.0 tweetnacl: 1.0.3 - dev: true /@ton/ton@15.1.0(@ton/core@0.59.0)(@ton/crypto@3.3.0): resolution: {integrity: sha512-almetcfTu7jLjcNcEEPB7wAc8yl90ES1M//sOr1QE+kv7RbmEvMkaPSc7kFxzs10qrjIPKxlodBJlMSWP5LuVQ==} @@ -8968,7 +9016,7 @@ packages: zod: 3.22.4 transitivePeerDependencies: - debug - dev: true + dev: false /@trufflesuite/bigint-buffer@1.1.9: resolution: {integrity: sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==} @@ -10057,7 +10105,6 @@ packages: proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: true /babel-jest@29.7.0(@babel/core@7.23.9): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} @@ -11204,7 +11251,6 @@ packages: /dataloader@2.2.2: resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} - dev: true /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -13001,7 +13047,6 @@ packages: optional: true dependencies: debug: 4.3.7 - dev: true /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -13056,7 +13101,6 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} @@ -15087,7 +15131,6 @@ packages: /jssha@3.2.0: resolution: {integrity: sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==} - dev: true /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} @@ -16619,7 +16662,6 @@ packages: /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true /prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -18041,7 +18083,6 @@ packages: /symbol.inspect@1.0.1: resolution: {integrity: sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==} - dev: true /synckit@0.8.8: resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} @@ -18158,7 +18199,6 @@ packages: /teslabot@1.5.0: resolution: {integrity: sha512-e2MmELhCgrgZEGo7PQu/6bmYG36IDH+YrBI1iGm6jovXkeDIGa3pZ2WSqRjzkuw2vt1EqfkZoV5GpXgqL8QJVg==} - dev: true /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} diff --git a/tests-user/tests/create-lz-oapp.bats b/tests-user/tests/create-lz-oapp.bats index 66d08527c..64d95556d 100644 --- a/tests-user/tests/create-lz-oapp.bats +++ b/tests-user/tests/create-lz-oapp.bats @@ -194,7 +194,7 @@ teardown() { @test "should work with pnpm & oft solana example in CI mode" { local DESTINATION="$PROJECTS_DIRECTORY/pnpm-oft-solana" - LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE=1 npx --yes create-lz-oapp --ci --example oft-solana --destination $DESTINATION --package-manager pnpm + LZ_ENABLE_SOLANA_OFT_EXAMPLE=1 npx --yes create-lz-oapp --ci --example oft-solana --destination $DESTINATION --package-manager pnpm cd "$DESTINATION" pnpm compile pnpm test @@ -289,7 +289,7 @@ teardown() { @test "should work with yarn & oft solana example in CI mode" { local DESTINATION="$PROJECTS_DIRECTORY/yarn-oft-solana" - YARN_CACHE_FOLDER="/tmp/.yarn-cache-oft-solana" LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE=1 npx --yes create-lz-oapp --ci --example oft-solana --destination $DESTINATION --package-manager yarn + YARN_CACHE_FOLDER="/tmp/.yarn-cache-oft-solana" LZ_ENABLE_SOLANA_OFT_EXAMPLE=1 npx --yes create-lz-oapp --ci --example oft-solana --destination $DESTINATION --package-manager yarn cd "$DESTINATION" yarn compile yarn test @@ -384,7 +384,7 @@ teardown() { @test "should work with npm & oft solana example in CI mode" { local DESTINATION="$PROJECTS_DIRECTORY/npm-oft-solana" - LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE=1 npx --yes create-lz-oapp --ci --example oft-solana --destination $DESTINATION --package-manager npm + LZ_ENABLE_SOLANA_OFT_EXAMPLE=1 npx --yes create-lz-oapp --ci --example oft-solana --destination $DESTINATION --package-manager npm cd "$DESTINATION" npm run compile npm run test diff --git a/tests/devtools-cli-test/CHANGELOG.md b/tests/devtools-cli-test/CHANGELOG.md index 5ac75e652..ae670437f 100644 --- a/tests/devtools-cli-test/CHANGELOG.md +++ b/tests/devtools-cli-test/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/devtools-cli-test +## 0.4.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.4.2 ### Patch Changes diff --git a/tests/devtools-cli-test/package.json b/tests/devtools-cli-test/package.json index 1315ba9b5..144ee9bce 100644 --- a/tests/devtools-cli-test/package.json +++ b/tests/devtools-cli-test/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/devtools-cli-test", - "version": "0.4.2", + "version": "0.4.3", "private": true, "description": "Integration tests for devtools-cli for V2", "repository": { @@ -25,28 +25,28 @@ "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@ethersproject/wallet": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", + "@layerzerolabs/devtools": "~0.4.3", "@layerzerolabs/devtools-cli": "~0.0.4", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "~2.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-sdk-v1": "^3.0.12", "@layerzerolabs/lz-evm-sdk-v2": "^3.0.21", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/omnicounter-devtools": "~3.0.1", - "@layerzerolabs/omnicounter-devtools-evm": "~5.0.1", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.2", + "@layerzerolabs/omnicounter-devtools": "~3.0.2", + "@layerzerolabs/omnicounter-devtools-evm": "~5.0.2", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", "@layerzerolabs/test-devtools-evm-hardhat": "~0.5.0", - "@layerzerolabs/test-setup-devtools-evm-hardhat": "~6.0.1", - "@layerzerolabs/toolbox-hardhat": "~0.6.2", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", - "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.4", + "@layerzerolabs/test-setup-devtools-evm-hardhat": "~6.0.2", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", + "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.5", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/tests/devtools-evm-hardhat-test/CHANGELOG.md b/tests/devtools-evm-hardhat-test/CHANGELOG.md index 176fce775..358164053 100644 --- a/tests/devtools-evm-hardhat-test/CHANGELOG.md +++ b/tests/devtools-evm-hardhat-test/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/devtools-evm-hardhat-test +## 0.3.4 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.3.3 ### Patch Changes diff --git a/tests/devtools-evm-hardhat-test/package.json b/tests/devtools-evm-hardhat-test/package.json index 786d3324c..2aa2cd13c 100644 --- a/tests/devtools-evm-hardhat-test/package.json +++ b/tests/devtools-evm-hardhat-test/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/devtools-evm-hardhat-test", - "version": "0.3.3", + "version": "0.3.4", "private": true, "description": "Integration tests for devtools-evm-hardhat for V2", "repository": { @@ -25,24 +25,24 @@ "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@ethersproject/wallet": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "~2.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-sdk-v1": "^3.0.12", "@layerzerolabs/lz-evm-sdk-v2": "^3.0.21", "@layerzerolabs/lz-v2-utilities": "^3.0.12", - "@layerzerolabs/omnicounter-devtools": "~3.0.1", - "@layerzerolabs/omnicounter-devtools-evm": "~5.0.1", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.2", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/omnicounter-devtools": "~3.0.2", + "@layerzerolabs/omnicounter-devtools-evm": "~5.0.2", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/test-devtools": "~0.4.2", "@layerzerolabs/test-devtools-evm-hardhat": "~0.5.0", - "@layerzerolabs/test-setup-devtools-evm-hardhat": "~6.0.1", - "@layerzerolabs/toolbox-hardhat": "~0.6.2", + "@layerzerolabs/test-setup-devtools-evm-hardhat": "~6.0.2", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^4.9.5", diff --git a/tests/devtools-evm-test/CHANGELOG.md b/tests/devtools-evm-test/CHANGELOG.md index a99ea04da..9dc9e6876 100644 --- a/tests/devtools-evm-test/CHANGELOG.md +++ b/tests/devtools-evm-test/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/devtools-evm-test +## 0.3.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.3.1 ### Patch Changes diff --git a/tests/devtools-evm-test/package.json b/tests/devtools-evm-test/package.json index 8f22d37b6..eb5270829 100644 --- a/tests/devtools-evm-test/package.json +++ b/tests/devtools-evm-test/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/devtools-evm-test", - "version": "0.3.1", + "version": "0.3.2", "private": true, "description": "Integration tests for ua-devtools-evm-hardhat for V2", "repository": { @@ -22,10 +22,10 @@ "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.2", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/test-devtools": "~0.4.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/test-devtools": "~0.4.2", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@swc/core": "^1.4.0", diff --git a/tests/export-deployments-test/package.json b/tests/export-deployments-test/package.json index cb25b3cfa..647256c7e 100644 --- a/tests/export-deployments-test/package.json +++ b/tests/export-deployments-test/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@babel/core": "^7.23.9", "@layerzerolabs/export-deployments": "~0.0.13", - "@layerzerolabs/io-devtools": "~0.1.12", + "@layerzerolabs/io-devtools": "~0.1.14", "@layerzerolabs/test-setup-devtools-evm-hardhat": "~6.0.0", "@layerzerolabs/toolbox-hardhat": "~0.6.0", "@nomicfoundation/hardhat-ethers": "^3.0.5", diff --git a/tests/test-setup-devtools-evm-hardhat/CHANGELOG.md b/tests/test-setup-devtools-evm-hardhat/CHANGELOG.md index 5ebdf52be..6f87429f7 100644 --- a/tests/test-setup-devtools-evm-hardhat/CHANGELOG.md +++ b/tests/test-setup-devtools-evm-hardhat/CHANGELOG.md @@ -1,5 +1,19 @@ # @layerzerolabs/test-setup-devtools-evm-hardhat +## 6.0.2 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions +- Updated dependencies [1d2abff] + - @layerzerolabs/protocol-devtools-evm@3.0.3 + - @layerzerolabs/devtools-evm-hardhat@2.0.4 + - @layerzerolabs/protocol-devtools@1.1.2 + - @layerzerolabs/ua-devtools-evm@5.0.3 + - @layerzerolabs/devtools-evm@1.0.2 + - @layerzerolabs/ua-devtools@3.0.2 + - @layerzerolabs/devtools@0.4.3 + ## 6.0.1 ### Patch Changes diff --git a/tests/test-setup-devtools-evm-hardhat/package.json b/tests/test-setup-devtools-evm-hardhat/package.json index 0f76967b3..4219ebc0d 100644 --- a/tests/test-setup-devtools-evm-hardhat/package.json +++ b/tests/test-setup-devtools-evm-hardhat/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/test-setup-devtools-evm-hardhat", - "version": "6.0.1", + "version": "6.0.2", "private": true, "description": "Test setup utilities for hardhat E2E tests", "repository": { @@ -31,15 +31,15 @@ }, "devDependencies": { "@ethersproject/providers": "^5.7.2", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "~2.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.1", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", "@types/jest": "^29.5.12", "ethers": "^5.7.2", "hardhat": "^2.22.10", @@ -51,14 +51,14 @@ }, "peerDependencies": { "@ethersproject/providers": "^5.7.2", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "~2.0.3", - "@layerzerolabs/lz-definitions": "^3.0.21", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.1", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/lz-definitions": "^3.0.27", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", "ethers": "^5.7.2", "hardhat": "^2.22.10", "hardhat-deploy": "^0.12.1" diff --git a/tests/ua-devtools-evm-hardhat-test/CHANGELOG.md b/tests/ua-devtools-evm-hardhat-test/CHANGELOG.md index 34c5c25c8..cd657d5f9 100644 --- a/tests/ua-devtools-evm-hardhat-test/CHANGELOG.md +++ b/tests/ua-devtools-evm-hardhat-test/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/ua-devtools-evm-hardhat-test +## 0.7.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.7.2 ### Patch Changes diff --git a/tests/ua-devtools-evm-hardhat-test/package.json b/tests/ua-devtools-evm-hardhat-test/package.json index 584868b9e..09bea26fd 100644 --- a/tests/ua-devtools-evm-hardhat-test/package.json +++ b/tests/ua-devtools-evm-hardhat-test/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/ua-devtools-evm-hardhat-test", - "version": "0.7.2", + "version": "0.7.3", "private": true, "description": "Integration tests for ua-devtools-evm-hardhat for V2", "repository": { @@ -25,27 +25,27 @@ "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@ethersproject/wallet": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "~2.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", "@layerzerolabs/lz-evm-sdk-v1": "^3.0.12", "@layerzerolabs/lz-evm-sdk-v2": "^3.0.21", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/omnicounter-devtools": "~3.0.1", - "@layerzerolabs/omnicounter-devtools-evm": "~5.0.1", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.2", + "@layerzerolabs/omnicounter-devtools": "~3.0.2", + "@layerzerolabs/omnicounter-devtools-evm": "~5.0.2", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", "@layerzerolabs/test-devtools-evm-hardhat": "~0.5.0", - "@layerzerolabs/test-setup-devtools-evm-hardhat": "~6.0.1", - "@layerzerolabs/toolbox-hardhat": "~0.6.2", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", - "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.4", + "@layerzerolabs/test-setup-devtools-evm-hardhat": "~6.0.2", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", + "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.5", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/tests/ua-devtools-evm-hardhat-v1-test/CHANGELOG.md b/tests/ua-devtools-evm-hardhat-v1-test/CHANGELOG.md index 9a8b9e203..689f5be7e 100644 --- a/tests/ua-devtools-evm-hardhat-v1-test/CHANGELOG.md +++ b/tests/ua-devtools-evm-hardhat-v1-test/CHANGELOG.md @@ -1,5 +1,11 @@ # @layerzerolabs/ua-devtools-evm-hardhat-v1-test +## 0.3.3 + +### Patch Changes + +- 1d2abff: new SDK methods, tests in devtools-ton, upgraded lz-definitions + ## 0.3.2 ### Patch Changes diff --git a/tests/ua-devtools-evm-hardhat-v1-test/package.json b/tests/ua-devtools-evm-hardhat-v1-test/package.json index 5bfce3018..29e708f62 100644 --- a/tests/ua-devtools-evm-hardhat-v1-test/package.json +++ b/tests/ua-devtools-evm-hardhat-v1-test/package.json @@ -1,6 +1,6 @@ { "name": "@layerzerolabs/ua-devtools-evm-hardhat-v1-test", - "version": "0.3.2", + "version": "0.3.3", "private": true, "description": "Integration tests for ua-devtools-evm-hardhat for V1", "repository": { @@ -25,11 +25,11 @@ "@ethersproject/contracts": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@ethersproject/wallet": "^5.7.0", - "@layerzerolabs/devtools": "~0.4.2", - "@layerzerolabs/devtools-evm": "~1.0.1", - "@layerzerolabs/devtools-evm-hardhat": "~2.0.3", - "@layerzerolabs/io-devtools": "~0.1.12", - "@layerzerolabs/lz-definitions": "^3.0.21", + "@layerzerolabs/devtools": "~0.4.3", + "@layerzerolabs/devtools-evm": "~1.0.2", + "@layerzerolabs/devtools-evm-hardhat": "~2.0.4", + "@layerzerolabs/io-devtools": "~0.1.14", + "@layerzerolabs/lz-definitions": "^3.0.27", "@layerzerolabs/lz-evm-messagelib-v2": "^3.0.12", "@layerzerolabs/lz-evm-oapp-v1": "^3.0.12", "@layerzerolabs/lz-evm-protocol-v2": "^3.0.12", @@ -38,16 +38,16 @@ "@layerzerolabs/lz-evm-v1-0.7": "^3.0.12", "@layerzerolabs/lz-v2-utilities": "^3.0.12", "@layerzerolabs/oapp-evm": "^0.3.0", - "@layerzerolabs/omnicounter-devtools": "~3.0.1", - "@layerzerolabs/omnicounter-devtools-evm": "~5.0.1", - "@layerzerolabs/protocol-devtools": "~1.1.1", - "@layerzerolabs/protocol-devtools-evm": "~3.0.2", + "@layerzerolabs/omnicounter-devtools": "~3.0.2", + "@layerzerolabs/omnicounter-devtools-evm": "~5.0.2", + "@layerzerolabs/protocol-devtools": "~1.1.2", + "@layerzerolabs/protocol-devtools-evm": "~3.0.3", "@layerzerolabs/test-devtools-evm-hardhat": "~0.5.0", - "@layerzerolabs/test-setup-devtools-evm-hardhat": "~6.0.1", - "@layerzerolabs/toolbox-hardhat": "~0.6.2", - "@layerzerolabs/ua-devtools": "~3.0.1", - "@layerzerolabs/ua-devtools-evm": "~5.0.1", - "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.4", + "@layerzerolabs/test-setup-devtools-evm-hardhat": "~6.0.2", + "@layerzerolabs/toolbox-hardhat": "~0.6.3", + "@layerzerolabs/ua-devtools": "~3.0.2", + "@layerzerolabs/ua-devtools-evm": "~5.0.3", + "@layerzerolabs/ua-devtools-evm-hardhat": "~6.0.5", "@nomicfoundation/hardhat-ethers": "^3.0.5", "@nomiclabs/hardhat-ethers": "^2.2.3", "@openzeppelin/contracts": "^5.0.2", diff --git a/turbo.json b/turbo.json index 073dac72c..b5bbfe83f 100644 --- a/turbo.json +++ b/turbo.json @@ -47,13 +47,14 @@ "LZ_ENABLE_EXPERIMENTAL_PARALLEL_EXECUTION", "LZ_ENABLE_EXPERIMENTAL_RETRY", "LZ_ENABLE_EXPERIMENTAL_SIMULATION", - "LZ_ENABLE_EXPERIMENTAL_SOLANA_OFT_EXAMPLE", + "LZ_ENABLE_SOLANA_OFT_EXAMPLE", "LZ_ENABLE_READ_EXAMPLE", "LZ_ENABLE_ZKSOLC_EXAMPLE", "LZ_ENABLE_NATIVE_EXAMPLE", "LZ_ENABLE_MINTBURN_EXAMPLE", "LZ_ENABLE_UPGRADEABLE_EXAMPLE", "LZ_ENABLE_ALT_EXAMPLE", + "LZ_METADATA_URL", "LAYERZERO_EXAMPLES_REPOSITORY_URL", "LAYERZERO_EXAMPLES_REPOSITORY_REF",