Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MULTI ZNS] MAIN #121

Open
wants to merge 125 commits into
base: development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
3662fac
String Resolver init
MichaelKorchagin Mar 16, 2024
9f774a9
SR mission added
MichaelKorchagin Mar 16, 2024
30d6e95
Tests for SR
MichaelKorchagin Mar 16, 2024
ef3b152
Add DB drop to test, fix naming
MichaelKorchagin May 7, 2024
a237e61
Linter fixes
MichaelKorchagin May 7, 2024
b625249
Adjusting the deployment process. Сorrections based on review
MichaelKorchagin May 8, 2024
e3ee2c3
Operator initialize
MichaelKorchagin May 8, 2024
09fed3b
Only method deletion
MichaelKorchagin May 8, 2024
96de554
Replacing require with a custom error. New names of variables in stri…
MichaelKorchagin May 30, 2024
bd583d5
update solidity version in all contracts
Whytecrowe Jun 21, 2024
e7cad5f
update all the possible packages, including zToken
Whytecrowe Jun 26, 2024
7e127b4
rework meow token deploy logic to use imported artifacts and it's moc…
Whytecrowe Jun 26, 2024
0658ca8
fix inheritance issues in DomainToken
Whytecrowe Jun 26, 2024
8b9a029
fix hardhat config to use proper solc versions
Whytecrowe Jun 26, 2024
7eb8f1a
fix all tests based on the new changes to revert errors and other things
Whytecrowe Jun 26, 2024
40963a7
try newer node image for CI
Whytecrowe Jun 27, 2024
17b764f
try adding more memory to hardhat coverage
Whytecrowe Jun 27, 2024
95bbb0e
try a different way
Whytecrowe Jun 27, 2024
e4f626e
try exporting old space size for Node before running coverage
Whytecrowe Jun 27, 2024
6561363
remove redundant imports
Whytecrowe Jun 27, 2024
70a983c
convert requires to custom errors for Access and Pricers
Whytecrowe Jun 27, 2024
f91e990
make errors for Registry and Registrars
Whytecrowe Jun 27, 2024
b65b7f5
add errors for AddressResolver and Treasury
Whytecrowe Jun 27, 2024
aa73a8b
try rolling back solcover version
Whytecrowe Jun 28, 2024
03f6d7c
update yarn.lock
Whytecrowe Jun 28, 2024
11ea094
fix contract errors to compile
Whytecrowe Jun 28, 2024
c3c9312
fix errors in if statements, add string utils
Whytecrowe Jun 29, 2024
e9dd200
fix error in StringUtils
Whytecrowe Jun 29, 2024
63fd27a
fix error constants in TS
Whytecrowe Jun 29, 2024
de901cf
first pass on reworking test error checks
Whytecrowe Jun 29, 2024
92993cc
second pass on the tests
Whytecrowe Jun 29, 2024
747beb2
try running CI without enlarging the heap
Whytecrowe Jun 29, 2024
0118102
small fixes
Whytecrowe Jun 29, 2024
6d20a06
add missing param to error
Whytecrowe Jun 29, 2024
0506426
Revert "try running CI without enlarging the heap"
Whytecrowe Jun 29, 2024
2aa9f00
try increasing heap to 8gb
Whytecrowe Jul 1, 2024
d1cc7ef
try measureStatementCoverage flag to false for coverage
Whytecrowe Jul 1, 2024
31a1caa
try skipping a large string test
Whytecrowe Jul 1, 2024
7f360bb
try removing the test skip
Whytecrowe Jul 1, 2024
bd7bc84
skip the test back and try removing heap increase
Whytecrowe Jul 1, 2024
be2a980
add missing tests for rootPricer state var
Whytecrowe Jul 2, 2024
cacba86
try adding slip on coverage for a long string name test
Whytecrowe Jul 2, 2024
38f16b0
add NatSpec for some non obvious errors
Whytecrowe Jul 2, 2024
d92590d
add test
Whytecrowe Jul 2, 2024
8789d9d
update hardhat to the newest version
Whytecrowe Jul 2, 2024
6908566
try updating solcover
Whytecrowe Jul 2, 2024
d0e1ae5
Codebase and dependency update (#109)
Whytecrowe Jul 2, 2024
a7e70c9
Merge branch 'rc/zns-meowchain' into feat/zns-string-resolver
Whytecrowe Jul 2, 2024
76925f9
change error to the existing one
Whytecrowe Jul 2, 2024
2f48b22
update solidity pragmas
Whytecrowe Jul 2, 2024
f9d396d
update mock pragma
Whytecrowe Jul 2, 2024
71cceaf
fix small errors
Whytecrowe Jul 2, 2024
e785ccf
some test fixes
Whytecrowe Jul 2, 2024
953fc73
change test logic to adhere to the newest errors
Whytecrowe Jul 2, 2024
bbb8136
fix linting
Whytecrowe Jul 2, 2024
ae74c06
Types upgrade after PROVIDER removal
MichaelKorchagin Jul 16, 2024
b387d4f
Deploy contracts through Hardhat script
MichaelKorchagin Jul 17, 2024
cfd06cc
Add Meow-testnet data
MichaelKorchagin Jul 18, 2024
d3a999f
Disable Meow-testnet
MichaelKorchagin Jul 18, 2024
0db9875
Correct contract format
MichaelKorchagin Jul 18, 2024
cdb7a3b
New FORMULA for CURVE PRICER. Preparing for tests.
MichaelKorchagin Jul 27, 2024
2432aa1
Minor contract changes
MichaelKorchagin Jul 30, 2024
189cedf
Update some tests. Update config validate
MichaelKorchagin Jul 31, 2024
7dfe0e2
Update curveMultplier to not be fractional. Test update
MichaelKorchagin Aug 20, 2024
3e55ae1
Contract notes. Test for free domains
MichaelKorchagin Aug 20, 2024
6c0b989
New validate config. Added more comments
MichaelKorchagin Aug 22, 2024
fc27225
New validate [WIP]
MichaelKorchagin Aug 27, 2024
224b79c
Validate changes. Validate function and formula tests. Minor changes
MichaelKorchagin Aug 28, 2024
f173ce5
MinPrice delete. Tests corrects
MichaelKorchagin Aug 29, 2024
bbe2620
gitignore change
MichaelKorchagin Aug 29, 2024
b8b081e
Merge branch 'update-zDC' into curve-pricer-formula-update
MichaelKorchagin Aug 29, 2024
05d0581
Tests corrects. Delete minPrice
MichaelKorchagin Aug 30, 2024
47fd38b
Validation transported to separate functions. Some type corrects
MichaelKorchagin Aug 31, 2024
d033996
Added one test to test uncovered lines. Some comments. Changed expect…
MichaelKorchagin Sep 4, 2024
39c58d5
Deleted redundant conditions and tests.
MichaelKorchagin Sep 5, 2024
e193c01
Made correct tests organizing. Deleted more redundant tests.
MichaelKorchagin Sep 6, 2024
63f4688
Minor test changes
MichaelKorchagin Sep 6, 2024
449e121
[ZNS ZChain] Update zDC, add deploy scripts for `dev` and ZChain (#113)
Whytecrowe Sep 11, 2024
d689dcc
Merge branch 'zns-zchain-final' into feat/zns-string-resolver
Whytecrowe Sep 11, 2024
898ac60
fix some types
Whytecrowe Sep 11, 2024
df9e548
Formatting corrects. Price config validation added before deployment.
MichaelKorchagin Sep 11, 2024
1b7cf47
[ZNS ZChain] String Resolver (#106)
Whytecrowe Sep 11, 2024
84f0d12
fix compile (type) errors
Whytecrowe Sep 11, 2024
8513869
add ts compilation to build script so that CI checks for compilation …
Whytecrowe Sep 11, 2024
a335e6b
Connect zToken to zNS
MichaelKorchagin Sep 12, 2024
951d05a
Mock added
MichaelKorchagin Sep 12, 2024
86e766f
fix errors
Whytecrowe Sep 12, 2024
6f3ae07
Replaced Meow-Token variables with Z-Token
MichaelKorchagin Sep 13, 2024
c11f696
Continued token name replacement. New arguments for ZToken in campaig…
MichaelKorchagin Sep 17, 2024
ceee4f9
Tests fixes. New deploy of zToken in tests
MichaelKorchagin Sep 18, 2024
22ec8f6
More test fixes. Changed mintBulk helper function to transferBulk.
MichaelKorchagin Sep 18, 2024
ad4e75f
ZToken package connected
MichaelKorchagin Sep 18, 2024
1d97890
Test fixes. Different deploy in some tests. Mint changed to transfer …
MichaelKorchagin Sep 19, 2024
95c99bc
ZTokenConfig types fixes
MichaelKorchagin Sep 19, 2024
53ab216
Minor fixes
MichaelKorchagin Sep 20, 2024
561d44c
Minor fixes
MichaelKorchagin Sep 20, 2024
9254552
Modify standard transfer to update registry as well, introduce new no…
JamesEarle Sep 23, 2024
2f039d8
add new func to interface
JamesEarle Sep 23, 2024
216448f
deploy error in integration test, investigating
JamesEarle Sep 24, 2024
fccba5b
all tests passing, add linter fixes
JamesEarle Sep 25, 2024
5c5a8c1
change to user the public transferFrom function we override instead
JamesEarle Sep 26, 2024
2661eae
update cpt eslint config
JamesEarle Sep 26, 2024
ab0286b
update yarn lock
JamesEarle Sep 26, 2024
9bc171a
Updated config.yml
JamesEarle Sep 26, 2024
511b248
Updated config.yml
JamesEarle Sep 26, 2024
d5ee145
update eslint with new jsdoc rule turned off
JamesEarle Sep 26, 2024
203b90d
Merge branch 'feat/modify-transfers' of https://github.com/zer0-os/zN…
JamesEarle Sep 26, 2024
d6f3763
remove tenderly setup function in HH config
JamesEarle Sep 26, 2024
7ecd641
Review fixes. Config changed. New config build. Mission for ZToken ch…
MichaelKorchagin Sep 27, 2024
76182b3
Type fixes.
MichaelKorchagin Sep 27, 2024
e9015ac
add tests for setRegistry in DmoainToken
JamesEarle Sep 27, 2024
fbe4504
simplify import from helpers
JamesEarle Sep 27, 2024
5831357
reverse change to node image in circleci build
JamesEarle Sep 27, 2024
89232f2
Updated config.yml
JamesEarle Sep 27, 2024
dd8c2a7
Updated config.yml
JamesEarle Sep 27, 2024
46fd565
Updated config.yml
JamesEarle Sep 27, 2024
ddcdb97
lint modified import list
JamesEarle Sep 30, 2024
96e6cc0
remove custom auth in circleCI, update func name in sol, add extra te…
JamesEarle Sep 30, 2024
ab63377
Merge branch 'rc/zns-meowchain' into rc/multi-zns-main
Whytecrowe Dec 17, 2024
4af6224
Merge branch 'replacing-the-meow-token-with-z-token' into rc/multi-zn…
Whytecrowe Dec 17, 2024
ae1f66f
Merge branch 'zns-zchain-final' into rc/multi-zns-main
Whytecrowe Dec 17, 2024
08a4203
integrate z token into StringResolver tests
Whytecrowe Dec 18, 2024
3088737
Merge branch 'curve-pricer-formula-update' into rc/multi-zns-main
Whytecrowe Dec 18, 2024
0685c7b
lint fix
JamesEarle Dec 18, 2024
1c9d775
Merge branch 'feat/modify-transfers' into rc/multi-zns-main
Whytecrowe Dec 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
version: 2.1

orbs:
node: circleci/node@4.7.0
node: circleci/node@6.1.0
codecov: codecov/[email protected]

defaults: &defaults
working_directory: ~/repo
docker:
- image: cimg/node:18.15.0
- image: cimg/node:20.17.0
- image: mongo:7.0.0-rc5-jammy

jobs:
Expand Down
6 changes: 3 additions & 3 deletions .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ SILENT_LOGGER="false" | "true"
# Boolean value for if we deploy the mock
# true = we deploy the mock
# false = we use a hard coded address and pull data from chain
MOCK_MEOW_TOKEN=
# Address of the MEOW Token deployed to the network PRIOR to running Campaign or any other EXISTING token
# This is only used if MOCK_MEOW_TOKEN is set to false (`test` and `prod` environments)
MOCK_Z_TOKEN=
# Address of the Z Token deployed to the network PRIOR to running Campaign or any other EXISTING token
# This is only used if MOCK_Z_TOKEN is set to false (`test` and `prod` environments)
STAKING_TOKEN_ADDRESS=

# Environment variables to create an entirely custom config when `env_level` above is not dev
Expand Down
1 change: 1 addition & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"files": ["src/**/*.ts", "test/**/*.ts", "./*.ts"],
"extends": ["@zero-tech/eslint-config-cpt/node-ts/.eslintrc.json"],
"rules": {
"jsdoc/newline-after-description": "off",
"no-unused-expressions": "off",
"no-console": "off",
"no-shadow": "warn",
Expand Down
48 changes: 26 additions & 22 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
node_modules
.env
coverage
coverage.json
typechain
typechain-types
.idea
dist

# Hardhat files
cache
artifacts

# hardhat-tenderly plugin
deployments

*.env
docker
docker*.tgz

# We don't ever use the generated manifests
.openzeppelin
node_modules
.env
coverage
coverage.json
typechain
typechain-types
.idea
dist

# Hardhat files
cache
artifacts

# hardhat-tenderly plugin
deployments

*.env
docker
docker*.tgz

# We don't ever use the generated manifests
.openzeppelin
/.vscode

# Don't source control log files from deployment
deploy-*.log
4 changes: 4 additions & 0 deletions .solcover.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
module.exports = {
mocha: {
grep: "@skip-on-coverage", // Find everything with this tag
invert: true // Run the grep's inverse set.
},
skipFiles: [
'utils/StringUtils.sol',
'token/mocks',
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Create `.env` file in the root directory and add the following variables:
ENV_LEVEL: "dev" # local dev environment
MONGO_DB_URI: "mongodb://localhost:27018" # local instance of MongoDB in the Docker
MONGO_DB_NAME: "zns-campaign" # name of the database
MOCK_MEOW_TOKEN: "true" # use mock MeowToken contract for local testing
MOCK_Z_TOKEN: "true" # use mock ZToken contract for local testing
SILENT_LOGGER: "true" # disable logging for tests
```

Expand Down
6 changes: 3 additions & 3 deletions contracts/access/AAccessControlled.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
pragma solidity 0.8.26;

import { IZNSAccessController } from "./IZNSAccessController.sol";
import { ZeroAddressPassed } from "../utils/CommonErrors.sol";


/**
Expand All @@ -11,7 +12,6 @@ import { IZNSAccessController } from "./IZNSAccessController.sol";
* this contract needs to be inherited by the module.
*/
abstract contract AAccessControlled {

/**
* @notice Emitted when the access controller contract address is set.
*/
Expand Down Expand Up @@ -66,7 +66,7 @@ abstract contract AAccessControlled {
* @param _accessController Address of the ZNSAccessController contract.
*/
function _setAccessController(address _accessController) internal {
require(_accessController != address(0), "AC: _accessController is 0x0 address");
if (_accessController == address(0)) revert ZeroAddressPassed();
accessController = IZNSAccessController(_accessController);
emit AccessControllerSet(_accessController);
}
Expand Down
6 changes: 5 additions & 1 deletion contracts/access/IZNSAccessController.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
pragma solidity 0.8.26;

import { IAccessControl } from "@openzeppelin/contracts/access/IAccessControl.sol";

Expand All @@ -15,10 +15,14 @@ interface IZNSAccessController is IAccessControl {

function checkRegistrar(address account) external view;

function checkDomainToken(address account) external view;

function isAdmin(address account) external view returns (bool);

function isRegistrar(address account) external view returns (bool);

function isDomainToken(address account) external view returns (bool);

function isGovernor(address account) external view returns (bool);

function isExecutor(address account) external view returns (bool);
Expand Down
19 changes: 14 additions & 5 deletions contracts/access/ZNSAccessController.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
pragma solidity 0.8.26;

import { AccessControl } from "@openzeppelin/contracts/access/AccessControl.sol";
import { IZNSAccessController } from "./IZNSAccessController.sol";
import { ZNSRoles } from "./ZNSRoles.sol";
import { ZeroAddressPassed } from "../utils/CommonErrors.sol";


/**
Expand Down Expand Up @@ -33,6 +34,8 @@ contract ZNSAccessController is AccessControl, ZNSRoles, IZNSAccessController {
_setRoleAdmin(GOVERNOR_ROLE, GOVERNOR_ROLE);
// all of the admins control registrar
_setRoleAdmin(REGISTRAR_ROLE, ADMIN_ROLE);
// all of the admins control domain token
_setRoleAdmin(DOMAIN_TOKEN_ROLE, ADMIN_ROLE);
}

// ** Access Validators **
Expand All @@ -53,6 +56,10 @@ contract ZNSAccessController is AccessControl, ZNSRoles, IZNSAccessController {
_checkRole(REGISTRAR_ROLE, account);
}

function checkDomainToken(address account) external view override {
_checkRole(DOMAIN_TOKEN_ROLE, account);
}

// "is...()" functions return a boolean
function isAdmin(address account) external view override returns (bool) {
return hasRole(ADMIN_ROLE, account);
Expand All @@ -62,6 +69,10 @@ contract ZNSAccessController is AccessControl, ZNSRoles, IZNSAccessController {
return hasRole(REGISTRAR_ROLE, account);
}

function isDomainToken(address account) external view override returns (bool) {
return hasRole(DOMAIN_TOKEN_ROLE, account);
}

function isGovernor(address account) external view override returns (bool) {
return hasRole(GOVERNOR_ROLE, account);
}
Expand All @@ -77,10 +88,8 @@ contract ZNSAccessController is AccessControl, ZNSRoles, IZNSAccessController {
function _grantRoleToMany(bytes32 role, address[] memory addresses) internal {
uint256 length = addresses.length;
for (uint256 i = 0; i < length; ++i) {
require(
addresses[i] != address(0),
"ZNSAccessController: Can't grant role to zero address"
);
if (addresses[i] == address(0)) revert ZeroAddressPassed();

_grantRole(role, addresses[i]);
}
}
Expand Down
7 changes: 6 additions & 1 deletion contracts/access/ZNSRoles.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
pragma solidity 0.8.26;


/**
Expand All @@ -22,6 +22,11 @@ abstract contract ZNSRoles {
*/
bytes32 public constant REGISTRAR_ROLE = keccak256("REGISTRAR_ROLE");

/**
* @notice This role is here specifically for the ZNSDomainToken.sol contract
*/
bytes32 public constant DOMAIN_TOKEN_ROLE = keccak256("DOMAIN_TOKEN_ROLE");

/**
* @notice Executor can be here to future proof, if we need a new role
* so we don't have to upgrade all contracts
Expand Down
2 changes: 1 addition & 1 deletion contracts/oz-proxies/ERC1967ProxyAcc.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
pragma solidity 0.8.26;

// solhint-disable-next-line no-global-import
import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
Expand Down
2 changes: 1 addition & 1 deletion contracts/oz-proxies/TransparentUpgradeableProxyAcc.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
pragma solidity 0.8.26;

// solhint-disable-next-line no-global-import
import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
Expand Down
29 changes: 18 additions & 11 deletions contracts/price/IZNSCurvePricer.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
pragma solidity 0.8.26;

import { ICurvePriceConfig } from "../types/ICurvePriceConfig.sol";
import { IZNSPricer } from "../types/IZNSPricer.sol";
Expand All @@ -8,16 +8,16 @@ import { IZNSPricer } from "../types/IZNSPricer.sol";
interface IZNSCurvePricer is ICurvePriceConfig, IZNSPricer {

/**
* @notice Emitted when the `maxPrice` is set in `CurvePriceConfig`
* @param price The new maxPrice value
* @notice Reverted when multiplier passed by the domain owner
* is equal to 0 or more than 10^18, which is too large.
*/
event MaxPriceSet(bytes32 domainHash, uint256 price);
error InvalidPrecisionMultiplierPassed(bytes32 domainHash);

/**
* @notice Emitted when the `minPrice` is set in `CurvePriceConfig`
* @param price The new minPrice value
* @notice Emitted when the `maxPrice` is set in `CurvePriceConfig`
* @param price The new maxPrice value
*/
event MinPriceSet(bytes32 domainHash, uint256 price);
event MaxPriceSet(bytes32 domainHash, uint256 price);

/**
* @notice Emitted when the `baseLength` is set in `CurvePriceConfig`
Expand All @@ -43,18 +43,25 @@ interface IZNSCurvePricer is ICurvePriceConfig, IZNSPricer {
*/
event FeePercentageSet(bytes32 domainHash, uint256 feePercentage);

/**
* @notice Emitted when the `curveMultiplier` is set in state
* @param curveMultiplier The new curveMultiplier value
*/
event CurveMultiplierSet(bytes32 domainHash, uint256 curveMultiplier);


/**
* @notice Emitted when the full `CurvePriceConfig` is set in state
* @param maxPrice The new `maxPrice` value
* @param minPrice The new `minPrice` value
* @param curveMultiplier The new `curveMultiplier` value
* @param maxLength The new `maxLength` value
* @param baseLength The new `baseLength` value
* @param precisionMultiplier The new `precisionMultiplier` value
*/
event PriceConfigSet(
bytes32 domainHash,
uint256 maxPrice,
uint256 minPrice,
uint256 curveMultiplier,
uint256 maxLength,
uint256 baseLength,
uint256 precisionMultiplier,
Expand Down Expand Up @@ -94,12 +101,12 @@ interface IZNSCurvePricer is ICurvePriceConfig, IZNSPricer {

function setMaxPrice(bytes32 domainHash, uint256 maxPrice) external;

function setMinPrice(bytes32 domainHash, uint256 minPrice) external;

function setBaseLength(bytes32 domainHash, uint256 length) external;

function setMaxLength(bytes32 domainHash, uint256 length) external;

function setCurveMultiplier(bytes32 domainHash, uint256 curveMultiplier) external;

function setPrecisionMultiplier(bytes32 domainHash, uint256 multiplier) external;

function setFeePercentage(bytes32 domainHash, uint256 feePercentage) external;
Expand Down
2 changes: 1 addition & 1 deletion contracts/price/IZNSFixedPricer.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
pragma solidity 0.8.26;

import { IZNSPricer } from "../types/IZNSPricer.sol";

Expand Down
Loading