From eef5fd7ef213b0301f4472001c0fc43876a3f1be Mon Sep 17 00:00:00 2001 From: b00ste Date: Fri, 26 Jan 2024 14:56:25 +0200 Subject: [PATCH] build!: move `LSP4` in its own package --- .mythx.yml | 4 +- .../LSP7DigitalAsset/LSP7DigitalAsset.sol | 2 +- .../LSP7DigitalAssetInitAbstract.sol | 2 +- .../LSP8IdentifiableDigitalAsset.sol | 4 +- .../LSP8IdentifiableDigitalAssetCore.sol | 2 +- ...P8IdentifiableDigitalAssetInitAbstract.sol | 4 +- dodoc/config.ts | 4 +- package-lock.json | 72 ++++++++++ package.json | 2 + .../LSP4DigitalAssetMetadata/.eslintrc.js | 4 + packages/LSP4DigitalAssetMetadata/.gitmodules | 3 + .../LSP4DigitalAssetMetadata/.solhint.json | 25 ++++ packages/LSP4DigitalAssetMetadata/README.md | 3 + .../contracts}/LSP4Constants.sol | 0 .../contracts}/LSP4DigitalAssetMetadata.sol | 0 .../LSP4DigitalAssetMetadataCore.sol | 0 .../LSP4DigitalAssetMetadataInitAbstract.sol | 0 .../contracts}/LSP4Errors.sol | 0 .../hardhat.config.ts | 128 ++++++++++++++++++ .../LSP4DigitalAssetMetadata/package.json | 44 ++++++ .../LSP4DigitalAssetMetadata/tsconfig.json | 4 + remappings.txt | 2 + .../GasTests/execute/RestrictedController.sol | 2 +- .../execute/UnrestrictedController.sol | 2 +- 24 files changed, 299 insertions(+), 14 deletions(-) create mode 100644 packages/LSP4DigitalAssetMetadata/.eslintrc.js create mode 100644 packages/LSP4DigitalAssetMetadata/.gitmodules create mode 100644 packages/LSP4DigitalAssetMetadata/.solhint.json create mode 100644 packages/LSP4DigitalAssetMetadata/README.md rename {contracts/LSP4DigitalAssetMetadata => packages/LSP4DigitalAssetMetadata/contracts}/LSP4Constants.sol (100%) rename {contracts/LSP4DigitalAssetMetadata => packages/LSP4DigitalAssetMetadata/contracts}/LSP4DigitalAssetMetadata.sol (100%) rename {contracts/LSP4DigitalAssetMetadata => packages/LSP4DigitalAssetMetadata/contracts}/LSP4DigitalAssetMetadataCore.sol (100%) rename {contracts/LSP4DigitalAssetMetadata => packages/LSP4DigitalAssetMetadata/contracts}/LSP4DigitalAssetMetadataInitAbstract.sol (100%) rename {contracts/LSP4DigitalAssetMetadata => packages/LSP4DigitalAssetMetadata/contracts}/LSP4Errors.sol (100%) create mode 100644 packages/LSP4DigitalAssetMetadata/hardhat.config.ts create mode 100644 packages/LSP4DigitalAssetMetadata/package.json create mode 100644 packages/LSP4DigitalAssetMetadata/tsconfig.json diff --git a/.mythx.yml b/.mythx.yml index ce2c2cb35..d4b73d415 100644 --- a/.mythx.yml +++ b/.mythx.yml @@ -25,7 +25,7 @@ analyze: - contracts/LSP0ERC725Account/LSP0ERC725Account.sol - contracts/LSP6KeyManager/LSP6KeyManager.sol # - Tokens & NFTs - - contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadata.sol + - lsp4/contracts/LSP4DigitalAssetMetadata.sol - contracts/LSP7DigitalAsset/LSP7DigitalAsset.sol - contracts/LSP7DigitalAsset/presets/LSP7Mintable.sol - contracts/LSP7DigitalAsset/extensions/LSP7Burnable.sol @@ -43,7 +43,7 @@ analyze: # ------------------ - contracts/UniversalProfileInit.sol - contracts/LSP0ERC725Account/LSP0ERC725AccountInit.sol - - contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataInitAbstract.sol + - lsp4/contracts/LSP4DigitalAssetMetadataInitAbstract.sol - contracts/LSP6KeyManager/LSP6KeyManagerInit.sol # - Tokens & NFTs - contracts/LSP7DigitalAsset/LSP7DigitalAssetInitAbstract.sol diff --git a/contracts/LSP7DigitalAsset/LSP7DigitalAsset.sol b/contracts/LSP7DigitalAsset/LSP7DigitalAsset.sol index 818c78ce1..e6f6d07c7 100644 --- a/contracts/LSP7DigitalAsset/LSP7DigitalAsset.sol +++ b/contracts/LSP7DigitalAsset/LSP7DigitalAsset.sol @@ -8,7 +8,7 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import {ERC725YCore} from "@erc725/smart-contracts/contracts/ERC725YCore.sol"; import { LSP4DigitalAssetMetadata -} from "../LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadata.sol"; +} from "lsp4/contracts/LSP4DigitalAssetMetadata.sol"; import {LSP7DigitalAssetCore} from "./LSP7DigitalAssetCore.sol"; import {LSP17Extendable} from "../LSP17ContractExtension/LSP17Extendable.sol"; diff --git a/contracts/LSP7DigitalAsset/LSP7DigitalAssetInitAbstract.sol b/contracts/LSP7DigitalAsset/LSP7DigitalAssetInitAbstract.sol index bee5a0e07..4f6895f70 100644 --- a/contracts/LSP7DigitalAsset/LSP7DigitalAssetInitAbstract.sol +++ b/contracts/LSP7DigitalAsset/LSP7DigitalAssetInitAbstract.sol @@ -8,7 +8,7 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import {ERC725YCore} from "@erc725/smart-contracts/contracts/ERC725YCore.sol"; import { LSP4DigitalAssetMetadataInitAbstract -} from "../LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataInitAbstract.sol"; +} from "lsp4/contracts/LSP4DigitalAssetMetadataInitAbstract.sol"; import {LSP7DigitalAssetCore} from "./LSP7DigitalAssetCore.sol"; import {LSP17Extendable} from "../LSP17ContractExtension/LSP17Extendable.sol"; diff --git a/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.sol b/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.sol index 32b9cb18f..a0adc1779 100644 --- a/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.sol +++ b/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.sol @@ -11,11 +11,11 @@ import { } from "./LSP8IdentifiableDigitalAssetCore.sol"; import { LSP4DigitalAssetMetadata -} from "../LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadata.sol"; +} from "lsp4/contracts/LSP4DigitalAssetMetadata.sol"; import { LSP4DigitalAssetMetadataCore -} from "../LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataCore.sol"; +} from "lsp4/contracts/LSP4DigitalAssetMetadataCore.sol"; import {LSP17Extendable} from "../LSP17ContractExtension/LSP17Extendable.sol"; diff --git a/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAssetCore.sol b/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAssetCore.sol index 89f57b15d..be937fe04 100644 --- a/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAssetCore.sol +++ b/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAssetCore.sol @@ -13,7 +13,7 @@ import { import { LSP4DigitalAssetMetadataCore -} from "../LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataCore.sol"; +} from "lsp4/contracts/LSP4DigitalAssetMetadataCore.sol"; // libraries import { diff --git a/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAssetInitAbstract.sol b/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAssetInitAbstract.sol index 087d2bbea..770eb5982 100644 --- a/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAssetInitAbstract.sol +++ b/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAssetInitAbstract.sol @@ -11,11 +11,11 @@ import { } from "./LSP8IdentifiableDigitalAssetCore.sol"; import { LSP4DigitalAssetMetadataInitAbstract -} from "../LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataInitAbstract.sol"; +} from "lsp4/contracts/LSP4DigitalAssetMetadataInitAbstract.sol"; import { LSP4DigitalAssetMetadataCore -} from "../LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataCore.sol"; +} from "lsp4/contracts/LSP4DigitalAssetMetadataCore.sol"; import {LSP17Extendable} from "../LSP17ContractExtension/LSP17Extendable.sol"; diff --git a/dodoc/config.ts b/dodoc/config.ts index 63c41cf47..b0948180d 100644 --- a/dodoc/config.ts +++ b/dodoc/config.ts @@ -23,7 +23,7 @@ export const dodocConfig = { 'lsp25/contracts/LSP25MultiChannelNonce.sol', // tokens - 'contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadata.sol', + 'lsp4/contracts/LSP4DigitalAssetMetadata.sol', 'contracts/LSP7DigitalAsset/LSP7DigitalAsset.sol', 'contracts/LSP7DigitalAsset/extensions/LSP7Burnable.sol', 'contracts/LSP7DigitalAsset/extensions/LSP7CappedSupply.sol', @@ -48,8 +48,6 @@ export const dodocConfig = { // external -------------------- '@erc725/smart-contracts/contracts/ERC725.sol', - // 'solidity-bytes-utils/contracts/BytesLib.sol', - '@openzeppelin/contracts/token/ERC20/ERC20.sol', ], libraries: [ 'contracts/LSP1UniversalReceiver/LSP1Utils.sol', diff --git a/package-lock.json b/package-lock.json index 1eb21e892..1dcd5ebea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,9 @@ "@erc725/smart-contracts": "^7.0.0", "@openzeppelin/contracts": "^4.9.2", "@openzeppelin/contracts-upgradeable": "^4.9.2", + "lsp2": "*", "lsp25": "*", + "lsp4": "*", "solidity-bytes-utils": "0.8.0" }, "devDependencies": { @@ -13305,6 +13307,10 @@ "resolved": "packages/LSP25ExecuteRelayCall", "link": true }, + "node_modules/lsp4": { + "resolved": "packages/LSP4DigitalAssetMetadata", + "link": true + }, "node_modules/ltgt": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", @@ -23591,6 +23597,43 @@ "typechain": "^8.0.0", "typescript": "^5.3.3" } + }, + "packages/LSP4DigitalAssetMetadata": { + "version": "0.12.1", + "license": "Apache-2.0", + "dependencies": { + "@erc725/smart-contracts": "^7.0.0" + }, + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^2.0.2", + "@typechain/ethers-v5": "^10.2.0", + "dotenv": "^16.0.3", + "eslint-config-custom": "*", + "ethers": "^5.7.2", + "hardhat": "^2.13.0", + "hardhat-contract-sizer": "^2.8.0", + "hardhat-deploy": "^0.11.25", + "hardhat-gas-reporter": "^1.0.9", + "hardhat-packager": "^1.4.2", + "solhint": "^3.3.6", + "ts-node": "^10.2.0", + "tsconfig": "*", + "typechain": "^8.0.0", + "typescript": "^4.9.5" + } + }, + "packages/LSP4DigitalAssetMetadata/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } } }, "dependencies": { @@ -33695,6 +33738,35 @@ } } }, + "lsp4": { + "version": "file:packages/LSP4DigitalAssetMetadata", + "requires": { + "@erc725/smart-contracts": "^7.0.0", + "@nomicfoundation/hardhat-toolbox": "^2.0.2", + "@typechain/ethers-v5": "^10.2.0", + "dotenv": "^16.0.3", + "eslint-config-custom": "*", + "ethers": "^5.7.2", + "hardhat": "^2.13.0", + "hardhat-contract-sizer": "^2.8.0", + "hardhat-deploy": "^0.11.25", + "hardhat-gas-reporter": "^1.0.9", + "hardhat-packager": "^1.4.2", + "solhint": "^3.3.6", + "ts-node": "^10.2.0", + "tsconfig": "*", + "typechain": "^8.0.0", + "typescript": "^4.9.5" + }, + "dependencies": { + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true + } + } + }, "ltgt": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", diff --git a/package.json b/package.json index 7faf13f18..ee0b91d9d 100644 --- a/package.json +++ b/package.json @@ -112,6 +112,8 @@ "@openzeppelin/contracts": "^4.9.2", "@openzeppelin/contracts-upgradeable": "^4.9.2", "solidity-bytes-utils": "0.8.0", + "lsp2": "*", + "lsp4": "*", "lsp25": "*" }, "devDependencies": { diff --git a/packages/LSP4DigitalAssetMetadata/.eslintrc.js b/packages/LSP4DigitalAssetMetadata/.eslintrc.js new file mode 100644 index 000000000..03ee7431b --- /dev/null +++ b/packages/LSP4DigitalAssetMetadata/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ['custom'], +}; diff --git a/packages/LSP4DigitalAssetMetadata/.gitmodules b/packages/LSP4DigitalAssetMetadata/.gitmodules new file mode 100644 index 000000000..3dce69ce0 --- /dev/null +++ b/packages/LSP4DigitalAssetMetadata/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/forge-std"] + path = ../../lib/forge-std + url = https://github.com/foundry-rs/forge-std.git diff --git a/packages/LSP4DigitalAssetMetadata/.solhint.json b/packages/LSP4DigitalAssetMetadata/.solhint.json new file mode 100644 index 000000000..26e01c48a --- /dev/null +++ b/packages/LSP4DigitalAssetMetadata/.solhint.json @@ -0,0 +1,25 @@ +{ + "extends": "solhint:recommended", + "rules": { + "avoid-sha3": "error", + "avoid-suicide": "error", + "avoid-throw": "error", + "avoid-tx-origin": "error", + "check-send-result": "error", + "compiler-version": ["error", "^0.8.0"], + "func-visibility": ["error", { "ignoreConstructors": true }], + "not-rely-on-block-hash": "error", + "not-rely-on-time": "error", + "reentrancy": "error", + "constructor-syntax": "error", + "private-vars-leading-underscore": ["error", { "strict": false }], + "imports-on-top": "error", + "visibility-modifier-order": "error", + "no-unused-import": "error", + "no-global-import": "error", + "reason-string": ["warn", { "maxLength": 120 }], + "avoid-low-level-calls": "off", + "no-empty-blocks": ["error", { "ignoreConstructors": true }], + "custom-errors": "off" + } +} diff --git a/packages/LSP4DigitalAssetMetadata/README.md b/packages/LSP4DigitalAssetMetadata/README.md new file mode 100644 index 000000000..e5b958d30 --- /dev/null +++ b/packages/LSP4DigitalAssetMetadata/README.md @@ -0,0 +1,3 @@ +# LSP4 Digital Asset Metadata + +Package for the LSP4 Digital Asset Metadata standard. diff --git a/contracts/LSP4DigitalAssetMetadata/LSP4Constants.sol b/packages/LSP4DigitalAssetMetadata/contracts/LSP4Constants.sol similarity index 100% rename from contracts/LSP4DigitalAssetMetadata/LSP4Constants.sol rename to packages/LSP4DigitalAssetMetadata/contracts/LSP4Constants.sol diff --git a/contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadata.sol b/packages/LSP4DigitalAssetMetadata/contracts/LSP4DigitalAssetMetadata.sol similarity index 100% rename from contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadata.sol rename to packages/LSP4DigitalAssetMetadata/contracts/LSP4DigitalAssetMetadata.sol diff --git a/contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataCore.sol b/packages/LSP4DigitalAssetMetadata/contracts/LSP4DigitalAssetMetadataCore.sol similarity index 100% rename from contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataCore.sol rename to packages/LSP4DigitalAssetMetadata/contracts/LSP4DigitalAssetMetadataCore.sol diff --git a/contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataInitAbstract.sol b/packages/LSP4DigitalAssetMetadata/contracts/LSP4DigitalAssetMetadataInitAbstract.sol similarity index 100% rename from contracts/LSP4DigitalAssetMetadata/LSP4DigitalAssetMetadataInitAbstract.sol rename to packages/LSP4DigitalAssetMetadata/contracts/LSP4DigitalAssetMetadataInitAbstract.sol diff --git a/contracts/LSP4DigitalAssetMetadata/LSP4Errors.sol b/packages/LSP4DigitalAssetMetadata/contracts/LSP4Errors.sol similarity index 100% rename from contracts/LSP4DigitalAssetMetadata/LSP4Errors.sol rename to packages/LSP4DigitalAssetMetadata/contracts/LSP4Errors.sol diff --git a/packages/LSP4DigitalAssetMetadata/hardhat.config.ts b/packages/LSP4DigitalAssetMetadata/hardhat.config.ts new file mode 100644 index 000000000..d818a205d --- /dev/null +++ b/packages/LSP4DigitalAssetMetadata/hardhat.config.ts @@ -0,0 +1,128 @@ +import { HardhatUserConfig } from 'hardhat/config'; +import { NetworkUserConfig } from 'hardhat/types'; +import { config as dotenvConfig } from 'dotenv'; +import { resolve } from 'path'; + +/** + * this package includes: + * - @nomiclabs/hardhat-ethers + * - @nomicfoundation/hardhat-chai-matchers + * - @nomicfoundation/hardhat-network-helpers + * - @nomiclabs/hardhat-etherscan + * - hardhat-gas-reporter (is this true? Why do we have it as a separate dependency?) + * - @typechain/hardhat + * - solidity-coverage + */ +import '@nomicfoundation/hardhat-toolbox'; + +// additional hardhat plugins +import 'hardhat-packager'; +import 'hardhat-contract-sizer'; +import 'hardhat-deploy'; + +// custom built hardhat plugins and scripts +// can be imported here (e.g: docs generation, gas benchmark, etc...) + +dotenvConfig({ path: resolve(__dirname, './.env') }); + +function getTestnetChainConfig(): NetworkUserConfig { + const config: NetworkUserConfig = { + live: true, + url: 'https://rpc.testnet.lukso.network', + chainId: 4201, + }; + + if (process.env.CONTRACT_VERIFICATION_TESTNET_PK !== undefined) { + config['accounts'] = [process.env.CONTRACT_VERIFICATION_TESTNET_PK]; + } + + return config; +} + +const config: HardhatUserConfig = { + defaultNetwork: 'hardhat', + networks: { + hardhat: { + live: false, + saveDeployments: false, + allowBlocksWithSameTimestamp: true, + }, + luksoTestnet: getTestnetChainConfig(), + }, + namedAccounts: { + owner: 0, + }, + // uncomment if the contracts from this LSP package must be deployed at deterministic + // // addresses across multiple chains + // deterministicDeployment: { + // luksoTestnet: { + // // Nick Factory. See https://github.com/Arachnid/deterministic-deployment-proxy + // factory: '0x4e59b44847b379578588920ca78fbf26c0b4956c', + // deployer: '0x3fab184622dc19b6109349b94811493bf2a45362', + // funding: '0x0000000000000000000000000000000000000000000000000000000000000000', + // signedTx: + // '0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222', + // }, + // }, + etherscan: { + apiKey: 'no-api-key-needed', + customChains: [ + { + network: 'luksoTestnet', + chainId: 4201, + urls: { + apiURL: 'https://api.explorer.execution.testnet.lukso.network/api', + browserURL: 'https://explorer.execution.testnet.lukso.network/', + }, + }, + ], + }, + gasReporter: { + enabled: true, + currency: 'USD', + gasPrice: 21, + excludeContracts: ['Helpers/'], + src: './contracts', + showMethodSig: true, + }, + solidity: { + version: '0.8.17', + settings: { + optimizer: { + enabled: true, + /** + * Optimize for how many times you intend to run the code. + * Lower values will optimize more for initial deployment cost, higher + * values will optimize more for high-frequency usage. + * @see https://docs.soliditylang.org/en/v0.8.6/internals/optimizer.html#opcode-based-optimizer-module + */ + runs: 1000, + }, + outputSelection: { + '*': { + '*': ['storageLayout'], + }, + }, + }, + }, + packager: { + // What contracts to keep the artifacts and the bindings for. + contracts: [], + // Whether to include the TypeChain factories or not. + // If this is enabled, you need to run the TypeChain files through the TypeScript compiler before shipping to the registry. + includeFactories: true, + }, + paths: { + artifacts: 'artifacts', + tests: 'tests', + }, + typechain: { + outDir: 'types', + target: 'ethers-v5', + }, + mocha: { + timeout: 10000000, + }, +}; + +export default config; diff --git a/packages/LSP4DigitalAssetMetadata/package.json b/packages/LSP4DigitalAssetMetadata/package.json new file mode 100644 index 000000000..708957f2f --- /dev/null +++ b/packages/LSP4DigitalAssetMetadata/package.json @@ -0,0 +1,44 @@ +{ + "name": "lsp4", + "version": "0.12.1", + "description": "Package for the LSP4 Digital Asset Metadata standard", + "license": "Apache-2.0", + "author": "", + "keywords": [ + "LUKSO", + "LSP", + "Blockchain", + "Standards", + "Smart Contracts", + "Ethereum", + "EVM", + "Solidity" + ], + "scripts": { + "build": "hardhat compile --show-stack-traces", + "clean": "hardhat clean", + "format": "prettier --write .", + "lint": "eslint . --ext .ts,.js", + "lint:solidity": "solhint 'contracts/**/*.sol' && prettier --check 'contracts/**/*.sol'" + }, + "dependencies": { + "@erc725/smart-contracts": "^7.0.0" + }, + "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^2.0.2", + "@typechain/ethers-v5": "^10.2.0", + "dotenv": "^16.0.3", + "eslint-config-custom": "*", + "ethers": "^5.7.2", + "hardhat": "^2.13.0", + "hardhat-contract-sizer": "^2.8.0", + "hardhat-deploy": "^0.11.25", + "hardhat-gas-reporter": "^1.0.9", + "hardhat-packager": "^1.4.2", + "solhint": "^3.3.6", + "ts-node": "^10.2.0", + "tsconfig": "*", + "typechain": "^8.0.0", + "typescript": "^4.9.5" + } +} diff --git a/packages/LSP4DigitalAssetMetadata/tsconfig.json b/packages/LSP4DigitalAssetMetadata/tsconfig.json new file mode 100644 index 000000000..b7a34e03f --- /dev/null +++ b/packages/LSP4DigitalAssetMetadata/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "tsconfig/contracts.json", + "include": ["**/*.ts"] +} diff --git a/remappings.txt b/remappings.txt index ff83d2174..72c12af6d 100644 --- a/remappings.txt +++ b/remappings.txt @@ -7,4 +7,6 @@ hardhat-deploy/=node_modules/hardhat-deploy/ hardhat/=node_modules/hardhat/ solidity-bytes-utils/=node_modules/solidity-bytes-utils/ ds-test/=lib/forge-std/lib/ds-test/src/ +lsp2/=packages/LSP2ERC725YJSONSchema/ +lsp4/=packages/LSP4DigitalAssetMetadata/ lsp25/=packages/LSP25ExecuteRelayCall/ diff --git a/tests/foundry/GasTests/execute/RestrictedController.sol b/tests/foundry/GasTests/execute/RestrictedController.sol index c891989ba..d9fb40f8e 100644 --- a/tests/foundry/GasTests/execute/RestrictedController.sol +++ b/tests/foundry/GasTests/execute/RestrictedController.sol @@ -13,7 +13,7 @@ import { import { _LSP4_TOKEN_TYPE_TOKEN, _LSP4_TOKEN_TYPE_NFT -} from "../../../../contracts/LSP4DigitalAssetMetadata/LSP4Constants.sol"; +} from "lsp4/contracts/LSP4Constants.sol"; import { _LSP6KEY_ADDRESSPERMISSIONS_PERMISSIONS_PREFIX, _PERMISSION_SUPER_SETDATA, diff --git a/tests/foundry/GasTests/execute/UnrestrictedController.sol b/tests/foundry/GasTests/execute/UnrestrictedController.sol index ae0e3fd24..da8caa80c 100644 --- a/tests/foundry/GasTests/execute/UnrestrictedController.sol +++ b/tests/foundry/GasTests/execute/UnrestrictedController.sol @@ -13,7 +13,7 @@ import { import { _LSP4_TOKEN_TYPE_TOKEN, _LSP4_TOKEN_TYPE_NFT -} from "../../../../contracts/LSP4DigitalAssetMetadata/LSP4Constants.sol"; +} from "lsp4/contracts/LSP4Constants.sol"; import { _LSP6KEY_ADDRESSPERMISSIONS_PERMISSIONS_PREFIX, _PERMISSION_SUPER_SETDATA,