├── .changeset └── config.json ├── .devcontainer ├── README.md ├── devcontainer.json └── devcontainer.local.json ├── .dockerignore ├── .env ├── .eslintignore ├── .eslintrc.json ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── USAGE.md └── workflows │ ├── actions │ ├── docker-build-image │ │ └── action.yaml │ ├── docker-push-image │ │ └── action.yaml │ ├── install-dependencies │ │ └── action.yaml │ ├── setup-build-cache │ │ └── action.yaml │ └── setup-environment │ │ └── action.yaml │ ├── on-develop.yaml │ ├── on-main.yaml │ ├── reusable-publish-docker.yaml │ ├── reusable-publish.yaml │ └── reusable-test.yaml ├── .gitignore ├── .gitmodules ├── .husky └── pre-commit ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .prettierrc.js ├── AGENTS.md ├── CHEATSHEET.md ├── DEVELOPMENT.md ├── Dockerfile ├── EXPERIMENTAL.md ├── README.md ├── assets ├── logo-dark.svg └── logo-light.svg ├── bin └── env ├── docker-compose.local.yaml ├── docker-compose.registry.yaml ├── docker-compose.templates.yaml ├── docker-compose.yaml ├── examples ├── AGENTS.md ├── lzapp-migration │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── Anchor.toml │ ├── CHANGELOG.md │ ├── Cargo.lock │ ├── Cargo.toml │ ├── README.md │ ├── contracts │ │ ├── MyEndpointV1OFTV2.sol │ │ ├── MyLzApp.sol │ │ ├── MyOApp.sol │ │ └── mocks │ │ │ └── MyEndpointV1OFTV2Mock.sol │ ├── deploy │ │ ├── MyEndpointV1OFTV2.ts │ │ ├── MyLzApp.ts │ │ └── MyOApp.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── lzapp.config.ts │ ├── package.json │ ├── programs │ │ └── oft202 │ │ │ ├── Cargo.toml │ │ │ ├── Xargo.toml │ │ │ ├── build.rs │ │ │ ├── src │ │ │ ├── compose_msg_codec.rs │ │ │ ├── errors.rs │ │ │ ├── events.rs │ │ │ ├── instructions │ │ │ │ ├── init_oft.rs │ │ │ │ ├── lz_receive.rs │ │ │ │ ├── lz_receive_types.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── quote_oft.rs │ │ │ │ ├── quote_send.rs │ │ │ │ ├── send.rs │ │ │ │ ├── set_oft_config.rs │ │ │ │ ├── set_pause.rs │ │ │ │ ├── set_peer_config.rs │ │ │ │ └── withdraw_fee.rs │ │ │ ├── lib.rs │ │ │ ├── msg_codec.rs │ │ │ ├── options.rs │ │ │ └── state │ │ │ │ ├── mod.rs │ │ │ │ ├── oft.rs │ │ │ │ └── peer_config.rs │ │ │ └── tests │ │ │ ├── msg_codec.rs │ │ │ └── options.rs │ ├── rust-toolchain.toml │ ├── rustfmt.toml │ ├── solhint.config.js │ ├── tasks │ │ ├── common │ │ │ ├── config.get.ts │ │ │ ├── taskHelper.ts │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ └── wire.ts │ │ ├── evm │ │ │ ├── v1 │ │ │ │ ├── sendMessage.ts │ │ │ │ ├── sendOFT.ts │ │ │ │ └── setMinDstGas.ts │ │ │ └── v2 │ │ │ │ └── sendMessage.ts │ │ ├── index.ts │ │ └── solana │ │ │ ├── base58.ts │ │ │ ├── createOFT.ts │ │ │ ├── getPrioFees.ts │ │ │ ├── index.ts │ │ │ ├── initConfig.ts │ │ │ ├── multisig.ts │ │ │ ├── retryPayload.ts │ │ │ ├── sendOFT.ts │ │ │ ├── setAuthority.ts │ │ │ ├── setInboundRateLimit.ts │ │ │ ├── setOutboundRateLimit.ts │ │ │ └── updateMetadata.ts │ ├── test │ │ └── hardhat │ │ │ └── MyOApp.test.ts │ ├── tsconfig.json │ └── turbo.json ├── mint-burn-oft-adapter │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── MyMintBurnOFTAdapter.sol │ │ ├── MyOFT.sol │ │ └── mocks │ │ │ ├── MintBurnERC20Mock.sol │ │ │ ├── MyMintBurnOFTAdapterMock.sol │ │ │ └── MyOFTMock.sol │ ├── deploy │ │ ├── MyMintBurnOFTAdapter.ts │ │ └── MyOFT.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ └── MyMintBurnOFTAdapter.t.sol │ │ ├── hardhat │ │ │ └── MyMintBurnOFTAdapter.test.ts │ │ └── mocks │ │ │ ├── MintBurnERC20Mock.sol │ │ │ ├── MintBurnOFTAdapterMock.sol │ │ │ ├── OFTComposerMock.sol │ │ │ └── OFTMock.sol │ ├── tsconfig.json │ └── type-extensions.ts ├── native-oft-adapter │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── MyNativeOFTAdapter.sol │ │ ├── MyOFT.sol │ │ └── mocks │ │ │ ├── MyNativeOFTAdapterMock.sol │ │ │ └── MyOFTMock.sol │ ├── deploy │ │ ├── MyNativeOFTAdapter.ts │ │ └── MyOFT.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ ├── MyNativeOFTAdapter.t.sol │ │ │ └── MyOFT.t.sol │ │ ├── hardhat │ │ │ ├── MyNativeOFTAdapter.test.ts │ │ │ └── MyOFT.test.ts │ │ └── mocks │ │ │ ├── ERC20Mock.sol │ │ │ ├── NativeOFTAdapterMock.sol │ │ │ ├── OFTComposerMock.sol │ │ │ └── OFTMock.sol │ └── tsconfig.json ├── oapp-aptos-move │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── Move.toml │ ├── README.md │ ├── contracts │ │ └── MyOApp.sol │ ├── deploy │ │ └── MyOApp.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── move.layerzero.config.ts │ ├── package.json │ ├── scripts │ │ ├── aptos-move-get-count.ts │ │ ├── aptos-move-send.ts │ │ ├── cli.ts │ │ ├── evm-send.ts │ │ └── get-count.ts │ ├── solhint.config.js │ ├── sources │ │ ├── oapp.move │ │ └── shared_oapp │ │ │ ├── oapp_compose.move │ │ │ ├── oapp_core.move │ │ │ ├── oapp_receive.move │ │ │ └── oapp_store.move │ ├── test │ │ ├── foundry │ │ │ └── MyOApp.t.sol │ │ └── hardhat │ │ │ └── MyOApp.test.ts │ ├── tests │ │ └── shared_oapp │ │ │ ├── oapp_core_tests.move │ │ │ └── oapp_test_helper.move │ └── tsconfig.json ├── oapp-read │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── ExampleContract.sol │ │ └── ReadPublic.sol │ ├── deploy │ │ └── ReadPublic.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ └── foundry │ │ │ └── ReadPublic.t.sol │ └── tsconfig.json ├── oapp │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ └── MyOApp.sol │ ├── deploy │ │ └── MyOApp.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ └── MyOApp.t.sol │ │ └── hardhat │ │ │ └── MyOApp.test.ts │ └── tsconfig.json ├── oft-adapter-aptos-move │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── Move.toml │ ├── README.md │ ├── contracts │ │ ├── MyOFT.sol │ │ └── mocks │ │ │ └── MyOFTMock.sol │ ├── deploy-move │ │ └── OFTAdapterInitParams.ts │ ├── deploy │ │ └── MyEVMOFT.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── move.layerzero.config.ts │ ├── package.json │ ├── scripts │ │ └── cli.ts │ ├── solhint.config.js │ ├── sources │ │ ├── oft_implementation │ │ │ └── oft_adapter_fa.move │ │ ├── shared_oapp │ │ │ ├── oapp_core.move │ │ │ ├── oapp_receive.move │ │ │ └── oapp_store.move │ │ └── shared_oft │ │ │ ├── oft.move │ │ │ ├── oft_core.move │ │ │ ├── oft_impl_config.move │ │ │ └── oft_store.move │ ├── test │ │ ├── evm │ │ │ ├── foundry │ │ │ │ └── MyOFT.t.sol │ │ │ └── mocks │ │ │ │ ├── ERC20Mock.sol │ │ │ │ ├── OFTComposerMock.sol │ │ │ │ └── OFTMock.sol │ │ └── movement │ │ │ ├── internal_oapp │ │ │ ├── oapp_core_tests.move │ │ │ └── oapp_test_helper.move │ │ │ ├── internal_oft │ │ │ ├── oft_core_tests.move │ │ │ └── oft_impl_config_tests.move │ │ │ ├── oapp_receive_using_oft_fa_tests.move │ │ │ ├── oft_fa_tests.move │ │ │ └── oft_using_oft_fa_tests.move │ ├── tests │ │ ├── implementations │ │ │ └── oft_adapter_fa_tests.move │ │ ├── oapp_receive_using_oft_adapter_fa_tests.move │ │ ├── oft_using_oft_adapter_fa_tests.move │ │ ├── shared_oapp │ │ │ ├── oapp_core_tests.move │ │ │ └── oapp_test_helper.move │ │ └── shared_oft │ │ │ ├── oft_core_tests.move │ │ │ └── oft_impl_config_tests.move │ └── tsconfig.json ├── oft-adapter-initia │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── Move.toml │ ├── README.md │ ├── contracts │ │ ├── MyOFT.sol │ │ └── mocks │ │ │ └── MyOFTMock.sol │ ├── deploy-move │ │ └── OFTAdapterInitParams.ts │ ├── deploy │ │ └── MyEVMOFT.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── move.layerzero.config.ts │ ├── package.json │ ├── scripts │ │ └── cli.ts │ ├── solhint.config.js │ ├── sources │ │ ├── oft_implementation │ │ │ └── oft_adapter_fa.move │ │ ├── shared_oapp │ │ │ ├── oapp_core.move │ │ │ ├── oapp_receive.move │ │ │ └── oapp_store.move │ │ └── shared_oft │ │ │ ├── oft.move │ │ │ ├── oft_core.move │ │ │ ├── oft_impl_config.move │ │ │ └── oft_store.move │ ├── test │ │ ├── evm │ │ │ ├── foundry │ │ │ │ └── MyOFT.t.sol │ │ │ └── mocks │ │ │ │ ├── ERC20Mock.sol │ │ │ │ ├── OFTComposerMock.sol │ │ │ │ └── OFTMock.sol │ │ └── movement │ │ │ ├── internal_oapp │ │ │ ├── oapp_core_tests.move │ │ │ └── oapp_test_helper.move │ │ │ ├── internal_oft │ │ │ ├── oft_core_tests.move │ │ │ └── oft_impl_config_tests.move │ │ │ ├── oapp_receive_using_oft_fa_tests.move │ │ │ ├── oft_fa_tests.move │ │ │ └── oft_using_oft_fa_tests.move │ ├── tests │ │ ├── implementations │ │ │ └── oft_adapter_fa_tests.move │ │ ├── oapp_receive_using_oft_adapter_fa_tests.move │ │ ├── oft_using_oft_adapter_fa_tests.move │ │ ├── shared_oapp │ │ │ ├── oapp_core_tests.move │ │ │ └── oapp_test_helper.move │ │ └── shared_oft │ │ │ ├── oft_core_tests.move │ │ │ └── oft_impl_config_tests.move │ └── tsconfig.json ├── oft-adapter │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── MyOFT.sol │ │ ├── MyOFTAdapter.sol │ │ └── mocks │ │ │ ├── MyERC20Mock.sol │ │ │ ├── MyOFTAdapterMock.sol │ │ │ └── MyOFTMock.sol │ ├── deploy │ │ ├── MyOFT.ts │ │ └── MyOFTAdapter.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ └── MyOFTAdapter.t.sol │ │ ├── hardhat │ │ │ └── MyOFTAdapter.test.ts │ │ └── mocks │ │ │ ├── ERC20Mock.sol │ │ │ ├── OFTAdapterMock.sol │ │ │ ├── OFTComposerMock.sol │ │ │ └── OFTMock.sol │ ├── tsconfig.json │ └── type-extensions.ts ├── oft-alt │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── MyOFTAdapterAlt.sol │ │ ├── MyOFTAlt.sol │ │ └── mocks │ │ │ └── MyOFTAltMock.sol │ ├── deploy │ │ ├── MyOFTAdapterAlt.ts │ │ └── MyOFTAlt.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ └── MyOFTAlt.t.sol │ │ └── mocks │ │ │ ├── MyOFTAdapterAltMock.sol │ │ │ └── MyOFTAltMock.sol │ ├── tsconfig.json │ └── type-extensions.ts ├── oft-aptos-move │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── Move.toml │ ├── README.md │ ├── contracts │ │ ├── MyOFT.sol │ │ └── mocks │ │ │ └── MyOFTMock.sol │ ├── deploy-move │ │ └── OFTInitParams.ts │ ├── deploy │ │ └── MyEVMOFT.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── move.layerzero.config.ts │ ├── package.json │ ├── scripts │ │ └── cli.ts │ ├── solhint.config.js │ ├── sources │ │ ├── oft_implementation │ │ │ └── oft_fa.move │ │ ├── shared_oapp │ │ │ ├── oapp_core.move │ │ │ ├── oapp_receive.move │ │ │ └── oapp_store.move │ │ └── shared_oft │ │ │ ├── oft.move │ │ │ ├── oft_core.move │ │ │ ├── oft_impl_config.move │ │ │ └── oft_store.move │ ├── test │ │ ├── evm │ │ │ ├── foundry │ │ │ │ └── MyOFT.t.sol │ │ │ └── mocks │ │ │ │ ├── ERC20Mock.sol │ │ │ │ ├── OFTComposerMock.sol │ │ │ │ └── OFTMock.sol │ │ └── movement │ │ │ ├── internal_oapp │ │ │ ├── oapp_core_tests.move │ │ │ └── oapp_test_helper.move │ │ │ ├── internal_oft │ │ │ ├── oft_core_tests.move │ │ │ └── oft_impl_config_tests.move │ │ │ ├── oapp_receive_using_oft_fa_tests.move │ │ │ ├── oft_fa_tests.move │ │ │ └── oft_using_oft_fa_tests.move │ ├── tests │ │ ├── implementations │ │ │ └── oft_fa_tests.move │ │ ├── oapp_receive_using_oft_fa_tests.move │ │ ├── oft_using_oft_fa_tests.move │ │ ├── shared_oapp │ │ │ ├── oapp_core_tests.move │ │ │ └── oapp_test_helper.move │ │ └── shared_oft │ │ │ ├── oft_core_tests.move │ │ │ └── oft_impl_config_tests.move │ └── tsconfig.json ├── oft-hyperliquid │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── HYPERLIQUID.CHECKLIST.md │ ├── HYPERLIQUID.README.md │ ├── README.md │ ├── contracts │ │ ├── MyHyperLiquidComposer.sol │ │ └── MyOFT.sol │ ├── deploy │ │ ├── MyHyperliquidComposer.ts │ │ └── MyHyperliquidOFT.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── script │ │ └── SendScript.s.sol │ ├── scripts │ │ ├── GasProfiler.s.sol │ │ └── OFTProfilerExample.s.sol │ ├── solhint.config.js │ ├── test │ │ └── foundry │ │ │ ├── ComposerCodec │ │ │ ├── ComposeMessage.t.sol │ │ │ └── TypeConversion.t.sol │ │ │ ├── HyperLiquidComposer.t.sol │ │ │ └── MyHyperliquidOFT.t.sol │ └── tsconfig.json ├── oft-initia │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── Move.toml │ ├── README.md │ ├── contracts │ │ ├── MyOFT.sol │ │ └── mocks │ │ │ └── MyOFTMock.sol │ ├── deploy-move │ │ └── OFTInitParams.ts │ ├── deploy │ │ └── MyEVMOFT.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── move.layerzero.config.ts │ ├── package.json │ ├── scripts │ │ └── cli.ts │ ├── solhint.config.js │ ├── sources │ │ ├── oft_implementation │ │ │ └── oft_fa.move │ │ ├── shared_oapp │ │ │ ├── oapp_core.move │ │ │ ├── oapp_receive.move │ │ │ └── oapp_store.move │ │ └── shared_oft │ │ │ ├── oft.move │ │ │ ├── oft_core.move │ │ │ ├── oft_impl_config.move │ │ │ └── oft_store.move │ ├── test │ │ ├── evm │ │ │ ├── foundry │ │ │ │ └── MyOFT.t.sol │ │ │ └── mocks │ │ │ │ ├── ERC20Mock.sol │ │ │ │ ├── OFTComposerMock.sol │ │ │ │ └── OFTMock.sol │ │ └── movement │ │ │ ├── internal_oapp │ │ │ ├── oapp_core_tests.move │ │ │ └── oapp_test_helper.move │ │ │ ├── internal_oft │ │ │ ├── oft_core_tests.move │ │ │ └── oft_impl_config_tests.move │ │ │ ├── oapp_receive_using_oft_fa_tests.move │ │ │ ├── oft_fa_tests.move │ │ │ └── oft_using_oft_fa_tests.move │ ├── tests │ │ ├── implementations │ │ │ └── oft_fa_tests.move │ │ ├── oapp_receive_using_oft_fa_tests.move │ │ ├── oft_using_oft_fa_tests.move │ │ ├── shared_oapp │ │ │ ├── oapp_core_tests.move │ │ │ └── oapp_test_helper.move │ │ └── shared_oft │ │ │ ├── oft_core_tests.move │ │ │ └── oft_impl_config_tests.move │ └── tsconfig.json ├── oft-solana │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── .solhintrc.js │ ├── Anchor.toml │ ├── CHANGELOG.md │ ├── Cargo.lock │ ├── Cargo.toml │ ├── README.md │ ├── contracts │ │ ├── MyOFT.sol │ │ └── mocks │ │ │ └── MyOFTMock.sol │ ├── deploy │ │ └── MyOFT.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── jest.config.ts │ ├── junk-id.json │ ├── layerzero.config.ts │ ├── package.json │ ├── programs │ │ ├── endpoint-mock │ │ │ ├── Cargo.toml │ │ │ ├── Xargo.toml │ │ │ └── src │ │ │ │ ├── instructions │ │ │ │ ├── mod.rs │ │ │ │ └── oapp │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── register_oapp.rs │ │ │ │ ├── lib.rs │ │ │ │ └── state │ │ │ │ ├── endpoint.rs │ │ │ │ └── mod.rs │ │ └── oft │ │ │ ├── Cargo.toml │ │ │ ├── Xargo.toml │ │ │ ├── build.rs │ │ │ ├── src │ │ │ ├── compose_msg_codec.rs │ │ │ ├── errors.rs │ │ │ ├── events.rs │ │ │ ├── instructions │ │ │ │ ├── init_oft.rs │ │ │ │ ├── lz_receive.rs │ │ │ │ ├── lz_receive_types.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── quote_oft.rs │ │ │ │ ├── quote_send.rs │ │ │ │ ├── send.rs │ │ │ │ ├── set_oft_config.rs │ │ │ │ ├── set_pause.rs │ │ │ │ ├── set_peer_config.rs │ │ │ │ └── withdraw_fee.rs │ │ │ ├── lib.rs │ │ │ ├── msg_codec.rs │ │ │ └── state │ │ │ │ ├── mod.rs │ │ │ │ ├── oft.rs │ │ │ │ └── peer_config.rs │ │ │ └── tests │ │ │ └── msg_codec.rs │ ├── rust-toolchain.toml │ ├── solhint.config.js │ ├── tasks │ │ ├── common │ │ │ ├── config.get.ts │ │ │ ├── sendOFT.ts │ │ │ ├── taskHelper.ts │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ └── wire.ts │ │ ├── evm │ │ │ └── sendEvm.ts │ │ ├── index.ts │ │ └── solana │ │ │ ├── base58.ts │ │ │ ├── createOFT.ts │ │ │ ├── createOFTAdapter.ts │ │ │ ├── debug.ts │ │ │ ├── getPrioFees.ts │ │ │ ├── getRateLimits.ts │ │ │ ├── index.ts │ │ │ ├── initConfig.ts │ │ │ ├── multisig.ts │ │ │ ├── retryPayload.ts │ │ │ ├── sendSolana.ts │ │ │ ├── setAuthority.ts │ │ │ ├── setInboundRateLimit.ts │ │ │ ├── setOutboundRateLimit.ts │ │ │ ├── setUpdateAuthority.ts │ │ │ ├── updateMetadata.ts │ │ │ └── utils.ts │ ├── test │ │ ├── foundry │ │ │ └── MyOFT.t.sol │ │ ├── hardhat │ │ │ └── MyOFT.test.ts │ │ └── mocks │ │ │ ├── ERC20Mock.sol │ │ │ ├── OFTComposerMock.sol │ │ │ └── OFTMock.sol │ ├── tsconfig.json │ └── turbo.json ├── oft-upgradeable │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── MyOFTAdapterFeeUpgradeable.sol │ │ ├── MyOFTAdapterUpgradeable.sol │ │ ├── MyOFTFeeUpgradeable.sol │ │ ├── MyOFTUpgradeable.sol │ │ └── mocks │ │ │ ├── MyERC20Mock.sol │ │ │ ├── MyOFTAdapterUpgradeableMock.sol │ │ │ └── MyOFTUpgradeableMock.sol │ ├── deploy │ │ ├── MyOFTAdapterFeeUpgradeable.ts │ │ ├── MyOFTAdapterUpgradeable.ts │ │ ├── MyOFTFeeUpgradeable.ts │ │ └── MyOFTUpgradeable.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ └── MyOFTUpgradeable.t.sol │ │ └── hardhat │ │ │ └── MyOFTUpgradeable.test.ts │ └── tsconfig.json ├── oft │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── MyOFT.sol │ │ └── mocks │ │ │ └── MyOFTMock.sol │ ├── deploy │ │ └── MyOFT.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── scripts │ │ ├── GasProfiler.s.sol │ │ └── OFTProfilerExample.s.sol │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ └── MyOFT.t.sol │ │ ├── hardhat │ │ │ └── MyOFT.test.ts │ │ └── mocks │ │ │ ├── ERC20Mock.sol │ │ │ ├── OFTComposerMock.sol │ │ │ └── OFTMock.sol │ └── tsconfig.json ├── onft721-zksync │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── MyONFT721.sol │ │ └── mocks │ │ │ └── MyONFT721Mock.sol │ ├── deploy │ │ └── MyONFT721.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ └── MyONFT721.t.sol │ │ ├── hardhat │ │ │ └── MyONFT721.test.ts │ │ └── mocks │ │ │ ├── ONFT721ComposerMock.sol │ │ │ └── ONFT721Mock.sol │ ├── tsconfig.json │ └── turbo.json ├── onft721 │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── MyONFT721.sol │ │ ├── MyONFT721Adapter.sol │ │ └── mocks │ │ │ └── MyONFT721Mock.sol │ ├── deploy │ │ ├── MyONFT721.ts │ │ └── MyONFT721Adapter.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ └── MyONFT721.t.sol │ │ ├── hardhat │ │ │ └── MyONFT721.test.ts │ │ └── mocks │ │ │ ├── ONFT721ComposerMock.sol │ │ │ └── ONFT721Mock.sol │ ├── tsconfig.json │ └── type-extensions.ts ├── uniswap-read │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ └── UniswapV3QuoteDemo.sol │ ├── deploy │ │ └── UniswapV3QuoteDemo.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── foundry │ │ │ └── UniswapV3QuoteDemo.t.sol │ │ └── hardhat │ │ │ └── UniswapV3QuoteDemo.test.ts │ └── tsconfig.json └── view-pure-read │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ ├── ExampleContract.sol │ ├── ReadViewOrPure.sol │ └── ReadViewOrPureAndCompute.sol │ ├── deploy │ └── ReadViewOrPure.ts │ ├── foundry.toml │ ├── hardhat.config.ts │ ├── layerzero.config.ts │ ├── package.json │ ├── solhint.config.js │ ├── test │ └── foundry │ │ ├── ReadViewOrPure.t.sol │ │ └── ReadViewOrPureAndCompute.t.sol │ └── tsconfig.json ├── package.json ├── packages ├── AGENTS.md ├── build-devtools │ ├── .eslintignore │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── tsup │ │ │ ├── declarations.ts │ │ │ └── index.ts │ ├── test │ │ └── tsup │ │ │ └── declarations.test.ts │ ├── tsconfig.build.json │ ├── tsconfig.json │ └── tsup.config.ts ├── build-lz-options │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── cli.js │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── components │ │ │ ├── config.tsx │ │ │ └── outputOptions.tsx │ │ ├── config.ts │ │ ├── index.tsx │ │ ├── types.ts │ │ └── utilities │ │ │ └── prompts.ts │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── tsup.config.ts ├── create-lz-oapp │ ├── .eslintrc.json │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── cli.js │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── components │ │ │ ├── config.tsx │ │ │ ├── error.tsx │ │ │ ├── progress.tsx │ │ │ └── setup.tsx │ │ ├── config.ts │ │ ├── index.tsx │ │ ├── options.ts │ │ ├── types.ts │ │ └── utilities │ │ │ ├── cloning.ts │ │ │ ├── installation.ts │ │ │ ├── prompts.ts │ │ │ ├── tasks.ts │ │ │ └── terminal.ts │ ├── test │ │ ├── config.test.ts │ │ └── utilities │ │ │ └── cloning.test.ts │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── tsup.config.ts │ └── types │ │ └── tiged.d.ts ├── decode-lz-options │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── cli.js │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── components │ │ │ └── outputOptions.tsx │ │ ├── config.ts │ │ ├── index.tsx │ │ └── utilities │ │ │ └── prompts.ts │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── tsup.config.ts ├── devtools-cli │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── cli.js │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── cli.ts │ │ ├── commands │ │ │ ├── oapp │ │ │ │ ├── index.ts │ │ │ │ └── wire │ │ │ │ │ └── index.ts │ │ │ └── options.ts │ │ ├── index.ts │ │ ├── setup │ │ │ ├── index.ts │ │ │ ├── loading.ts │ │ │ ├── schema.ts │ │ │ └── typescript.ts │ │ └── types.ts │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── tsup.config.ts ├── devtools-evm-hardhat │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── hardhat.config.ts │ ├── jest.config.js │ ├── jest.transformer.raw.js │ ├── package.json │ ├── src │ │ ├── artifacts.ts │ │ ├── cli.ts │ │ ├── config.ts │ │ ├── constants │ │ │ ├── index.ts │ │ │ └── tasks.ts │ │ ├── errors │ │ │ ├── errors.ts │ │ │ ├── index.ts │ │ │ └── parser.ts │ │ ├── index.ts │ │ ├── internal │ │ │ ├── assertions.ts │ │ │ └── index.ts │ │ ├── omnigraph │ │ │ ├── builder.ts │ │ │ ├── contracts.ts │ │ │ ├── coordinates.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ ├── transformations.ts │ │ │ └── types.ts │ │ ├── provider.ts │ │ ├── runtime.ts │ │ ├── simulation │ │ │ ├── assets │ │ │ │ ├── Dockerfile.conf │ │ │ │ ├── index.ts │ │ │ │ └── nginx.conf │ │ │ ├── compose.ts │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── tasks │ │ │ ├── deploy.ts │ │ │ ├── export.deployments.typescript.ts │ │ │ ├── healthcheck │ │ │ │ ├── index.ts │ │ │ │ ├── validate-rpcs.ts │ │ │ │ └── validate-safe-configs.ts │ │ │ ├── index.ts │ │ │ ├── simulation │ │ │ │ ├── index.ts │ │ │ │ ├── logs.ts │ │ │ │ ├── start.ts │ │ │ │ └── stop.ts │ │ │ └── transactions │ │ │ │ ├── index.ts │ │ │ │ └── subtask.sign-and-send.ts │ │ ├── transactions │ │ │ ├── format.ts │ │ │ ├── index.ts │ │ │ └── signer.ts │ │ └── type-extensions.ts │ ├── tasks │ │ ├── README.md │ │ └── package.json │ ├── test │ │ ├── __snapshots__ │ │ │ └── runtime.test.ts.snap │ │ ├── cli.test.ts │ │ ├── config.test.ts │ │ ├── internal │ │ │ └── assertions.test.ts │ │ ├── omnigraph │ │ │ ├── builder.test.ts │ │ │ ├── contracts.test.ts │ │ │ ├── coordinates.test.ts │ │ │ ├── transformations.test.ts │ │ │ └── types.test.ts │ │ ├── provider.test.ts │ │ ├── runtime.test.ts │ │ ├── simulation │ │ │ ├── __snapshots__ │ │ │ │ └── compose.test.ts.snap │ │ │ ├── compose.test.ts │ │ │ └── config.test.ts │ │ └── transactions │ │ │ └── signer.test.ts │ ├── tsconfig.json │ ├── tsup.config.ts │ ├── type-extensions │ │ ├── README.md │ │ └── package.json │ └── types │ │ └── conf.d.ts ├── devtools-evm │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── src │ │ ├── address.ts │ │ ├── errors │ │ │ ├── errors.ts │ │ │ ├── index.ts │ │ │ ├── parser.ts │ │ │ └── types.ts │ │ ├── events │ │ │ ├── index.ts │ │ │ └── parser.ts │ │ ├── index.ts │ │ ├── omnigraph │ │ │ ├── coordinates.ts │ │ │ ├── format.ts │ │ │ ├── index.ts │ │ │ ├── sdk.ts │ │ │ └── types.ts │ │ ├── provider │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── schema.ts │ │ ├── signer │ │ │ ├── index.ts │ │ │ ├── sdk.ts │ │ │ └── types.ts │ │ └── simulation │ │ │ ├── anvil.ts │ │ │ └── index.ts │ ├── test │ │ ├── address.test.ts │ │ ├── errors │ │ │ └── errors.test.ts │ │ ├── omnigraph │ │ │ ├── coordinates.test.ts │ │ │ └── sdk.test.ts │ │ ├── provider │ │ │ └── factory.test.ts │ │ ├── schema.test.ts │ │ ├── signer │ │ │ └── sdk.test.ts │ │ └── simulation │ │ │ ├── __snapshots__ │ │ │ └── anvil.test.ts.snap │ │ │ └── anvil.test.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── devtools-extensible-cli │ ├── .eslintignore │ ├── .nvmrc │ ├── CHANGELOG.md │ ├── README.md │ ├── cli │ │ ├── AptosEVMCli.ts │ │ ├── operations │ │ │ └── init.ts │ │ └── types │ │ │ └── NewOperation.ts │ ├── index.ts │ ├── package.json │ ├── tsconfig.json │ └── tsup.config.ts ├── devtools-move │ ├── .eslintignore │ ├── .gitignore │ ├── .nvmrc │ ├── CHANGELOG.md │ ├── README.md │ ├── cli │ │ ├── index.ts │ │ ├── init.ts │ │ └── operations │ │ │ ├── evm-quote-send.ts │ │ │ ├── evm-send.ts │ │ │ ├── evm-transaction-parser.ts │ │ │ ├── evm-wire.ts │ │ │ ├── move-build.ts │ │ │ ├── move-deploy.ts │ │ │ ├── move-set-delegate.ts │ │ │ ├── move-wire.ts │ │ │ ├── transfer-oapp-owner.ts │ │ │ └── transfer-object-owner.ts │ ├── jest.config.js │ ├── jest │ │ └── baseXtoBytes32.test.ts │ ├── package.json │ ├── sdk │ │ ├── IEndpoint.ts │ │ ├── IMessageLib.ts │ │ ├── IOFT.ts │ │ ├── OFTFactory.ts │ │ ├── __tests__ │ │ │ ├── initiaEndpoint.test.ts │ │ │ ├── initiaMsgLib.test.ts │ │ │ ├── initiaOFT.test.ts │ │ │ └── test.layerzero.config.ts │ │ ├── aptosEndpoint.ts │ │ ├── aptosMessageLib.ts │ │ ├── aptosOFT.ts │ │ ├── baseTaskHelper.ts │ │ ├── endpoint.ts │ │ ├── endpointFactory.ts │ │ ├── index.ts │ │ ├── initiaEndpoint.ts │ │ ├── initiaMsgLib.ts │ │ ├── initiaOFT.ts │ │ ├── messageLibFactory.ts │ │ ├── moveVMConnectionBuilder.ts │ │ ├── msgLib.ts │ │ ├── oft.ts │ │ └── utils.ts │ ├── tasks │ │ ├── evm │ │ │ ├── utils │ │ │ │ ├── anvilForkNode.ts │ │ │ │ ├── libraryConfigUtils.ts │ │ │ │ ├── types.ts │ │ │ │ └── validateOmnicontracts.ts │ │ │ ├── wire-evm.ts │ │ │ └── wire │ │ │ │ ├── setDelegate.ts │ │ │ │ ├── setEnforcedOptions.ts │ │ │ │ ├── setPeer.ts │ │ │ │ ├── setReceiveConfig.ts │ │ │ │ ├── setReceiveLibrary.ts │ │ │ │ ├── setReceiveLibraryTimeout.ts │ │ │ │ ├── setSendConfig.ts │ │ │ │ ├── setSendLibrary.ts │ │ │ │ └── transactionExecutor.ts │ │ ├── index.ts │ │ ├── move │ │ │ ├── build.ts │ │ │ ├── deploy.ts │ │ │ ├── index.ts │ │ │ ├── setDelegate.ts │ │ │ ├── transferObjectOwner.ts │ │ │ ├── transferOwnerOapp.ts │ │ │ ├── utils │ │ │ │ ├── aptosNetworkParser.ts │ │ │ │ ├── config.ts │ │ │ │ ├── deploymentAddresses.ts │ │ │ │ ├── index.ts │ │ │ │ ├── moveVMOftConfigOps.ts │ │ │ │ ├── ulnConfigBuilder.ts │ │ │ │ └── utils.ts │ │ │ └── wireMove.ts │ │ └── shared │ │ │ ├── basexToBytes32.ts │ │ │ ├── index.ts │ │ │ ├── messageBuilder.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── devtools-solana │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .prettierignore │ ├── .swcrc │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── src │ │ ├── common │ │ │ ├── accounts.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── connection │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── omnigraph │ │ │ ├── coordinates.ts │ │ │ ├── index.ts │ │ │ ├── sdk.ts │ │ │ └── types.ts │ │ ├── transactions │ │ │ ├── fees.ts │ │ │ ├── index.ts │ │ │ ├── serde.ts │ │ │ └── signer.ts │ │ └── wallet.ts │ ├── test │ │ ├── common │ │ │ ├── accounts.test.ts │ │ │ └── schema.test.ts │ │ ├── connection │ │ │ └── factory.test.ts │ │ ├── omnigraph │ │ │ └── sdk.test.ts │ │ └── transactions │ │ │ ├── serde.test.ts │ │ │ └── signer.test.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── devtools-ton │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .swcrc │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.ts │ ├── package.json │ ├── scripts │ │ └── debugTon.ts │ ├── src │ │ ├── getDeploymentAddress.ts │ │ ├── index.ts │ │ ├── omnigraph │ │ │ ├── coordinates.ts │ │ │ ├── index.ts │ │ │ ├── sdk.ts │ │ │ └── types.ts │ │ └── transactions │ │ │ ├── index.ts │ │ │ ├── serde.ts │ │ │ ├── signer.ts │ │ │ └── state.ts │ ├── test │ │ └── transactions │ │ │ ├── serde.test.ts │ │ │ ├── signer.test.ts │ │ │ └── state.test.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── devtools │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .swcrc │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── src │ │ ├── common │ │ │ ├── assertion.ts │ │ │ ├── bytes.ts │ │ │ ├── index.ts │ │ │ ├── map.ts │ │ │ ├── promise.ts │ │ │ ├── retry.ts │ │ │ └── strings.ts │ │ ├── docker │ │ │ ├── compose.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── flows │ │ │ ├── config.execute.ts │ │ │ ├── config.load.ts │ │ │ ├── index.ts │ │ │ ├── sign.and.send.ts │ │ │ └── wire.ts │ │ ├── index.ts │ │ ├── omnigraph │ │ │ ├── builder.ts │ │ │ ├── config.ts │ │ │ ├── coordinates.ts │ │ │ ├── format.ts │ │ │ ├── index.ts │ │ │ ├── map.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── transactions │ │ │ ├── format.ts │ │ │ ├── index.ts │ │ │ ├── signer.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ └── types.ts │ ├── test │ │ ├── __utils__ │ │ │ └── arbitraries.ts │ │ ├── bytes.test.ts │ │ ├── common │ │ │ ├── assertion.test.ts │ │ │ ├── bytes.test.ts │ │ │ ├── map.test.ts │ │ │ ├── promise.test.ts │ │ │ └── retry.test.ts │ │ ├── docker │ │ │ ├── __snapshots__ │ │ │ │ └── compose.test.ts.snap │ │ │ └── compose.test.ts │ │ ├── flows │ │ │ ├── __snapshots__ │ │ │ │ └── config.load.test.ts.snap │ │ │ └── config.load.test.ts │ │ ├── omnigraph │ │ │ ├── __snapshots__ │ │ │ │ ├── format.test.ts.snap │ │ │ │ └── schema.test.ts.snap │ │ │ ├── builder.test.ts │ │ │ ├── config.test.ts │ │ │ ├── coordinates.test.ts │ │ │ ├── format.test.ts │ │ │ ├── schema.test.ts │ │ │ └── types.test.ts │ │ ├── transactions │ │ │ ├── signer.test.ts │ │ │ └── utils.test.ts │ │ └── types.test.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── export-deployments │ ├── CHANGELOG.md │ ├── README.md │ ├── cli.js │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── cli.ts │ │ ├── cli │ │ │ └── options.ts │ │ ├── common │ │ │ ├── fs.test.ts │ │ │ ├── fs.ts │ │ │ ├── logger.ts │ │ │ ├── names.test.ts │ │ │ └── names.ts │ │ ├── generator │ │ │ ├── common │ │ │ │ └── generate.ts │ │ │ ├── markdown │ │ │ │ ├── generate.ts │ │ │ │ └── index.ts │ │ │ ├── types.ts │ │ │ └── typescript │ │ │ │ ├── generate.ts │ │ │ │ ├── index.ts │ │ │ │ ├── typescript.test.ts │ │ │ │ ├── typescript.ts │ │ │ │ ├── utils.test.ts │ │ │ │ └── utils.ts │ │ ├── index.ts │ │ └── parser │ │ │ ├── __mocks__ │ │ │ ├── Array.json │ │ │ ├── DeploymentMock.json │ │ │ ├── Empty.json │ │ │ ├── False.json │ │ │ ├── Number.json │ │ │ ├── ONFT1155.json │ │ │ └── String.json │ │ │ ├── deployment.test.ts │ │ │ ├── deployment.ts │ │ │ └── schema.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── hyperliquid-composer │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gas-snapshot │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── .storage-slots.txt │ ├── .test-coverage.txt │ ├── CHANGELOG.md │ ├── HYPERLIQUID.README.md │ ├── README.md │ ├── artifacts │ │ ├── HyperLiquidComposer.sol │ │ │ └── HyperLiquidComposer.json │ │ ├── HyperLiquidComposer.t.sol │ │ │ └── HyperLiquidComposerTest.json │ │ ├── HyperLiquidComposerCodec.sol │ │ │ └── HyperLiquidComposerCodec.json │ │ ├── HyperLiquidComposerCore.sol │ │ │ └── HyperLiquidComposerCore.json │ │ ├── HyperLiquidComposerRefund.t.sol │ │ │ └── HyperLiquidComposerRefundTest.json │ │ ├── HyperLiquidComposerRevert.t.sol │ │ │ └── HyperLiquidComposerRevertTest.json │ │ ├── IHYPEPrecompile.sol │ │ │ └── IHYPEPrecompile.json │ │ ├── IHyperLiquidComposerCore.sol │ │ │ └── IHyperLiquidComposerCore.json │ │ ├── IHyperLiquidComposerErrors.sol │ │ │ └── IHyperLiquidComposerErrors.json │ │ ├── IHyperLiquidReadPrecompile.sol │ │ │ └── IHyperLiquidReadPrecompile.json │ │ └── IHyperLiquidWritePrecompile.sol │ │ │ └── IHyperLiquidWritePrecompile.json │ ├── cli.js │ ├── contracts │ │ ├── HyperLiquidComposer.sol │ │ ├── HyperLiquidComposerCore.sol │ │ ├── interfaces │ │ │ ├── IHYPEPrecompile.sol │ │ │ ├── IHyperLiquidComposerCore.sol │ │ │ ├── IHyperLiquidComposerErrors.sol │ │ │ ├── IHyperLiquidReadPrecompile.sol │ │ │ └── IHyperLiquidWritePrecompile.sol │ │ └── library │ │ │ └── HyperLiquidComposerCodec.sol │ ├── foundry.toml │ ├── package.json │ ├── solhint.config.js │ ├── src │ │ ├── cli.ts │ │ ├── commands │ │ │ ├── core-spot-deployment.ts │ │ │ ├── index.ts │ │ │ ├── register-token.ts │ │ │ ├── set-block.ts │ │ │ ├── spot-deploy.ts │ │ │ └── type-conversion.ts │ │ ├── index.ts │ │ ├── io │ │ │ ├── env.ts │ │ │ ├── index.ts │ │ │ └── parser.ts │ │ ├── operations │ │ │ ├── evmUserModify.ts │ │ │ ├── index.ts │ │ │ ├── registerEvmContract.ts │ │ │ ├── spotDeploy.ts │ │ │ └── spotMeta.ts │ │ ├── signer │ │ │ ├── index.ts │ │ │ ├── signer.ts │ │ │ ├── utils.ts │ │ │ └── wallet.ts │ │ └── types │ │ │ ├── ERC20.json │ │ │ ├── base.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── operations.ts │ │ │ ├── parser.ts │ │ │ └── spotDeploy.ts │ ├── test │ │ ├── ComposerCodec │ │ │ ├── ComposeMessage.t.sol │ │ │ └── TypeConversion.t.sol │ │ ├── HyperLiquidComposer.t.sol │ │ ├── HyperLiquidComposerRefund.t.sol │ │ ├── HyperLiquidComposerRevert.t.sol │ │ ├── Precompile.t.sol │ │ └── mocks │ │ │ ├── HypePrecompileMock.sol │ │ │ ├── NoFallback.sol │ │ │ ├── OFTMock.sol │ │ │ └── SpotBalancePrecompileMock.sol │ ├── tsconfig.json │ └── tsup.config.ts ├── io-devtools │ ├── .eslintignore │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── src │ │ ├── async │ │ │ ├── index.ts │ │ │ └── time.ts │ │ ├── config │ │ │ ├── index.ts │ │ │ └── loading.ts │ │ ├── filesystem │ │ │ ├── filesystem.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── language │ │ │ ├── index.ts │ │ │ └── plurals.ts │ │ ├── stdio │ │ │ ├── debugLogger.ts │ │ │ ├── index.ts │ │ │ ├── logger.ts │ │ │ ├── printer.ts │ │ │ └── prompts.ts │ │ └── swag │ │ │ ├── README.md │ │ │ ├── components │ │ │ ├── logo.tsx │ │ │ ├── progress.tsx │ │ │ ├── record.tsx │ │ │ ├── table.tsx │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── printer.tsx │ │ │ └── renderer.tsx │ ├── swag │ │ ├── README.md │ │ └── package.json │ ├── test │ │ ├── config │ │ │ ├── __snapshots__ │ │ │ │ └── loading.test.ts.snap │ │ │ └── loading.test.ts │ │ ├── filesystem │ │ │ ├── __data__ │ │ │ │ └── importDefault │ │ │ │ │ ├── empty.js │ │ │ │ │ ├── empty.json │ │ │ │ │ ├── nonsense.md │ │ │ │ │ ├── object.cjs.js │ │ │ │ │ ├── object.cjs.ts │ │ │ │ │ ├── object.esm.js │ │ │ │ │ ├── object.esm.ts │ │ │ │ │ ├── object.json │ │ │ │ │ ├── with-default.js │ │ │ │ │ ├── with-default.json │ │ │ │ │ └── without-default.ts │ │ │ ├── __snapshots__ │ │ │ │ └── filesystem.test.ts.snap │ │ │ └── filesystem.test.ts │ │ ├── language │ │ │ ├── __snapshots__ │ │ │ │ └── plurals.test.ts.snap │ │ │ └── plurals.test.ts │ │ └── stdio │ │ │ ├── __snapshots__ │ │ │ └── printer.test.ts.snap │ │ │ ├── logger.test.ts │ │ │ └── printer.test.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── metadata-tools │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── config-metadata.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ └── types.ts │ ├── test │ │ ├── __snapshots__ │ │ │ └── config-metadata.test.ts.snap │ │ ├── config-metadata.test.ts │ │ └── data │ │ │ ├── fuji.json │ │ │ ├── polygon-mainnet.json │ │ │ ├── solana-mainnet.json │ │ │ └── solana-testnet.json │ ├── tsconfig.json │ └── tsup.config.ts ├── oapp-alt-evm │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── artifacts │ │ ├── IOAppComposer.sol │ │ │ └── IOAppComposer.json │ │ ├── IOAppCore.sol │ │ │ └── IOAppCore.json │ │ ├── IOAppMsgInspector.sol │ │ │ └── IOAppMsgInspector.json │ │ ├── IOAppOptionsType3.sol │ │ │ └── IOAppOptionsType3.json │ │ ├── IOAppReceiver.sol │ │ │ └── IOAppReceiver.json │ │ ├── OAppAlt.sol │ │ │ └── OAppAlt.json │ │ ├── OAppCore.sol │ │ │ └── OAppCore.json │ │ ├── OAppOptionsType3.sol │ │ │ └── OAppOptionsType3.json │ │ ├── OAppReceiver.sol │ │ │ └── OAppReceiver.json │ │ ├── OAppSender.sol │ │ │ └── OAppSender.json │ │ ├── OAppSenderAlt.sol │ │ │ └── OAppSenderAlt.json │ │ ├── OptionsBuilder.sol │ │ │ └── OptionsBuilder.json │ │ └── RateLimiter.sol │ │ │ └── RateLimiter.json │ ├── contracts │ │ └── oapp │ │ │ ├── OAppAlt.sol │ │ │ └── OAppSenderAlt.sol │ ├── foundry.toml │ ├── package.json │ └── test │ │ ├── OAppAlt.t.sol │ │ └── mocks │ │ └── OAppAltMock.sol ├── oapp-evm-upgradeable │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── artifacts │ │ ├── Address.sol │ │ │ └── Address.json │ │ ├── AddressCast.sol │ │ │ └── AddressCast.json │ │ ├── BitMaps.sol │ │ │ └── BitMaps.json │ │ ├── BytesLib.sol │ │ │ └── BytesLib.json │ │ ├── CalldataBytesLib.sol │ │ │ └── CalldataBytesLib.json │ │ ├── ContextUpgradeable.sol │ │ │ └── ContextUpgradeable.json │ │ ├── DVNOptions.sol │ │ │ └── DVNOptions.json │ │ ├── ExecutorOptions.sol │ │ │ └── ExecutorOptions.json │ │ ├── IERC165.sol │ │ │ └── IERC165.json │ │ ├── IERC20.sol │ │ │ └── IERC20.json │ │ ├── IERC20Permit.sol │ │ │ └── IERC20Permit.json │ │ ├── ILayerZeroComposer.sol │ │ │ └── ILayerZeroComposer.json │ │ ├── ILayerZeroEndpoint.sol │ │ │ └── ILayerZeroEndpoint.json │ │ ├── ILayerZeroEndpointV2.sol │ │ │ └── ILayerZeroEndpointV2.json │ │ ├── ILayerZeroReceiver.sol │ │ │ └── ILayerZeroReceiver.json │ │ ├── ILayerZeroUserApplicationConfig.sol │ │ │ └── ILayerZeroUserApplicationConfig.json │ │ ├── IMessageLib.sol │ │ │ └── IMessageLib.json │ │ ├── IMessageLibManager.sol │ │ │ └── IMessageLibManager.json │ │ ├── IMessagingChannel.sol │ │ │ └── IMessagingChannel.json │ │ ├── IMessagingComposer.sol │ │ │ └── IMessagingComposer.json │ │ ├── IMessagingContext.sol │ │ │ └── IMessagingContext.json │ │ ├── ISendLib.sol │ │ │ └── ISendLib.json │ │ ├── Initializable.sol │ │ │ └── Initializable.json │ │ ├── OAppCoreUpgradeable.sol │ │ │ └── OAppCoreUpgradeable.json │ │ ├── OAppPreCrimeSimulatorUpgradeable.sol │ │ │ └── OAppPreCrimeSimulatorUpgradeable.json │ │ ├── OAppReceiverUpgradeable.sol │ │ │ └── OAppReceiverUpgradeable.json │ │ ├── OAppSenderUpgradeable.sol │ │ │ └── OAppSenderUpgradeable.json │ │ ├── OAppUpgradeable.sol │ │ │ └── OAppUpgradeable.json │ │ ├── OwnableUpgradeable.sol │ │ │ └── OwnableUpgradeable.json │ │ ├── PacketV1Codec.sol │ │ │ └── PacketV1Codec.json │ │ ├── PreCrimeE1Upgradeable.sol │ │ │ └── PreCrimeE1Upgradeable.json │ │ ├── PreCrimeUpgradeable.sol │ │ │ └── PreCrimeUpgradeable.json │ │ ├── SafeCast.sol │ │ │ └── SafeCast.json │ │ └── SafeERC20.sol │ │ │ └── SafeERC20.json │ ├── contracts │ │ ├── oapp │ │ │ ├── OAppCoreUpgradeable.sol │ │ │ ├── OAppReceiverUpgradeable.sol │ │ │ ├── OAppSenderUpgradeable.sol │ │ │ ├── OAppUpgradeable.sol │ │ │ └── libs │ │ │ │ └── OAppOptionsType3Upgradeable.sol │ │ └── precrime │ │ │ ├── OAppPreCrimeSimulatorUpgradeable.sol │ │ │ ├── PreCrimeUpgradeable.sol │ │ │ └── extensions │ │ │ └── PreCrimeE1Upgradeable.sol │ ├── foundry.toml │ ├── package.json │ └── test │ │ ├── OptionsHelper.sol │ │ ├── PreCrimeV2.t.sol │ │ └── mocks │ │ ├── ERC20Mock.sol │ │ ├── PreCrimeV2SimulatorUpgradeableMock.sol │ │ └── PreCrimeV2UpgradeableMock.sol ├── oapp-evm │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── artifacts │ │ ├── IOAppComposer.sol │ │ │ └── IOAppComposer.json │ │ ├── IOAppCore.sol │ │ │ └── IOAppCore.json │ │ ├── IOAppMsgInspector.sol │ │ │ └── IOAppMsgInspector.json │ │ ├── IOAppOptionsType3.sol │ │ │ └── IOAppOptionsType3.json │ │ ├── IOAppPreCrimeSimulator.sol │ │ │ └── IOAppPreCrimeSimulator.json │ │ ├── IOAppReceiver.sol │ │ │ └── IOAppReceiver.json │ │ ├── IPreCrime.sol │ │ │ └── IPreCrime.json │ │ ├── OApp.sol │ │ │ └── OApp.json │ │ ├── OAppCore.sol │ │ │ └── OAppCore.json │ │ ├── OAppOptionsType3.sol │ │ │ └── OAppOptionsType3.json │ │ ├── OAppPreCrimeSimulator.sol │ │ │ └── OAppPreCrimeSimulator.json │ │ ├── OAppReceiver.sol │ │ │ └── OAppReceiver.json │ │ ├── OAppSender.sol │ │ │ └── OAppSender.json │ │ ├── OptionsBuilder.sol │ │ │ └── OptionsBuilder.json │ │ ├── Packet.sol │ │ │ └── PacketDecoder.json │ │ ├── PreCrime.sol │ │ │ └── PreCrime.json │ │ └── RateLimiter.sol │ │ │ └── RateLimiter.json │ ├── contracts │ │ ├── oapp │ │ │ ├── OApp.sol │ │ │ ├── OAppCore.sol │ │ │ ├── OAppRead.sol │ │ │ ├── OAppReceiver.sol │ │ │ ├── OAppSender.sol │ │ │ ├── interfaces │ │ │ │ ├── IOAppComposer.sol │ │ │ │ ├── IOAppCore.sol │ │ │ │ ├── IOAppMapper.sol │ │ │ │ ├── IOAppMsgInspector.sol │ │ │ │ ├── IOAppOptionsType3.sol │ │ │ │ ├── IOAppReceiver.sol │ │ │ │ └── IOAppReducer.sol │ │ │ ├── libs │ │ │ │ ├── OAppOptionsType3.sol │ │ │ │ ├── OptionsBuilder.sol │ │ │ │ └── ReadCodecV1.sol │ │ │ └── utils │ │ │ │ └── RateLimiter.sol │ │ └── precrime │ │ │ ├── OAppPreCrimeSimulator.sol │ │ │ ├── PreCrime.sol │ │ │ ├── interfaces │ │ │ ├── IOAppPreCrimeSimulator.sol │ │ │ └── IPreCrime.sol │ │ │ └── libs │ │ │ └── Packet.sol │ ├── foundry.toml │ ├── package.json │ └── test │ │ ├── OApp.t.sol │ │ ├── PreCrimeV2.t.sol │ │ ├── RateLimiter.t.sol │ │ ├── lib │ │ ├── OAppOptionsType3.t.sol │ │ └── mock │ │ │ └── OptionsType3Mock.sol │ │ └── mocks │ │ ├── ERC20Mock.sol │ │ ├── OAppMock.sol │ │ ├── PreCrimeV2Mock.sol │ │ └── PreCrimeV2SimulatorMock.sol ├── oft-alt-evm │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── artifacts │ │ ├── IOFT.sol │ │ │ └── IOFT.json │ │ ├── OFTAlt.sol │ │ │ └── OFTAlt.json │ │ ├── OFTComposeMsgCodec.sol │ │ │ └── OFTComposeMsgCodec.json │ │ └── OFTMsgCodec.sol │ │ │ └── OFTMsgCodec.json │ ├── contracts │ │ ├── OFTAdapterAlt.sol │ │ ├── OFTAlt.sol │ │ └── OFTAltCore.sol │ ├── foundry.toml │ ├── package.json │ └── test │ │ ├── OFTAlt.t.sol │ │ ├── lib │ │ ├── OFTAdapterAltMockCodec.sol │ │ └── OFTAltMockCodec.sol │ │ └── mocks │ │ ├── OFTAdapterAltMock.sol │ │ └── OFTAltMock.sol ├── oft-evm-upgradeable │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ └── oft │ │ │ ├── FeeUpgradeable.sol │ │ │ ├── OFTAdapterFeeUpgradeable.sol │ │ │ ├── OFTAdapterUpgradeable.sol │ │ │ ├── OFTCoreUpgradeable.sol │ │ │ ├── OFTFeeUpgradeable.sol │ │ │ └── OFTUpgradeable.sol │ ├── foundry.toml │ ├── package.json │ └── test │ │ ├── FeeUpgradeable.t.sol │ │ ├── OFT.t.sol │ │ ├── OFTFeeUpgradeable.t.sol │ │ ├── lib │ │ ├── OFTAdapterMockCodec.sol │ │ └── OFTMockCodec.sol │ │ └── mocks │ │ ├── ERC20Mock.sol │ │ ├── OFTAdapterUpgradeableMock.sol │ │ ├── OFTComposerMock.sol │ │ ├── OFTFeeAdapterMock.sol │ │ ├── OFTFeeUpgradeableMock.sol │ │ ├── OFTInspectorMock.sol │ │ ├── OFTUpgradeableMock.sol │ │ ├── PreCrimeV2SimulatorUpgradeableMock.sol │ │ └── PreCrimeV2UpgradeableMock.sol ├── oft-evm │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── artifacts │ │ ├── Fee.sol │ │ │ └── Fee.json │ │ ├── IFee.sol │ │ │ └── IFee.json │ │ ├── IOFT.sol │ │ │ └── IOFT.json │ │ ├── OFT.sol │ │ │ └── OFT.json │ │ ├── OFTAdapter.sol │ │ │ └── OFTAdapter.json │ │ ├── OFTComposeMsgCodec.sol │ │ │ └── OFTComposeMsgCodec.json │ │ ├── OFTCore.sol │ │ │ └── OFTCore.json │ │ └── OFTMsgCodec.sol │ │ │ └── OFTMsgCodec.json │ ├── contracts │ │ ├── Fee.sol │ │ ├── MintBurnOFTAdapter.sol │ │ ├── NativeOFTAdapter.sol │ │ ├── OFT.sol │ │ ├── OFTAdapter.sol │ │ ├── OFTCore.sol │ │ ├── interfaces │ │ │ ├── IFee.sol │ │ │ ├── IMintableBurnable.sol │ │ │ └── IOFT.sol │ │ └── libs │ │ │ ├── OFTComposeMsgCodec.sol │ │ │ └── OFTMsgCodec.sol │ ├── foundry.toml │ ├── package.json │ └── test │ │ ├── Fee.t.sol │ │ ├── OFT.t.sol │ │ ├── lib │ │ ├── MintBurnOFTAdapterMockCodec.sol │ │ ├── NativeOFTAdapterMockCodec.sol │ │ ├── OFTAdapterMockCodec.sol │ │ └── OFTMockCodec.sol │ │ └── mocks │ │ ├── ERC20Mock.sol │ │ ├── ElevatedMinterBurnerMock.sol │ │ ├── MintBurnERC20Mock.sol │ │ ├── MintBurnOFTAdapterMock.sol │ │ ├── NativeOFTAdapterMock.sol │ │ ├── OFTAdapterMock.sol │ │ ├── OFTComposerMock.sol │ │ ├── OFTInspectorMock.sol │ │ └── OFTMock.sol ├── oft-move │ ├── .eslintignore │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierignore │ ├── .prettierrc.js │ ├── CHANGELOG.md │ ├── Move.toml │ ├── README.md │ ├── cli │ │ ├── index.ts │ │ ├── init.ts │ │ └── operations │ │ │ ├── index.ts │ │ │ ├── init-move-oft-fa-adapter.ts │ │ │ ├── init-move-oft-fa.ts │ │ │ ├── mint-to-move-oft.ts │ │ │ ├── move-oft-adapter-disable-blocklist.ts │ │ │ ├── move-oft-adapter-set-fee.ts │ │ │ ├── move-oft-adapter-set-rate-limit.ts │ │ │ ├── move-oft-adapter-unset-rate-limit.ts │ │ │ ├── move-oft-disable-blocklist.ts │ │ │ ├── move-oft-disable-freezing.ts │ │ │ ├── move-oft-set-fee.ts │ │ │ ├── move-oft-set-rate-limit.ts │ │ │ ├── move-oft-unset-rate-limit.ts │ │ │ ├── quote-send-move-oft.ts │ │ │ └── send-from-move-oft.ts │ ├── package.json │ ├── tasks │ │ ├── index.ts │ │ ├── initOFTAdapterFA.ts │ │ ├── initOFTFA.ts │ │ ├── irrevocablyDisableBlocklist.ts │ │ ├── mintToMoveVM.ts │ │ ├── permanentlyDisableFreezing.ts │ │ ├── quoteSendOFT.ts │ │ ├── sendFromMoveVm.ts │ │ ├── setFee.ts │ │ ├── setRateLimit.ts │ │ └── unSetRateLimit.ts │ ├── tsconfig.json │ ├── tsup.config.ts │ └── types │ │ ├── OFTAdapterFAInitParams.ts │ │ ├── OFTFAInitParams.ts │ │ └── index.ts ├── omnicounter-devtools-evm │ ├── .eslintignore │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── omnicounter │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ └── sdk.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── omnicounter-devtools │ ├── .eslintignore │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── omnicounter │ │ │ └── types.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── onft-evm │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── artifacts │ │ ├── IONFT721.sol │ │ │ └── IONFT721.json │ │ ├── ONFT721.sol │ │ │ └── ONFT721.json │ │ ├── ONFT721Base.sol │ │ │ └── ONFT721Base.json │ │ ├── ONFT721Core.sol │ │ │ └── ONFT721Core.json │ │ ├── ONFT721MsgCodec.sol │ │ │ └── ONFT721MsgCodec.json │ │ └── ONFTComposeMsgCodec.sol │ │ │ └── ONFTComposeMsgCodec.json │ ├── contracts │ │ ├── libs │ │ │ └── ONFTComposeMsgCodec.sol │ │ └── onft721 │ │ │ ├── ONFT721.sol │ │ │ ├── ONFT721Adapter.sol │ │ │ ├── ONFT721Core.sol │ │ │ ├── ONFT721Enumerable.sol │ │ │ ├── interfaces │ │ │ └── IONFT721.sol │ │ │ └── libs │ │ │ └── ONFT721MsgCodec.sol │ ├── foundry.toml │ ├── package.json │ ├── solhint.config.js │ ├── test │ │ ├── mocks │ │ │ ├── ComposerMock.sol │ │ │ └── InspectorMock.sol │ │ └── onft │ │ │ ├── ONFTBaseTestHelper.sol │ │ │ └── onft721 │ │ │ ├── ONFT721.t.sol │ │ │ ├── ONFT721Base.sol │ │ │ └── mocks │ │ │ ├── ERC721Mock.sol │ │ │ ├── ONFT721AdapterMock.sol │ │ │ ├── ONFT721EnumerableMock.sol │ │ │ └── ONFT721Mock.sol │ └── tsconfig.json ├── protocol-devtools-evm │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .prettierignore │ ├── .swcrc │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── dvn │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── sdk.ts │ │ ├── endpointv2 │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── sdk.ts │ │ ├── executor │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── sdk.ts │ │ ├── index.ts │ │ ├── priceFeed │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── sdk.ts │ │ ├── uln302 │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ ├── sdk.ts │ │ │ └── types.ts │ │ └── ulnRead │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ └── sdk.ts │ ├── test │ │ ├── endpoint │ │ │ └── sdk.test.ts │ │ ├── uln302 │ │ │ ├── __snapshots__ │ │ │ │ └── sdk.test.ts.snap │ │ │ └── sdk.test.ts │ │ └── ulnRead │ │ │ ├── __snapshots__ │ │ │ └── sdk.test.ts.snap │ │ │ └── sdk.test.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── protocol-devtools-solana │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .prettierignore │ ├── .swcrc │ ├── CHANGELOG.md │ ├── README.md │ ├── bin │ │ └── test │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── src │ │ ├── endpointv2 │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── sdk.ts │ │ ├── index.ts │ │ └── uln302 │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── sdk.ts │ ├── test │ │ └── endpointv2 │ │ │ ├── __snapshots__ │ │ │ └── sdk.test.ts.snap │ │ │ └── sdk.test.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── protocol-devtools │ ├── .eslintignore │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── dvn │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── endpointv2 │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── executor │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── priceFeed │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── uln302 │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ └── ulnRead │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ ├── test │ │ └── endpointv2 │ │ │ └── config.test.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── test-devtools-evm-foundry │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── artifacts │ │ └── TestHelperOz5.sol │ │ │ ├── IOAppSetPeer.json │ │ │ ├── IOAppSetReadChannel.json │ │ │ └── TestHelperOz5.json │ ├── contracts │ │ ├── OptionsHelper.sol │ │ ├── TestHelperOz5.sol │ │ └── mocks │ │ │ ├── ABAMock.sol │ │ │ ├── BatchSendMock.sol │ │ │ ├── ComposerMock.sol │ │ │ ├── DVNFeeLibMock.sol │ │ │ ├── DVNMock.sol │ │ │ ├── EndpointV2AltMock.sol │ │ │ ├── EndpointV2Mock.sol │ │ │ ├── ExecutorFeeLibMock.sol │ │ │ ├── ExecutorMock.sol │ │ │ ├── MultiSigMock.sol │ │ │ ├── OmniCounterMock.sol │ │ │ ├── PriceFeedMock.sol │ │ │ ├── ReadLib1002Mock.sol │ │ │ ├── ReceiveUln302Mock.sol │ │ │ ├── SendUln302Mock.sol │ │ │ ├── SimpleMessageLibMock.sol │ │ │ └── WorkerMock.sol │ ├── foundry.toml │ ├── package.json │ └── test │ │ └── foundry │ │ ├── ABA.t.sol │ │ ├── BatchSend.t.sol │ │ ├── Composer.t.sol │ │ ├── MultipleComposeOption.t.sol │ │ ├── MultipleLZReceiveOption.t.sol │ │ ├── MultipleNativeDropOption.t.sol │ │ └── OmniCounter.t.sol ├── test-devtools-evm-hardhat │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ └── mocks │ │ │ └── EndpointV2Mock.sol │ ├── hardhat.config.ts │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── runtime.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── test-devtools-solana │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── arbitraries.ts │ │ └── index.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── test-devtools-ton │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── jest.config.js │ ├── package.json │ ├── test │ │ └── node.spec.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── test-devtools │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── arbitraries.ts │ │ ├── constants.ts │ │ └── index.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── toolbox-foundry │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── DEVELOPMENT.md │ ├── Makefile │ ├── README.md │ ├── package.json │ └── turbo.json ├── toolbox-hardhat │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ ├── tsup.config.ts │ └── types │ │ └── index.d.ts ├── ua-devtools-evm-hardhat │ ├── .eslintignore │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── hardhat.config.ts │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── constants │ │ │ ├── index.ts │ │ │ └── tasks.ts │ │ ├── index.ts │ │ ├── oapp-read │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ ├── types.ts │ │ │ └── typescript │ │ │ │ ├── constants.ts │ │ │ │ └── typescript.ts │ │ ├── oapp │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ ├── types.ts │ │ │ └── typescript │ │ │ │ ├── constants.ts │ │ │ │ └── typescript.ts │ │ ├── ownable │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── tasks │ │ │ ├── errors │ │ │ │ ├── decode.ts │ │ │ │ └── list.ts │ │ │ ├── index.ts │ │ │ ├── oapp │ │ │ │ ├── config.get.default.ts │ │ │ │ ├── config.get.executor.ts │ │ │ │ ├── config.get.ts │ │ │ │ ├── config.init.ts │ │ │ │ ├── enforced.opts.get.ts │ │ │ │ ├── index.ts │ │ │ │ ├── peers.get.ts │ │ │ │ ├── read │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── read.config.get.channel.ts │ │ │ │ │ ├── read.config.get.ts │ │ │ │ │ ├── read.config.init.ts │ │ │ │ │ ├── read.subtask.configure.ts │ │ │ │ │ └── read.wire.ts │ │ │ │ ├── subtask.config.load.ts │ │ │ │ ├── types.ts │ │ │ │ └── wire │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── subtask.configure.ts │ │ │ │ │ └── types.ts │ │ │ ├── ownable │ │ │ │ ├── index.ts │ │ │ │ └── transfer.ownership.ts │ │ │ ├── read │ │ │ │ ├── factory.ts │ │ │ │ ├── index.ts │ │ │ │ └── resolveCommand.ts │ │ │ └── types.ts │ │ └── utils │ │ │ └── taskHelpers.ts │ ├── tasks │ │ ├── README.md │ │ └── package.json │ ├── tsconfig.json │ └── tsup.config.ts ├── ua-devtools-evm │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .swcrc │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── erc20 │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ ├── sdk.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── lzapp │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ └── sdk.ts │ │ ├── oapp-read │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ └── sdk.ts │ │ ├── oapp │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ └── sdk.ts │ │ ├── ownable │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ ├── mixin.ts │ │ │ └── sdk.ts │ │ └── read │ │ │ ├── commandResolver │ │ │ ├── base.ts │ │ │ ├── compute │ │ │ │ ├── index.ts │ │ │ │ └── sdk.ts │ │ │ ├── index.ts │ │ │ └── view │ │ │ │ ├── index.ts │ │ │ │ └── sdk.ts │ │ │ ├── errors.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ ├── timeMarkerResolver │ │ │ ├── index.ts │ │ │ └── sdk.ts │ │ │ └── timeMarkerValidator │ │ │ ├── index.ts │ │ │ └── sdk.ts │ ├── test │ │ ├── erc20 │ │ │ └── sdk.test.ts │ │ ├── oapp │ │ │ └── sdk.test.ts │ │ └── ownable │ │ │ └── mixin.test.ts │ ├── tsconfig.json │ ├── tsup.config.bundled_kx9fh6ax6x.mjs │ └── tsup.config.ts ├── ua-devtools-solana │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .prettierignore │ ├── .swcrc │ ├── CHANGELOG.md │ ├── README.md │ ├── bin │ │ └── test │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── oft │ │ │ ├── config.ts │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ └── sdk.ts │ ├── test │ │ └── oft │ │ │ └── __snapshots__ │ │ │ └── sdk.test.ts.snap │ ├── tsconfig.json │ └── tsup.config.ts ├── ua-devtools │ ├── .eslintignore │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── lzapp │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── oapp-read │ │ │ ├── check.ts │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── oapp │ │ │ ├── check.ts │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ ├── ownable │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── schema.ts │ │ │ └── types.ts │ │ └── read │ │ │ ├── commandResolver │ │ │ ├── index.ts │ │ │ ├── sdk.ts │ │ │ └── types.ts │ │ │ ├── errors.ts │ │ │ ├── index.ts │ │ │ ├── timeMarker-utils.ts │ │ │ ├── timeMarkerResolver │ │ │ ├── index.ts │ │ │ ├── sdk.ts │ │ │ └── types.ts │ │ │ ├── timeMarkerValidator │ │ │ ├── index.ts │ │ │ ├── sdk.ts │ │ │ └── types.ts │ │ │ └── types.ts │ ├── test │ │ └── oapp │ │ │ └── schema.test.ts │ ├── tsconfig.json │ └── tsup.config.ts └── verify-contract │ ├── .eslintignore │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── README.md │ ├── cli.js │ ├── jest.config.js │ ├── package.json │ ├── src │ ├── cli.ts │ ├── common │ │ ├── abi.ts │ │ ├── config.ts │ │ ├── etherscan.ts │ │ ├── fs.ts │ │ ├── licenses.ts │ │ ├── logger.ts │ │ ├── promises.ts │ │ ├── schema.ts │ │ ├── types.ts │ │ └── url.ts │ ├── hardhat-deploy │ │ ├── config.ts │ │ ├── schema.ts │ │ ├── types.ts │ │ └── verify.ts │ └── index.ts │ ├── test │ ├── __data__ │ │ └── deploymentz │ │ │ ├── fuji │ │ │ ├── .chainId │ │ │ ├── DistributeONFT721.json │ │ │ ├── ExampleOFTV2.json │ │ │ ├── ExampleUniversalONFT721.json │ │ │ ├── GasDrop.json │ │ │ ├── LayerZeroExampleERC1155.json │ │ │ ├── OmniCounter.json │ │ │ ├── ProxyONFT1155.json │ │ │ └── StargateComposed.json │ │ │ └── renamed-testnet │ │ │ └── GasDropRenamed.json │ ├── abi.test.ts │ ├── logger.test.ts │ ├── url.test.ts │ └── verify-hardhat-deploy.test.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── tests-user ├── ssh │ ├── README.md │ └── known_hosts └── tests │ ├── build-lz-options.bats │ ├── create-lz-oapp.bats │ ├── decode-lz-options.bats │ ├── devtools-cli.bats │ ├── devtools-evm-hardhat-export-deployments.bats │ └── verify-contract.bats ├── tests ├── AGENTS.md ├── devtools-cli-test │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ └── DefaultOApp.sol │ ├── deploy │ │ ├── 001_bootstrap.ts │ │ └── 002_oapp.ts │ ├── hardhat.config.ts │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── tasks │ │ └── index.ts │ ├── test │ │ ├── __utils__ │ │ │ └── cli.ts │ │ └── commands │ │ │ └── oapp │ │ │ ├── __data__ │ │ │ ├── configs │ │ │ │ ├── invalid.config.001.js │ │ │ │ ├── invalid.config.empty.js │ │ │ │ ├── invalid.config.empty.json │ │ │ │ ├── valid.config.connected.js │ │ │ │ ├── valid.config.empty.js │ │ │ │ ├── valid.config.empty.ts │ │ │ │ └── valid.config.misconfigured.001.js │ │ │ └── setups │ │ │ │ ├── invalid.setup.001.js │ │ │ │ ├── invalid.setup.empty.js │ │ │ │ └── valid.setup.ts │ │ │ ├── __snapshots__ │ │ │ └── wire.test.ts.snap │ │ │ └── wire.test.ts │ └── tsconfig.json ├── devtools-evm-hardhat-test │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── TestProxy.sol │ │ └── Thrower.sol │ ├── deploy │ │ ├── 001_Thrower.ts │ │ └── 002_TestProxy.ts │ ├── hardhat.config.ts │ ├── hardhat.config.with-incorrect-https-rpc.ts │ ├── hardhat.config.with-incorrect-wss-rpc.ts │ ├── hardhat.config.with-invalid-rpc.ts │ ├── hardhat.config.with-invalid-safe-networks.ts │ ├── hardhat.config.with-missing-safe-address.ts │ ├── hardhat.config.with-missing-safe-url.ts │ ├── hardhat.config.with-multiple-rpcs.ts │ ├── hardhat.config.with-multiple-stage.ts │ ├── hardhat.config.with-network-without-eid.ts │ ├── hardhat.config.with-unresponsive-https-rpc.ts │ ├── hardhat.config.with-unresponsive-wss-rpc.ts │ ├── hardhat.config.with-valid-and-invalid-rpcs.ts │ ├── hardhat.config.with-valid-https-rpc.ts │ ├── hardhat.config.with-valid-safe-networks.ts │ ├── hardhat.config.with-valid-wss-rpc.ts │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── test │ │ ├── errors │ │ │ └── parser.test.ts │ │ ├── omnigraph │ │ │ ├── __snapshots__ │ │ │ │ └── coordinates.test.ts.snap │ │ │ └── coordinates.test.ts │ │ └── task │ │ │ ├── deploy.test.expectations │ │ │ ├── deploy-all-missing-stage-ci.exp │ │ │ ├── deploy-all-missing-stage-interactive.exp │ │ │ ├── deploy-all-missing-tag.exp │ │ │ ├── deploy-all-wrong-stage.exp │ │ │ ├── deploy-all.exp │ │ │ ├── deploy-vengaboys-sandbox.exp │ │ │ ├── deploy-vengaboys-thrower.exp │ │ │ └── deploy-vengaboys.exp │ │ │ ├── deploy.test.ts │ │ │ ├── export.deployments.typescript.expectations │ │ │ ├── export-all.exp │ │ │ ├── export-contract.exp │ │ │ ├── export-missing-deployments.exp │ │ │ └── export-network.exp │ │ │ ├── export.deployments.typescript.test.ts │ │ │ ├── validate.rpcs.test.expectations │ │ │ ├── validate-all-networks.exp │ │ │ ├── validate-for-specific-networks.exp │ │ │ ├── validate-for-specific-stage-mainnet.exp │ │ │ ├── validate-for-specific-stage-sandbox.exp │ │ │ ├── validate-for-specific-stage-testnet.exp │ │ │ ├── validate-incorrect-https-rpc.exp │ │ │ ├── validate-incorrect-wss-rpc.exp │ │ │ ├── validate-invalid-rpc-with-continue.exp │ │ │ ├── validate-invalid-rpc.exp │ │ │ ├── validate-multiple-rpcs.exp │ │ │ ├── validate-rpc-for-network-without-eid.exp │ │ │ ├── validate-rpc-retries.exp │ │ │ ├── validate-rpc-timeout.exp │ │ │ ├── validate-unresponsive-https-rpc.exp │ │ │ ├── validate-unresponsive-wss-rpc.exp │ │ │ ├── validate-valid-https-rpc.exp │ │ │ ├── validate-valid-wss-rpc.exp │ │ │ └── validate-with-network-and-stage.exp │ │ │ ├── validate.rpcs.test.ts │ │ │ ├── validate.safe.configs.test.expectations │ │ │ ├── validate-invalid-safe-configs.exp │ │ │ ├── validate-missing-safe-address.exp │ │ │ ├── validate-missing-safe-url.exp │ │ │ ├── validate-no-safe-configs.exp │ │ │ └── validate-valid-safe-configs.exp │ │ │ └── validate.safe.configs.test.ts │ └── tsconfig.json ├── devtools-evm-test │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── ChildEmitter.sol │ │ ├── Emitter.sol │ │ ├── ParallelEmitter.sol │ │ └── Thrower.sol │ ├── hardhat.config.ts │ ├── jest.config.js │ ├── package.json │ ├── test │ │ ├── errors │ │ │ └── parser.test.ts │ │ └── events │ │ │ ├── __snapshots__ │ │ │ └── parser.test.ts.snap │ │ │ └── parser.test.ts │ └── tsconfig.json ├── export-deployments-test │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ └── Test.sol │ ├── deploy │ │ └── 001_Test.ts │ ├── hardhat.config.ts │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── test │ │ ├── export.test.expectations │ │ │ ├── export-all.exp │ │ │ ├── export-exclude.exp │ │ │ ├── export-missing-deployments.exp │ │ │ └── export-network.exp │ │ └── export.test.ts │ └── tsconfig.json ├── test-evm-node │ ├── .eslintrc.json │ ├── CHANGELOG.md │ ├── hardhat.config.ts │ ├── package.json │ └── tsconfig.json ├── test-setup-devtools-evm-hardhat │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── hardhat.config.ts │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── endpointV2 │ │ │ ├── deploy.ts │ │ │ ├── index.ts │ │ │ └── setup.ts │ │ ├── hardhat │ │ │ ├── config.ts │ │ │ ├── deploy.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── oapp-read │ │ │ ├── index.ts │ │ │ └── setup.ts │ │ └── oapp │ │ │ ├── index.ts │ │ │ └── setup.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── ua-devtools-evm-hardhat-test │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ │ ├── CustomOApp.sol │ │ ├── DefaultOApp.sol │ │ ├── DefaultOAppRead.sol │ │ └── OmniCounter.sol │ ├── deploy │ │ ├── 001_bootstrap.ts │ │ ├── 002_oapp.ts │ │ ├── 003_omnicounter.ts │ │ ├── 004_custom-oapp.ts │ │ └── 005_oapp-read.ts │ ├── hardhat.config.ts │ ├── hardhat.config.with-custom-configuration.ts │ ├── hardhat.config.without-eids.ts │ ├── jest.config.js │ ├── jest.setup.js │ ├── layerzero.config.with-custom-configuration.ts │ ├── package.json │ ├── tasks │ │ └── index.ts │ ├── test │ │ ├── endpointV2 │ │ │ └── config.test.ts │ │ ├── hardhat │ │ │ ├── __data__ │ │ │ │ ├── hardhat.config.with-no-external-artifacts.ts │ │ │ │ ├── hardhat.config.with-no-external-deployments.ts │ │ │ │ ├── hardhat.config.with-specified-external-artifacts.ts │ │ │ │ ├── hardhat.config.with-specified-external-deployments.ts │ │ │ │ ├── hardhat.config.with-undefined-external-artifacts.ts │ │ │ │ └── hardhat.config.with-undefined-external-deployments.ts │ │ │ └── config.test.ts │ │ ├── oapp-read │ │ │ ├── check.test.ts │ │ │ └── config.test.ts │ │ ├── oapp │ │ │ ├── check.test.ts │ │ │ └── config.test.ts │ │ ├── omnicounter │ │ │ └── options.test.ts │ │ ├── ownable │ │ │ └── config.test.ts │ │ └── task │ │ │ ├── errors │ │ │ ├── __snapshots__ │ │ │ │ ├── decode.test.ts.snap │ │ │ │ └── list.test.ts.snap │ │ │ ├── decode.test.ts │ │ │ └── list.test.ts │ │ │ └── oapp │ │ │ ├── __data__ │ │ │ └── configs │ │ │ │ ├── invalid.config.001.js │ │ │ │ ├── invalid.config.empty.js │ │ │ │ ├── invalid.config.empty.json │ │ │ │ ├── valid.config.connected.external.connection.js │ │ │ │ ├── valid.config.connected.js │ │ │ │ ├── valid.config.empty.js │ │ │ │ ├── valid.config.empty.ts │ │ │ │ ├── valid.config.misconfigured.001.js │ │ │ │ ├── valid.config.read.js │ │ │ │ ├── valid.config.with-owners.js │ │ │ │ ├── valid.multi.network.config.connected.js │ │ │ │ ├── valid.multi.network.config.missing.connection.js │ │ │ │ ├── valid.multi.network.config.one.connection.js │ │ │ │ ├── valid.multi.network.enforced.options.js │ │ │ │ ├── valid.multi.network.lzreceive.enforced.options.js │ │ │ │ └── valid.multi.network.one.pathway.enforced.options.js │ │ │ ├── __snapshots__ │ │ │ ├── config.check.test.ts.snap │ │ │ └── wire.test.ts.snap │ │ │ ├── config.check.test.ts │ │ │ ├── config.get.default.test.ts │ │ │ ├── config.get.executor.test.ts │ │ │ ├── config.get.read.test.ts │ │ │ ├── config.get.test.ts │ │ │ ├── config.init.test.ts │ │ │ ├── config.test.expectations │ │ │ ├── assert.exp │ │ │ └── config-custom-config-loading.exp │ │ │ ├── read.config.init.test.ts │ │ │ ├── read.wire.test.ts │ │ │ ├── transfer.ownership.test.ts │ │ │ └── wire.test.ts │ └── tsconfig.json └── ua-devtools-evm-hardhat-v1-test │ ├── .eslintignore │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── README.md │ ├── contracts │ └── DefaultLzApp.sol │ ├── deploy │ ├── 001_bootstrap.ts │ └── 002_lzapp.ts │ ├── hardhat.config.ts │ ├── jest.config.js │ ├── jest.setup.js │ ├── package.json │ ├── test │ ├── __utils__ │ │ ├── endpoint.ts │ │ └── lzapp.ts │ └── lzapp │ │ └── config.test.ts │ └── tsconfig.json ├── tsconfig.json ├── turbo.json └── verdaccio.yaml /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.1.0/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "restricted", 8 | "baseBranch": "origin/main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | # Docker 2 | Dockerfile 3 | docker-*.yaml 4 | 5 | # Git 6 | .git 7 | .gitignore 8 | 9 | # CI/CD files 10 | .changeset/*.md 11 | .github 12 | .husky 13 | .turbo 14 | .netrc 15 | .env 16 | .env* 17 | 18 | # Misc 19 | *ignore 20 | 21 | # Dependencies & deployments 22 | **/node_modules 23 | 24 | # Build files & cache 25 | **/deployments 26 | **/dist 27 | **/artifacts 28 | **/cache 29 | **/out 30 | 31 | # Metadata 32 | *.md -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | # Used by testing - both the CI & local mode need this variable to setup & connect to funded accounts 2 | MNEMONIC="test test test test test test test test test test test junk" -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules 4 | -------------------------------------------------------------------------------- /.github/workflows/actions/setup-environment/action.yaml: -------------------------------------------------------------------------------- 1 | name: Setup environment 2 | description: Setup node & package manager, checkout code 3 | runs: 4 | using: "composite" 5 | steps: 6 | - uses: pnpm/action-setup@v4 7 | name: Install pnpm 8 | with: 9 | version: 8.15.6 10 | run_install: false 11 | 12 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | pnpm lint-staged 5 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v18.16.0 -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | *.exp 2 | *.log 3 | .eslintignore 4 | .prettierignore 5 | .netrc 6 | *ignore 7 | pnpm-lock.yaml 8 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /bin/env: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Helper for expanding env files to a local shell 4 | # 5 | # Usage: 6 | # 7 | # . bin/env 8 | # . bin/env .env.local 9 | # 10 | # (The "." will execute this inside the current shell instead of creating a child one) 11 | 12 | set -a 13 | source ${1:-.env} 14 | set +a -------------------------------------------------------------------------------- /examples/lzapp-migration/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/lzapp-migration/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.19.0 -------------------------------------------------------------------------------- /examples/lzapp-migration/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/lzapp-migration/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/lzapp-migration/Anchor.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | anchor_version = "0.29.0" 3 | 4 | [features] 5 | seeds = false 6 | skip-lint = false 7 | 8 | [programs.localnet] 9 | oft = "3ThC8DDzimnnrt4mvJSKFpWQA3UvnbzKM3mT6SHoNQKu" 10 | 11 | [registry] 12 | url = "https://api.apr.dev" 13 | 14 | [provider] 15 | cluster = "Localnet" 16 | wallet = "./junk-id.json" 17 | 18 | [scripts] 19 | test = "npx jest test/anchor" -------------------------------------------------------------------------------- /examples/lzapp-migration/programs/oft202/Xargo.toml: -------------------------------------------------------------------------------- 1 | [target.bpfel-unknown-unknown.dependencies.std] 2 | features = [] 3 | -------------------------------------------------------------------------------- /examples/lzapp-migration/programs/oft202/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("cargo:rerun-if-env-changed=OFT_ID"); 3 | } 4 | -------------------------------------------------------------------------------- /examples/lzapp-migration/programs/oft202/src/errors.rs: -------------------------------------------------------------------------------- 1 | use anchor_lang::prelude::error_code; 2 | 3 | #[error_code] 4 | pub enum OFTError { 5 | Unauthorized, 6 | InvalidSender, 7 | InvalidDecimals, 8 | SlippageExceeded, 9 | InvalidTokenDest, 10 | RateLimitExceeded, 11 | InvalidFee, 12 | InvalidMintAuthority, 13 | Paused, 14 | } 15 | -------------------------------------------------------------------------------- /examples/lzapp-migration/programs/oft202/src/events.rs: -------------------------------------------------------------------------------- 1 | use crate::*; 2 | 3 | #[event] 4 | pub struct OFTSent { 5 | pub guid: [u8; 32], 6 | pub dst_eid: u32, 7 | pub from: Pubkey, 8 | pub amount_sent_ld: u64, 9 | pub amount_received_ld: u64, 10 | } 11 | 12 | #[event] 13 | pub struct OFTReceived { 14 | pub guid: [u8; 32], 15 | pub src_eid: u32, 16 | pub to: Pubkey, 17 | pub amount_received_ld: u64, 18 | } 19 | -------------------------------------------------------------------------------- /examples/lzapp-migration/programs/oft202/src/state/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod oft; 2 | pub mod peer_config; 3 | 4 | pub use oft::*; 5 | pub use peer_config::*; 6 | -------------------------------------------------------------------------------- /examples/lzapp-migration/rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "1.75.0" 3 | # rustup install nightly 4 | # channel = "nightly-2024-02-04" # if you want to expand the macro, you need to use nightly version 5 | components = ["rustfmt", "clippy"] 6 | -------------------------------------------------------------------------------- /examples/lzapp-migration/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/lzapp-migration/tasks/index.ts: -------------------------------------------------------------------------------- 1 | import './common/config.get' 2 | import './common/taskHelper' 3 | import './common/wire' 4 | import './evm/v1/sendMessage' 5 | import './evm/v2/sendMessage' 6 | import './evm/v1/sendOFT' 7 | import './evm/v1/setMinDstGas' 8 | import './solana/createOFT' 9 | import './solana/sendOFT' 10 | import './solana/initConfig' 11 | -------------------------------------------------------------------------------- /examples/mint-burn-oft-adapter/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/mint-burn-oft-adapter/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | 13 | # LayerZero specific files 14 | .layerzero 15 | 16 | # foundry test compilation files 17 | out 18 | 19 | # pnpm 20 | pnpm-error.log 21 | 22 | # Editor and OS files 23 | .DS_Store 24 | .idea 25 | -------------------------------------------------------------------------------- /examples/mint-burn-oft-adapter/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/mint-burn-oft-adapter/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/mint-burn-oft-adapter/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/mint-burn-oft-adapter/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/mint-burn-oft-adapter/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/native-oft-adapter/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/native-oft-adapter/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | 13 | # LayerZero specific files 14 | .layerzero 15 | 16 | # foundry test compilation files 17 | out 18 | 19 | # pnpm 20 | pnpm-error.log 21 | 22 | # Editor and OS files 23 | .DS_Store 24 | .idea 25 | -------------------------------------------------------------------------------- /examples/native-oft-adapter/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/native-oft-adapter/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/native-oft-adapter/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/native-oft-adapter/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/native-oft-adapter/test/mocks/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.20; 3 | 4 | import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Mock is ERC20 { 7 | constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {} 8 | 9 | function mint(address _to, uint256 _amount) public { 10 | _mint(_to, _amount); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/native-oft-adapter/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/oapp-aptos-move/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oapp-aptos-move/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | # LayerZero specific files 13 | .layerzero 14 | 15 | # foundry test compilation files 16 | out 17 | 18 | # pnpm 19 | pnpm-error.log 20 | 21 | # Editor and OS files 22 | .DS_Store 23 | .idea 24 | 25 | build/ 26 | 27 | # Aptos files 28 | shell-scripts -------------------------------------------------------------------------------- /examples/oapp-aptos-move/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oapp-aptos-move/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oapp-aptos-move/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oapp-aptos-move/scripts/cli.ts: -------------------------------------------------------------------------------- 1 | import { sdk } from '@layerzerolabs/devtools-extensible-cli' 2 | import { attach_wire_evm, attach_wire_move } from '@layerzerolabs/devtools-move' 3 | import { attach_oft_move } from '@layerzerolabs/oft-move' 4 | 5 | async function lzSdk() { 6 | await attach_wire_move(sdk) 7 | await attach_oft_move(sdk) 8 | await attach_wire_evm(sdk) 9 | 10 | await sdk.execute() 11 | } 12 | 13 | lzSdk() 14 | -------------------------------------------------------------------------------- /examples/oapp-aptos-move/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oapp-aptos-move/tests/shared_oapp/oapp_test_helper.move: -------------------------------------------------------------------------------- 1 | #[test_only] 2 | module oapp::oapp_test_helper { 3 | use oapp::oapp_compose; 4 | use oapp::oapp_receive; 5 | use oapp::oapp_store; 6 | 7 | public fun init_oapp() { 8 | oapp_store::init_module_for_test(); 9 | oapp_receive::init_module_for_test(); 10 | oapp_compose::init_module_for_test(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/oapp-read/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oapp-read/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | # LayerZero specific files 13 | .layerzero 14 | 15 | # foundry test compilation files 16 | out 17 | 18 | # pnpm 19 | pnpm-error.log 20 | 21 | # Editor and OS files 22 | .DS_Store 23 | .idea 24 | -------------------------------------------------------------------------------- /examples/oapp-read/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oapp-read/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oapp-read/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oapp-read/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oapp/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oapp/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | # LayerZero specific files 13 | .layerzero 14 | 15 | # foundry test compilation files 16 | out 17 | 18 | # pnpm 19 | pnpm-error.log 20 | 21 | # Editor and OS files 22 | .DS_Store 23 | .idea 24 | -------------------------------------------------------------------------------- /examples/oapp/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oapp/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oapp/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oapp/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oapp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "test", "tasks", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true, 12 | "types": ["node", "mocha"] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /examples/oft-adapter-aptos-move/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-adapter-aptos-move/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oft-adapter-aptos-move/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oft-adapter-aptos-move/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-adapter-aptos-move/deploy-move/OFTAdapterInitParams.ts: -------------------------------------------------------------------------------- 1 | import { OFTAdapterFaInitParams } from '@layerzerolabs/oft-move' 2 | 3 | const oftMetadata: OFTAdapterFaInitParams = { 4 | move_vm_fa_address: '', 5 | } 6 | 7 | export default oftMetadata 8 | -------------------------------------------------------------------------------- /examples/oft-adapter-aptos-move/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft-adapter-aptos-move/test/movement/internal_oapp/oapp_test_helper.move: -------------------------------------------------------------------------------- 1 | #[test_only] 2 | module oft::oapp_test_helper { 3 | use oft::oapp_compose; 4 | use oft::oapp_receive; 5 | use oft::oapp_store; 6 | 7 | public fun init_oapp() { 8 | oapp_store::init_module_for_test(); 9 | oapp_receive::init_module_for_test(); 10 | oapp_compose::init_module_for_test(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/oft-adapter-aptos-move/tests/shared_oapp/oapp_test_helper.move: -------------------------------------------------------------------------------- 1 | #[test_only] 2 | module oft::oapp_test_helper { 3 | use oft::oapp_receive; 4 | use oft::oapp_store; 5 | 6 | public fun init_oapp() { 7 | oapp_store::init_module_for_test(); 8 | oapp_receive::init_module_for_test(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /examples/oft-adapter-initia/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-adapter-initia/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oft-adapter-initia/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-adapter-initia/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-adapter-initia/deploy-move/OFTAdapterInitParams.ts: -------------------------------------------------------------------------------- 1 | import { OFTAdapterFaInitParams } from '@layerzerolabs/oft-move' 2 | 3 | const oftMetadata: OFTAdapterFaInitParams = { 4 | move_vm_fa_address: '', 5 | } 6 | 7 | export default oftMetadata 8 | -------------------------------------------------------------------------------- /examples/oft-adapter-initia/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft-adapter-initia/test/movement/internal_oapp/oapp_test_helper.move: -------------------------------------------------------------------------------- 1 | #[test_only] 2 | module oft::oapp_test_helper { 3 | use oft::oapp_compose; 4 | use oft::oapp_receive; 5 | use oft::oapp_store; 6 | 7 | public fun init_oapp() { 8 | oapp_store::init_module_for_test(); 9 | oapp_receive::init_module_for_test(); 10 | oapp_compose::init_module_for_test(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/oft-adapter-initia/tests/shared_oapp/oapp_test_helper.move: -------------------------------------------------------------------------------- 1 | #[test_only] 2 | module oft::oapp_test_helper { 3 | use oft::oapp_receive; 4 | use oft::oapp_store; 5 | 6 | public fun init_oapp() { 7 | oapp_store::init_module_for_test(); 8 | oapp_receive::init_module_for_test(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /examples/oft-adapter/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-adapter/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | 13 | # LayerZero specific files 14 | .layerzero 15 | 16 | # foundry test compilation files 17 | out 18 | 19 | # pnpm 20 | pnpm-error.log 21 | 22 | # Editor and OS files 23 | .DS_Store 24 | .idea 25 | -------------------------------------------------------------------------------- /examples/oft-adapter/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oft-adapter/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oft-adapter/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-adapter/contracts/mocks/MyOFTAdapterMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.22; 3 | 4 | import { MyOFTAdapter } from "../MyOFTAdapter.sol"; 5 | 6 | // @dev WARNING: This is for testing purposes only 7 | contract MyOFTAdapterMock is MyOFTAdapter { 8 | constructor(address _token, address _lzEndpoint, address _delegate) MyOFTAdapter(_token, _lzEndpoint, _delegate) {} 9 | } 10 | -------------------------------------------------------------------------------- /examples/oft-adapter/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft-adapter/test/mocks/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.20; 3 | 4 | import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Mock is ERC20 { 7 | constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {} 8 | 9 | function mint(address _to, uint256 _amount) public { 10 | _mint(_to, _amount); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/oft-adapter/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/oft-alt/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-alt/.eslintrc.js: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@layerzerolabs/eslint-config-next/recommended'], 5 | rules: { 6 | // @layerzerolabs/eslint-config-next defines rules for turborepo-based projects 7 | // that are not relevant for this particular project 8 | 'turbo/no-undeclared-env-vars': 'off', 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /examples/oft-alt/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | 13 | # LayerZero specific files 14 | .layerzero 15 | 16 | # foundry test compilation files 17 | out 18 | 19 | # pnpm 20 | pnpm-error.log 21 | 22 | # Editor and OS files 23 | .DS_Store 24 | .idea 25 | -------------------------------------------------------------------------------- /examples/oft-alt/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oft-alt/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oft-alt/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-alt/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @layerzerolabs/oft-alt-example 2 | 3 | ## 0.0.2 4 | 5 | ### Patch Changes 6 | 7 | - ba7754d: Bump package versions 8 | -------------------------------------------------------------------------------- /examples/oft-alt/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft-alt/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/oft-aptos-move/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-aptos-move/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oft-aptos-move/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oft-aptos-move/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-aptos-move/deploy-move/OFTInitParams.ts: -------------------------------------------------------------------------------- 1 | import { OFTFaInitParams } from '@layerzerolabs/oft-move' 2 | 3 | const oftMetadata: OFTFaInitParams = { 4 | token_name: 'MyOFT', 5 | token_symbol: 'MOFT', 6 | icon_uri: '', 7 | project_uri: '', 8 | localDecimals: 8, 9 | } 10 | 11 | export default oftMetadata 12 | -------------------------------------------------------------------------------- /examples/oft-aptos-move/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft-aptos-move/test/movement/internal_oapp/oapp_test_helper.move: -------------------------------------------------------------------------------- 1 | #[test_only] 2 | module oft::oapp_test_helper { 3 | use oft::oapp_compose; 4 | use oft::oapp_receive; 5 | use oft::oapp_store; 6 | 7 | public fun init_oapp() { 8 | oapp_store::init_module_for_test(); 9 | oapp_receive::init_module_for_test(); 10 | oapp_compose::init_module_for_test(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/oft-aptos-move/tests/shared_oapp/oapp_test_helper.move: -------------------------------------------------------------------------------- 1 | #[test_only] 2 | module oft::oapp_test_helper { 3 | use oft::oapp_receive; 4 | use oft::oapp_store; 5 | 6 | public fun init_oapp() { 7 | oapp_store::init_module_for_test(); 8 | oapp_receive::init_module_for_test(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /examples/oft-hyperliquid/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-hyperliquid/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | 13 | # LayerZero specific files 14 | .layerzero 15 | 16 | # foundry test compilation files 17 | out 18 | 19 | # pnpm 20 | pnpm-error.log 21 | 22 | # Editor and OS files 23 | .DS_Store 24 | .idea 25 | 26 | broadcast 27 | deployments 28 | -------------------------------------------------------------------------------- /examples/oft-hyperliquid/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oft-hyperliquid/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oft-hyperliquid/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-hyperliquid/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft-hyperliquid/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/oft-initia/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-initia/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oft-initia/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oft-initia/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-initia/deploy-move/OFTInitParams.ts: -------------------------------------------------------------------------------- 1 | import { OFTFaInitParams } from '@layerzerolabs/oft-move' 2 | 3 | const oftMetadata: OFTFaInitParams = { 4 | token_name: 'MyOFT', 5 | token_symbol: 'MOFT', 6 | icon_uri: '', 7 | project_uri: '', 8 | localDecimals: 8, 9 | } 10 | 11 | export default oftMetadata 12 | -------------------------------------------------------------------------------- /examples/oft-initia/scripts/cli.ts: -------------------------------------------------------------------------------- 1 | import { sdk } from '@layerzerolabs/devtools-extensible-cli' 2 | import { attach_wire_evm, attach_wire_move } from '@layerzerolabs/devtools-move' 3 | import { attach_oft_move } from '@layerzerolabs/oft-move' 4 | 5 | async function lzSdk() { 6 | await attach_wire_move(sdk) 7 | await attach_oft_move(sdk) 8 | await attach_wire_evm(sdk) 9 | 10 | await sdk.execute() 11 | } 12 | 13 | lzSdk() 14 | -------------------------------------------------------------------------------- /examples/oft-initia/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft-initia/test/evm/mocks/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.20; 3 | 4 | import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Mock is ERC20 { 7 | constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {} 8 | 9 | function mint(address _to, uint256 _amount) public { 10 | _mint(_to, _amount); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/oft-initia/test/movement/internal_oapp/oapp_test_helper.move: -------------------------------------------------------------------------------- 1 | #[test_only] 2 | module oft::oapp_test_helper { 3 | use oft::oapp_compose; 4 | use oft::oapp_receive; 5 | use oft::oapp_store; 6 | 7 | public fun init_oapp() { 8 | oapp_store::init_module_for_test(); 9 | oapp_receive::init_module_for_test(); 10 | oapp_compose::init_module_for_test(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/oft-initia/tests/shared_oapp/oapp_test_helper.move: -------------------------------------------------------------------------------- 1 | #[test_only] 2 | module oft::oapp_test_helper { 3 | use oft::oapp_receive; 4 | use oft::oapp_store; 5 | 6 | public fun init_oapp() { 7 | oapp_store::init_module_for_test(); 8 | oapp_receive::init_module_for_test(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /examples/oft-solana/.eslintignore: -------------------------------------------------------------------------------- 1 | .anchor 2 | .turbo 3 | node_modules 4 | target 5 | artifacts 6 | cache 7 | dist 8 | out 9 | *.log 10 | *.sol 11 | *.yaml 12 | *.lock 13 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-solana/.gitignore: -------------------------------------------------------------------------------- 1 | .anchor 2 | node_modules 3 | .env 4 | coverage 5 | coverage.json 6 | target 7 | typechain 8 | typechain-types 9 | 10 | # Hardhat files 11 | cache 12 | artifacts 13 | 14 | 15 | # LayerZero specific files 16 | .layerzero 17 | 18 | # foundry test compilation files 19 | out 20 | 21 | # pnpm 22 | pnpm-error.log 23 | 24 | # Editor and OS files 25 | .DS_Store 26 | .idea 27 | -------------------------------------------------------------------------------- /examples/oft-solana/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.19.0 -------------------------------------------------------------------------------- /examples/oft-solana/.prettierignore: -------------------------------------------------------------------------------- 1 | .anchor 2 | .turbo 3 | node_modules/ 4 | target 5 | artifacts/ 6 | cache/ 7 | dist/ 8 | out/ 9 | *.log 10 | *ignore 11 | *.yaml 12 | *.lock 13 | package-lock.json 14 | package.json -------------------------------------------------------------------------------- /examples/oft-solana/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-solana/.solhintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['solhint:recommended', require.resolve('@layerzerolabs/solhint-config')], 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-solana/Anchor.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | anchor_version = "0.29.0" 3 | 4 | [features] 5 | seeds = false 6 | skip-lint = false 7 | 8 | [programs.localnet] 9 | oft = "G2BYTnfGCMQAErMZkTBCFSapKevzf6QCjizjXi8hFEtJ" 10 | 11 | [registry] 12 | url = "https://api.apr.dev" 13 | 14 | [provider] 15 | cluster = "Localnet" 16 | wallet = "./junk-id.json" 17 | 18 | [scripts] 19 | test = "npx jest test/anchor" 20 | -------------------------------------------------------------------------------- /examples/oft-solana/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = ["programs/*"] 3 | resolver = "2" 4 | 5 | # [features] 6 | # idl-build = ["anchor-lang/idl-build"] 7 | 8 | [profile.release] 9 | overflow-checks = true 10 | lto = "fat" 11 | codegen-units = 1 12 | 13 | [profile.release.build-override] 14 | opt-level = 3 15 | incremental = false 16 | codegen-units = 1 17 | -------------------------------------------------------------------------------- /examples/oft-solana/jest.config.ts: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | reporters: [['github-actions', { silent: false }], 'default'], 4 | testEnvironment: 'node', 5 | testTimeout: 15000, 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /examples/oft-solana/junk-id.json: -------------------------------------------------------------------------------- 1 | [ 2 | 101, 96, 5, 237, 143, 245, 198, 118, 241, 242, 185, 196, 246, 72, 152, 231, 3 | 30, 170, 168, 48, 19, 92, 179, 54, 175, 98, 167, 177, 62, 91, 162, 83, 255, 4 | 175, 71, 42, 217, 187, 228, 197, 222, 137, 131, 197, 89, 69, 190, 209, 113, 5 | 186, 78, 149, 158, 115, 255, 26, 162, 25, 122, 247, 1, 33, 92, 96 6 | ] 7 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/endpoint-mock/Xargo.toml: -------------------------------------------------------------------------------- 1 | [target.bpfel-unknown-unknown.dependencies.std] 2 | features = [] 3 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/endpoint-mock/src/instructions/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod oapp; 2 | 3 | pub use oapp::*; 4 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/endpoint-mock/src/instructions/oapp/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod register_oapp; 2 | 3 | pub use register_oapp::*; 4 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/endpoint-mock/src/state/endpoint.rs: -------------------------------------------------------------------------------- 1 | use crate::*; 2 | 3 | #[account] 4 | #[derive(InitSpace)] 5 | pub struct OAppRegistry { 6 | pub delegate: Pubkey, 7 | pub bump: u8, 8 | } 9 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/endpoint-mock/src/state/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod endpoint; 2 | 3 | pub use endpoint::*; 4 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/oft/Xargo.toml: -------------------------------------------------------------------------------- 1 | [target.bpfel-unknown-unknown.dependencies.std] 2 | features = [] 3 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/oft/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("cargo:rerun-if-env-changed=OFT_ID"); 3 | } 4 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/oft/src/errors.rs: -------------------------------------------------------------------------------- 1 | use anchor_lang::prelude::error_code; 2 | 3 | #[error_code] 4 | pub enum OFTError { 5 | Unauthorized, 6 | InvalidSender, 7 | InvalidDecimals, 8 | SlippageExceeded, 9 | InvalidTokenDest, 10 | RateLimitExceeded, 11 | InvalidFee, 12 | InvalidMintAuthority, 13 | Paused, 14 | } 15 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/oft/src/events.rs: -------------------------------------------------------------------------------- 1 | use crate::*; 2 | 3 | #[event] 4 | pub struct OFTSent { 5 | pub guid: [u8; 32], 6 | pub dst_eid: u32, 7 | pub from: Pubkey, 8 | pub amount_sent_ld: u64, 9 | pub amount_received_ld: u64, 10 | } 11 | 12 | #[event] 13 | pub struct OFTReceived { 14 | pub guid: [u8; 32], 15 | pub src_eid: u32, 16 | pub to: Pubkey, 17 | pub amount_received_ld: u64, 18 | } 19 | -------------------------------------------------------------------------------- /examples/oft-solana/programs/oft/src/state/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod oft; 2 | pub mod peer_config; 3 | 4 | pub use oft::*; 5 | pub use peer_config::*; 6 | -------------------------------------------------------------------------------- /examples/oft-solana/rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "1.75.0" 3 | -------------------------------------------------------------------------------- /examples/oft-solana/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft-solana/test/mocks/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.20; 3 | 4 | import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Mock is ERC20 { 7 | constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {} 8 | 9 | function mint(address _to, uint256 _amount) public { 10 | _mint(_to, _amount); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/oft-solana/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "compilerOptions": { 4 | "target": "es2020", 5 | "module": "commonjs", 6 | "esModuleInterop": true, 7 | "moduleResolution": "node", 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/oft-solana/turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["//"], 3 | "pipeline": { 4 | "compile": { 5 | "outputs": ["target/**"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /examples/oft-upgradeable/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft-upgradeable/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | 13 | # LayerZero specific files 14 | .layerzero 15 | 16 | # foundry test compilation files 17 | out 18 | 19 | # pnpm 20 | pnpm-error.log 21 | 22 | # Editor and OS files 23 | .DS_Store 24 | .idea 25 | -------------------------------------------------------------------------------- /examples/oft-upgradeable/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oft-upgradeable/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oft-upgradeable/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft-upgradeable/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft-upgradeable/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/oft/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/oft/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | 13 | # LayerZero specific files 14 | .layerzero 15 | 16 | # foundry test compilation files 17 | out 18 | 19 | # pnpm 20 | pnpm-error.log 21 | 22 | # Editor and OS files 23 | .DS_Store 24 | .idea 25 | -------------------------------------------------------------------------------- /examples/oft/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/oft/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/oft/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/oft/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/oft/test/mocks/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.20; 3 | 4 | import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Mock is ERC20 { 7 | constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {} 8 | 9 | function mint(address _to, uint256 _amount) public { 10 | _mint(_to, _amount); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /examples/oft/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/onft721-zksync/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/onft721-zksync/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | artifacts-zk 12 | 13 | 14 | # LayerZero specific files 15 | .layerzero 16 | 17 | # foundry test compilation files 18 | out 19 | 20 | # pnpm 21 | pnpm-error.log 22 | 23 | # Editor and OS files 24 | .DS_Store 25 | .idea 26 | -------------------------------------------------------------------------------- /examples/onft721-zksync/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/onft721-zksync/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/onft721-zksync/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/onft721-zksync/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/onft721-zksync/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "*.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/onft721-zksync/turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["//"], 3 | "pipeline": { 4 | "compile": { 5 | "outputs": ["artifacts/**", "artifacts-zk/**", "out/**"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /examples/onft721/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/onft721/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | 13 | # LayerZero specific files 14 | .layerzero 15 | 16 | # foundry test compilation files 17 | out 18 | 19 | # pnpm 20 | pnpm-error.log 21 | 22 | # Editor and OS files 23 | .DS_Store 24 | .idea 25 | -------------------------------------------------------------------------------- /examples/onft721/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/onft721/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/onft721/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/onft721/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/onft721/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /examples/uniswap-read/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/uniswap-read/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | # LayerZero specific files 13 | .layerzero 14 | 15 | # foundry test compilation files 16 | out 17 | 18 | # pnpm 19 | pnpm-error.log 20 | 21 | # Editor and OS files 22 | .DS_Store 23 | .idea 24 | -------------------------------------------------------------------------------- /examples/uniswap-read/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/uniswap-read/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/uniswap-read/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/uniswap-read/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /examples/view-pure-read/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /examples/view-pure-read/.eslintrc.js: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@layerzerolabs/eslint-config-next/recommended'], 5 | rules: { 6 | // @layerzerolabs/eslint-config-next defines rules for turborepo-based projects 7 | // that are not relevant for this particular project 8 | 'turbo/no-undeclared-env-vars': 'off', 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /examples/view-pure-read/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | # Hardhat files 9 | cache 10 | artifacts 11 | 12 | # LayerZero specific files 13 | .layerzero 14 | 15 | # foundry test compilation files 16 | out 17 | 18 | # pnpm 19 | pnpm-error.log 20 | 21 | # Editor and OS files 22 | .DS_Store 23 | .idea 24 | -------------------------------------------------------------------------------- /examples/view-pure-read/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /examples/view-pure-read/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /examples/view-pure-read/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /examples/view-pure-read/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @layerzerolabs/view-pure-read-example 2 | 3 | ## 0.0.3 4 | 5 | ### Patch Changes 6 | 7 | - ed9aed9: Percolate --skip-connections-from-eids by upgrading toolbox-hardhat across the project 8 | 9 | ## 0.0.2 10 | 11 | ### Patch Changes 12 | 13 | - 8b6c422: Bump monorepo dependencies to latest patch version 14 | -------------------------------------------------------------------------------- /examples/view-pure-read/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /packages/build-devtools/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/build-devtools/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/build-devtools/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @layerzerolabs/build-devtools 2 | 3 | ## 0.0.4 4 | 5 | ### Patch Changes 6 | 7 | - e256387: Updating packages 8 | 9 | ## 0.0.3 10 | 11 | ### Patch Changes 12 | 13 | - 186442a: add "test:jest" script 14 | 15 | ## 0.0.2 16 | 17 | ### Patch Changes 18 | 19 | - 437838f: Fix the default enabled value for declaration map plugin 20 | -------------------------------------------------------------------------------- /packages/build-devtools/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/build-devtools/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tsup' 2 | -------------------------------------------------------------------------------- /packages/build-devtools/src/tsup/index.ts: -------------------------------------------------------------------------------- 1 | export * from './declarations' 2 | -------------------------------------------------------------------------------- /packages/build-devtools/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src"] 4 | } 5 | -------------------------------------------------------------------------------- /packages/build-devtools/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "jsx": "react", 7 | "types": ["node", "jest"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/build-devtools/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | import { createDeclarationBuild } from '@/tsup' 3 | 4 | export default defineConfig({ 5 | entry: ['src/index.ts'], 6 | outDir: './dist', 7 | clean: true, 8 | dts: true, 9 | sourcemap: true, 10 | splitting: false, 11 | treeshake: true, 12 | format: ['esm', 'cjs'], 13 | plugins: [createDeclarationBuild({})], 14 | }) 15 | -------------------------------------------------------------------------------- /packages/build-lz-options/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/build-lz-options/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import('./dist/index.js'); 4 | -------------------------------------------------------------------------------- /packages/build-lz-options/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | preset: 'ts-jest', 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | testTimeout: 15000, 7 | moduleNameMapper: { 8 | '^@/(.*)$': '/src/$1', 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /packages/build-lz-options/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "declaration": false, 6 | "jsx": "react", 7 | "lib": ["dom", "dom.Iterable", "es2022"], 8 | "resolveJsonModule": true, 9 | "types": ["node"], 10 | "paths": { 11 | "@/*": ["./src/*"] 12 | } 13 | }, 14 | "include": ["src", "test", "types"] 15 | } 16 | -------------------------------------------------------------------------------- /packages/build-lz-options/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "ESNext", 5 | "moduleResolution": "Node10" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/create-lz-oapp/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/create-lz-oapp/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/create-lz-oapp/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import('./dist/index.js'); 4 | -------------------------------------------------------------------------------- /packages/create-lz-oapp/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | reporters: [['github-actions', { silent: false }], 'default'], 4 | testEnvironment: 'node', 5 | testTimeout: 15000, 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/create-lz-oapp/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "ESNext", 5 | "moduleResolution": "Node10" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/decode-lz-options/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/decode-lz-options/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import('./dist/index.js'); 4 | -------------------------------------------------------------------------------- /packages/decode-lz-options/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | preset: 'ts-jest', 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | testTimeout: 15000, 7 | moduleNameMapper: { 8 | '^@/(.*)$': '/src/$1', 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /packages/decode-lz-options/src/config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LayerZero-Labs/devtools/886b5e53c2c82550644f71d2a0ad3a0b9aeb28a8/packages/decode-lz-options/src/config.ts -------------------------------------------------------------------------------- /packages/decode-lz-options/src/utilities/prompts.ts: -------------------------------------------------------------------------------- 1 | import prompts from 'prompts' 2 | import { handlePromptState } from '@layerzerolabs/io-devtools' 3 | 4 | export const promptForRawOptions = () => 5 | prompts([ 6 | { 7 | onState: handlePromptState, 8 | type: 'text', 9 | name: 'options', 10 | message: 'Enter raw options:', 11 | }, 12 | ]) 13 | -------------------------------------------------------------------------------- /packages/decode-lz-options/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "declaration": false, 6 | "jsx": "react", 7 | "lib": ["dom", "dom.Iterable", "es2022"], 8 | "resolveJsonModule": true, 9 | "types": ["node"], 10 | "paths": { 11 | "@/*": ["./src/*"] 12 | } 13 | }, 14 | "include": ["src", "test", "types"] 15 | } 16 | -------------------------------------------------------------------------------- /packages/decode-lz-options/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "ESNext", 5 | "moduleResolution": "Node10" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/devtools-cli/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/devtools-cli/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/devtools-cli/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/devtools-cli/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import('./dist/cli.js'); 4 | -------------------------------------------------------------------------------- /packages/devtools-cli/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | preset: 'ts-jest', 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | testTimeout: 15000, 7 | moduleNameMapper: { 8 | '^@/(.*)$': '/src/$1', 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /packages/devtools-cli/src/cli.ts: -------------------------------------------------------------------------------- 1 | import { Command } from 'commander' 2 | import { version, name } from '../package.json' 3 | import { oapp } from './commands/oapp' 4 | 5 | new Command(name).description('CLI for configuring LayerZero OApps').version(version).addCommand(oapp).parseAsync() 6 | -------------------------------------------------------------------------------- /packages/devtools-cli/src/commands/oapp/index.ts: -------------------------------------------------------------------------------- 1 | import { Command } from 'commander' 2 | import { wire } from './wire' 3 | 4 | export const oapp = new Command('oapp').description('OApp configuration commands').addCommand(wire) 5 | -------------------------------------------------------------------------------- /packages/devtools-cli/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './types' 2 | -------------------------------------------------------------------------------- /packages/devtools-cli/src/setup/index.ts: -------------------------------------------------------------------------------- 1 | export * from './loading' 2 | export * from './schema' 3 | export * from './typescript' 4 | -------------------------------------------------------------------------------- /packages/devtools-cli/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "declaration": false, 6 | "jsx": "react", 7 | "lib": ["dom", "dom.Iterable", "es2022"], 8 | "resolveJsonModule": true, 9 | "types": ["node"], 10 | "paths": { 11 | "@/*": ["./src/*"] 12 | } 13 | }, 14 | "include": ["src", "test", "types"] 15 | } 16 | -------------------------------------------------------------------------------- /packages/devtools-cli/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "ESNext", 5 | "moduleResolution": "Node10" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/.gitignore: -------------------------------------------------------------------------------- 1 | ./artifacts 2 | cache 3 | deployments -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/jest.transformer.raw.js: -------------------------------------------------------------------------------- 1 | // This is a quick, up-to-date version of https://www.npmjs.com/package/jest-raw-loader 2 | // 3 | // We need this in order to be able to statically import/embed simulation Dockerfile & nginx.conf 4 | module.exports = { 5 | process: (content) => ({ code: `module.exports = ${JSON.stringify(content)}` }), 6 | }; 7 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/constants/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tasks' 2 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/errors/errors.ts: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | export class ConfigurationError extends Error {} 4 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/errors/index.ts: -------------------------------------------------------------------------------- 1 | export * from './errors' 2 | export * from './parser' 3 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/internal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './assertions' 2 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/omnigraph/index.ts: -------------------------------------------------------------------------------- 1 | export * from './builder' 2 | export * from './contracts' 3 | export * from './coordinates' 4 | export * from './schema' 5 | export * from './transformations' 6 | export * from './types' 7 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/simulation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compose' 2 | export * from './config' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/tasks/healthcheck/index.ts: -------------------------------------------------------------------------------- 1 | export * from './validate-safe-configs' 2 | export * from './validate-rpcs' 3 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/tasks/index.ts: -------------------------------------------------------------------------------- 1 | export * from './deploy' 2 | export * from './simulation' 3 | export * from './transactions' 4 | export * from './export.deployments.typescript' 5 | export * from './healthcheck' 6 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/tasks/simulation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './logs' 2 | export * from './start' 3 | export * from './stop' 4 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/tasks/transactions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './subtask.sign-and-send' 2 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/src/transactions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './format' 2 | export * from './signer' 3 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/tasks/README.md: -------------------------------------------------------------------------------- 1 | This `package.json` ensures that the `@layerzerolabs/devtools-evm-hardhat/tasks` import is available even for older node versions and legacy module systems that don't respect the `exports` field in the root `package.json` 2 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/tasks/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "../dist/tasks/index.js", 3 | "module": "../dist/tasks/index.mjs", 4 | "types": "../dist/tasks/index.d.ts" 5 | } 6 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/test/simulation/__snapshots__/compose.test.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`simulation/compose createEvmNodeServiceSpec() should work when there are no anvil options 1`] = ` 4 | "version: '3.9' 5 | services: 6 | anvil: 7 | build: 8 | dockerfile: Dockerfile 9 | target: node-evm 10 | command: 11 | - anvil 12 | " 13 | `; 14 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | }, 12 | "files": ["./types/conf.d.ts"] 13 | } 14 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/type-extensions/README.md: -------------------------------------------------------------------------------- 1 | This `package.json` ensures that the `@layerzerolabs/devtools-evm-hardhat/type-extensions` import is available even for older node versions and legacy module systems that don't respect the `exports` field in the root `package.json` 2 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/type-extensions/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "../dist/type-extensions.js", 3 | "module": "../dist/type-extensions.mjs", 4 | "types": "../dist/type-extensions.d.ts" 5 | } 6 | -------------------------------------------------------------------------------- /packages/devtools-evm-hardhat/types/conf.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.conf' { 2 | declare const content: string 3 | 4 | export default content 5 | } 6 | -------------------------------------------------------------------------------- /packages/devtools-evm/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/devtools-evm/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/devtools-evm/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/devtools-evm/jest.setup.js: -------------------------------------------------------------------------------- 1 | import * as jestExtended from 'jest-extended'; 2 | 3 | // add all jest-extended matchers 4 | expect.extend(jestExtended); 5 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/errors/index.ts: -------------------------------------------------------------------------------- 1 | export * from './errors' 2 | export * from './parser' 3 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/errors/types.ts: -------------------------------------------------------------------------------- 1 | import { Factory } from '@layerzerolabs/devtools' 2 | import type { ContractError } from './errors' 3 | import { OmniContract } from '@/omnigraph/types' 4 | 5 | export type OmniContractErrorParser = Factory<[error: unknown], ContractError> 6 | 7 | export type OmniContractErrorParserFactory = Factory< 8 | [contract: OmniContract | null | undefined], 9 | OmniContractErrorParser 10 | > 11 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/events/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parser' 2 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './address' 2 | export * from './errors' 3 | export * from './events' 4 | export * from './omnigraph' 5 | export * from './provider' 6 | export * from './schema' 7 | export * from './signer' 8 | export * from './simulation' 9 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/omnigraph/format.ts: -------------------------------------------------------------------------------- 1 | import { formatOmniPoint } from '@layerzerolabs/devtools' 2 | import type { OmniContract } from './types' 3 | import { omniContractToPoint } from './coordinates' 4 | 5 | export const formatOmniContract = (contract: OmniContract): string => 6 | `EVM contract at ${formatOmniPoint(omniContractToPoint(contract))}` 7 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/omnigraph/index.ts: -------------------------------------------------------------------------------- 1 | export * from './coordinates' 2 | export * from './format' 3 | export * from './sdk' 4 | export * from './types' 5 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/provider/factory.ts: -------------------------------------------------------------------------------- 1 | import pMemoize from 'p-memoize' 2 | import { ProviderFactory, RpcUrlFactory } from './types' 3 | import { JsonRpcProvider } from '@ethersproject/providers' 4 | 5 | export const createProviderFactory = (urlFactory: RpcUrlFactory): ProviderFactory => 6 | pMemoize(async (eid) => new JsonRpcProvider(await urlFactory(eid))) 7 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/provider/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/signer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/devtools-evm/src/simulation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './anvil' 2 | -------------------------------------------------------------------------------- /packages/devtools-evm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "types": ["node", "jest"], 7 | "paths": { 8 | "@/*": ["./src/*"] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/devtools-evm/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig([ 4 | { 5 | entry: ['src/index.ts'], 6 | outDir: './dist', 7 | clean: true, 8 | dts: true, 9 | sourcemap: true, 10 | splitting: false, 11 | treeshake: true, 12 | format: ['esm', 'cjs'], 13 | }, 14 | ]) 15 | -------------------------------------------------------------------------------- /packages/devtools-extensible-cli/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /packages/devtools-extensible-cli/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /packages/devtools-extensible-cli/index.ts: -------------------------------------------------------------------------------- 1 | export * from './cli/AptosEVMCli' 2 | export * from './cli/types/NewOperation' 3 | -------------------------------------------------------------------------------- /packages/devtools-extensible-cli/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["dist", "node_modules"], 3 | "include": ["cli", "types"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "forceConsistentCasingInFileNames": true, 8 | "strict": true, 9 | "skipLibCheck": true, 10 | "resolveJsonModule": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/devtools-extensible-cli/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/devtools-move/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /packages/devtools-move/.gitignore: -------------------------------------------------------------------------------- 1 | # Environment variables 2 | **/.env 3 | .env.* 4 | !.env.example 5 | 6 | # IDE 7 | .idea/ 8 | .vscode/ 9 | 10 | # Dependencies 11 | node_modules/ 12 | 13 | # Build outputs 14 | dist/ 15 | build/ 16 | lib/ 17 | 18 | # Logs 19 | *.log 20 | npm-debug.log* 21 | yarn-debug.log* 22 | yarn-error.log* 23 | 24 | # OS 25 | .DS_Store 26 | Thumbs.db -------------------------------------------------------------------------------- /packages/devtools-move/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /packages/devtools-move/README.md: -------------------------------------------------------------------------------- 1 | # Devtools-Movement README 2 | 3 | 1. Supports movement and evm chain side of the layerzero-sdk 4 | 2. Uses existing `hardhat.config.ts` and `layerzero.config.ts` 5 | 3. Extensible for OFTs and OApps 6 | -------------------------------------------------------------------------------- /packages/devtools-move/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | preset: 'ts-jest', 4 | testEnvironment: 'node', 5 | transform: { 6 | '^.+\\.tsx?$': 'ts-jest', 7 | }, 8 | testMatch: ['**/*.test.ts'], 9 | }; 10 | -------------------------------------------------------------------------------- /packages/devtools-move/tasks/index.ts: -------------------------------------------------------------------------------- 1 | export * from './move' 2 | export * from './shared' 3 | export * from './evm/wire-evm' 4 | export * from '../cli' 5 | export * from '../sdk' 6 | export * from './move/utils/deploymentAddresses' 7 | -------------------------------------------------------------------------------- /packages/devtools-move/tasks/move/index.ts: -------------------------------------------------------------------------------- 1 | export * from './build' 2 | export * from './deploy' 3 | export * from './setDelegate' 4 | export * from './wireMove' 5 | export * from './transferObjectOwner' 6 | export * from './transferOwnerOapp' 7 | export * from './utils/utils' 8 | export * from './utils/moveVMOftConfigOps' 9 | -------------------------------------------------------------------------------- /packages/devtools-move/tasks/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './basexToBytes32' 2 | export * from './messageBuilder' 3 | export * from './types' 4 | export * from './utils' 5 | -------------------------------------------------------------------------------- /packages/devtools-move/tasks/shared/types.ts: -------------------------------------------------------------------------------- 1 | export type deploymentFile = { 2 | address: string 3 | abi: [] 4 | transactionHash: '' 5 | receipt: object 6 | args: [] 7 | numDeployments: 1 8 | solcInputHash: '' 9 | metadata: '' 10 | bytecode: '' 11 | deployedBytecode: '' 12 | devdoc: object 13 | storageLayout: object 14 | } 15 | -------------------------------------------------------------------------------- /packages/devtools-move/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["dist", "node_modules"], 3 | "include": ["cli", "sdk", "tasks", "types"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/devtools-move/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['tasks/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/devtools-solana/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/devtools-solana/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/devtools-solana/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/devtools-solana/.swcrc: -------------------------------------------------------------------------------- 1 | { 2 | "jsc": { 3 | "parser": { 4 | "syntax": "typescript", 5 | "decorators": true 6 | }, 7 | "transform": { 8 | "legacyDecorator": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/devtools-solana/jest.setup.js: -------------------------------------------------------------------------------- 1 | import * as jestExtended from 'jest-extended'; 2 | 3 | // add all jest-extended matchers 4 | expect.extend(jestExtended); 5 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from './accounts' 2 | export * from './schema' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/common/schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod' 2 | import BN from 'bn.js' 3 | import { PublicKey } from '@solana/web3.js' 4 | 5 | export const BNBigIntSchema = z.instanceof(BN).transform((bn) => BigInt(bn.toString())) 6 | 7 | export const PublicKeySchema = z.instanceof(PublicKey) 8 | 9 | export const PublicKeyBase58Schema = PublicKeySchema.transform((key) => key.toBase58()) 10 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/common/types.ts: -------------------------------------------------------------------------------- 1 | import type { Factory, OmniPoint } from '@layerzerolabs/devtools' 2 | import type { PublicKey } from '@solana/web3.js' 3 | 4 | export type PublicKeyFactory = Factory<[OmniPoint], PublicKey> 5 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/connection/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/connection/types.ts: -------------------------------------------------------------------------------- 1 | import type { EndpointBasedFactory } from '@layerzerolabs/devtools' 2 | import type { Connection } from '@solana/web3.js' 3 | 4 | export type ConnectionFactory = EndpointBasedFactory 5 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './common' 2 | export * from './connection' 3 | export * from './omnigraph' 4 | export * from './transactions' 5 | export * from './wallet' 6 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/omnigraph/coordinates.ts: -------------------------------------------------------------------------------- 1 | import { OmniPoint } from '@layerzerolabs/devtools' 2 | import { ChainType, endpointIdToChainType } from '@layerzerolabs/lz-definitions' 3 | 4 | export const isOmniPointOnSolana = ({ eid }: OmniPoint): boolean => endpointIdToChainType(eid) === ChainType.SOLANA 5 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/omnigraph/index.ts: -------------------------------------------------------------------------------- 1 | export * from './coordinates' 2 | export * from './sdk' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/omnigraph/types.ts: -------------------------------------------------------------------------------- 1 | import type { IOmniSDK as IOmniSDKAbstract } from '@layerzerolabs/devtools' 2 | 3 | /** 4 | * Base interface for all Solana SDKs, adding the Solana specific attributes 5 | */ 6 | export interface IOmniSDK extends IOmniSDKAbstract {} 7 | -------------------------------------------------------------------------------- /packages/devtools-solana/src/transactions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './serde' 2 | export * from './signer' 3 | export * from './fees' 4 | -------------------------------------------------------------------------------- /packages/devtools-solana/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "types": ["node", "jest"], 7 | "target": "es2020", 8 | "experimentalDecorators": true, 9 | "paths": { 10 | "@/*": ["./src/*"] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/devtools-solana/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig([ 4 | { 5 | entry: ['src/index.ts'], 6 | outDir: './dist', 7 | clean: true, 8 | dts: true, 9 | sourcemap: true, 10 | splitting: false, 11 | treeshake: true, 12 | format: ['esm', 'cjs'], 13 | }, 14 | ]) 15 | -------------------------------------------------------------------------------- /packages/devtools-ton/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/devtools-ton/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/devtools-ton/.swcrc: -------------------------------------------------------------------------------- 1 | { 2 | "jsc": { 3 | "parser": { 4 | "syntax": "typescript", 5 | "decorators": true 6 | }, 7 | "transform": { 8 | "legacyDecorator": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/devtools-ton/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './transactions' 2 | export * from './omnigraph' 3 | export * from './getDeploymentAddress' 4 | -------------------------------------------------------------------------------- /packages/devtools-ton/src/omnigraph/index.ts: -------------------------------------------------------------------------------- 1 | export * from './coordinates' 2 | export * from './sdk' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/devtools-ton/src/omnigraph/types.ts: -------------------------------------------------------------------------------- 1 | import { EndpointBasedFactory } from '@layerzerolabs/devtools' 2 | import { TonClient, TonClient3 } from '@ton/ton' 3 | 4 | export type TonClientFactory = EndpointBasedFactory 5 | export type TonClient3Factory = EndpointBasedFactory 6 | export type TonApiFactory = EndpointBasedFactory 7 | -------------------------------------------------------------------------------- /packages/devtools-ton/src/transactions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './serde' 2 | export * from './signer' 3 | export * from './state' 4 | -------------------------------------------------------------------------------- /packages/devtools-ton/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "experimentalDecorators": true, 7 | "target": "ES2020", 8 | "module": "commonjs", 9 | "types": ["node", "jest"], 10 | "paths": { 11 | "@/*": ["./src/*"] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/devtools-ton/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['cjs', 'esm'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/devtools/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/devtools/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/devtools/.swcrc: -------------------------------------------------------------------------------- 1 | { 2 | "jsc": { 3 | "parser": { 4 | "syntax": "typescript", 5 | "decorators": true 6 | }, 7 | "transform": { 8 | "legacyDecorator": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/devtools/jest.setup.js: -------------------------------------------------------------------------------- 1 | import * as jestExtended from 'jest-extended'; 2 | 3 | // add all jest-extended matchers 4 | expect.extend(jestExtended); 5 | -------------------------------------------------------------------------------- /packages/devtools/src/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from './assertion' 2 | export * from './bytes' 3 | export * from './promise' 4 | export * from './retry' 5 | export * from './strings' 6 | -------------------------------------------------------------------------------- /packages/devtools/src/common/strings.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Splits a comma-separated string into individual values 3 | * and discards any whitespace. 4 | * 5 | * @param {string} value 6 | * @returns {string[]} 7 | */ 8 | export const splitCommaSeparated = (value: string): string[] => 9 | value 10 | .trim() 11 | .split(/\s*,\s*/) 12 | .filter(Boolean) 13 | -------------------------------------------------------------------------------- /packages/devtools/src/docker/compose.ts: -------------------------------------------------------------------------------- 1 | import { dump } from 'js-yaml' 2 | import type { ComposeSpec } from './types' 3 | 4 | export const serializeDockerComposeSpec = (spec: ComposeSpec): string => dump(spec) 5 | -------------------------------------------------------------------------------- /packages/devtools/src/docker/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compose' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/devtools/src/flows/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config.execute' 2 | export * from './config.load' 3 | export * from './sign.and.send' 4 | export * from './wire' 5 | -------------------------------------------------------------------------------- /packages/devtools/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './common' 2 | export * from './docker' 3 | export * from './flows' 4 | export * from './omnigraph' 5 | export * from './transactions' 6 | export * from './types' 7 | -------------------------------------------------------------------------------- /packages/devtools/src/omnigraph/index.ts: -------------------------------------------------------------------------------- 1 | export * from './builder' 2 | export * from './config' 3 | export * from './coordinates' 4 | export * from './map' 5 | export * from './format' 6 | export * from './schema' 7 | export * from './types' 8 | -------------------------------------------------------------------------------- /packages/devtools/src/transactions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './format' 2 | export * from './signer' 3 | export * from './types' 4 | export * from './utils' 5 | -------------------------------------------------------------------------------- /packages/devtools/test/omnigraph/__snapshots__/schema.test.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`omnigraph/schema UIntBigIntSchema should mention the object path for undefined values 1`] = ` 4 | "[ 5 | { 6 | "code": "custom", 7 | "message": "Invalid BigInt-like value", 8 | "path": [ 9 | "value" 10 | ] 11 | } 12 | ]" 13 | `; 14 | -------------------------------------------------------------------------------- /packages/devtools/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test"], 5 | "compilerOptions": { 6 | "experimentalDecorators": true, 7 | "types": ["node", "jest"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/devtools/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/export-deployments/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require('./dist/cli.js'); 4 | -------------------------------------------------------------------------------- /packages/export-deployments/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | reporters: [['github-actions', { silent: false }], 'default'], 4 | testEnvironment: 'node', 5 | testTimeout: 15000, 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/export-deployments/src/generator/markdown/index.ts: -------------------------------------------------------------------------------- 1 | export { generate } from './generate' 2 | -------------------------------------------------------------------------------- /packages/export-deployments/src/generator/types.ts: -------------------------------------------------------------------------------- 1 | import { Either } from 'fp-ts/lib/Either' 2 | 3 | export interface OutputFile { 4 | path: string 5 | content: string 6 | } 7 | 8 | export type CodeGenerator = (deploymentFilePaths: string[]) => Either 9 | -------------------------------------------------------------------------------- /packages/export-deployments/src/generator/typescript/index.ts: -------------------------------------------------------------------------------- 1 | export { generate } from './generate' 2 | -------------------------------------------------------------------------------- /packages/export-deployments/src/parser/__mocks__/Array.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /packages/export-deployments/src/parser/__mocks__/DeploymentMock.json: -------------------------------------------------------------------------------- 1 | { 2 | "address": "0x0", 3 | "transactionHash": "0x00", 4 | "abi": [] 5 | } 6 | -------------------------------------------------------------------------------- /packages/export-deployments/src/parser/__mocks__/Empty.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LayerZero-Labs/devtools/886b5e53c2c82550644f71d2a0ad3a0b9aeb28a8/packages/export-deployments/src/parser/__mocks__/Empty.json -------------------------------------------------------------------------------- /packages/export-deployments/src/parser/__mocks__/False.json: -------------------------------------------------------------------------------- 1 | false 2 | -------------------------------------------------------------------------------- /packages/export-deployments/src/parser/__mocks__/Number.json: -------------------------------------------------------------------------------- 1 | 6 2 | -------------------------------------------------------------------------------- /packages/export-deployments/src/parser/__mocks__/String.json: -------------------------------------------------------------------------------- 1 | "hello" 2 | -------------------------------------------------------------------------------- /packages/export-deployments/src/parser/deployment.ts: -------------------------------------------------------------------------------- 1 | import * as E from 'fp-ts/Either' 2 | import { flow } from 'fp-ts/lib/function' 3 | import { DeploymentBaseSchema } from './schema' 4 | 5 | export const parseDeploymentSafe = flow( 6 | E.tryCatchK(require, E.toError), 7 | E.flatMap(E.tryCatchK(DeploymentBaseSchema.parse, E.toError)) 8 | ) 9 | -------------------------------------------------------------------------------- /packages/export-deployments/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "declaration": false, 6 | "lib": ["dom", "dom.Iterable", "es2022"], 7 | "resolveJsonModule": true, 8 | "types": ["jest", "node"], 9 | "paths": { 10 | "@/*": ["./src/*"] 11 | } 12 | }, 13 | "include": ["src", "test"] 14 | } 15 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /packages/hyperliquid-composer/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: '../../.eslintrc.json', 3 | }; 4 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | cache 3 | 4 | # artifacts; ignore all files except the local contract artifacts. 5 | artifacts/* 6 | !artifacts/HyperLiquid*.sol/ 7 | !artifacts/IHyperLiquid*.sol/ 8 | !artifacts/IHYPEPrecompile.sol/ 9 | 10 | broadcast/ -------------------------------------------------------------------------------- /packages/hyperliquid-composer/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /packages/hyperliquid-composer/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /packages/hyperliquid-composer/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import('./dist/cli.js'); 4 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/contracts/interfaces/IHYPEPrecompile.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.0; 3 | 4 | interface IHYPEPrecompile { 5 | event Received(address indexed user, uint256 amount); 6 | } 7 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/src/commands/index.ts: -------------------------------------------------------------------------------- 1 | export * from './set-block' 2 | export * from './register-token' 3 | export * from './core-spot-deployment' 4 | export * from './spot-deploy' 5 | export * from './type-conversion' 6 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './operations' 2 | export * from './signer' 3 | export * from './types' 4 | export * from './io' 5 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/src/io/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parser' 2 | export * from './env' 3 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/src/operations/index.ts: -------------------------------------------------------------------------------- 1 | export * from './registerEvmContract' 2 | export * from './evmUserModify' 3 | export * from './spotMeta' 4 | export * from './spotDeploy' 5 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/src/signer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './signer' 2 | export * from './wallet' 3 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/src/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './base' 2 | export * from './constants' 3 | export * from './parser' 4 | export * from './operations' 5 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/test/mocks/HypePrecompileMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.20; 3 | 4 | import { IHYPEPrecompile } from "../../contracts/interfaces/IHYPEPrecompile.sol"; 5 | 6 | contract HypePrecompileMock is IHYPEPrecompile { 7 | fallback() external payable { 8 | emit Received(msg.sender, msg.value); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/test/mocks/NoFallback.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | contract NoFallback {} 6 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test"], 5 | "compilerOptions": { 6 | "types": ["node", "jest"], 7 | "paths": { 8 | "@/*": ["./src/*"] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/hyperliquid-composer/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig([ 4 | { 5 | entry: ['src/index.ts', 'src/cli.ts'], 6 | outDir: './dist', 7 | clean: true, 8 | dts: true, 9 | minify: true, 10 | sourcemap: false, 11 | splitting: false, 12 | treeshake: true, 13 | format: ['esm', 'cjs'], 14 | }, 15 | ]) 16 | -------------------------------------------------------------------------------- /packages/io-devtools/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/io-devtools/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/io-devtools/jest.setup.js: -------------------------------------------------------------------------------- 1 | import * as jestExtended from 'jest-extended'; 2 | 3 | // add all jest-extended matchers 4 | expect.extend(jestExtended); 5 | -------------------------------------------------------------------------------- /packages/io-devtools/src/async/index.ts: -------------------------------------------------------------------------------- 1 | export * from './time' 2 | -------------------------------------------------------------------------------- /packages/io-devtools/src/async/time.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Returns a promise that resolves after the specified number of milliseconds 3 | * 4 | * @param {number} timeout Nap time in milliseconds 5 | * @returns {Promise} 6 | */ 7 | export const sleep = (timeout: number): Promise => new Promise((resolve) => setTimeout(resolve, timeout)) 8 | -------------------------------------------------------------------------------- /packages/io-devtools/src/config/index.ts: -------------------------------------------------------------------------------- 1 | export * from './loading' 2 | -------------------------------------------------------------------------------- /packages/io-devtools/src/filesystem/index.ts: -------------------------------------------------------------------------------- 1 | export * from './filesystem' 2 | -------------------------------------------------------------------------------- /packages/io-devtools/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './async' 2 | export * from './config' 3 | export * from './filesystem' 4 | export * from './language' 5 | export * from './stdio' 6 | -------------------------------------------------------------------------------- /packages/io-devtools/src/language/index.ts: -------------------------------------------------------------------------------- 1 | export * from './plurals' 2 | -------------------------------------------------------------------------------- /packages/io-devtools/src/stdio/index.ts: -------------------------------------------------------------------------------- 1 | export * from './logger' 2 | export * from './printer' 3 | export * from './prompts' 4 | export * from './debugLogger' 5 | -------------------------------------------------------------------------------- /packages/io-devtools/src/swag/components/types.ts: -------------------------------------------------------------------------------- 1 | export type PrimitiveValue = string | number | boolean | bigint | symbol | null | undefined 2 | -------------------------------------------------------------------------------- /packages/io-devtools/src/swag/index.ts: -------------------------------------------------------------------------------- 1 | export * from './printer' 2 | export * from './renderer' 3 | -------------------------------------------------------------------------------- /packages/io-devtools/swag/README.md: -------------------------------------------------------------------------------- 1 | This `package.json` ensures that the `@layerzerolabs/io-devtools/swag` import is available even for older node versions and legacy module systems that don't respect the `exports` field in the root `package.json` 2 | -------------------------------------------------------------------------------- /packages/io-devtools/swag/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "../dist/swag/index.js", 3 | "module": "../dist/swag/index.mjs", 4 | "types": "../dist/swag/index.d.ts" 5 | } 6 | -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/empty.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LayerZero-Labs/devtools/886b5e53c2c82550644f71d2a0ad3a0b9aeb28a8/packages/io-devtools/test/filesystem/__data__/importDefault/empty.js -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/empty.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LayerZero-Labs/devtools/886b5e53c2c82550644f71d2a0ad3a0b9aeb28a8/packages/io-devtools/test/filesystem/__data__/importDefault/empty.json -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/nonsense.md: -------------------------------------------------------------------------------- 1 | # Hello I am not parseable 2 | -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/object.cjs.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'i am': 'an object', 3 | }; 4 | -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/object.cjs.ts: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'i am': 'an object', 3 | } 4 | -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/object.esm.js: -------------------------------------------------------------------------------- 1 | export default { 2 | 'i am': 'an object', 3 | }; 4 | -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/object.esm.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'i am': 'an object', 3 | } 4 | -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/object.json: -------------------------------------------------------------------------------- 1 | { 2 | "i am": "an object" 3 | } 4 | -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/with-default.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | default: { 3 | 'i am': 'default', 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/with-default.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": { 3 | "i am": "default" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/io-devtools/test/filesystem/__data__/importDefault/without-default.ts: -------------------------------------------------------------------------------- 1 | export const message = 'i do not have a default export' 2 | -------------------------------------------------------------------------------- /packages/io-devtools/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test"], 5 | "compilerOptions": { 6 | "jsx": "react", 7 | "types": ["node", "jest"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/metadata-tools/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/metadata-tools/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/metadata-tools/.gitignore: -------------------------------------------------------------------------------- 1 | cache 2 | -------------------------------------------------------------------------------- /packages/metadata-tools/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/metadata-tools/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/metadata-tools/src/constants.ts: -------------------------------------------------------------------------------- 1 | export const METADATA_URL = process.env.LZ_METADATA_URL || 'https://metadata.layerzero-api.com/v1/metadata' 2 | -------------------------------------------------------------------------------- /packages/metadata-tools/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config-metadata' 2 | export * from './types' 3 | export * from './constants' 4 | -------------------------------------------------------------------------------- /packages/metadata-tools/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | }, 12 | "files": [] 13 | } 14 | -------------------------------------------------------------------------------- /packages/oapp-alt-evm/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @layerzerolabs/oapp-alt-evm 2 | 3 | ## 0.0.3 4 | 5 | ### Patch Changes 6 | 7 | - 8b6c422: Bump monorepo dependencies to latest patch version 8 | 9 | ## 0.0.2 10 | 11 | ### Patch Changes 12 | 13 | - e256387: Updating packages 14 | -------------------------------------------------------------------------------- /packages/oapp-evm-upgradeable/.gitignore: -------------------------------------------------------------------------------- 1 | cache 2 | 3 | # artifacts; ignore all files except the local contract artifacts. 4 | artifacts/* 5 | !artifacts/oapp/* 6 | !artifacts/precrime/* 7 | -------------------------------------------------------------------------------- /packages/oapp-evm-upgradeable/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @layerzerolabs/oapp-evm-upgradeable 2 | 3 | ## 0.1.2 4 | 5 | ### Patch Changes 6 | 7 | - 8b6c422: Bump monorepo dependencies to latest patch version 8 | 9 | ## 0.1.1 10 | 11 | ### Patch Changes 12 | 13 | - e256387: Updating packages 14 | 15 | ## 0.1.0 16 | 17 | ### Minor Changes 18 | 19 | - aa37daf: Update layerzerolabs packages to 3.0.12 20 | -------------------------------------------------------------------------------- /packages/oapp-evm/contracts/oapp/interfaces/IOAppMapper.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | interface IOAppMapper { 6 | function lzMap(bytes calldata _request, bytes calldata _response) external view returns (bytes memory); 7 | } 8 | -------------------------------------------------------------------------------- /packages/oapp-evm/contracts/oapp/interfaces/IOAppReducer.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.20; 4 | 5 | interface IOAppReducer { 6 | function lzReduce(bytes calldata _cmd, bytes[] calldata _responses) external view returns (bytes memory); 7 | } 8 | -------------------------------------------------------------------------------- /packages/oapp-evm/test/mocks/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.20; 3 | 4 | import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Mock is ERC20 { 7 | constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {} 8 | 9 | function mint(address _to, uint256 _amount) public { 10 | _mint(_to, _amount); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/oft-alt-evm/.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | cache 3 | 4 | # artifacts; ignore all files except the local contract artifacts. 5 | artifacts/* 6 | !artifacts/Fee.sol/ 7 | !artifacts/IFee.sol/ 8 | !artifacts/IOFT.sol/ 9 | !artifacts/OFTComposeMsgCodec.sol/ 10 | !artifacts/OFTMsgCodec.sol/ 11 | !artifacts/OFT.sol/ 12 | !artifacts/OFTAlt.sol/ 13 | !artifacts/OFTAltAdapter.sol/ 14 | !artifacts/OFTAdapter.sol/ 15 | !artifacts/OFTCore.sol/ -------------------------------------------------------------------------------- /packages/oft-alt-evm/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @layerzerolabs/oft-alt-evm 2 | 3 | ## 0.0.3 4 | 5 | ### Patch Changes 6 | 7 | - 8b6c422: Bump monorepo dependencies to latest patch version 8 | 9 | ## 0.0.2 10 | 11 | ### Patch Changes 12 | 13 | - e256387: Updating packages 14 | -------------------------------------------------------------------------------- /packages/oft-evm-upgradeable/.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | cache 3 | 4 | # artifacts; ignore all files except the local contract artifacts. 5 | artifacts/* 6 | !artifacts/oft/* -------------------------------------------------------------------------------- /packages/oft-evm/.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | cache 3 | 4 | # artifacts; ignore all files except the local contract artifacts. 5 | artifacts/* 6 | !artifacts/Fee.sol/ 7 | !artifacts/IFee.sol/ 8 | !artifacts/IOFT.sol/ 9 | !artifacts/OFTComposeMsgCodec.sol/ 10 | !artifacts/OFTMsgCodec.sol/ 11 | !artifacts/OFT.sol/ 12 | !artifacts/OFTAdapter.sol/ 13 | !artifacts/OFTCore.sol/ -------------------------------------------------------------------------------- /packages/oft-evm/test/mocks/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.20; 3 | 4 | import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Mock is ERC20 { 7 | constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {} 8 | 9 | function mint(address _to, uint256 _amount) public { 10 | _mint(_to, _amount); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/oft-move/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules 5 | out 6 | *.log 7 | *.sol 8 | *.yaml 9 | *.lock 10 | package-lock.json -------------------------------------------------------------------------------- /packages/oft-move/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | build/ 8 | 9 | # Hardhat files 10 | cache 11 | artifacts 12 | 13 | # LayerZero specific files 14 | .layerzero 15 | 16 | # pnpm 17 | pnpm-error.log 18 | 19 | # Editor and OS files 20 | .DS_Store 21 | .idea 22 | 23 | .aptos -------------------------------------------------------------------------------- /packages/oft-move/.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.0 -------------------------------------------------------------------------------- /packages/oft-move/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ 5 | out/ 6 | *.log 7 | *ignore 8 | *.yaml 9 | *.lock 10 | package-lock.json 11 | package.json -------------------------------------------------------------------------------- /packages/oft-move/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('@layerzerolabs/prettier-config-next'), 3 | }; 4 | -------------------------------------------------------------------------------- /packages/oft-move/cli/index.ts: -------------------------------------------------------------------------------- 1 | export * from './init' 2 | // OFT Move Operations 3 | export * from './operations' 4 | -------------------------------------------------------------------------------- /packages/oft-move/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['tasks/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/oft-move/types/OFTAdapterFAInitParams.ts: -------------------------------------------------------------------------------- 1 | export type OFTAdapterFaInitParams = { 2 | move_vm_fa_address: string 3 | sharedDecimals?: number 4 | } 5 | -------------------------------------------------------------------------------- /packages/oft-move/types/OFTFAInitParams.ts: -------------------------------------------------------------------------------- 1 | export type OFTFaInitParams = { 2 | token_name: string 3 | token_symbol: string 4 | icon_uri: string 5 | project_uri: string 6 | sharedDecimals?: number 7 | localDecimals: number 8 | } 9 | -------------------------------------------------------------------------------- /packages/oft-move/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './OFTFAInitParams' 2 | export * from './OFTAdapterFAInitParams' 3 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools-evm/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/omnicounter-devtools-evm/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools-evm/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools-evm/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './omnicounter' 2 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools-evm/src/omnicounter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './sdk' 3 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools-evm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test"], 5 | "compilerOptions": { 6 | "types": ["node", "jest"], 7 | "paths": { 8 | "@/*": ["./src/*"] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools-evm/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/omnicounter-devtools/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './omnicounter/types' 2 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test"], 5 | "compilerOptions": { 6 | "types": ["node", "jest"], 7 | "paths": { 8 | "@/*": ["./src/*"] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/omnicounter-devtools/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/onft-evm/.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | cache 3 | 4 | # artifacts; ignore all files except the local contract artifacts. 5 | artifacts/* 6 | !artifacts/IONFT721.sol/ 7 | !artifacts/ONFT721.sol/ 8 | !aftifacts/ONFT721Adapter.sol/ 9 | !artifacts/ONFT721Base.sol/ 10 | !artifacts/ONFT721Core.sol/ 11 | !artifacts/ONFT721MsgCodec.sol/ 12 | !artifacts/ONFTComposeMsgCodec.sol/ 13 | -------------------------------------------------------------------------------- /packages/onft-evm/solhint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@layerzerolabs/solhint-config'); 2 | -------------------------------------------------------------------------------- /packages/onft-evm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules"], 3 | "include": ["deploy", "tasks", "test", "hardhat.config.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/.swcrc: -------------------------------------------------------------------------------- 1 | { 2 | "jsc": { 3 | "parser": { 4 | "syntax": "typescript", 5 | "decorators": true 6 | }, 7 | "transform": { 8 | "legacyDecorator": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/src/dvn/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './schema' 3 | export * from './sdk' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/src/endpointv2/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './sdk' 3 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/src/endpointv2/schema.ts: -------------------------------------------------------------------------------- 1 | import { AddressSchema, ignoreZero } from '@layerzerolabs/devtools' 2 | import { z } from 'zod' 3 | 4 | /** 5 | * Schema for parsing receive library information coming from the contract 6 | */ 7 | export const ReceiveLibrarySchema = z.tuple([AddressSchema.transform(ignoreZero), z.boolean()]) 8 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/src/executor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './schema' 3 | export * from './sdk' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dvn' 2 | export * from './endpointv2' 3 | export * from './executor' 4 | export * from './priceFeed' 5 | export * from './uln302' 6 | export * from './ulnRead' 7 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/src/priceFeed/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './schema' 3 | export * from './sdk' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/src/uln302/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './sdk' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/src/ulnRead/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './sdk' 3 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "experimentalDecorators": true, 7 | "types": ["node", "jest"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/protocol-devtools-evm/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig([ 4 | { 5 | entry: ['src/index.ts'], 6 | outDir: './dist', 7 | clean: true, 8 | dts: true, 9 | sourcemap: true, 10 | splitting: false, 11 | treeshake: true, 12 | format: ['esm', 'cjs'], 13 | }, 14 | ]) 15 | -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/.swcrc: -------------------------------------------------------------------------------- 1 | { 2 | "jsc": { 3 | "parser": { 4 | "syntax": "typescript", 5 | "decorators": true 6 | }, 7 | "transform": { 8 | "legacyDecorator": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/bin/test: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ -z "${LZ_DEVTOOLS_ENABLE_SOLANA_TESTS}" ]; then 4 | echo 'Solana tests can be enabled by setting LZ_DEVTOOLS_ENABLE_SOLANA_TESTS environment variable to a non-empty value' 5 | else 6 | jest --ci $@ 7 | fi -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/jest.setup.js: -------------------------------------------------------------------------------- 1 | import * as jestExtended from 'jest-extended'; 2 | 3 | // add all jest-extended matchers 4 | expect.extend(jestExtended); 5 | -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/src/endpointv2/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk' 2 | -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './endpointv2' 2 | export * from './uln302' 3 | -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/src/uln302/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk' 2 | -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "target": "es2020", 7 | "experimentalDecorators": true, 8 | "types": ["node", "jest"], 9 | "paths": { 10 | "@/*": ["./src/*"] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/protocol-devtools-solana/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig([ 4 | { 5 | entry: ['src/index.ts'], 6 | outDir: './dist', 7 | clean: true, 8 | dts: true, 9 | sourcemap: true, 10 | splitting: false, 11 | treeshake: true, 12 | format: ['esm', 'cjs'], 13 | }, 14 | ]) 15 | -------------------------------------------------------------------------------- /packages/protocol-devtools/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/protocol-devtools/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/dvn/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './schema' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/dvn/schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod' 2 | import type { DVNDstConfig } from './types' 3 | import { UIntBigIntSchema } from '@layerzerolabs/devtools' 4 | 5 | export const DVNDstConfigSchema = z.object({ 6 | gas: UIntBigIntSchema, 7 | multiplierBps: UIntBigIntSchema, 8 | floorMarginUSD: UIntBigIntSchema, 9 | }) satisfies z.ZodSchema 10 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/endpointv2/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './schema' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/endpointv2/schema.ts: -------------------------------------------------------------------------------- 1 | import { AddressSchema, UIntBigIntSchema } from '@layerzerolabs/devtools' 2 | import { z } from 'zod' 3 | import { Timeout } from './types' 4 | 5 | export const TimeoutSchema = z.object({ 6 | lib: AddressSchema, 7 | expiry: UIntBigIntSchema, 8 | }) satisfies z.ZodSchema 9 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/executor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './schema' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dvn' 2 | export * from './endpointv2' 3 | export * from './executor' 4 | export * from './priceFeed' 5 | export * from './uln302' 6 | export * from './ulnRead' 7 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/priceFeed/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './schema' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/priceFeed/schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod' 2 | import type { PriceData } from './types' 3 | import { UIntBigIntSchema } from '@layerzerolabs/devtools' 4 | 5 | export const PriceDataSchema = z.object({ 6 | priceRatio: UIntBigIntSchema, 7 | gasPriceInUnit: UIntBigIntSchema, 8 | gasPerByte: UIntBigIntSchema, 9 | }) satisfies z.ZodSchema 10 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/uln302/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './schema' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools/src/ulnRead/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './schema' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/protocol-devtools/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test"], 5 | "compilerOptions": { 6 | "types": ["node", "jest"], 7 | "paths": { 8 | "@/*": ["./src/*"] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/protocol-devtools/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/test-devtools-evm-foundry/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules 4 | out 5 | cache -------------------------------------------------------------------------------- /packages/test-devtools-evm-foundry/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/test-devtools-evm-foundry/.gitignore: -------------------------------------------------------------------------------- 1 | cache 2 | # Ignore everything in the artifacts folder 3 | artifacts/* 4 | 5 | # Do not ignore the directory structure up to the specific file 6 | !artifacts/ 7 | !artifacts/TestHelperOz5.sol/ 8 | !artifacts/TestHelperOz5.sol/TestHelperOz5.json -------------------------------------------------------------------------------- /packages/test-devtools-evm-hardhat/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments 4 | dist 5 | node_modules -------------------------------------------------------------------------------- /packages/test-devtools-evm-hardhat/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/test-devtools-evm-hardhat/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments -------------------------------------------------------------------------------- /packages/test-devtools-evm-hardhat/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | deployments/ 4 | dist/ 5 | node_modules/ -------------------------------------------------------------------------------- /packages/test-devtools-evm-hardhat/hardhat.config.ts: -------------------------------------------------------------------------------- 1 | import type { HardhatUserConfig } from 'hardhat/types' 2 | 3 | const config: HardhatUserConfig = { 4 | solidity: { 5 | version: '0.8.22', 6 | }, 7 | } 8 | 9 | export default config 10 | -------------------------------------------------------------------------------- /packages/test-devtools-evm-hardhat/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './runtime' 2 | -------------------------------------------------------------------------------- /packages/test-devtools-evm-hardhat/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/test-devtools-evm-hardhat/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/test-devtools-solana/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/test-devtools-solana/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/test-devtools-solana/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments -------------------------------------------------------------------------------- /packages/test-devtools-solana/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/test-devtools-solana/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './arbitraries' 2 | -------------------------------------------------------------------------------- /packages/test-devtools-solana/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/test-devtools-solana/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/test-devtools-ton/.eslintignore: -------------------------------------------------------------------------------- 1 | dist -------------------------------------------------------------------------------- /packages/test-devtools-ton/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/test-devtools-ton/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ -------------------------------------------------------------------------------- /packages/test-devtools-ton/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @layerzerolabs/test-devtools-ton 2 | 3 | ## 0.0.2 4 | 5 | ### Patch Changes 6 | 7 | - e256387: Updating packages 8 | -------------------------------------------------------------------------------- /packages/test-devtools-ton/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | testTimeout: 15_000, 13 | }; 14 | -------------------------------------------------------------------------------- /packages/test-devtools-ton/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/test-devtools-ton/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/test-devtools/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/test-devtools/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './arbitraries' 2 | export * from './constants' 3 | -------------------------------------------------------------------------------- /packages/test-devtools/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src"], 5 | "compilerOptions": { 6 | "types": ["node"], 7 | "paths": { 8 | "@/*": ["./src/*"] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/test-devtools/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/toolbox-foundry/.eslintignore: -------------------------------------------------------------------------------- 1 | lib 2 | node_modules 3 | src/ds-test 4 | src/forge-std -------------------------------------------------------------------------------- /packages/toolbox-foundry/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/toolbox-foundry/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/toolbox-foundry/.prettierignore: -------------------------------------------------------------------------------- 1 | lib/ 2 | node_modules/ 3 | src/ds-test/ 4 | src/forge-std/ -------------------------------------------------------------------------------- /packages/toolbox-foundry/turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["//"], 3 | "pipeline": { 4 | "build": { 5 | "outputs": ["lib/**"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/toolbox-hardhat/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/toolbox-hardhat/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/toolbox-hardhat/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments -------------------------------------------------------------------------------- /packages/toolbox-hardhat/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/toolbox-hardhat/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/toolbox-hardhat/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "deploy", "*.config.ts"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/toolbox-hardhat/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/constants/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tasks' 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants' 2 | export * from './oapp' 3 | export * from './oapp-read' 4 | export * from './ownable' 5 | export * from './tasks/read/factory' 6 | export * from './tasks/types' 7 | export * from './utils/taskHelpers' 8 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/oapp-read/index.ts: -------------------------------------------------------------------------------- 1 | export * from './schema' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/oapp-read/types.ts: -------------------------------------------------------------------------------- 1 | import type { OmniGraphHardhat } from '@layerzerolabs/devtools-evm-hardhat' 2 | import type { OAppEdgeConfig, OAppReadNodeConfig } from '@layerzerolabs/ua-devtools' 3 | 4 | export type OAppReadOmniGraphHardhat = OmniGraphHardhat 5 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/oapp-read/typescript/constants.ts: -------------------------------------------------------------------------------- 1 | export const READ_LIBRARY: string = 'readLibrary' 2 | export const READ_CHANNEL_CONFIGS: string = 'readChannelConfigs' 3 | export const CHANNEL_ID: string = 'channelId' 4 | export const ACTIVE: string = 'active' 5 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/oapp/index.ts: -------------------------------------------------------------------------------- 1 | export * from './schema' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/oapp/types.ts: -------------------------------------------------------------------------------- 1 | import type { OmniGraphHardhat } from '@layerzerolabs/devtools-evm-hardhat' 2 | import type { OAppEdgeConfig, OAppNodeConfig } from '@layerzerolabs/ua-devtools' 3 | 4 | export type OAppOmniGraphHardhat = OmniGraphHardhat 5 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/ownable/index.ts: -------------------------------------------------------------------------------- 1 | export * from './schema' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/ownable/types.ts: -------------------------------------------------------------------------------- 1 | import type { OmniGraphHardhat } from '@layerzerolabs/devtools-evm-hardhat' 2 | import type { OwnableNodeConfig } from '@layerzerolabs/ua-devtools' 3 | 4 | export type OwnableOmniGraphHardhat = OmniGraphHardhat 5 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/tasks/index.ts: -------------------------------------------------------------------------------- 1 | import '@layerzerolabs/devtools-evm-hardhat/tasks' 2 | 3 | import './errors/decode' 4 | import './errors/list' 5 | import './oapp' 6 | import './ownable' 7 | import './read' 8 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/tasks/oapp/index.ts: -------------------------------------------------------------------------------- 1 | import './wire' 2 | import './peers.get' 3 | import './config.get.default' 4 | import './config.get.executor' 5 | import './config.get' 6 | import './read' 7 | import './enforced.opts.get' 8 | import './config.init' 9 | import './subtask.config.load' 10 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/tasks/oapp/read/index.ts: -------------------------------------------------------------------------------- 1 | import './read.config.get' 2 | import './read.config.get.channel' 3 | import './read.config.init' 4 | import './read.wire' 5 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/tasks/oapp/types.ts: -------------------------------------------------------------------------------- 1 | import type { OmniGraphHardhat } from '@layerzerolabs/devtools-evm-hardhat' 2 | import type { ZodType, ZodTypeDef } from 'zod/lib/types' 3 | 4 | export * from './wire/types' 5 | 6 | export interface SubtaskLoadConfigTaskArgs { 7 | configPath: string 8 | schema: ZodType 9 | task: string 10 | } 11 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/tasks/oapp/wire/types.ts: -------------------------------------------------------------------------------- 1 | import { Configurator, IOmniSDK, OmniGraph, OmniSDKFactory } from '@layerzerolabs/devtools' 2 | 3 | export interface SubtaskConfigureTaskArgs { 4 | graph: TOmniGraph 5 | configurator?: Configurator 6 | sdkFactory?: OmniSDKFactory 7 | } 8 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/tasks/ownable/index.ts: -------------------------------------------------------------------------------- 1 | import './transfer.ownership' 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/tasks/read/index.ts: -------------------------------------------------------------------------------- 1 | import './resolveCommand' 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/src/tasks/types.ts: -------------------------------------------------------------------------------- 1 | export * from './oapp/types' 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/tasks/README.md: -------------------------------------------------------------------------------- 1 | This `package.json` ensures that the `@layerzerolabs/ua-devtools-evm-hardhat/tasks` import is available even for older node versions and legacy module systems that don't respect the `exports` field in the root `package.json` 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/tasks/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "../dist/tasks/index.js", 3 | "module": "../dist/tasks/index.mjs", 4 | "types": "../dist/tasks/index.d.ts" 5 | } 6 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": ["src"], 4 | "exclude": ["dist", "node_modules"], 5 | "compilerOptions": { 6 | "types": ["node", "jest"], 7 | "paths": { 8 | "@/*": ["./src/*"] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm-hardhat/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig([ 4 | { 5 | entry: ['src/index.ts', 'src/tasks/index.ts'], 6 | outDir: './dist', 7 | clean: true, 8 | dts: true, 9 | sourcemap: true, 10 | splitting: false, 11 | treeshake: true, 12 | format: ['esm', 'cjs'], 13 | }, 14 | ]) 15 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/ua-devtools-evm/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/.swcrc: -------------------------------------------------------------------------------- 1 | { 2 | "jsc": { 3 | "parser": { 4 | "syntax": "typescript", 5 | "decorators": true 6 | }, 7 | "transform": { 8 | "legacyDecorator": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/ua-devtools-evm/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/erc20/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk' 2 | export * from './types' 3 | export * from './factory' 4 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './erc20' 2 | export * from './lzapp' 3 | export * from './oapp' 4 | export * from './oapp-read' 5 | export * from './ownable' 6 | export * from './read' 7 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/lzapp/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './sdk' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/oapp-read/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './sdk' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/oapp/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './sdk' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/ownable/index.ts: -------------------------------------------------------------------------------- 1 | export * from './factory' 2 | export * from './mixin' 3 | export * from './sdk' 4 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/read/commandResolver/compute/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk' 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/read/commandResolver/index.ts: -------------------------------------------------------------------------------- 1 | export * from './base' 2 | export * from './compute' 3 | export * from './view' 4 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/read/commandResolver/view/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk' 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/read/errors.ts: -------------------------------------------------------------------------------- 1 | export class ContractNotFoundError extends Error { 2 | constructor() { 3 | super('Contract not found at address') 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/read/index.ts: -------------------------------------------------------------------------------- 1 | export * from './commandResolver' 2 | export * from './errors' 3 | export * from './schema' 4 | export * from './timeMarkerResolver' 5 | export * from './timeMarkerValidator' 6 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/read/schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod' 2 | 3 | export const BytesSchema = z.string().startsWith('0x') 4 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/read/timeMarkerResolver/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk' 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/src/read/timeMarkerValidator/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk' 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test"], 5 | "compilerOptions": { 6 | "experimentalDecorators": true, 7 | "types": ["node", "jest"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/ua-devtools-evm/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/ua-devtools-solana/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /packages/ua-devtools-solana/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/ua-devtools-solana/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /packages/ua-devtools-solana/.swcrc: -------------------------------------------------------------------------------- 1 | { 2 | "jsc": { 3 | "parser": { 4 | "syntax": "typescript", 5 | "decorators": true 6 | }, 7 | "transform": { 8 | "legacyDecorator": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /packages/ua-devtools-solana/bin/test: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ -z "${LZ_DEVTOOLS_ENABLE_SOLANA_TESTS}" ]; then 4 | echo 'Solana tests can be enabled by setting LZ_DEVTOOLS_ENABLE_SOLANA_TESTS environment variable to a non-empty value' 5 | else 6 | jest --ci --pass-with-no-tests $@ 7 | fi -------------------------------------------------------------------------------- /packages/ua-devtools-solana/jest.setup.js: -------------------------------------------------------------------------------- 1 | import * as jestExtended from 'jest-extended'; 2 | 3 | // add all jest-extended matchers 4 | expect.extend(jestExtended); 5 | -------------------------------------------------------------------------------- /packages/ua-devtools-solana/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './oft' 2 | -------------------------------------------------------------------------------- /packages/ua-devtools-solana/src/oft/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './factory' 3 | export * from './sdk' 4 | -------------------------------------------------------------------------------- /packages/ua-devtools-solana/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "target": "es2020", 7 | "experimentalDecorators": true, 8 | "types": ["node", "jest"], 9 | "paths": { 10 | "@/*": ["./src/*"] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/ua-devtools-solana/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig([ 4 | { 5 | entry: ['src/index.ts'], 6 | outDir: './dist', 7 | clean: true, 8 | dts: true, 9 | sourcemap: true, 10 | splitting: false, 11 | treeshake: true, 12 | format: ['esm', 'cjs'], 13 | }, 14 | ]) 15 | -------------------------------------------------------------------------------- /packages/ua-devtools/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/ua-devtools/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/ua-devtools/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lzapp' 2 | export * from './oapp' 3 | export * from './ownable' 4 | export * from './oapp-read' 5 | export * from './read' 6 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/lzapp/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/oapp-read/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './schema' 3 | export * from './types' 4 | export * from './check' 5 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/oapp/index.ts: -------------------------------------------------------------------------------- 1 | export * from './check' 2 | export * from './config' 3 | export * from './schema' 4 | export * from './types' 5 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/ownable/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './schema' 3 | export * from './types' 4 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/ownable/schema.ts: -------------------------------------------------------------------------------- 1 | import { AddressSchema } from '@layerzerolabs/devtools' 2 | import { z } from 'zod' 3 | 4 | export const OwnableNodeConfigSchema = z 5 | .object({ 6 | owner: AddressSchema.nullish(), 7 | }) 8 | // We'll pass all unknown properties through without validating them 9 | .passthrough() 10 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/read/commandResolver/index.ts: -------------------------------------------------------------------------------- 1 | export * from './types' 2 | export * from './sdk' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/read/errors.ts: -------------------------------------------------------------------------------- 1 | export class UnresolvableCommandError extends Error { 2 | constructor() { 3 | super(`Unresolvable command`) 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/read/index.ts: -------------------------------------------------------------------------------- 1 | export * from './commandResolver' 2 | export * from './errors' 3 | export * from './timeMarker-utils' 4 | export * from './timeMarkerResolver' 5 | export * from './timeMarkerValidator' 6 | export * from './types' 7 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/read/timeMarkerResolver/index.ts: -------------------------------------------------------------------------------- 1 | export * from './types' 2 | export * from './sdk' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools/src/read/timeMarkerValidator/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk' 2 | export * from './types' 3 | -------------------------------------------------------------------------------- /packages/ua-devtools/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test"], 5 | "compilerOptions": { 6 | "types": ["node", "jest"], 7 | "paths": { 8 | "@/*": ["./src/*"] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/ua-devtools/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | outDir: './dist', 6 | clean: true, 7 | dts: true, 8 | sourcemap: true, 9 | splitting: false, 10 | treeshake: true, 11 | format: ['esm', 'cjs'], 12 | }) 13 | -------------------------------------------------------------------------------- /packages/verify-contract/.eslintignore: -------------------------------------------------------------------------------- 1 | .turbo 2 | dist 3 | node_modules -------------------------------------------------------------------------------- /packages/verify-contract/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/verify-contract/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import('./dist/cli.js'); 4 | -------------------------------------------------------------------------------- /packages/verify-contract/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/verify-contract/src/common/types.ts: -------------------------------------------------------------------------------- 1 | export type NetworkName = string 2 | 3 | export interface NetworkConfig { 4 | apiUrl: string 5 | apiKey?: string 6 | browserUrl?: string 7 | } 8 | -------------------------------------------------------------------------------- /packages/verify-contract/src/index.ts: -------------------------------------------------------------------------------- 1 | export { 2 | verifyTarget as verifyHardhatDeployTarget, 3 | verifyNonTarget as verifyHardhatDeployNonTarget, 4 | } from './hardhat-deploy/verify' 5 | -------------------------------------------------------------------------------- /packages/verify-contract/test/__data__/deploymentz/fuji/.chainId: -------------------------------------------------------------------------------- 1 | 43113 -------------------------------------------------------------------------------- /packages/verify-contract/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "outDir": "dist", 5 | "declaration": false, 6 | "jsx": "react", 7 | "lib": ["dom", "dom.Iterable", "es2022"], 8 | "resolveJsonModule": true, 9 | "types": ["jest", "node"], 10 | "paths": { 11 | "@/*": ["./src/*"] 12 | } 13 | }, 14 | "include": ["src", "test"] 15 | } 16 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - "examples/*" 3 | - "packages/*" 4 | - "tests/*" 5 | -------------------------------------------------------------------------------- /tests-user/ssh/README.md: -------------------------------------------------------------------------------- 1 | To avoid manually needing to verify known hosts when connecting to GitHub in our user tests 2 | (see `docker-compose.registry.yaml`) we add public key fingerprints to our known hosts. 3 | 4 | These should only be used in the user tests. 5 | 6 | See [GitHub Docs](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints) for more information. -------------------------------------------------------------------------------- /tests-user/tests/build-lz-options.bats: -------------------------------------------------------------------------------- 1 | # This will be run at the start of this testing suite, 2 | # similar to beforeAll() in jest 3 | setup() { 4 | # Load bats-assert and bats-support 5 | load "../lib/bats-support/load.bash" 6 | load "../lib/bats-assert/load.bash" 7 | } 8 | 9 | @test "should output version" { 10 | npx --yes build-lz-options --version 11 | } -------------------------------------------------------------------------------- /tests-user/tests/decode-lz-options.bats: -------------------------------------------------------------------------------- 1 | # This will be run at the start of this testing suite, 2 | # similar to beforeAll() in jest 3 | setup() { 4 | # Load bats-assert and bats-support 5 | load "../lib/bats-support/load.bash" 6 | load "../lib/bats-assert/load.bash" 7 | } 8 | 9 | @test "should output version" { 10 | npx --yes decode-lz-options --version 11 | } -------------------------------------------------------------------------------- /tests/devtools-cli-test/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments 4 | dist 5 | node_modules -------------------------------------------------------------------------------- /tests/devtools-cli-test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /tests/devtools-cli-test/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments 4 | .layerzero 5 | -------------------------------------------------------------------------------- /tests/devtools-cli-test/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | deployments/ 4 | dist/ 5 | node_modules/ -------------------------------------------------------------------------------- /tests/devtools-cli-test/deploy/001_bootstrap.ts: -------------------------------------------------------------------------------- 1 | import { type DeployFunction } from 'hardhat-deploy/types' 2 | import { createDeployEndpointV2 } from '@layerzerolabs/test-setup-devtools-evm-hardhat' 3 | 4 | const deploy: DeployFunction = createDeployEndpointV2() 5 | 6 | deploy.tags = ['Bootstrap', 'EndpointV2'] 7 | 8 | export default deploy 9 | -------------------------------------------------------------------------------- /tests/devtools-cli-test/jest.setup.js: -------------------------------------------------------------------------------- 1 | import { rmSync } from 'fs'; 2 | import * as jestExtended from 'jest-extended'; 3 | 4 | // add all jest-extended matchers 5 | expect.extend(jestExtended); 6 | 7 | // clear all deployments before & after every test 8 | const clearDeployments = () => rmSync('./deployments', { force: true, recursive: true }); 9 | 10 | beforeEach(clearDeployments); 11 | afterEach(clearDeployments); 12 | -------------------------------------------------------------------------------- /tests/devtools-cli-test/test/__utils__/cli.ts: -------------------------------------------------------------------------------- 1 | import { spawnSync } from 'child_process' 2 | 3 | export const runCli = (args: string[] = []) => 4 | spawnSync(`npx`, ['@layerzerolabs/devtools-cli', ...args], { 5 | encoding: 'utf8', 6 | stdio: 'pipe', 7 | }) 8 | -------------------------------------------------------------------------------- /tests/devtools-cli-test/test/commands/oapp/__data__/configs/invalid.config.empty.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LayerZero-Labs/devtools/886b5e53c2c82550644f71d2a0ad3a0b9aeb28a8/tests/devtools-cli-test/test/commands/oapp/__data__/configs/invalid.config.empty.js -------------------------------------------------------------------------------- /tests/devtools-cli-test/test/commands/oapp/__data__/configs/invalid.config.empty.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LayerZero-Labs/devtools/886b5e53c2c82550644f71d2a0ad3a0b9aeb28a8/tests/devtools-cli-test/test/commands/oapp/__data__/configs/invalid.config.empty.json -------------------------------------------------------------------------------- /tests/devtools-cli-test/test/commands/oapp/__data__/configs/valid.config.empty.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | contracts: [], 3 | connections: [], 4 | }; 5 | -------------------------------------------------------------------------------- /tests/devtools-cli-test/test/commands/oapp/__data__/configs/valid.config.empty.ts: -------------------------------------------------------------------------------- 1 | import { OAppOmniGraphHardhat } from '@layerzerolabs/ua-devtools-evm-hardhat' 2 | 3 | const config: OAppOmniGraphHardhat = { 4 | contracts: [], 5 | connections: [], 6 | } 7 | 8 | export default config 9 | -------------------------------------------------------------------------------- /tests/devtools-cli-test/test/commands/oapp/__data__/setups/invalid.setup.001.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | createSdk: [], 3 | }; 4 | -------------------------------------------------------------------------------- /tests/devtools-cli-test/test/commands/oapp/__data__/setups/invalid.setup.empty.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LayerZero-Labs/devtools/886b5e53c2c82550644f71d2a0ad3a0b9aeb28a8/tests/devtools-cli-test/test/commands/oapp/__data__/setups/invalid.setup.empty.js -------------------------------------------------------------------------------- /tests/devtools-cli-test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "deploy", "*.config.ts", "*.setup.ts"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/devtools-evm-hardhat-test/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments 4 | dist 5 | node_modules -------------------------------------------------------------------------------- /tests/devtools-evm-hardhat-test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /tests/devtools-evm-hardhat-test/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments -------------------------------------------------------------------------------- /tests/devtools-evm-hardhat-test/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | deployments/ 4 | dist/ 5 | node_modules/ -------------------------------------------------------------------------------- /tests/devtools-evm-hardhat-test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "deploy", "*.config.ts"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/devtools-evm-test/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | dist 4 | node_modules -------------------------------------------------------------------------------- /tests/devtools-evm-test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /tests/devtools-evm-test/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments -------------------------------------------------------------------------------- /tests/devtools-evm-test/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | dist/ 4 | node_modules/ -------------------------------------------------------------------------------- /tests/devtools-evm-test/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | LayerZero 4 | 5 |

