diff --git a/hardhat.config.js b/hardhat.config.js index 439e04682..aa90acef2 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -18,12 +18,12 @@ const { */ module.exports = { networks: { - goerli: { - url: apiUrls[ChainIds.GOERLI] + '/' + process.env.INFURA_API_KEY, + mainnet: { + url: apiUrls[ChainIds.MAINNET], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, - mainnet: { - url: apiUrls[ChainIds.MAINNET] + '/' + process.env.INFURA_API_KEY, + goerli: { + url: apiUrls[ChainIds.GOERLI], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, bsctestnet: { @@ -71,7 +71,7 @@ module.exports = { accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, linea: { - url: apiUrls[ChainIds.LINEA] + '/' + process.env.INFURA_API_KEY, + url: apiUrls[ChainIds.LINEA], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, basegoerli: { @@ -91,7 +91,11 @@ module.exports = { accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, sepolia: { - url: apiUrls[ChainIds.SEPOLIA] + '/' + process.env.INFURA_API_KEY, + url: apiUrls[ChainIds.SEPOLIA], + accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, + }, + holesky: { + url: apiUrls[ChainIds.HOLESKY], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, }, @@ -137,6 +141,7 @@ module.exports = { arbitrumGoerli: process.env.ARBISCAN_API_KEY, avalanche: process.env.SNOWTRACE_API_KEY, avalancheFujiTestnet: process.env.SNOWTRACE_API_KEY, + holesky: process.env.ETHERSCAN_API_KEY, polygonMumbai: process.env.POLYGONSCAN_API_KEY, linea: process.env.LINEASCAN_API_KEY, lineagoerli: process.env.LINEASCAN_API_KEY, @@ -163,6 +168,14 @@ module.exports = { browserURL: explorerUrls[ChainIds.RSKTESTNET], }, }, + { + network: 'holesky', + chainId: 17000, + urls: { + apiURL: explorerApiUrls[ChainIds.HOLESKY], + browserURL: explorerUrls[ChainIds.HOLESKY], + }, + }, { network: 'linea', chainId: 59144, diff --git a/source/batch-call/contracts/BatchCall.sol b/source/batch-call/contracts/BatchCall.sol index 0a3268a1a..9f364aac0 100644 --- a/source/batch-call/contracts/BatchCall.sol +++ b/source/batch-call/contracts/BatchCall.sol @@ -192,7 +192,7 @@ contract BatchCall { * @return bool[] order validity */ - function checkOrders( + function getOrdersValid( address senderWallet, ISwap.Order[] calldata orders, ISwap swapContract @@ -207,7 +207,7 @@ contract BatchCall { return orderValidity; } - function checkOrdersERC20( + function getOrdersValidERC20( address senderWallet, ISwapERC20.OrderERC20[] calldata ordersERC20, ISwapERC20 swapERC20Contract @@ -234,4 +234,31 @@ contract BatchCall { } return orderValidity; } + + /** + * @notice Check if the nonce for an array of order has been already used or not + * @dev Swap and SwapERC20 nonceUsed function have a similar signature + * @dev The same function can be used for both contract calls + * @dev Returns an array of bool + * @dev return array and will fail if large nonce arrays are inputted + * @param signerWallets[] list of wallets associated with the nonces to be checked + * @param nonces[] list of nonces to be checked + * @param swapContract[] swap or swapERC contract to check nonces from + * @return bool[] nonce validity + */ + + function getNoncesUsed( + address[] calldata signerWallets, + uint256[] calldata nonces, + ISwap swapContract + ) external view returns (bool[] memory) { + require(signerWallets.length > 0); + require(signerWallets.length == nonces.length); + bool[] memory nonceUsed = new bool[](signerWallets.length); + + for (uint256 i = 0; i < signerWallets.length; i++) { + nonceUsed[i] = swapContract.nonceUsed(signerWallets[i], nonces[i]); + } + return nonceUsed; + } } diff --git a/source/batch-call/deploys-blocks.js b/source/batch-call/deploys-blocks.js index 5fcd90cd8..43d0d6f40 100644 --- a/source/batch-call/deploys-blocks.js +++ b/source/batch-call/deploys-blocks.js @@ -1,4 +1,5 @@ module.exports = { - 5: 10351183, - 11155111: 5059276, + 5: 10369619, + 17000: 731238, + 11155111: 5080685, } diff --git a/source/batch-call/deploys.js b/source/batch-call/deploys.js index f94c303ea..5285bd60d 100644 --- a/source/batch-call/deploys.js +++ b/source/batch-call/deploys.js @@ -1,4 +1,5 @@ module.exports = { - 5: '0x1104d8e1f4499acbabbcd55c9a6c957e1f881318', - 11155111: '0x1104D8E1F4499ACbaBBcD55c9A6C957E1F881318', + 5: '0x08717c193f63E456971a4098f8e0A3eA8c9CA1A5', + 17000: '0x1104D8E1F4499ACbaBBcD55c9A6C957E1F881318', + 11155111: '0xCF8EbAd621778b3Ea973Dd12a15b6c90bC14bD3C', } diff --git a/source/batch-call/package.json b/source/batch-call/package.json index 7baa7c10a..d9550df87 100644 --- a/source/batch-call/package.json +++ b/source/batch-call/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/batch-call", - "version": "4.1.0-beta.0", + "version": "4.1.0-beta.1", "description": "Batch balance, allowance, order validity checks", "license": "MIT", "repository": { @@ -27,11 +27,11 @@ }, "dependencies": { "@openzeppelin/contracts": "^4.8.3", - "@airswap/swap": "4.1.3-beta.0", - "@airswap/swap-erc20": "4.1.7-beta.0" + "@airswap/swap": "4.1.3-beta.1", + "@airswap/swap-erc20": "4.1.7-beta.1" }, "devDependencies": { - "@airswap/constants": "4.1.9-beta.0", + "@airswap/constants": "4.1.9-beta.2", "@airswap/utils": "4.1.12", "prompt-confirm": "^2.0.4" }, diff --git a/source/batch-call/test/BatchCall.js b/source/batch-call/test/BatchCall.js index 2ddbad0ff..77d50cfb2 100644 --- a/source/batch-call/test/BatchCall.js +++ b/source/batch-call/test/BatchCall.js @@ -179,7 +179,7 @@ describe('BatchCall Integration', () => { ] const orderValidities = await batchCall .connect(sender) - .checkOrders(sender.address, orders, swap.address) + .getOrdersValid(sender.address, orders, swap.address) expect(orderValidities.toString()).to.equal([true, true, true].toString()) }) @@ -193,7 +193,7 @@ describe('BatchCall Integration', () => { ] const orderValidities = await batchCall .connect(sender) - .checkOrdersERC20(sender.address, ERC20orders, swapERC20.address) + .getOrdersValidERC20(sender.address, ERC20orders, swapERC20.address) expect(orderValidities.toString()).to.equal([true, true, true].toString()) }) @@ -207,7 +207,7 @@ describe('BatchCall Integration', () => { ] const orderValidities = await batchCall .connect(sender) - .checkOrders(sender.address, orders, swap.address) + .getOrdersValid(sender.address, orders, swap.address) expect(orderValidities.toString()).to.equal( [false, false, false].toString() ) @@ -223,10 +223,110 @@ describe('BatchCall Integration', () => { ] const orderValidities = await batchCall .connect(sender) - .checkOrdersERC20(sender.address, ERC20orders, swapERC20.address) + .getOrdersValidERC20(sender.address, ERC20orders, swapERC20.address) expect(orderValidities.toString()).to.equal( [false, false, false].toString() ) }) }) + + describe('checks nonce validity', () => { + it('unused nonce are marked unused', async () => { + await setUpAllowances(DEFAULT_BALANCE, DEFAULT_BALANCE) + await setUpBalances(DEFAULT_BALANCE, DEFAULT_BALANCE) + const orders = [ + await createSignedOrder({}, signer), + await createSignedOrder({}, signer), + await createSignedOrder({}, signer), + ] + const orderValidities = await batchCall + .connect(sender) + .getNoncesUsed( + [signer.address, signer.address, signer.address], + [orders[0].nonce, orders[1].nonce, orders[2].nonce], + swap.address + ) + expect(orderValidities.toString()).to.equal( + [false, false, false].toString() + ) + }) + + it('unused nonce ERC20 are marked unused', async () => { + await setUpAllowances(DEFAULT_BALANCE, DEFAULT_BALANCE) + await setUpBalances(DEFAULT_BALANCE, DEFAULT_BALANCE) + const ERC20orders = [ + await createSignedOrderERC20({}, signer), + await createSignedOrderERC20({}, signer), + await createSignedOrderERC20({}, signer), + ] + const orderValidities = await batchCall + .connect(sender) + .getNoncesUsed( + [signer.address, signer.address, signer.address], + [ERC20orders[0].nonce, ERC20orders[1].nonce, ERC20orders[2].nonce], + swapERC20.address + ) + expect(orderValidities.toString()).to.equal( + [false, false, false].toString() + ) + }) + + it('used nonces are marked as used', async () => { + const usedNonce = 0 + const unusedNonce = 1 + const order = await createSignedOrder( + { + nonce: usedNonce, + }, + signer + ) + await swap.connect(sender).swap(sender.address, 0, order) + const orderValidities = await batchCall + .connect(sender) + .getNoncesUsed( + [signer.address, signer.address, signer.address], + [usedNonce, usedNonce, unusedNonce], + swap.address + ) + expect(orderValidities.toString()).to.equal( + [true, true, false].toString() + ) + }) + + it('used nonces ERC20 are marked used', async () => { + const usedNonce = 0 + const unusedNonce = 1 + const ERC20order = await createSignedOrderERC20( + { + nonce: usedNonce, + }, + signer + ) + await swapERC20 + .connect(sender) + .swap( + sender.address, + ERC20order.nonce, + ERC20order.expiry, + ERC20order.signerWallet, + ERC20order.signerToken, + ERC20order.signerAmount, + ERC20order.senderToken, + ERC20order.senderAmount, + ERC20order.v, + ERC20order.r, + ERC20order.s + ) + const orderValidities = await batchCall + .connect(sender) + .getNoncesUsed( + [signer.address, signer.address, signer.address], + [usedNonce, usedNonce, unusedNonce], + swapERC20.address + ) + expect(orderValidities.toString()).to.equal( + [true, true, false].toString() + ) + }) + }) }) diff --git a/source/pool/deploys-blocks.js b/source/pool/deploys-blocks.js index 490b26825..35c35cd64 100644 --- a/source/pool/deploys-blocks.js +++ b/source/pool/deploys-blocks.js @@ -9,6 +9,7 @@ module.exports = { 97: 34150670, 137: 48645401, 8453: 5180096, + 17000: 731316, 42161: 140046382, 43113: 26720218, 43114: 36367783, diff --git a/source/pool/deploys.js b/source/pool/deploys.js index e7896c009..14886aef8 100644 --- a/source/pool/deploys.js +++ b/source/pool/deploys.js @@ -9,6 +9,7 @@ module.exports = { 97: '0xbbcec987E4C189FCbAB0a2534c77b3ba89229F11', 137: '0xbbcec987E4C189FCbAB0a2534c77b3ba89229F11', 8453: '0xbbcec987E4C189FCbAB0a2534c77b3ba89229F11', + 17000: '0xc0799BA9b7bdBA773F77943a9FD448d188345081', 42161: '0xbbcec987E4C189FCbAB0a2534c77b3ba89229F11', 43113: '0xbbcec987E4C189FCbAB0a2534c77b3ba89229F11', 43114: '0xbbcec987E4C189FCbAB0a2534c77b3ba89229F11', diff --git a/source/pool/package.json b/source/pool/package.json index 920a22fb5..7c28c0e2d 100644 --- a/source/pool/package.json +++ b/source/pool/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/pool", - "version": "4.1.4", + "version": "4.1.5-beta.0", "description": "AirSwap: Withdrawable Token Pool", "license": "MIT", "repository": { @@ -31,9 +31,9 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "4.1.9-beta.0", + "@airswap/constants": "4.1.9-beta.2", "@airswap/metadata": "4.1.15", - "@airswap/types": "4.1.3", + "@airswap/types": "4.1.4", "@airswap/utils": "4.1.12", "prompt-confirm": "^2.0.4" }, diff --git a/source/registry/contracts/Registry.sol b/source/registry/contracts/Registry.sol index dcd168c28..922b7d68e 100644 --- a/source/registry/contracts/Registry.sol +++ b/source/registry/contracts/Registry.sol @@ -85,6 +85,7 @@ contract Registry { msg.sender ]; uint256 _protocolListLength = supportedProtocolList.length(); + bytes4[] memory _protocolList = new bytes4[](_protocolListLength); for (uint256 i = _protocolListLength; i > 0; ) { @@ -98,6 +99,7 @@ contract Registry { msg.sender ]; uint256 _tokenListLength = supportedTokenList.length(); + address[] memory _tokenList = new address[](_tokenListLength); for (uint256 i = _tokenListLength; i > 0; ) { @@ -108,6 +110,10 @@ contract Registry { stakersByToken[_token].remove(msg.sender); } + string memory _url = stakerServerURLs[msg.sender]; + + delete stakerServerURLs[msg.sender]; + uint256 _transferAmount = stakingCost + (supportCost * _protocolListLength) + (supportCost * _tokenListLength); @@ -115,12 +121,7 @@ contract Registry { stakingToken.safeTransfer(msg.sender, _transferAmount); } - emit UnsetServer( - msg.sender, - stakerServerURLs[msg.sender], - _protocolList, - _tokenList - ); + emit UnsetServer(msg.sender, _url, _protocolList, _tokenList); } /** diff --git a/source/registry/deploys-blocks.js b/source/registry/deploys-blocks.js index 77203be33..741e565dc 100644 --- a/source/registry/deploys-blocks.js +++ b/source/registry/deploys-blocks.js @@ -1,6 +1,6 @@ module.exports = { 1: 18262901, - 5: 9838505, + 5: 10373345, 30: 5709710, 31: 4368351, 40: 305721452, @@ -9,6 +9,7 @@ module.exports = { 97: 34026519, 137: 48480674, 8453: 4993843, + 17000: 735685, 42161: 138763545, 43113: 26588430, 43114: 36195417, @@ -17,5 +18,5 @@ module.exports = { 80001: 40977305, 84531: 10791692, 421613: 46289808, - 11155111: 4506628, + 11155111: 5084838, } diff --git a/source/registry/deploys.js b/source/registry/deploys.js index c591782fc..dada8a2da 100644 --- a/source/registry/deploys.js +++ b/source/registry/deploys.js @@ -1,6 +1,6 @@ module.exports = { 1: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', - 5: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', + 5: '0xaA6da142e21596e26952E47106D1e0fBA523E6d3', 30: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', 31: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', 40: '0x0A655E762238Fee539338F433087A3B9dAdD798b', @@ -9,6 +9,7 @@ module.exports = { 97: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', 137: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', 8453: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', + 17000: '0x08717c193f63E456971a4098f8e0A3eA8c9CA1A5', 42161: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', 43113: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', 43114: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', @@ -17,5 +18,5 @@ module.exports = { 80001: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', 84531: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', 421613: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', - 11155111: '0x339Eb75235CBf823C6352D529A258226ecF59cfF', + 11155111: '0x558cdaBD072f88cbC4b6b0A1d86dc4EF47a05565', } diff --git a/source/registry/package.json b/source/registry/package.json index 8b275d5e7..23c9279d7 100644 --- a/source/registry/package.json +++ b/source/registry/package.json @@ -32,7 +32,7 @@ "access": "public" }, "devDependencies": { - "@airswap/constants": "4.1.9-beta.0", + "@airswap/constants": "4.1.9-beta.2", "@airswap/utils": "4.1.12", "prompt-confirm": "^2.0.4" } diff --git a/source/registry/test/Registry.js b/source/registry/test/Registry.js index 0e42ebf0e..c461e45a3 100644 --- a/source/registry/test/Registry.js +++ b/source/registry/test/Registry.js @@ -459,6 +459,9 @@ describe('Registry Unit', () => { [token1.address, token2.address, token3.address] ) + const serverUrl = await registry.stakerServerURLs(account1.address) + expect(serverUrl).to.equal('') + const protocols = await registry.getProtocolsForStaker(account1.address) expect(protocols.length).to.equal(0) diff --git a/source/staking/deploys-blocks.js b/source/staking/deploys-blocks.js index c9e43a672..d8744cfc5 100644 --- a/source/staking/deploys-blocks.js +++ b/source/staking/deploys-blocks.js @@ -1,4 +1,5 @@ module.exports = { 5: 10351547, + 17000: 731342, 11155111: 5059353, } diff --git a/source/staking/deploys.js b/source/staking/deploys.js index 0705d1544..7ea9074b1 100644 --- a/source/staking/deploys.js +++ b/source/staking/deploys.js @@ -1,4 +1,5 @@ module.exports = { 5: '0x147644781C1ccb078738ecced7B247AF0bD5Aa8b', + 17000: '0xb0B0Aae54B4336B359201EDfB45C4dB4879e55a5', 11155111: '0x147644781C1ccb078738ecced7B247AF0bD5Aa8b', } diff --git a/source/staking/package.json b/source/staking/package.json index abb7e8781..90d0cf1ba 100644 --- a/source/staking/package.json +++ b/source/staking/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/staking", - "version": "4.1.0-beta.0", + "version": "4.1.0-beta.1", "description": "AirSwap: Stake Tokens", "license": "MIT", "repository": { diff --git a/source/staking/scripts/config.js b/source/staking/scripts/config.js index e0129ff4f..37595b72b 100644 --- a/source/staking/scripts/config.js +++ b/source/staking/scripts/config.js @@ -14,6 +14,13 @@ module.exports = { stakingDuration: 60 * 60, // 1 HOUR minDurationChangeDelay: 60, // 1 MINUTE }, + [ChainIds.HOLESKY]: { + name: 'Staked AST (Holesky)', + symbol: 'sAST (Holesky)', + stakingToken: stakingTokenAddresses[ChainIds.HOLESKY], + stakingDuration: 60 * 60, // 1 HOUR + minDurationChangeDelay: 60, // 1 MINUTE + }, [ChainIds.SEPOLIA]: { name: 'Staked AST (Sepolia)', symbol: 'sAST (Sepolia)', diff --git a/source/swap-erc20/deploys-blocks.js b/source/swap-erc20/deploys-blocks.js index e6d00e7b8..21fd8984c 100644 --- a/source/swap-erc20/deploys-blocks.js +++ b/source/swap-erc20/deploys-blocks.js @@ -1,4 +1,5 @@ module.exports = { 5: 10357890, + 17000: 731348, 11155111: 5067066, } diff --git a/source/swap-erc20/deploys.js b/source/swap-erc20/deploys.js index 6ca1e2a60..20f7d9594 100644 --- a/source/swap-erc20/deploys.js +++ b/source/swap-erc20/deploys.js @@ -1,4 +1,5 @@ module.exports = { 5: '0xb0B0Aae54B4336B359201EDfB45C4dB4879e55a5', + 17000: '0x9EE8794d95Be7778624127345B16B4434199E93A', 11155111: '0xb0B0Aae54B4336B359201EDfB45C4dB4879e55a5', } diff --git a/source/swap-erc20/package.json b/source/swap-erc20/package.json index fd4c90780..4c06e4b1a 100644 --- a/source/swap-erc20/package.json +++ b/source/swap-erc20/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/swap-erc20", - "version": "4.1.7-beta.0", + "version": "4.1.7-beta.1", "description": "AirSwap: Atomic ERC20 Token Swap", "license": "MIT", "repository": { @@ -29,9 +29,9 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "4.1.9-beta.0", - "@airswap/staking": "4.1.0-beta.0", - "@airswap/types": "4.1.3", + "@airswap/constants": "4.1.9-beta.2", + "@airswap/staking": "4.1.0-beta.1", + "@airswap/types": "4.1.4", "@airswap/utils": "4.1.12", "prompt-confirm": "^2.0.4" }, diff --git a/source/swap/contracts/Swap.sol b/source/swap/contracts/Swap.sol index 309c98fa9..5f3b237d1 100644 --- a/source/swap/contracts/Swap.sol +++ b/source/swap/contracts/Swap.sol @@ -351,7 +351,7 @@ contract Swap is ISwap, Ownable2Step, EIP712 { errors[errCount] = "SenderBalanceLow"; errCount++; } - if (!senderTokenAdapter.hasValidParams(order.signer)) { + if (!senderTokenAdapter.hasValidParams(sender)) { errors[errCount] = "AmountOrIDInvalid"; errCount++; } diff --git a/source/swap/deploys-adapters-blocks.js b/source/swap/deploys-adapters-blocks.js index db72feee5..ad96019a6 100644 --- a/source/swap/deploys-adapters-blocks.js +++ b/source/swap/deploys-adapters-blocks.js @@ -1,4 +1,5 @@ module.exports = { 5: [10352102, 10352114, 10352115], + 17000: [731307, 731309, 731311], 11155111: [5060109, 5060110, 5060111], } diff --git a/source/swap/deploys-adapters.js b/source/swap/deploys-adapters.js index 421d9d47c..8eab066f3 100644 --- a/source/swap/deploys-adapters.js +++ b/source/swap/deploys-adapters.js @@ -4,6 +4,11 @@ module.exports = { '0x942f3f88d1B1dC9566e45b57D4453F56B25a34fC', '0xc0799BA9b7bdBA773F77943a9FD448d188345081', ], + 17000: [ + '0x147644781C1ccb078738ecced7B247AF0bD5Aa8b', + '0x49842b86486ddBb862f5b6C18617faA866399B4f', + '0x942f3f88d1B1dC9566e45b57D4453F56B25a34fC', + ], 11155111: [ '0x49842b86486ddBb862f5b6C18617faA866399B4f', '0x942f3f88d1B1dC9566e45b57D4453F56B25a34fC', diff --git a/source/swap/deploys-blocks.js b/source/swap/deploys-blocks.js index acd9bc3bb..84e034461 100644 --- a/source/swap/deploys-blocks.js +++ b/source/swap/deploys-blocks.js @@ -1,4 +1,5 @@ module.exports = { - 5: 10352126, - 11155111: 5060116, + 5: 10369698, + 17000: 731329, + 11155111: 5080781, } diff --git a/source/swap/deploys.js b/source/swap/deploys.js index ecfd9ac5b..227df6ca7 100644 --- a/source/swap/deploys.js +++ b/source/swap/deploys.js @@ -1,4 +1,5 @@ module.exports = { - 5: '0x04a885E71F1E04b7493F8cfC02c565944707710A', - 11155111: '0x04a885E71F1E04b7493F8cfC02c565944707710A', + 5: '0x558cdaBD072f88cbC4b6b0A1d86dc4EF47a05565', + 17000: '0x04a885E71F1E04b7493F8cfC02c565944707710A', + 11155111: '0x08717c193f63E456971a4098f8e0A3eA8c9CA1A5', } diff --git a/source/swap/package.json b/source/swap/package.json index 2176f23c3..840ea907c 100644 --- a/source/swap/package.json +++ b/source/swap/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/swap", - "version": "4.1.3-beta.0", + "version": "4.1.3-beta.1", "description": "AirSwap: Atomic Token Swap", "license": "MIT", "repository": { @@ -32,8 +32,8 @@ "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "4.1.9-beta.0", - "@airswap/types": "4.1.3", + "@airswap/constants": "4.1.9-beta.2", + "@airswap/types": "4.1.4", "@airswap/utils": "4.1.12", "@nomicfoundation/hardhat-network-helpers": "^1.0.7" }, diff --git a/source/swap/test/Swap.js b/source/swap/test/Swap.js index 7f5073ca4..48edc9323 100644 --- a/source/swap/test/Swap.js +++ b/source/swap/test/Swap.js @@ -601,7 +601,19 @@ describe('Swap Unit', () => { it('check succeeds', async () => { await erc20token.mock.allowance.returns(DEFAULT_AMOUNT + PROTOCOL_FEE) await erc20token.mock.balanceOf.returns(DEFAULT_AMOUNT + PROTOCOL_FEE) - const order = await createSignedOrder({}, signer) + await erc721token.mock.getApproved.returns(swap.address) + await erc721token.mock.ownerOf.returns(signer.address) + const order = await createSignedOrder( + { + signer: { + kind: TokenKinds.ERC721, + token: erc721token.address, + id: '1', + amount: '0', + }, + }, + signer + ) const errors = await swap.check(sender.address, order) expect(errors[1]).to.equal(0) }) diff --git a/source/wrapper/deploys-blocks-weth.js b/source/wrapper/deploys-blocks-weth.js index 178cda694..4b14a0d22 100644 --- a/source/wrapper/deploys-blocks-weth.js +++ b/source/wrapper/deploys-blocks-weth.js @@ -8,6 +8,7 @@ module.exports = { 56: 149268, 97: 1585924, 137: 4931456, + 17000: 28838, 42161: 55, 43113: 352, 43114: 820, diff --git a/source/wrapper/deploys-blocks.js b/source/wrapper/deploys-blocks.js index 84be9e95c..14a66ca78 100644 --- a/source/wrapper/deploys-blocks.js +++ b/source/wrapper/deploys-blocks.js @@ -9,6 +9,7 @@ module.exports = { 97: 34057600, 137: 48518130, 8453: 5045089, + 17000: 731427, 42161: 139083280, 43113: 26625835, 43114: 36240486, diff --git a/source/wrapper/deploys-weth.js b/source/wrapper/deploys-weth.js index 9a97f143c..a235cb63b 100644 --- a/source/wrapper/deploys-weth.js +++ b/source/wrapper/deploys-weth.js @@ -9,6 +9,7 @@ module.exports = { 97: '0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd', 137: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', 8453: '0x4200000000000000000000000000000000000006', + 17000: '0x94373a4919b3240d86ea41593d5eba789fef3848', 42161: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', 43113: '0xd9d01a9f7c810ec035c0e42cb9e80ef44d7f8692', 43114: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', diff --git a/source/wrapper/deploys.js b/source/wrapper/deploys.js index 7c1f776bc..69ff1201e 100644 --- a/source/wrapper/deploys.js +++ b/source/wrapper/deploys.js @@ -9,6 +9,7 @@ module.exports = { 97: '0x88d0D1a1472307d1853809C3aA455B1B76c9bCfe', 137: '0x88d0D1a1472307d1853809C3aA455B1B76c9bCfe', 8453: '0x88d0D1a1472307d1853809C3aA455B1B76c9bCfe', + 17000: '0xCF8EbAd621778b3Ea973Dd12a15b6c90bC14bD3C', 42161: '0x88d0D1a1472307d1853809C3aA455B1B76c9bCfe', 43113: '0x88d0D1a1472307d1853809C3aA455B1B76c9bCfe', 43114: '0x88d0D1a1472307d1853809C3aA455B1B76c9bCfe', diff --git a/source/wrapper/package.json b/source/wrapper/package.json index ee92d9945..99f5ea114 100644 --- a/source/wrapper/package.json +++ b/source/wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/wrapper", - "version": "4.1.6-beta.0", + "version": "4.1.6-beta.1", "description": "AirSwap: Wrap and Unwrap Native Tokens", "license": "MIT", "repository": { @@ -28,13 +28,13 @@ "owners": "hardhat run ./scripts/owner.js" }, "dependencies": { - "@airswap/swap-erc20": "4.1.7-beta.0", + "@airswap/swap-erc20": "4.1.7-beta.1", "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { - "@airswap/constants": "4.1.9-beta.0", + "@airswap/constants": "4.1.9-beta.2", "@airswap/utils": "4.1.12", - "@airswap/types": "4.1.3", + "@airswap/types": "4.1.4", "@uniswap/v2-periphery": "^1.1.0-beta.0", "prompt-confirm": "^2.0.4" }, diff --git a/tools/constants/index.ts b/tools/constants/index.ts index 0684f6e37..05b12df9c 100644 --- a/tools/constants/index.ts +++ b/tools/constants/index.ts @@ -18,6 +18,7 @@ export enum ChainIds { BSCTESTNET = 97, POLYGON = 137, BASE = 8453, + HOLESKY = 17000, HARDHAT = 31337, ARBITRUM = 42161, FUJI = 43113, @@ -47,6 +48,7 @@ export const testnets: number[] = [ ChainIds.RSKTESTNET, ChainIds.TELOSTESTNET, ChainIds.BSCTESTNET, + ChainIds.HOLESKY, ChainIds.HARDHAT, ChainIds.FUJI, ChainIds.LINEAGOERLI, @@ -67,6 +69,7 @@ export const chainLabels: Record = { [ChainIds.BSCTESTNET]: 'BSCTESTNET', [ChainIds.POLYGON]: 'POLYGON', [ChainIds.BASE]: 'BASE', + [ChainIds.HOLESKY]: 'HOLESKY', [ChainIds.HARDHAT]: 'HARDHAT', [ChainIds.ARBITRUM]: 'ARBITRUM', [ChainIds.FUJI]: 'FUJI', @@ -90,6 +93,7 @@ export const chainNames: Record = { [ChainIds.BSCTESTNET]: 'BSC Testnet', [ChainIds.POLYGON]: 'Polygon', [ChainIds.BASE]: 'Base', + [ChainIds.HOLESKY]: 'Holesky', [ChainIds.HARDHAT]: 'Hardhat', [ChainIds.ARBITRUM]: 'Arbitrum', [ChainIds.FUJI]: 'Fuji Testnet', @@ -113,6 +117,7 @@ export const chainCurrencies: Record = { [ChainIds.BSCTESTNET]: 'BNB', [ChainIds.POLYGON]: 'MATIC', [ChainIds.BASE]: 'ETH', + [ChainIds.HOLESKY]: 'HoleskyETH', [ChainIds.HARDHAT]: 'ETH', [ChainIds.ARBITRUM]: 'AETH', [ChainIds.FUJI]: 'AVAX', @@ -136,6 +141,7 @@ export const currencyIcons: Record = { [ChainIds.BSCTESTNET]: ChainIds.BSC, [ChainIds.POLYGON]: ChainIds.POLYGON, [ChainIds.BASE]: ChainIds.MAINNET, + [ChainIds.HOLESKY]: ChainIds.MAINNET, [ChainIds.ARBITRUM]: ChainIds.MAINNET, [ChainIds.FUJI]: ChainIds.AVALANCHE, [ChainIds.AVALANCHE]: ChainIds.AVALANCHE, @@ -148,8 +154,8 @@ export const currencyIcons: Record = { } export const apiUrls: Record = { - [ChainIds.MAINNET]: 'https://mainnet.infura.io/v3', - [ChainIds.GOERLI]: 'https://goerli.infura.io/v3', + [ChainIds.MAINNET]: 'https://ethereum.publicnode.com', + [ChainIds.GOERLI]: 'https://ethereum-goerli.publicnode.com', [ChainIds.RSK]: 'https://public-node.rsk.co', [ChainIds.RSKTESTNET]: 'https://public-node.testnet.rsk.co', [ChainIds.TELOS]: 'https://mainnet.telos.net/evm', @@ -158,15 +164,16 @@ export const apiUrls: Record = { [ChainIds.BSCTESTNET]: 'https://data-seed-prebsc-1-s1.binance.org:8545', [ChainIds.POLYGON]: 'https://polygon-rpc.com', [ChainIds.BASE]: 'https://mainnet.base.org', + [ChainIds.HOLESKY]: 'https://ethereum-holesky.publicnode.com', [ChainIds.ARBITRUM]: 'https://arb1.arbitrum.io/rpc', [ChainIds.FUJI]: 'https://api.avax-test.network/ext/bc/C/rpc', [ChainIds.AVALANCHE]: 'https://api.avax.network/ext/bc/C/rpc', [ChainIds.LINEAGOERLI]: 'https://rpc.goerli.linea.build', - [ChainIds.LINEA]: 'https://linea-mainnet.infura.io/v3', + [ChainIds.LINEA]: 'https://rpc.linea.build', [ChainIds.MUMBAI]: 'https://rpc-mumbai.maticvigil.com', [ChainIds.BASEGOERLI]: 'https://goerli.base.org', [ChainIds.ARBITRUMGOERLI]: 'https://goerli-rollup.arbitrum.io/rpc', - [ChainIds.SEPOLIA]: 'https://sepolia.infura.io/v3', + [ChainIds.SEPOLIA]: 'https://ethereum-sepolia.publicnode.com', } export const explorerUrls: Record = { @@ -180,6 +187,7 @@ export const explorerUrls: Record = { [ChainIds.BSCTESTNET]: 'https://testnet.bscscan.com', [ChainIds.POLYGON]: 'https://polygonscan.com', [ChainIds.BASE]: 'https://basescan.org', + [ChainIds.HOLESKY]: 'https://holesky.etherscan.io', [ChainIds.ARBITRUM]: 'https://arbiscan.io', [ChainIds.FUJI]: 'https://testnet.snowtrace.io', [ChainIds.AVALANCHE]: 'https://snowtrace.io', @@ -194,6 +202,7 @@ export const explorerUrls: Record = { export const explorerApiUrls: Record = { [ChainIds.RSK]: 'https://rootstock.blockscout.com/api', [ChainIds.RSKTESTNET]: 'https://rootstock-testnet.blockscout.com/api', + [ChainIds.HOLESKY]: 'https://api-holesky.etherscan.io/api', [ChainIds.LINEAGOERLI]: 'https://api-testnet.lineascan.build/api', [ChainIds.LINEA]: 'https://api.lineascan.build/api', [ChainIds.BASEGOERLI]: 'https://api-goerli.basescan.org/api', @@ -205,6 +214,7 @@ export const stakingTokenAddresses: Record = { [ChainIds.MAINNET]: '0x27054b13b1b798b345b591a4d22e6562d47ea75a', [ChainIds.GOERLI]: '0x23474e94e27ac59eec4411ce96c322add8833680', [ChainIds.SEPOLIA]: '0x517d482f686f11b922eed764692f2b42663ce2fa', + [ChainIds.HOLESKY]: '0x71070c5607358fc25E3B4aaf4FB0a580c190252a', } export const ownerAddresses: Record = { diff --git a/tools/constants/package.json b/tools/constants/package.json index 1340b6cfb..d22ce8bcf 100644 --- a/tools/constants/package.json +++ b/tools/constants/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/constants", - "version": "4.1.9-beta.0", + "version": "4.1.9-beta.2", "description": "AirSwap: Constants for Developers", "repository": { "type": "git", diff --git a/tools/libraries/package.json b/tools/libraries/package.json index 7da54717d..eabb7709c 100644 --- a/tools/libraries/package.json +++ b/tools/libraries/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/libraries", - "version": "4.1.19-beta.0", + "version": "4.1.19-beta.1", "description": "AirSwap: Libraries for Developers", "repository": { "type": "git", @@ -26,17 +26,17 @@ "test:ci": "yarn test" }, "dependencies": { - "@airswap/batch-call": "4.1.0-beta.0", - "@airswap/constants": "4.1.9-beta.0", + "@airswap/batch-call": "4.1.0-beta.1", + "@airswap/constants": "4.1.9-beta.2", "@airswap/jsonrpc-client-websocket": "0.0.1", "@airswap/registry": "4.1.3", - "@airswap/pool": "4.1.4", - "@airswap/staking": "4.1.0-beta.0", - "@airswap/swap": "4.1.3-beta.0", - "@airswap/swap-erc20": "4.1.7-beta.0", - "@airswap/types": "4.1.3", + "@airswap/pool": "4.1.5-beta.0", + "@airswap/staking": "4.1.0-beta.1", + "@airswap/swap": "4.1.3-beta.1", + "@airswap/swap-erc20": "4.1.7-beta.1", + "@airswap/types": "4.1.4", "@airswap/utils": "4.1.12", - "@airswap/wrapper": "4.1.6-beta.0", + "@airswap/wrapper": "4.1.6-beta.1", "browser-or-node": "^2.1.1", "ethers": "^5.6.9", "jayson": "^4.0.0", diff --git a/tools/libraries/src/Server.ts b/tools/libraries/src/Server.ts index 7b6928666..c47e992d9 100644 --- a/tools/libraries/src/Server.ts +++ b/tools/libraries/src/Server.ts @@ -23,11 +23,11 @@ import { OrderERC20, Pricing, ServerOptions, - OrderResponse, SupportedProtocolInfo, OrderFilter, - SortOrder, - SortField, + OrderResponse, + Indexes, + Direction, } from '@airswap/types' import { ChainIds, Protocols, protocolNames } from '@airswap/constants' @@ -40,80 +40,8 @@ if (!isBrowser) { }) } -const REQUEST_TIMEOUT = 4000 - -export function toSortOrder(key: string): SortOrder | undefined { - if (typeof key !== 'string') { - return undefined - } - if (key.toUpperCase() === SortOrder.ASC) { - return SortOrder.ASC - } - if (key.toUpperCase() === SortOrder.DESC) { - return SortOrder.DESC - } - - return undefined -} - -export function toSortField(key: string): SortField | undefined { - if (typeof key !== 'string') { - return undefined - } - key = key.toUpperCase() - if (Object.keys(SortField).includes(key)) { - return key as SortField - } - - return undefined -} - -export abstract class IndexedOrderError extends Error { - public code!: number - public constructor(message: string) { - super(message) - this.message = message - } -} -export class ErrorResponse { - public code: number - public message: string - public constructor(code: number, message: string) { - this.code = code - this.message = message - } -} -export class SuccessResponse { - public message: string - public constructor(message: string) { - this.message = message - } -} -export class JsonRpcResponse { - public id: string - public result: - | OrderResponse - | ErrorResponse - | SuccessResponse - | undefined - private jsonrpc = '2.0' - - public constructor( - id: string, - result: - | OrderResponse - | IndexedOrderError - | SuccessResponse - | undefined - ) { - this.id = id - if (result instanceof Error) { - this.result = new ErrorResponse(result.code, result.message) - } else { - this.result = result - } - } -} +const DEFAULT_LIMIT = 10 +const DEFAULT_TIMEOUT = 4000 export interface ServerEvents { 'pricing-erc20': (pricing: Pricing[]) => void @@ -331,12 +259,10 @@ export class Server extends TypedEmitter { /** * Protocols.IndexingERC20 */ - public async addOrderERC20( - fullOrder: FullOrderERC20 - ): Promise { + public async addOrderERC20(fullOrder: FullOrderERC20): Promise { try { return Promise.resolve( - (await this.httpCall('addOrderERC20', [fullOrder])) as SuccessResponse + (await this.httpCall('addOrderERC20', [fullOrder])) as boolean ) } catch (err) { return Promise.reject(err) @@ -345,10 +271,10 @@ export class Server extends TypedEmitter { public async getOrdersERC20( orderFilter: OrderFilter, - offset: number, - limit: number, - sortField?: SortField, - sortOrder?: SortOrder + offset = 0, + limit = DEFAULT_LIMIT, + by = Indexes.EXPIRY, + direction = Direction.ASC ): Promise> { try { return Promise.resolve( @@ -356,8 +282,8 @@ export class Server extends TypedEmitter { { ...this.toBigIntJson(orderFilter) }, offset, limit, - sortField, - sortOrder, + by, + direction, ])) as OrderResponse ) } catch (err) { @@ -368,10 +294,10 @@ export class Server extends TypedEmitter { /** * Protocols.Indexing */ - public async addOrder(order: FullOrder): Promise { + public async addOrder(order: FullOrder): Promise { try { return Promise.resolve( - (await this.httpCall('addOrder', [order])) as SuccessResponse + (await this.httpCall('addOrder', [order])) as boolean ) } catch (err) { return Promise.reject(err) @@ -380,10 +306,10 @@ export class Server extends TypedEmitter { public async getOrders( orderFilter: OrderFilter, - offset: number, - limit: number, - sortField?: SortField, - sortOrder?: SortOrder + offset = 0, + limit = DEFAULT_LIMIT, + by = Indexes.NONCE, + direction = Direction.ASC ): Promise> { try { return Promise.resolve( @@ -391,8 +317,8 @@ export class Server extends TypedEmitter { { ...this.toBigIntJson(orderFilter) }, offset, limit, - sortField, - sortOrder, + by, + direction, ])) as OrderResponse ) } catch (err) { @@ -419,7 +345,7 @@ export class Server extends TypedEmitter { } } - private _init(initializeTimeout: number = REQUEST_TIMEOUT) { + private _init(initializeTimeout: number = DEFAULT_TIMEOUT) { if (this.transportProtocol === 'http') { return this._initHTTPClient(this.locator) } else { @@ -435,7 +361,7 @@ export class Server extends TypedEmitter { hostname: parsedUrl.hostname, path: parsedUrl.path, port: parsedUrl.port, - timeout: REQUEST_TIMEOUT, + timeout: DEFAULT_TIMEOUT, } if (!clientOnly) { @@ -483,7 +409,7 @@ export class Server extends TypedEmitter { (resolve, reject) => { this.webSocketClient = new JsonRpcWebsocket( url.format(locator), - REQUEST_TIMEOUT, + DEFAULT_TIMEOUT, (error: JsonRpcError) => { if (!this.isInitialized) { reject(error) diff --git a/tools/libraries/test/Server.test.ts b/tools/libraries/test/Server.test.ts index 7cde47e29..aac3767bd 100644 --- a/tools/libraries/test/Server.test.ts +++ b/tools/libraries/test/Server.test.ts @@ -16,7 +16,6 @@ import { import { ADDRESS_ZERO, ChainIds, Protocols } from '@airswap/constants' import { Server } from '../index' -import { toSortField, toSortOrder } from '../index' import { addJSONRPCAssertions, createRequest, @@ -24,7 +23,7 @@ import { MockSocketServer, nextEvent, } from './test-utils' -import { OrderERC20, SortField, SortOrder, Levels } from '@airswap/types' +import { OrderERC20, Levels } from '@airswap/types' import { JsonRpcErrorCodes } from '@airswap/jsonrpc-client-websocket' addJSONRPCAssertions() @@ -93,8 +92,6 @@ function mockHttpServer(api) { params.swapContract, ChainIds.SEPOLIA )), - chainId: ChainIds.SEPOLIA, - swapContract: params.swapContract, } break case 'getOrdersERC20': @@ -102,27 +99,36 @@ function mockHttpServer(api) { res = { orders: [ { - order: { - ...order, - ...(await createOrderERC20Signature( - order, - wallet.privateKey, - ADDRESS_ZERO, - ChainIds.SEPOLIA - )), - chainId: ChainIds.SEPOLIA, - swapContract: ADDRESS_ZERO, - }, + ...order, + ...(await createOrderERC20Signature( + order, + wallet.privateKey, + ADDRESS_ZERO, + ChainIds.SEPOLIA + )), + chainId: ChainIds.SEPOLIA, + swapContract: ADDRESS_ZERO, }, ], } break case 'getOrders': - if (params[0]['offset']) { - expect(params[0]['page']).to.equal(0) - expect(params[0]['signerAddress']).to.equal(ADDRESS_ZERO) + order = createOrder({}) + res = { + orders: [ + { + ...order, + ...(await createOrderSignature( + order, + wallet.privateKey, + ADDRESS_ZERO, + ChainIds.SEPOLIA + )), + chainId: ChainIds.SEPOLIA, + swapContract: ADDRESS_ZERO, + }, + ], } - res = await forgeFullOrder() break case 'considerOrderERC20': res = true @@ -188,7 +194,7 @@ describe('HTTPServer', () => { 0, 100 ) - expect(isValidFullOrderERC20(result.orders[0].order)).to.be.true + expect(isValidFullOrderERC20(result.orders[0])).to.be.true }) fancy .nock('https://' + URL, mockHttpServer) @@ -201,7 +207,7 @@ describe('HTTPServer', () => { 0, 100 ) - expect(isValidFullOrder(result.orders[0].order)).to.be.true + expect(isValidFullOrder(result.orders[0])).to.be.true }) }) @@ -506,55 +512,3 @@ describe('WebSocketServer', () => { MockSocketServer.stopMockingWebSocket() }) }) - -describe('Indexing', () => { - it('sort field: should match value', () => { - expect(toSortField('SENDER_AMOUNT')).to.equal(SortField.SENDER_AMOUNT) - expect(toSortField('sender_amount')).to.equal(SortField.SENDER_AMOUNT) - expect(toSortField('SIGNER_AMOUNT')).to.equal(SortField.SIGNER_AMOUNT) - expect(toSortField('signer_amount')).to.equal(SortField.SIGNER_AMOUNT) - expect(toSortField('EXPIRY')).to.equal(SortField.EXPIRY) - expect(toSortField('expiry')).to.equal(SortField.EXPIRY) - expect(toSortField('nonce')).to.equal(SortField.NONCE) - expect(toSortField('NONCE')).to.equal(SortField.NONCE) - }) - - it('sort field: should return undefined', () => { - expect(toSortField('')).to.equal(undefined) - expect(toSortField('aze')).to.equal(undefined) - }) - - it('sort order: should match value', () => { - expect(toSortOrder('ASC')).to.equal(SortOrder.ASC) - expect(toSortOrder('asc')).to.equal(SortOrder.ASC) - expect(toSortOrder('DESC')).to.equal(SortOrder.DESC) - expect(toSortOrder('desc')).to.equal(SortOrder.DESC) - }) - - it('sort order: should return undefined', () => { - expect(toSortOrder('')).to.equal(undefined) - expect(toSortOrder('aze')).to.equal(undefined) - }) -}) - -async function forgeFullOrder() { - const unsignedOrder = createOrder({}) - const signature = await createOrderSignature( - unsignedOrder, - wallet.privateKey, - ADDRESS_ZERO, - 1 - ) - return { - orders: [ - { - order: { - ...unsignedOrder, - ...signature, - chainId: ChainIds.SEPOLIA, - swapContract: ADDRESS_ZERO, - }, - }, - ], - } -} diff --git a/tools/metadata/package.json b/tools/metadata/package.json index 2c6c65822..6859a20b3 100644 --- a/tools/metadata/package.json +++ b/tools/metadata/package.json @@ -20,9 +20,9 @@ "test": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts" }, "dependencies": { - "@airswap/constants": "4.1.9-beta.0", - "@airswap/types": "4.1.3", - "@airswap/wrapper": "4.1.6-beta.0", + "@airswap/constants": "4.1.9-beta.2", + "@airswap/types": "4.1.4", + "@airswap/wrapper": "4.1.6-beta.1", "@openzeppelin/contracts": "^4.8.3", "@uniswap/token-lists": "^1.0.0-beta.24", "ethers": "^5.6.9", diff --git a/tools/types/package.json b/tools/types/package.json index f0494a204..886ad8a50 100644 --- a/tools/types/package.json +++ b/tools/types/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/types", - "version": "4.1.3", + "version": "4.1.4", "description": "AirSwap: Types for Developers", "repository": { "type": "git", diff --git a/tools/types/src/server.ts b/tools/types/src/server.ts index 6e9f807a7..57641920c 100644 --- a/tools/types/src/server.ts +++ b/tools/types/src/server.ts @@ -10,27 +10,6 @@ export type SupportedProtocolInfo = { params?: any } -export enum SortField { - SIGNER_AMOUNT = 'SIGNER_AMOUNT', - SENDER_AMOUNT = 'SENDER_AMOUNT', - EXPIRY = 'EXPIRY', - NONCE = 'NONCE', -} - -export enum SortOrder { - ASC = 'ASC', - DESC = 'DESC', -} - -export type OrderFilter = { - chainId?: number - signerWallet?: string - signerToken?: string - signerId?: string - senderWallet?: string - senderToken?: string -} - export type OrderERC20Filter = { chainId?: number signerWallet?: string @@ -39,19 +18,28 @@ export type OrderERC20Filter = { senderToken?: string } -export type IndexedOrder = { - hash?: string | undefined - order: Type - addedOn: number +export type OrderFilter = { + signerId?: string +} & OrderERC20Filter + +export type OrderResponse = { + orders: OrderType[] + offset: number + limit: number } -export type OrderResponse = { - orders: Record> - pagination: Pagination +export enum Indexes { + NONCE = 'nonce', + EXPIRY = 'expiry', + SIGNER_WALLET = 'signerWallet', + SIGNER_TOKEN = 'signerToken', + SIGNER_AMOUNT = 'signerAmount', + SIGNER_ID = 'signerId', + SENDER_TOKEN = 'senderToken', + SENDER_AMOUNT = 'senderAmount', } -export type Pagination = { - limit: number - offset: number - total: number +export enum Direction { + ASC = 'asc', + DESC = 'desc', } diff --git a/tools/utils/package.json b/tools/utils/package.json index 1c0307d55..d75447185 100644 --- a/tools/utils/package.json +++ b/tools/utils/package.json @@ -21,8 +21,8 @@ "test:ci": "yarn test" }, "dependencies": { - "@airswap/constants": "4.1.9-beta.0", - "@airswap/types": "4.1.3", + "@airswap/constants": "4.1.9-beta.2", + "@airswap/types": "4.1.4", "@metamask/eth-sig-util": "^5.0.2", "bignumber.js": "^9.0.1", "ethereumjs-util": "^7.1.5",