+
+## 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",