6 | 7 |

@layerzerolabs/devtools-evm-test

8 | 9 | ## Development 10 | 11 | This package provides integration tests for `@layerzerolabs/devtools-evm` using `hardhat`. 12 | -------------------------------------------------------------------------------- /tests/devtools-evm-test/contracts/ParallelEmitter.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.22; 3 | 4 | contract ParallelEmitter { 5 | event NoArgEvent(); 6 | 7 | function emitNoArgEvent() external virtual { 8 | emit NoArgEvent(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tests/devtools-evm-test/hardhat.config.ts: -------------------------------------------------------------------------------- 1 | import '@nomiclabs/hardhat-ethers' 2 | import { HardhatUserConfig } from 'hardhat/types' 3 | 4 | const config: HardhatUserConfig = { 5 | solidity: { 6 | version: '0.8.22', 7 | }, 8 | } 9 | 10 | export default config 11 | -------------------------------------------------------------------------------- /tests/devtools-evm-test/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | testTimeout: 150_000, 7 | moduleNameMapper: { 8 | '^@/(.*)$': '/src/$1', 9 | }, 10 | transform: { 11 | '^.+\\.(t|j)sx?$': '@swc/jest', 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /tests/devtools-evm-test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "*.config.ts"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/export-deployments-test/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments 4 | dist 5 | node_modules -------------------------------------------------------------------------------- /tests/export-deployments-test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /tests/export-deployments-test/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments 4 | generated -------------------------------------------------------------------------------- /tests/export-deployments-test/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | deployments/ 4 | dist/ 5 | node_modules/ -------------------------------------------------------------------------------- /tests/export-deployments-test/contracts/Test.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity 0.8.22; 3 | 4 | contract Test { 5 | function contractMethod() public pure returns (uint256 something) { 6 | something = 100; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/export-deployments-test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "deploy", "*.config.ts"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/test-evm-node/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /tests/test-evm-node/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["hardhat.config.ts"], 3 | "compilerOptions": { 4 | "module": "commonjs", 5 | "strict": true, 6 | "esModuleInterop": true, 7 | "types": ["node"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | LayerZero 4 | 5 |

