@1inch/fusion-sdk 2.3.4 → 2.3.6-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/amount-calculator/amount-calculator.js +274 -78
- package/dist/cjs/amount-calculator/amount-calculator.spec.js +66 -0
- package/dist/cjs/amount-calculator/auction-calculator/README.md +59 -0
- package/dist/cjs/amount-calculator/auction-calculator/auction-calculator.js +183 -77
- package/dist/cjs/amount-calculator/auction-calculator/auction-calculator.spec.js +57 -0
- package/dist/cjs/amount-calculator/auction-calculator/index.js +17 -4
- package/dist/cjs/amount-calculator/index.js +34 -9
- package/dist/cjs/api/fusion-api.js +119 -48
- package/dist/cjs/api/index.js +24 -11
- package/dist/cjs/api/orders/index.js +19 -6
- package/dist/cjs/api/orders/order-api.spec.js +746 -0
- package/dist/cjs/api/orders/orders.api.js +245 -36
- package/dist/cjs/api/orders/orders.request.js +159 -63
- package/dist/cjs/api/orders/types.js +14 -6
- package/dist/cjs/api/ordersVersion.js +12 -6
- package/dist/cjs/api/pagination.js +62 -15
- package/dist/cjs/api/pagination.spec.js +29 -0
- package/dist/cjs/api/params.js +27 -21
- package/dist/cjs/api/quoter/index.js +22 -9
- package/dist/cjs/api/quoter/preset.js +87 -28
- package/dist/cjs/api/quoter/quote/index.js +19 -6
- package/dist/cjs/api/quoter/quote/order-params.js +63 -14
- package/dist/cjs/api/quoter/quote/quote.js +158 -94
- package/dist/cjs/api/quoter/quote/types.js +3 -2
- package/dist/cjs/api/quoter/quoter-custom-preset.request.js +118 -56
- package/dist/cjs/api/quoter/quoter-custom-preset.request.spec.js +131 -0
- package/dist/cjs/api/quoter/quoter.api.js +241 -28
- package/dist/cjs/api/quoter/quoter.api.spec.js +365 -0
- package/dist/cjs/api/quoter/quoter.request.js +94 -34
- package/dist/cjs/api/quoter/quoter.request.spec.js +111 -0
- package/dist/cjs/api/quoter/types.js +16 -6
- package/dist/cjs/api/relayer/index.js +19 -6
- package/dist/cjs/api/relayer/relayer.api.js +73 -18
- package/dist/cjs/api/relayer/relayer.api.spec.js +234 -0
- package/dist/cjs/api/relayer/relayer.request.js +71 -18
- package/dist/cjs/api/relayer/types.js +3 -2
- package/dist/cjs/api/types.js +3 -2
- package/dist/cjs/api-ext.js +17 -4
- package/dist/cjs/connector/blockchain/blockchain-provider.connector.js +3 -2
- package/dist/cjs/connector/blockchain/index.js +19 -6
- package/dist/cjs/connector/blockchain/private-key-provider.connector.js +85 -19
- package/dist/cjs/connector/blockchain/private-key-provider.connector.spec.js +183 -0
- package/dist/cjs/connector/blockchain/web3-provider-connector.js +71 -22
- package/dist/cjs/connector/blockchain/web3-provider.connector.spec.js +186 -0
- package/dist/cjs/connector/http/axios-provider.connector.js +298 -39
- package/dist/cjs/connector/http/axios-provider.connector.spec.js +208 -0
- package/dist/cjs/connector/http/http-provider.connector.js +3 -2
- package/dist/cjs/connector/http/index.js +18 -5
- package/dist/cjs/connector/index.js +19 -6
- package/dist/cjs/connector/ws/index.js +19 -6
- package/dist/cjs/connector/ws/types.js +3 -2
- package/dist/cjs/connector/ws/websocket-client.connector.js +155 -71
- package/dist/cjs/connector/ws/websocket-provider.connector.js +3 -2
- package/dist/cjs/constants.js +53 -15
- package/dist/cjs/errors.js +123 -7
- package/dist/cjs/fusion-order/README.md +58 -0
- package/dist/cjs/fusion-order/auction-details/README.md +85 -0
- package/dist/cjs/fusion-order/auction-details/auction-details.js +182 -67
- package/dist/cjs/fusion-order/auction-details/auction-details.spec.js +25 -0
- package/dist/cjs/fusion-order/auction-details/index.js +18 -5
- package/dist/cjs/fusion-order/auction-details/types.js +3 -2
- package/dist/cjs/fusion-order/constants.js +26 -20
- package/dist/cjs/fusion-order/fees/fees.js +93 -27
- package/dist/cjs/fusion-order/fees/index.js +23 -9
- package/dist/cjs/fusion-order/fees/integrator-fee.js +54 -25
- package/dist/cjs/fusion-order/fees/resolver-fee.js +55 -20
- package/dist/cjs/fusion-order/fusion-extension.js +259 -155
- package/dist/cjs/fusion-order/fusion-extension.spec.js +78 -0
- package/dist/cjs/fusion-order/fusion-order.js +502 -199
- package/dist/cjs/fusion-order/fusion-order.spec.js +298 -0
- package/dist/cjs/fusion-order/index.js +29 -13
- package/dist/cjs/fusion-order/source-track.js +18 -12
- package/dist/cjs/fusion-order/surplus-params.js +80 -20
- package/dist/cjs/fusion-order/whitelist/README.md +54 -0
- package/dist/cjs/fusion-order/whitelist/index.js +18 -5
- package/dist/cjs/fusion-order/whitelist/types.js +3 -2
- package/dist/cjs/fusion-order/whitelist/whitelist.js +253 -109
- package/dist/cjs/fusion-order/whitelist/whitelist.spec.js +68 -0
- package/dist/cjs/index.js +91 -35
- package/dist/cjs/sdk/README.md +264 -0
- package/dist/cjs/sdk/encoders/cancel-order.encoder.js +20 -10
- package/dist/cjs/sdk/encoders/index.js +17 -4
- package/dist/cjs/sdk/index.js +20 -7
- package/dist/cjs/sdk/sdk.js +484 -129
- package/dist/cjs/sdk/sdk.spec.js +235 -0
- package/dist/cjs/sdk/types.js +3 -2
- package/dist/cjs/sdk/utils.js +21 -8
- package/dist/cjs/utils/amounts.js +35 -9
- package/dist/cjs/utils/time.js +9 -3
- package/dist/cjs/utils/types.js +3 -2
- package/dist/cjs/utils.js +17 -4
- package/dist/cjs/validations.js +32 -13
- package/dist/cjs/ws-api/README.md +627 -0
- package/dist/cjs/ws-api/active-websocket-orders-api.js +114 -50
- package/dist/cjs/ws-api/constants.js +10 -4
- package/dist/cjs/ws-api/index.js +21 -8
- package/dist/cjs/ws-api/rpc-websocket-api.js +110 -38
- package/dist/cjs/ws-api/types.js +3 -2
- package/dist/cjs/ws-api/url.js +9 -3
- package/dist/cjs/ws-api/ws-api.js +165 -48
- package/dist/cjs/ws-api/ws.spec.js +832 -0
- package/dist/esm/amount-calculator/amount-calculator.js +265 -75
- package/dist/esm/amount-calculator/amount-calculator.spec.js +62 -0
- package/dist/esm/amount-calculator/auction-calculator/README.md +59 -0
- package/dist/esm/amount-calculator/auction-calculator/auction-calculator.js +173 -73
- package/dist/esm/amount-calculator/auction-calculator/auction-calculator.spec.js +53 -0
- package/dist/esm/amount-calculator/auction-calculator/index.js +1 -2
- package/dist/esm/amount-calculator/index.js +4 -4
- package/dist/esm/api/fusion-api.js +107 -42
- package/dist/esm/api/index.js +8 -9
- package/dist/esm/api/orders/index.js +3 -4
- package/dist/esm/api/orders/order-api.spec.js +742 -0
- package/dist/esm/api/orders/orders.api.js +236 -33
- package/dist/esm/api/orders/orders.request.js +139 -58
- package/dist/esm/api/orders/types.js +5 -4
- package/dist/esm/api/ordersVersion.js +3 -4
- package/dist/esm/api/pagination.js +53 -12
- package/dist/esm/api/pagination.spec.js +25 -0
- package/dist/esm/api/params.js +18 -19
- package/dist/esm/api/quoter/index.js +6 -7
- package/dist/esm/api/quoter/preset.js +77 -24
- package/dist/esm/api/quoter/quote/index.js +3 -4
- package/dist/esm/api/quoter/quote/order-params.js +53 -10
- package/dist/esm/api/quoter/quote/quote.js +143 -85
- package/dist/esm/api/quoter/quote/types.js +12 -2
- package/dist/esm/api/quoter/quoter-custom-preset.request.js +110 -54
- package/dist/esm/api/quoter/quoter-custom-preset.request.spec.js +127 -0
- package/dist/esm/api/quoter/quoter.api.js +232 -25
- package/dist/esm/api/quoter/quoter.api.spec.js +361 -0
- package/dist/esm/api/quoter/quoter.request.js +80 -26
- package/dist/esm/api/quoter/quoter.request.spec.js +107 -0
- package/dist/esm/api/quoter/types.js +7 -4
- package/dist/esm/api/relayer/index.js +3 -4
- package/dist/esm/api/relayer/relayer.api.js +65 -16
- package/dist/esm/api/relayer/relayer.api.spec.js +230 -0
- package/dist/esm/api/relayer/relayer.request.js +62 -15
- package/dist/esm/api/relayer/types.js +1 -2
- package/dist/esm/api/types.js +1 -2
- package/dist/esm/api-ext.js +1 -2
- package/dist/esm/connector/blockchain/blockchain-provider.connector.js +1 -2
- package/dist/esm/connector/blockchain/index.js +3 -4
- package/dist/esm/connector/blockchain/private-key-provider.connector.js +76 -16
- package/dist/esm/connector/blockchain/private-key-provider.connector.spec.js +179 -0
- package/dist/esm/connector/blockchain/web3-provider-connector.js +62 -19
- package/dist/esm/connector/blockchain/web3-provider.connector.spec.js +182 -0
- package/dist/esm/connector/http/axios-provider.connector.js +249 -36
- package/dist/esm/connector/http/axios-provider.connector.spec.js +199 -0
- package/dist/esm/connector/http/http-provider.connector.js +1 -2
- package/dist/esm/connector/http/index.js +2 -3
- package/dist/esm/connector/index.js +3 -4
- package/dist/esm/connector/ws/index.js +3 -4
- package/dist/esm/connector/ws/types.js +1 -2
- package/dist/esm/connector/ws/websocket-client.connector.js +140 -66
- package/dist/esm/connector/ws/websocket-provider.connector.js +1 -2
- package/dist/esm/constants.js +12 -13
- package/dist/esm/errors.js +114 -4
- package/dist/esm/fusion-order/README.md +58 -0
- package/dist/esm/fusion-order/auction-details/README.md +85 -0
- package/dist/esm/fusion-order/auction-details/auction-details.js +160 -55
- package/dist/esm/fusion-order/auction-details/auction-details.spec.js +21 -0
- package/dist/esm/fusion-order/auction-details/index.js +2 -3
- package/dist/esm/fusion-order/auction-details/types.js +12 -2
- package/dist/esm/fusion-order/constants.js +16 -17
- package/dist/esm/fusion-order/fees/fees.js +75 -19
- package/dist/esm/fusion-order/fees/index.js +3 -4
- package/dist/esm/fusion-order/fees/integrator-fee.js +44 -21
- package/dist/esm/fusion-order/fees/resolver-fee.js +40 -15
- package/dist/esm/fusion-order/fusion-extension.js +243 -149
- package/dist/esm/fusion-order/fusion-extension.spec.js +74 -0
- package/dist/esm/fusion-order/fusion-order.js +485 -192
- package/dist/esm/fusion-order/fusion-order.spec.js +294 -0
- package/dist/esm/fusion-order/index.js +7 -8
- package/dist/esm/fusion-order/source-track.js +4 -5
- package/dist/esm/fusion-order/surplus-params.js +63 -13
- package/dist/esm/fusion-order/whitelist/README.md +54 -0
- package/dist/esm/fusion-order/whitelist/index.js +2 -3
- package/dist/esm/fusion-order/whitelist/types.js +6 -2
- package/dist/esm/fusion-order/whitelist/whitelist.js +236 -102
- package/dist/esm/fusion-order/whitelist/whitelist.spec.js +64 -0
- package/dist/esm/index.js +12 -13
- package/dist/esm/package.json +1 -0
- package/dist/esm/sdk/README.md +264 -0
- package/dist/esm/sdk/encoders/cancel-order.encoder.js +5 -4
- package/dist/esm/sdk/encoders/index.js +1 -2
- package/dist/esm/sdk/index.js +4 -5
- package/dist/esm/sdk/sdk.js +476 -127
- package/dist/esm/sdk/sdk.spec.js +231 -0
- package/dist/esm/sdk/types.js +12 -2
- package/dist/esm/sdk/utils.js +4 -5
- package/dist/esm/utils/amounts.js +18 -6
- package/dist/esm/utils/time.js +0 -1
- package/dist/esm/utils/types.js +1 -2
- package/dist/esm/utils.js +0 -1
- package/dist/esm/validations.js +7 -6
- package/dist/esm/ws-api/README.md +627 -0
- package/dist/esm/ws-api/active-websocket-orders-api.js +105 -47
- package/dist/esm/ws-api/constants.js +1 -2
- package/dist/esm/ws-api/index.js +5 -6
- package/dist/esm/ws-api/rpc-websocket-api.js +102 -36
- package/dist/esm/ws-api/types.js +1 -2
- package/dist/esm/ws-api/url.js +0 -1
- package/dist/esm/ws-api/ws-api.js +154 -43
- package/dist/esm/ws-api/ws.spec.js +828 -0
- package/dist/types/src/amount-calculator/amount-calculator.d.ts +4 -5
- package/dist/types/src/amount-calculator/auction-calculator/auction-calculator.d.ts +1 -1
- package/dist/types/src/amount-calculator/auction-calculator/index.d.ts +1 -1
- package/dist/types/src/amount-calculator/index.d.ts +4 -3
- package/dist/types/src/api/fusion-api.d.ts +5 -5
- package/dist/types/src/api/index.d.ts +8 -8
- package/dist/types/src/api/orders/index.d.ts +3 -3
- package/dist/types/src/api/orders/orders.api.d.ts +4 -4
- package/dist/types/src/api/orders/orders.request.d.ts +2 -2
- package/dist/types/src/api/orders/types.d.ts +4 -4
- package/dist/types/src/api/params.d.ts +1 -1
- package/dist/types/src/api/quoter/index.d.ts +6 -6
- package/dist/types/src/api/quoter/preset.d.ts +2 -2
- package/dist/types/src/api/quoter/quote/index.d.ts +3 -3
- package/dist/types/src/api/quoter/quote/order-params.d.ts +2 -2
- package/dist/types/src/api/quoter/quote/quote.d.ts +5 -5
- package/dist/types/src/api/quoter/quote/types.d.ts +2 -2
- package/dist/types/src/api/quoter/quoter-custom-preset.request.d.ts +1 -1
- package/dist/types/src/api/quoter/quoter.api.d.ts +5 -5
- package/dist/types/src/api/quoter/quoter.request.d.ts +2 -2
- package/dist/types/src/api/quoter/types.d.ts +2 -2
- package/dist/types/src/api/relayer/index.d.ts +3 -3
- package/dist/types/src/api/relayer/relayer.api.d.ts +3 -3
- package/dist/types/src/api/relayer/relayer.request.d.ts +1 -1
- package/dist/types/src/api/relayer/types.d.ts +1 -1
- package/dist/types/src/api/types.d.ts +2 -2
- package/dist/types/src/api-ext.d.ts +1 -1
- package/dist/types/src/connector/blockchain/index.d.ts +3 -3
- package/dist/types/src/connector/blockchain/private-key-provider.connector.d.ts +2 -2
- package/dist/types/src/connector/blockchain/web3-provider-connector.d.ts +1 -1
- package/dist/types/src/connector/http/axios-provider.connector.d.ts +1 -1
- package/dist/types/src/connector/http/index.d.ts +2 -2
- package/dist/types/src/connector/index.d.ts +3 -3
- package/dist/types/src/connector/ws/index.d.ts +3 -3
- package/dist/types/src/connector/ws/websocket-client.connector.d.ts +2 -2
- package/dist/types/src/connector/ws/websocket-provider.connector.d.ts +1 -1
- package/dist/types/src/fusion-order/auction-details/auction-details.d.ts +1 -1
- package/dist/types/src/fusion-order/auction-details/index.d.ts +2 -2
- package/dist/types/src/fusion-order/fees/fees.d.ts +2 -2
- package/dist/types/src/fusion-order/fees/index.d.ts +3 -3
- package/dist/types/src/fusion-order/fusion-extension.d.ts +7 -6
- package/dist/types/src/fusion-order/fusion-order.d.ts +7 -7
- package/dist/types/src/fusion-order/index.d.ts +7 -7
- package/dist/types/src/fusion-order/whitelist/index.d.ts +2 -2
- package/dist/types/src/fusion-order/whitelist/whitelist.d.ts +1 -1
- package/dist/types/src/index.d.ts +13 -13
- package/dist/types/src/sdk/encoders/index.d.ts +1 -1
- package/dist/types/src/sdk/index.d.ts +4 -4
- package/dist/types/src/sdk/sdk.d.ts +4 -4
- package/dist/types/src/sdk/types.d.ts +4 -4
- package/dist/types/src/ws-api/active-websocket-orders-api.d.ts +2 -2
- package/dist/types/src/ws-api/constants.d.ts +1 -1
- package/dist/types/src/ws-api/index.d.ts +5 -5
- package/dist/types/src/ws-api/rpc-websocket-api.d.ts +3 -3
- package/dist/types/src/ws-api/types.d.ts +4 -4
- package/dist/types/src/ws-api/ws-api.d.ts +4 -4
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +6 -4
- package/dist/cjs/amount-calculator/amount-calculator.js.map +0 -1
- package/dist/cjs/amount-calculator/auction-calculator/auction-calculator.js.map +0 -1
- package/dist/cjs/amount-calculator/auction-calculator/index.js.map +0 -1
- package/dist/cjs/amount-calculator/index.js.map +0 -1
- package/dist/cjs/api/fusion-api.js.map +0 -1
- package/dist/cjs/api/index.js.map +0 -1
- package/dist/cjs/api/orders/index.js.map +0 -1
- package/dist/cjs/api/orders/orders.api.js.map +0 -1
- package/dist/cjs/api/orders/orders.request.js.map +0 -1
- package/dist/cjs/api/orders/types.js.map +0 -1
- package/dist/cjs/api/ordersVersion.js.map +0 -1
- package/dist/cjs/api/pagination.js.map +0 -1
- package/dist/cjs/api/params.js.map +0 -1
- package/dist/cjs/api/quoter/index.js.map +0 -1
- package/dist/cjs/api/quoter/preset.js.map +0 -1
- package/dist/cjs/api/quoter/quote/index.js.map +0 -1
- package/dist/cjs/api/quoter/quote/order-params.js.map +0 -1
- package/dist/cjs/api/quoter/quote/quote.js.map +0 -1
- package/dist/cjs/api/quoter/quote/types.js.map +0 -1
- package/dist/cjs/api/quoter/quoter-custom-preset.request.js.map +0 -1
- package/dist/cjs/api/quoter/quoter.api.js.map +0 -1
- package/dist/cjs/api/quoter/quoter.request.js.map +0 -1
- package/dist/cjs/api/quoter/types.js.map +0 -1
- package/dist/cjs/api/relayer/index.js.map +0 -1
- package/dist/cjs/api/relayer/relayer.api.js.map +0 -1
- package/dist/cjs/api/relayer/relayer.request.js.map +0 -1
- package/dist/cjs/api/relayer/types.js.map +0 -1
- package/dist/cjs/api/types.js.map +0 -1
- package/dist/cjs/api-ext.js.map +0 -1
- package/dist/cjs/connector/blockchain/blockchain-provider.connector.js.map +0 -1
- package/dist/cjs/connector/blockchain/index.js.map +0 -1
- package/dist/cjs/connector/blockchain/private-key-provider.connector.js.map +0 -1
- package/dist/cjs/connector/blockchain/web3-provider-connector.js.map +0 -1
- package/dist/cjs/connector/http/axios-provider.connector.js.map +0 -1
- package/dist/cjs/connector/http/http-provider.connector.js.map +0 -1
- package/dist/cjs/connector/http/index.js.map +0 -1
- package/dist/cjs/connector/index.js.map +0 -1
- package/dist/cjs/connector/ws/index.js.map +0 -1
- package/dist/cjs/connector/ws/types.js.map +0 -1
- package/dist/cjs/connector/ws/websocket-client.connector.js.map +0 -1
- package/dist/cjs/connector/ws/websocket-provider.connector.js.map +0 -1
- package/dist/cjs/constants.js.map +0 -1
- package/dist/cjs/errors.js.map +0 -1
- package/dist/cjs/fusion-order/auction-details/auction-details.js.map +0 -1
- package/dist/cjs/fusion-order/auction-details/index.js.map +0 -1
- package/dist/cjs/fusion-order/auction-details/types.js.map +0 -1
- package/dist/cjs/fusion-order/constants.js.map +0 -1
- package/dist/cjs/fusion-order/fees/fees.js.map +0 -1
- package/dist/cjs/fusion-order/fees/index.js.map +0 -1
- package/dist/cjs/fusion-order/fees/integrator-fee.js.map +0 -1
- package/dist/cjs/fusion-order/fees/resolver-fee.js.map +0 -1
- package/dist/cjs/fusion-order/fusion-extension.js.map +0 -1
- package/dist/cjs/fusion-order/fusion-order.js.map +0 -1
- package/dist/cjs/fusion-order/index.js.map +0 -1
- package/dist/cjs/fusion-order/source-track.js.map +0 -1
- package/dist/cjs/fusion-order/surplus-params.js.map +0 -1
- package/dist/cjs/fusion-order/whitelist/index.js.map +0 -1
- package/dist/cjs/fusion-order/whitelist/types.js.map +0 -1
- package/dist/cjs/fusion-order/whitelist/whitelist.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/sdk/encoders/cancel-order.encoder.js.map +0 -1
- package/dist/cjs/sdk/encoders/index.js.map +0 -1
- package/dist/cjs/sdk/index.js.map +0 -1
- package/dist/cjs/sdk/sdk.js.map +0 -1
- package/dist/cjs/sdk/types.js.map +0 -1
- package/dist/cjs/sdk/utils.js.map +0 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +0 -1
- package/dist/cjs/utils/amounts.js.map +0 -1
- package/dist/cjs/utils/time.js.map +0 -1
- package/dist/cjs/utils/types.js.map +0 -1
- package/dist/cjs/utils.js.map +0 -1
- package/dist/cjs/validations.js.map +0 -1
- package/dist/cjs/ws-api/active-websocket-orders-api.js.map +0 -1
- package/dist/cjs/ws-api/constants.js.map +0 -1
- package/dist/cjs/ws-api/index.js.map +0 -1
- package/dist/cjs/ws-api/rpc-websocket-api.js.map +0 -1
- package/dist/cjs/ws-api/types.js.map +0 -1
- package/dist/cjs/ws-api/url.js.map +0 -1
- package/dist/cjs/ws-api/ws-api.js.map +0 -1
- package/dist/esm/amount-calculator/amount-calculator.js.map +0 -1
- package/dist/esm/amount-calculator/auction-calculator/auction-calculator.js.map +0 -1
- package/dist/esm/amount-calculator/auction-calculator/index.js.map +0 -1
- package/dist/esm/amount-calculator/index.js.map +0 -1
- package/dist/esm/api/fusion-api.js.map +0 -1
- package/dist/esm/api/index.js.map +0 -1
- package/dist/esm/api/orders/index.js.map +0 -1
- package/dist/esm/api/orders/orders.api.js.map +0 -1
- package/dist/esm/api/orders/orders.request.js.map +0 -1
- package/dist/esm/api/orders/types.js.map +0 -1
- package/dist/esm/api/ordersVersion.js.map +0 -1
- package/dist/esm/api/pagination.js.map +0 -1
- package/dist/esm/api/params.js.map +0 -1
- package/dist/esm/api/quoter/index.js.map +0 -1
- package/dist/esm/api/quoter/preset.js.map +0 -1
- package/dist/esm/api/quoter/quote/index.js.map +0 -1
- package/dist/esm/api/quoter/quote/order-params.js.map +0 -1
- package/dist/esm/api/quoter/quote/quote.js.map +0 -1
- package/dist/esm/api/quoter/quote/types.js.map +0 -1
- package/dist/esm/api/quoter/quoter-custom-preset.request.js.map +0 -1
- package/dist/esm/api/quoter/quoter.api.js.map +0 -1
- package/dist/esm/api/quoter/quoter.request.js.map +0 -1
- package/dist/esm/api/quoter/types.js.map +0 -1
- package/dist/esm/api/relayer/index.js.map +0 -1
- package/dist/esm/api/relayer/relayer.api.js.map +0 -1
- package/dist/esm/api/relayer/relayer.request.js.map +0 -1
- package/dist/esm/api/relayer/types.js.map +0 -1
- package/dist/esm/api/types.js.map +0 -1
- package/dist/esm/api-ext.js.map +0 -1
- package/dist/esm/connector/blockchain/blockchain-provider.connector.js.map +0 -1
- package/dist/esm/connector/blockchain/index.js.map +0 -1
- package/dist/esm/connector/blockchain/private-key-provider.connector.js.map +0 -1
- package/dist/esm/connector/blockchain/web3-provider-connector.js.map +0 -1
- package/dist/esm/connector/http/axios-provider.connector.js.map +0 -1
- package/dist/esm/connector/http/http-provider.connector.js.map +0 -1
- package/dist/esm/connector/http/index.js.map +0 -1
- package/dist/esm/connector/index.js.map +0 -1
- package/dist/esm/connector/ws/index.js.map +0 -1
- package/dist/esm/connector/ws/types.js.map +0 -1
- package/dist/esm/connector/ws/websocket-client.connector.js.map +0 -1
- package/dist/esm/connector/ws/websocket-provider.connector.js.map +0 -1
- package/dist/esm/constants.js.map +0 -1
- package/dist/esm/errors.js.map +0 -1
- package/dist/esm/fusion-order/auction-details/auction-details.js.map +0 -1
- package/dist/esm/fusion-order/auction-details/index.js.map +0 -1
- package/dist/esm/fusion-order/auction-details/types.js.map +0 -1
- package/dist/esm/fusion-order/constants.js.map +0 -1
- package/dist/esm/fusion-order/fees/fees.js.map +0 -1
- package/dist/esm/fusion-order/fees/index.js.map +0 -1
- package/dist/esm/fusion-order/fees/integrator-fee.js.map +0 -1
- package/dist/esm/fusion-order/fees/resolver-fee.js.map +0 -1
- package/dist/esm/fusion-order/fusion-extension.js.map +0 -1
- package/dist/esm/fusion-order/fusion-order.js.map +0 -1
- package/dist/esm/fusion-order/index.js.map +0 -1
- package/dist/esm/fusion-order/source-track.js.map +0 -1
- package/dist/esm/fusion-order/surplus-params.js.map +0 -1
- package/dist/esm/fusion-order/whitelist/index.js.map +0 -1
- package/dist/esm/fusion-order/whitelist/types.js.map +0 -1
- package/dist/esm/fusion-order/whitelist/whitelist.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/sdk/encoders/cancel-order.encoder.js.map +0 -1
- package/dist/esm/sdk/encoders/index.js.map +0 -1
- package/dist/esm/sdk/index.js.map +0 -1
- package/dist/esm/sdk/sdk.js.map +0 -1
- package/dist/esm/sdk/types.js.map +0 -1
- package/dist/esm/sdk/utils.js.map +0 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
- package/dist/esm/utils/amounts.js.map +0 -1
- package/dist/esm/utils/time.js.map +0 -1
- package/dist/esm/utils/types.js.map +0 -1
- package/dist/esm/utils.js.map +0 -1
- package/dist/esm/validations.js.map +0 -1
- package/dist/esm/ws-api/active-websocket-orders-api.js.map +0 -1
- package/dist/esm/ws-api/constants.js.map +0 -1
- package/dist/esm/ws-api/index.js.map +0 -1
- package/dist/esm/ws-api/rpc-websocket-api.js.map +0 -1
- package/dist/esm/ws-api/types.js.map +0 -1
- package/dist/esm/ws-api/url.js.map +0 -1
- package/dist/esm/ws-api/ws-api.js.map +0 -1
|
@@ -1,23 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
this.receiver = receiver;
|
|
10
|
-
this.fee = fee;
|
|
11
|
-
this.whitelistDiscount = whitelistDiscount;
|
|
12
|
-
if (receiver.isZero() && !fee.isZero()) {
|
|
13
|
-
throw new Error('fee must be zero if receiver is zero address');
|
|
14
|
-
}
|
|
15
|
-
if (fee.isZero() && !whitelistDiscount.isZero()) {
|
|
16
|
-
throw new Error('whitelist discount must be zero if fee is zero');
|
|
17
|
-
}
|
|
18
|
-
(0, assert_1.default)(this.whitelistDiscount.value % 100n === 0n, `whitelist discount must have percent precision: 1%, 2% and so on`);
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ResolverFee", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ResolverFee;
|
|
19
9
|
}
|
|
10
|
+
});
|
|
11
|
+
var _limitordersdk = require("@1inch/limit-order-sdk");
|
|
12
|
+
var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
13
|
+
function _class_call_check(instance, Constructor) {
|
|
14
|
+
if (!(instance instanceof Constructor)) {
|
|
15
|
+
throw new TypeError("Cannot call a class as a function");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function _define_property(obj, key, value) {
|
|
19
|
+
if (key in obj) {
|
|
20
|
+
Object.defineProperty(obj, key, {
|
|
21
|
+
value: value,
|
|
22
|
+
enumerable: true,
|
|
23
|
+
configurable: true,
|
|
24
|
+
writable: true
|
|
25
|
+
});
|
|
26
|
+
} else {
|
|
27
|
+
obj[key] = value;
|
|
28
|
+
}
|
|
29
|
+
return obj;
|
|
20
30
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
function _interop_require_default(obj) {
|
|
32
|
+
return obj && obj.__esModule ? obj : {
|
|
33
|
+
default: obj
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Fee paid by resolver to `receiver`
|
|
38
|
+
*/ var ResolverFee = function ResolverFee(receiver, fee) {
|
|
39
|
+
"use strict";
|
|
40
|
+
var /**
|
|
41
|
+
* whitelisted resolvers have discount on fee
|
|
42
|
+
*/ whitelistDiscount = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : _limitordersdk.Bps.ZERO;
|
|
43
|
+
_class_call_check(this, ResolverFee);
|
|
44
|
+
_define_property(this, "receiver", void 0);
|
|
45
|
+
_define_property(this, "fee", void 0);
|
|
46
|
+
_define_property(this, "whitelistDiscount", void 0);
|
|
47
|
+
this.receiver = receiver;
|
|
48
|
+
this.fee = fee;
|
|
49
|
+
this.whitelistDiscount = whitelistDiscount;
|
|
50
|
+
if (receiver.isZero() && !fee.isZero()) {
|
|
51
|
+
throw new Error('fee must be zero if receiver is zero address');
|
|
52
|
+
}
|
|
53
|
+
if (fee.isZero() && !whitelistDiscount.isZero()) {
|
|
54
|
+
throw new Error('whitelist discount must be zero if fee is zero');
|
|
55
|
+
}
|
|
56
|
+
(0, _assert.default)(this.whitelistDiscount.value % 100n === 0n, "whitelist discount must have percent precision: 1%, 2% and so on");
|
|
57
|
+
};
|
|
58
|
+
_define_property(ResolverFee, "ZERO", new ResolverFee(_limitordersdk.Address.ZERO_ADDRESS, _limitordersdk.Bps.ZERO));
|
|
@@ -1,169 +1,273 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "FusionExtension", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return FusionExtension;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _limitordersdk = require("@1inch/limit-order-sdk");
|
|
12
|
+
var _byteutils = require("@1inch/byte-utils");
|
|
13
|
+
var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
14
|
+
var _index = require("./auction-details/index.js");
|
|
15
|
+
var _whitelist = require("./whitelist/whitelist.js");
|
|
16
|
+
var _surplusparams = require("./surplus-params.js");
|
|
17
|
+
var _index1 = require("./fees/index.js");
|
|
18
|
+
var _utils = require("../utils.js");
|
|
19
|
+
function _class_call_check(instance, Constructor) {
|
|
20
|
+
if (!(instance instanceof Constructor)) {
|
|
21
|
+
throw new TypeError("Cannot call a class as a function");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function _defineProperties(target, props) {
|
|
25
|
+
for(var i = 0; i < props.length; i++){
|
|
26
|
+
var descriptor = props[i];
|
|
27
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
28
|
+
descriptor.configurable = true;
|
|
29
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
30
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
34
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
35
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
36
|
+
return Constructor;
|
|
37
|
+
}
|
|
38
|
+
function _define_property(obj, key, value) {
|
|
39
|
+
if (key in obj) {
|
|
40
|
+
Object.defineProperty(obj, key, {
|
|
41
|
+
value: value,
|
|
42
|
+
enumerable: true,
|
|
43
|
+
configurable: true,
|
|
44
|
+
writable: true
|
|
45
|
+
});
|
|
46
|
+
} else {
|
|
47
|
+
obj[key] = value;
|
|
48
|
+
}
|
|
49
|
+
return obj;
|
|
50
|
+
}
|
|
51
|
+
function _interop_require_default(obj) {
|
|
52
|
+
return obj && obj.__esModule ? obj : {
|
|
53
|
+
default: obj
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
var FusionExtension = /*#__PURE__*/ function() {
|
|
57
|
+
"use strict";
|
|
58
|
+
function FusionExtension(address, auctionDetails, whitelist, surplus, extra) {
|
|
59
|
+
_class_call_check(this, FusionExtension);
|
|
60
|
+
_define_property(this, "address", void 0);
|
|
61
|
+
_define_property(this, "auctionDetails", void 0);
|
|
62
|
+
_define_property(this, "whitelist", void 0);
|
|
63
|
+
_define_property(this, "surplus", void 0);
|
|
64
|
+
_define_property(this, "extra", void 0);
|
|
14
65
|
this.address = address;
|
|
15
66
|
this.auctionDetails = auctionDetails;
|
|
16
67
|
this.whitelist = whitelist;
|
|
17
68
|
this.surplus = surplus;
|
|
18
69
|
this.extra = extra;
|
|
19
70
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
71
|
+
_create_class(FusionExtension, [
|
|
72
|
+
{
|
|
73
|
+
key: "build",
|
|
74
|
+
value: function build() {
|
|
75
|
+
var _this_extra;
|
|
76
|
+
var amountData = this.buildAmountGetterData(true);
|
|
77
|
+
var builder = new _limitordersdk.ExtensionBuilder().withMakingAmountData(this.address, amountData).withTakingAmountData(this.address, amountData).withPostInteraction(new _limitordersdk.Interaction(this.address, this.buildInteractionData()));
|
|
78
|
+
if ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : _this_extra.makerPermit) {
|
|
79
|
+
var _this_extra1, _this_extra2;
|
|
80
|
+
builder.withMakerPermit((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : _this_extra1.makerPermit.target, (_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : _this_extra2.makerPermit.data);
|
|
81
|
+
}
|
|
82
|
+
return builder.build();
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
key: "buildInteractionData",
|
|
87
|
+
value: /**
|
|
88
|
+
* Build data for `FeeTaker.postInteraction`
|
|
89
|
+
*
|
|
90
|
+
* Data is built of:
|
|
91
|
+
* `1 byte` - flags:
|
|
92
|
+
* 01 bit `CUSTOM_RECEIVER_FLAG` - set to 1 if order has custom receiver
|
|
93
|
+
* `20 bytes` — integrator fee recipient
|
|
94
|
+
* `20 bytes` - protocol fee recipient
|
|
95
|
+
* `[20 bytes]` — receiver of taking tokens (optional, if not set, maker is used). See `CUSTOM_RECEIVER_FLAG` flag
|
|
96
|
+
* `bytes` - same as in `buildAmountGetterData`
|
|
97
|
+
* `32 bytes` - estimated taking amount
|
|
98
|
+
* `1 byte` - protocol surplus fee (in 1e2)
|
|
99
|
+
* @see buildAmountGetterData
|
|
100
|
+
* @see https://github.com/1inch/limit-order-protocol/blob/22a18f7f20acfec69d4f50ce1880e8e662477710/contracts/extensions/FeeTaker.sol#L114
|
|
101
|
+
*/ function buildInteractionData() {
|
|
102
|
+
var _this_extra, _this_extra_fees, _this_extra1, _this_extra_fees1, _this_extra2;
|
|
103
|
+
var customReceiver = ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : _this_extra.customReceiver) || _limitordersdk.Address.ZERO_ADDRESS;
|
|
104
|
+
var flags = new _byteutils.BN(0n).setBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT, Boolean(!customReceiver.isZero()));
|
|
105
|
+
var integratorReceiver = ((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : (_this_extra_fees = _this_extra1.fees) === null || _this_extra_fees === void 0 ? void 0 : _this_extra_fees.integrator.integrator) || _limitordersdk.Address.ZERO_ADDRESS;
|
|
106
|
+
var protocolReceiver = ((_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : (_this_extra_fees1 = _this_extra2.fees) === null || _this_extra_fees1 === void 0 ? void 0 : _this_extra_fees1.protocol) || _limitordersdk.Address.ZERO_ADDRESS;
|
|
107
|
+
var builder = new _byteutils.BytesBuilder().addUint8(flags).addAddress(integratorReceiver.toString()).addAddress(protocolReceiver.toString());
|
|
108
|
+
if (!customReceiver.isZero()) {
|
|
109
|
+
builder.addAddress(customReceiver.toString());
|
|
110
|
+
}
|
|
111
|
+
builder.addBytes(this.buildAmountGetterData(false));
|
|
112
|
+
// surplus params
|
|
113
|
+
builder.addUint256(this.surplus.estimatedTakerAmount);
|
|
114
|
+
builder.addUint8(BigInt(this.surplus.protocolFee.toPercent()));
|
|
115
|
+
return builder.asHex();
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
key: "buildAmountGetterData",
|
|
120
|
+
value: /**
|
|
121
|
+
* Build data for getMakingAmount/getTakingAmount
|
|
122
|
+
*
|
|
123
|
+
* AuctionDetails
|
|
124
|
+
* 2 bytes — integrator fee percentage (in 1e5)
|
|
125
|
+
* 1 byte - integrator share percentage (in 1e2)
|
|
126
|
+
* 2 bytes — resolver fee percentage (in 1e5)
|
|
127
|
+
* 1 byte - whitelist discount numerator (in 1e2)
|
|
128
|
+
* Whitelist
|
|
129
|
+
*
|
|
130
|
+
* @see https://github.com/1inch/limit-order-settlement/blob/82f0a25c969170f710825ce6aa6920062adbde88/contracts/SimpleSettlement.sol#L34
|
|
131
|
+
*/ function buildAmountGetterData(forAmountGetters) {
|
|
132
|
+
var _this_extra_fees, _this_extra, _this_extra_fees1, _this_extra1, _this_extra_fees2, _this_extra2, _this_extra_fees3, _this_extra3;
|
|
133
|
+
var builder = new _byteutils.BytesBuilder();
|
|
134
|
+
if (forAmountGetters) {
|
|
135
|
+
// auction data required only for `getMakingAmount/getTakingAmount` and not for `postInteraction`
|
|
136
|
+
this.auctionDetails.encodeInto(builder);
|
|
137
|
+
}
|
|
138
|
+
var integrator = {
|
|
139
|
+
fee: ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : (_this_extra_fees = _this_extra.fees) === null || _this_extra_fees === void 0 ? void 0 : _this_extra_fees.integrator.fee.toFraction(_index1.Fees.BASE_1E5)) || 0,
|
|
140
|
+
share: ((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : (_this_extra_fees1 = _this_extra1.fees) === null || _this_extra_fees1 === void 0 ? void 0 : _this_extra_fees1.integrator.share.toFraction(_index1.Fees.BASE_1E2)) || 0
|
|
141
|
+
};
|
|
142
|
+
var resolverFee = ((_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : (_this_extra_fees2 = _this_extra2.fees) === null || _this_extra_fees2 === void 0 ? void 0 : _this_extra_fees2.resolver.fee.toFraction(_index1.Fees.BASE_1E5)) || 0;
|
|
143
|
+
var whitelistDiscount = ((_this_extra3 = this.extra) === null || _this_extra3 === void 0 ? void 0 : (_this_extra_fees3 = _this_extra3.fees) === null || _this_extra_fees3 === void 0 ? void 0 : _this_extra_fees3.resolver.whitelistDiscount) || _limitordersdk.Bps.ZERO;
|
|
144
|
+
builder.addUint16(BigInt(integrator.fee)).addUint8(BigInt(integrator.share)).addUint16(BigInt(resolverFee)).addUint8(BigInt(// contract expects discount numerator, but class contain discount
|
|
145
|
+
Number(_index1.Fees.BASE_1E2) - whitelistDiscount.toFraction(_index1.Fees.BASE_1E2)));
|
|
146
|
+
if (forAmountGetters) {
|
|
147
|
+
// amount getters need only addresses, without delays
|
|
148
|
+
builder.addUint8(BigInt(this.whitelist.whitelist.length));
|
|
149
|
+
this.whitelist.whitelist.forEach(function(i) {
|
|
150
|
+
builder.addBytes((0, _utils.add0x)(i.addressHalf));
|
|
151
|
+
});
|
|
152
|
+
} else {
|
|
153
|
+
this.whitelist.encodeInto(builder);
|
|
154
|
+
}
|
|
155
|
+
return builder.asHex();
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
key: "getFeesForTaker",
|
|
160
|
+
value: function getFeesForTaker(taker) {
|
|
161
|
+
var _this_extra_fees, _this_extra, _this_extra_fees1, _this_extra1, _this_extra_fees2, _this_extra2;
|
|
162
|
+
var whitelistDiscount = ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : (_this_extra_fees = _this_extra.fees) === null || _this_extra_fees === void 0 ? void 0 : _this_extra_fees.resolver.whitelistDiscount.toFraction(_index1.Fees.BASE_1E2)) || 0;
|
|
163
|
+
var discountNumerator = this.whitelist.isWhitelisted(taker) ? (Number(_index1.Fees.BASE_1E2) - whitelistDiscount) / Number(_index1.Fees.BASE_1E2) : 1;
|
|
164
|
+
var resolverFee = discountNumerator * (((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : (_this_extra_fees1 = _this_extra1.fees) === null || _this_extra_fees1 === void 0 ? void 0 : _this_extra_fees1.resolver.fee.toFraction(_index1.Fees.BASE_1E5)) || 0);
|
|
165
|
+
var resolverFeeBN = BigInt(resolverFee);
|
|
166
|
+
var integratorFeeBN = BigInt(((_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : (_this_extra_fees2 = _this_extra2.fees) === null || _this_extra_fees2 === void 0 ? void 0 : _this_extra_fees2.integrator.fee.toFraction(_index1.Fees.BASE_1E5)) || 0);
|
|
167
|
+
return {
|
|
168
|
+
resolverFee: resolverFeeBN,
|
|
169
|
+
integratorFee: integratorFeeBN
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
key: "getTakingAmountWithFee",
|
|
175
|
+
value: /**
|
|
176
|
+
* Returns takingAmount with fee, but without auction bump
|
|
177
|
+
* @param taker
|
|
178
|
+
* @param orderTakingAmount
|
|
179
|
+
* @private
|
|
180
|
+
*/ function getTakingAmountWithFee(taker, orderTakingAmount) {
|
|
181
|
+
var fees = this.getFeesForTaker(taker);
|
|
182
|
+
return (0, _limitordersdk.mulDiv)(orderTakingAmount, _index1.Fees.BASE_1E5 + fees.resolverFee + fees.integratorFee, _index1.Fees.BASE_1E5, _limitordersdk.Rounding.Ceil);
|
|
183
|
+
}
|
|
49
184
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
185
|
+
], [
|
|
186
|
+
{
|
|
187
|
+
key: "decode",
|
|
188
|
+
value: /**
|
|
189
|
+
* Create `FusionExtension` from bytes
|
|
190
|
+
*
|
|
191
|
+
* @param bytes 0x prefixed bytes
|
|
192
|
+
*/ function decode(bytes) {
|
|
193
|
+
var extension = _limitordersdk.Extension.decode(bytes);
|
|
194
|
+
return FusionExtension.fromExtension(extension);
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
key: "fromExtension",
|
|
199
|
+
value: /**
|
|
200
|
+
* Create `FusionExtension` from `Extension`
|
|
201
|
+
*/ function fromExtension(extension) {
|
|
202
|
+
var settlementContract = _limitordersdk.Address.fromFirstBytes(extension.makingAmountData);
|
|
203
|
+
(0, _assert.default)(_limitordersdk.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) && _limitordersdk.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
|
|
204
|
+
(0, _assert.default)(extension.takingAmountData == extension.makingAmountData, 'Invalid extension, taking amount data must be equal to making amount data');
|
|
205
|
+
// region Parse postInteraction data
|
|
206
|
+
var interactionBytes = _byteutils.BytesIter.HexString(extension.postInteraction);
|
|
207
|
+
interactionBytes.nextUint160();
|
|
208
|
+
// skip address of extension
|
|
209
|
+
var flags = _byteutils.BN.fromHex(interactionBytes.nextUint8());
|
|
210
|
+
var integratorFeeRecipient = new _limitordersdk.Address(interactionBytes.nextUint160());
|
|
211
|
+
var protocolFeeRecipient = new _limitordersdk.Address(interactionBytes.nextUint160());
|
|
212
|
+
var customReceiver = flags.getBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT) ? new _limitordersdk.Address(interactionBytes.nextUint160()) : undefined;
|
|
213
|
+
var interactionData = parseAmountData(interactionBytes);
|
|
214
|
+
var whitelist = _whitelist.Whitelist.decodeFrom(interactionBytes);
|
|
215
|
+
var surplusParams = _surplusparams.SurplusParams.decodeFrom(interactionBytes);
|
|
216
|
+
//endregion Parse postInteraction data
|
|
217
|
+
//region Parse amount data
|
|
218
|
+
var amountBytes = _byteutils.BytesIter.HexString(extension.makingAmountData);
|
|
219
|
+
amountBytes.nextUint160();
|
|
220
|
+
// skip address of extension
|
|
221
|
+
var auctionDetails = _index.AuctionDetails.decodeFrom(amountBytes);
|
|
222
|
+
var amountData = parseAmountData(amountBytes);
|
|
223
|
+
var whitelistAddressLength = Number(amountBytes.nextUint8());
|
|
224
|
+
(0, _assert.default)(whitelist.length === whitelistAddressLength, 'whitelist addresses must be same in interaction data and in amount data');
|
|
225
|
+
var whitelistAddressesFromAmount = [];
|
|
226
|
+
for(var i = 0; i < whitelistAddressLength; i++){
|
|
227
|
+
whitelistAddressesFromAmount.push(BigInt(amountBytes.nextBytes(10)).toString(16).padStart(20, '0'));
|
|
228
|
+
}
|
|
229
|
+
//endregion Parse amount data
|
|
230
|
+
var makerPermit = extension.hasMakerPermit ? _limitordersdk.Interaction.decode(extension.makerPermit) : undefined;
|
|
231
|
+
(0, _assert.default)(amountData.fees.integratorFee.value === interactionData.fees.integratorFee.value, "invalid extension: integrator fee must be same in interaction data and in amount data");
|
|
232
|
+
(0, _assert.default)(amountData.fees.resolverFee.value === interactionData.fees.resolverFee.value, "invalid extension: resolver fee must be same in interaction data and in amount data");
|
|
233
|
+
(0, _assert.default)(amountData.fees.whitelistDiscount.equal(interactionData.fees.whitelistDiscount), "invalid extension: whitelistDiscount must be same in interaction data and in amount data");
|
|
234
|
+
(0, _assert.default)(amountData.fees.integratorShare.value === interactionData.fees.integratorShare.value, "invalid extension: integrator share must be same in interaction data and in amount data");
|
|
235
|
+
(0, _assert.default)(whitelist.whitelist.every(function(param, i) {
|
|
236
|
+
var addressHalf = param.addressHalf;
|
|
237
|
+
return whitelistAddressesFromAmount[i] === addressHalf;
|
|
238
|
+
}), 'whitelist addresses must be same in interaction data and in amount data');
|
|
239
|
+
var hasFees = !integratorFeeRecipient.isZero() || !protocolFeeRecipient.isZero();
|
|
240
|
+
if (!hasFees) {
|
|
241
|
+
return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
|
|
242
|
+
makerPermit: makerPermit,
|
|
243
|
+
customReceiver: customReceiver,
|
|
244
|
+
fees: undefined
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
var fees = new _index1.Fees(new _index1.ResolverFee(protocolFeeRecipient, interactionData.fees.resolverFee, interactionData.fees.whitelistDiscount), interactionData.fees.integratorFee.isZero() ? _index1.IntegratorFee.ZERO : new _index1.IntegratorFee(integratorFeeRecipient, protocolFeeRecipient, interactionData.fees.integratorFee, interactionData.fees.integratorShare));
|
|
248
|
+
return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
|
|
249
|
+
makerPermit: makerPermit,
|
|
250
|
+
fees: fees,
|
|
251
|
+
customReceiver: customReceiver
|
|
252
|
+
});
|
|
253
|
+
}
|
|
68
254
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
fees,
|
|
77
|
-
customReceiver
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
build() {
|
|
81
|
-
const amountData = this.buildAmountGetterData(true);
|
|
82
|
-
const builder = new limit_order_sdk_1.ExtensionBuilder()
|
|
83
|
-
.withMakingAmountData(this.address, amountData)
|
|
84
|
-
.withTakingAmountData(this.address, amountData)
|
|
85
|
-
.withPostInteraction(new limit_order_sdk_1.Interaction(this.address, this.buildInteractionData()));
|
|
86
|
-
if (this.extra?.makerPermit) {
|
|
87
|
-
builder.withMakerPermit(this.extra?.makerPermit.target, this.extra?.makerPermit.data);
|
|
88
|
-
}
|
|
89
|
-
return builder.build();
|
|
90
|
-
}
|
|
91
|
-
buildInteractionData() {
|
|
92
|
-
const customReceiver = this.extra?.customReceiver || limit_order_sdk_1.Address.ZERO_ADDRESS;
|
|
93
|
-
const flags = new byte_utils_1.BN(0n).setBit(FusionExtension.CUSTOM_RECEIVER_FLAG_BIT, Boolean(!customReceiver.isZero()));
|
|
94
|
-
const integratorReceiver = this.extra?.fees?.integrator.integrator || limit_order_sdk_1.Address.ZERO_ADDRESS;
|
|
95
|
-
const protocolReceiver = this.extra?.fees?.protocol || limit_order_sdk_1.Address.ZERO_ADDRESS;
|
|
96
|
-
const builder = new byte_utils_1.BytesBuilder()
|
|
97
|
-
.addUint8(flags)
|
|
98
|
-
.addAddress(integratorReceiver.toString())
|
|
99
|
-
.addAddress(protocolReceiver.toString());
|
|
100
|
-
if (!customReceiver.isZero()) {
|
|
101
|
-
builder.addAddress(customReceiver.toString());
|
|
102
|
-
}
|
|
103
|
-
builder.addBytes(this.buildAmountGetterData(false));
|
|
104
|
-
builder.addUint256(this.surplus.estimatedTakerAmount);
|
|
105
|
-
builder.addUint8(BigInt(this.surplus.protocolFee.toPercent()));
|
|
106
|
-
return builder.asHex();
|
|
107
|
-
}
|
|
108
|
-
buildAmountGetterData(forAmountGetters) {
|
|
109
|
-
const builder = new byte_utils_1.BytesBuilder();
|
|
110
|
-
if (forAmountGetters) {
|
|
111
|
-
this.auctionDetails.encodeInto(builder);
|
|
112
|
-
}
|
|
113
|
-
const integrator = {
|
|
114
|
-
fee: this.extra?.fees?.integrator.fee.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5) || 0,
|
|
115
|
-
share: this.extra?.fees?.integrator.share.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2) || 0
|
|
116
|
-
};
|
|
117
|
-
const resolverFee = this.extra?.fees?.resolver.fee.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5) || 0;
|
|
118
|
-
const whitelistDiscount = this.extra?.fees?.resolver.whitelistDiscount || limit_order_sdk_1.Bps.ZERO;
|
|
119
|
-
builder
|
|
120
|
-
.addUint16(BigInt(integrator.fee))
|
|
121
|
-
.addUint8(BigInt(integrator.share))
|
|
122
|
-
.addUint16(BigInt(resolverFee))
|
|
123
|
-
.addUint8(BigInt(Number(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2) -
|
|
124
|
-
whitelistDiscount.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2)));
|
|
125
|
-
if (forAmountGetters) {
|
|
126
|
-
builder.addUint8(BigInt(this.whitelist.whitelist.length));
|
|
127
|
-
this.whitelist.whitelist.forEach((i) => {
|
|
128
|
-
builder.addBytes((0, utils_1.add0x)(i.addressHalf));
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
this.whitelist.encodeInto(builder);
|
|
133
|
-
}
|
|
134
|
-
return builder.asHex();
|
|
135
|
-
}
|
|
136
|
-
getFeesForTaker(taker) {
|
|
137
|
-
const whitelistDiscount = this.extra?.fees?.resolver.whitelistDiscount.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2) || 0;
|
|
138
|
-
const discountNumerator = this.whitelist.isWhitelisted(taker)
|
|
139
|
-
? (Number(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2) - whitelistDiscount) /
|
|
140
|
-
Number(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E2)
|
|
141
|
-
: 1;
|
|
142
|
-
const resolverFee = discountNumerator *
|
|
143
|
-
(this.extra?.fees?.resolver.fee.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5) || 0);
|
|
144
|
-
const resolverFeeBN = BigInt(resolverFee);
|
|
145
|
-
const integratorFeeBN = BigInt(this.extra?.fees?.integrator.fee.toFraction(limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5) || 0);
|
|
146
|
-
return {
|
|
147
|
-
resolverFee: resolverFeeBN,
|
|
148
|
-
integratorFee: integratorFeeBN
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
getTakingAmountWithFee(taker, orderTakingAmount) {
|
|
152
|
-
const fees = this.getFeesForTaker(taker);
|
|
153
|
-
return (0, limit_order_sdk_1.mulDiv)(orderTakingAmount, limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5 + fees.resolverFee + fees.integratorFee, limit_order_sdk_1.FeeTakerExt.Fees.BASE_1E5, limit_order_sdk_1.Rounding.Ceil);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
exports.FusionExtension = FusionExtension;
|
|
157
|
-
FusionExtension.CUSTOM_RECEIVER_FLAG_BIT = 0n;
|
|
255
|
+
]);
|
|
256
|
+
return FusionExtension;
|
|
257
|
+
}();
|
|
258
|
+
/**
|
|
259
|
+
* Flags for post-interaction data
|
|
260
|
+
* @private
|
|
261
|
+
*/ _define_property(FusionExtension, "CUSTOM_RECEIVER_FLAG_BIT", 0n);
|
|
158
262
|
function parseAmountData(iter) {
|
|
159
|
-
|
|
160
|
-
integratorFee:
|
|
161
|
-
integratorShare:
|
|
162
|
-
resolverFee:
|
|
163
|
-
whitelistDiscount:
|
|
263
|
+
var fees = {
|
|
264
|
+
integratorFee: _limitordersdk.Bps.fromFraction(Number(iter.nextUint16()), _index1.Fees.BASE_1E5),
|
|
265
|
+
integratorShare: _limitordersdk.Bps.fromFraction(Number(iter.nextUint8()), _index1.Fees.BASE_1E2),
|
|
266
|
+
resolverFee: _limitordersdk.Bps.fromFraction(Number(iter.nextUint16()), _index1.Fees.BASE_1E5),
|
|
267
|
+
whitelistDiscount: _limitordersdk.Bps.fromFraction(Number(_index1.Fees.BASE_1E2) - Number(iter.nextUint8()), // contract uses 1 - discount
|
|
268
|
+
_index1.Fees.BASE_1E2)
|
|
164
269
|
};
|
|
165
270
|
return {
|
|
166
|
-
fees
|
|
271
|
+
fees: fees
|
|
167
272
|
};
|
|
168
273
|
}
|
|
169
|
-
//# sourceMappingURL=fusion-extension.js.map
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _limitordersdk = require("@1inch/limit-order-sdk");
|
|
6
|
+
var _fusionorder = require("./fusion-order.js");
|
|
7
|
+
var _index = require("./auction-details/index.js");
|
|
8
|
+
var _fusionextension = require("./fusion-extension.js");
|
|
9
|
+
var _index1 = require("./whitelist/index.js");
|
|
10
|
+
var _surplusparams = require("./surplus-params.js");
|
|
11
|
+
describe('FusionExtension', function() {
|
|
12
|
+
it('should decode', function() {
|
|
13
|
+
var extensionContract = new _limitordersdk.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
|
|
14
|
+
var order = _fusionorder.FusionOrder.new(extensionContract, {
|
|
15
|
+
makerAsset: new _limitordersdk.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
16
|
+
takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
|
|
17
|
+
makingAmount: 1000000000000000000n,
|
|
18
|
+
takingAmount: 1420000000n,
|
|
19
|
+
maker: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
20
|
+
salt: 10n
|
|
21
|
+
}, {
|
|
22
|
+
auction: new _index.AuctionDetails({
|
|
23
|
+
duration: 180n,
|
|
24
|
+
startTime: 1673548149n,
|
|
25
|
+
initialRateBump: 50000,
|
|
26
|
+
points: [
|
|
27
|
+
{
|
|
28
|
+
coefficient: 20000,
|
|
29
|
+
delay: 12
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}),
|
|
33
|
+
whitelist: _index1.Whitelist.new(1673548139n, [
|
|
34
|
+
{
|
|
35
|
+
address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
36
|
+
allowFrom: 0n
|
|
37
|
+
}
|
|
38
|
+
]),
|
|
39
|
+
surplus: _surplusparams.SurplusParams.NO_FEE
|
|
40
|
+
});
|
|
41
|
+
var fusionExtension = _fusionextension.FusionExtension.decode(order.extension.encode());
|
|
42
|
+
expect(fusionExtension).toStrictEqual(order.fusionExtension);
|
|
43
|
+
});
|
|
44
|
+
it('should decode with permit', function() {
|
|
45
|
+
var extensionContract = new _limitordersdk.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
|
|
46
|
+
var order = _fusionorder.FusionOrder.new(extensionContract, {
|
|
47
|
+
makerAsset: new _limitordersdk.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
48
|
+
takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
|
|
49
|
+
makingAmount: 1000000000000000000n,
|
|
50
|
+
takingAmount: 1420000000n,
|
|
51
|
+
maker: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
52
|
+
salt: 10n
|
|
53
|
+
}, {
|
|
54
|
+
auction: new _index.AuctionDetails({
|
|
55
|
+
duration: 180n,
|
|
56
|
+
startTime: 1673548149n,
|
|
57
|
+
initialRateBump: 50000,
|
|
58
|
+
points: [
|
|
59
|
+
{
|
|
60
|
+
coefficient: 20000,
|
|
61
|
+
delay: 12
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}),
|
|
65
|
+
whitelist: _index1.Whitelist.new(1673548139n, [
|
|
66
|
+
{
|
|
67
|
+
address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
68
|
+
allowFrom: 0n
|
|
69
|
+
}
|
|
70
|
+
]),
|
|
71
|
+
surplus: _surplusparams.SurplusParams.NO_FEE
|
|
72
|
+
}, {
|
|
73
|
+
permit: '0xdeadbeef'
|
|
74
|
+
});
|
|
75
|
+
var fusionExtension = _fusionextension.FusionExtension.decode(order.extension.encode());
|
|
76
|
+
expect(fusionExtension).toStrictEqual(order.fusionExtension);
|
|
77
|
+
});
|
|
78
|
+
});
|