6 | 7 |

@layerzerolabs/test-setup-devtools-evm-hardhat

8 | 9 | ## Development 10 | 11 | This package provides basic E2E testing setup for hardhat projects. 12 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/hardhat.config.ts: -------------------------------------------------------------------------------- 1 | import 'hardhat-deploy' 2 | import type { HardhatUserConfig } from 'hardhat/types' 3 | 4 | /** 5 | * This is a dummy hardhat config that enables us to test 6 | * hardhat functionality without mocking too much 7 | */ 8 | const config: HardhatUserConfig = { 9 | solidity: { 10 | version: '0.8.22', 11 | }, 12 | } 13 | 14 | export default config 15 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | cache: false, 4 | reporters: [['github-actions', { silent: false }], 'default'], 5 | testEnvironment: 'node', 6 | moduleNameMapper: { 7 | '^@/(.*)$': '/src/$1', 8 | }, 9 | transform: { 10 | '^.+\\.(t|j)sx?$': '@swc/jest', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/src/endpointV2/index.ts: -------------------------------------------------------------------------------- 1 | export * from './deploy' 2 | export * from './setup' 3 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/src/hardhat/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config' 2 | export * from './deploy' 3 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './endpointV2' 2 | export * from './hardhat' 3 | export * from './oapp' 4 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/src/oapp-read/index.ts: -------------------------------------------------------------------------------- 1 | export * from './setup' 2 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/src/oapp/index.ts: -------------------------------------------------------------------------------- 1 | export * from './setup' 2 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "*.config.ts"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"], 8 | "paths": { 9 | "@/*": ["./src/*"] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tests/test-setup-devtools-evm-hardhat/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig([ 4 | { 5 | entry: ['src/index.ts'], 6 | outDir: './dist', 7 | clean: true, 8 | dts: true, 9 | sourcemap: true, 10 | splitting: false, 11 | treeshake: true, 12 | format: ['esm', 'cjs'], 13 | }, 14 | ]) 15 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments 4 | dist 5 | node_modules -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments 4 | .layerzero 5 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | deployments/ 4 | dist/ 5 | node_modules/ -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/deploy/001_bootstrap.ts: -------------------------------------------------------------------------------- 1 | import { type DeployFunction } from 'hardhat-deploy/types' 2 | import { createDeployEndpointV2 } from '@layerzerolabs/test-setup-devtools-evm-hardhat' 3 | 4 | const deploy: DeployFunction = createDeployEndpointV2() 5 | 6 | deploy.tags = ['Bootstrap', 'EndpointV2'] 7 | 8 | export default deploy 9 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/jest.setup.js: -------------------------------------------------------------------------------- 1 | import { rmSync } from 'fs'; 2 | import * as jestExtended from 'jest-extended'; 3 | 4 | // add all jest-extended matchers 5 | expect.extend(jestExtended); 6 | 7 | // clear all deployments before & after every test 8 | const clearDeployments = () => rmSync('./deployments', { force: true, recursive: true }); 9 | 10 | beforeEach(clearDeployments); 11 | afterEach(clearDeployments); 12 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/test/task/oapp/__data__/configs/invalid.config.empty.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LayerZero-Labs/devtools/886b5e53c2c82550644f71d2a0ad3a0b9aeb28a8/tests/ua-devtools-evm-hardhat-test/test/task/oapp/__data__/configs/invalid.config.empty.js -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/test/task/oapp/__data__/configs/invalid.config.empty.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LayerZero-Labs/devtools/886b5e53c2c82550644f71d2a0ad3a0b9aeb28a8/tests/ua-devtools-evm-hardhat-test/test/task/oapp/__data__/configs/invalid.config.empty.json -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/test/task/oapp/__data__/configs/valid.config.empty.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | contracts: [], 3 | connections: [], 4 | }; 5 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/test/task/oapp/__data__/configs/valid.config.empty.ts: -------------------------------------------------------------------------------- 1 | import { OAppOmniGraphHardhat } from '@layerzerolabs/ua-devtools-evm-hardhat' 2 | 3 | const config: OAppOmniGraphHardhat = { 4 | contracts: [], 5 | connections: [], 6 | } 7 | 8 | export default config 9 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": [ 5 | "src", 6 | "test", 7 | "deploy", 8 | "*.config.ts", 9 | "hardhat.config.*.ts", 10 | "layerzero.config.*.ts" 11 | ], 12 | "compilerOptions": { 13 | "module": "commonjs", 14 | "types": ["node", "jest"] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-v1-test/.eslintignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments 4 | dist 5 | node_modules -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-v1-test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json" 3 | } 4 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-v1-test/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | cache 3 | deployments -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-v1-test/.prettierignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | cache/ 3 | deployments/ 4 | dist/ 5 | node_modules/ -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-v1-test/jest.setup.js: -------------------------------------------------------------------------------- 1 | import { rmSync } from 'fs'; 2 | import * as jestExtended from 'jest-extended'; 3 | 4 | // add all jest-extended matchers 5 | expect.extend(jestExtended); 6 | 7 | // clear all deployments before & after every test 8 | const clearDeployments = () => rmSync('./deployments', { force: true, recursive: true }); 9 | 10 | beforeEach(clearDeployments); 11 | afterEach(clearDeployments); 12 | -------------------------------------------------------------------------------- /tests/ua-devtools-evm-hardhat-v1-test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "exclude": ["dist", "node_modules"], 4 | "include": ["src", "test", "deploy", "*.config.ts"], 5 | "compilerOptions": { 6 | "module": "commonjs", 7 | "types": ["node", "jest"] 8 | } 9 | } 10 | --------------------------------------------------------------------------------