@1inch/fusion-sdk 2.3.10-rc.2 → 2.4.1
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/README.md +101 -0
- package/dist/cjs/fusion-order/fusion-order.js +1 -0
- package/dist/cjs/fusion-order/fusion-order.spec.js +33 -0
- package/dist/esm/fusion-order/fusion-order.js +1 -0
- package/dist/esm/fusion-order/fusion-order.spec.js +33 -0
- package/dist/esm/package.json +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -107,6 +107,107 @@ async function main() {
|
|
|
107
107
|
main()
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
+
## How to swap with Fusion mode from Native asset
|
|
111
|
+
```typescript
|
|
112
|
+
import {FusionSDK, NetworkEnum, OrderStatus, PrivateKeyProviderConnector, Web3Like, Address, NativeOrdersFactory} from "@1inch/fusion-sdk";
|
|
113
|
+
import {computeAddress, formatUnits, JsonRpcProvider, Wallet} from "ethers";
|
|
114
|
+
|
|
115
|
+
const PRIVATE_KEY = 'YOUR_PRIVATE_KEY'
|
|
116
|
+
const NODE_URL = 'YOUR_WEB3_NODE_URL'
|
|
117
|
+
const DEV_PORTAL_API_TOKEN = 'YOUR_DEV_PORTAL_API_TOKEN'
|
|
118
|
+
|
|
119
|
+
const ethersRpcProvider = new JsonRpcProvider(NODE_URL)
|
|
120
|
+
|
|
121
|
+
const ethersProviderConnector: Web3Like = {
|
|
122
|
+
eth: {
|
|
123
|
+
call(transactionConfig): Promise<string> {
|
|
124
|
+
return ethersRpcProvider.call(transactionConfig)
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
extend(): void {}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const connector = new PrivateKeyProviderConnector(
|
|
131
|
+
PRIVATE_KEY,
|
|
132
|
+
ethersProviderConnector
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
const sdk = new FusionSDK({
|
|
136
|
+
url: 'https://api.1inch.dev/fusion',
|
|
137
|
+
network: NetworkEnum.BINANCE,
|
|
138
|
+
blockchainProvider: connector,
|
|
139
|
+
authKey: DEV_PORTAL_API_TOKEN
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
const wallet = new Wallet(PRIVATE_KEY, ethersRpcProvider)
|
|
143
|
+
|
|
144
|
+
async function main() {
|
|
145
|
+
const params = {
|
|
146
|
+
fromTokenAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', // ETH
|
|
147
|
+
toTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
|
|
148
|
+
amount: '2000000000000000', // 0.002 ETH
|
|
149
|
+
walletAddress: computeAddress(PRIVATE_KEY),
|
|
150
|
+
source: 'sdk-test'
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const quote = await sdk.getQuote(params)
|
|
154
|
+
|
|
155
|
+
const dstTokenDecimals = 6
|
|
156
|
+
console.log('Auction start amount', formatUnits(quote.presets[quote.recommendedPreset].auctionStartAmount, dstTokenDecimals))
|
|
157
|
+
console.log('Auction end amount', formatUnits(quote.presets[quote.recommendedPreset].auctionEndAmount), dstTokenDecimals)
|
|
158
|
+
|
|
159
|
+
const preparedOrder = await sdk.createOrder(params)
|
|
160
|
+
|
|
161
|
+
const info = await sdk.submitNativeOrder(preparedOrder.order, new Address(params.walletAddress), preparedOrder.quoteId)
|
|
162
|
+
|
|
163
|
+
console.log('OrderHash', info.orderHash)
|
|
164
|
+
|
|
165
|
+
const factory = NativeOrdersFactory.default(NetworkEnum.BINANCE)
|
|
166
|
+
const call = factory.create(new Address(wallet.address), preparedOrder.order)
|
|
167
|
+
|
|
168
|
+
const txRes = await wallet.sendTransaction({
|
|
169
|
+
to: call.to.toString(),
|
|
170
|
+
data: call.data,
|
|
171
|
+
value: call.value
|
|
172
|
+
})
|
|
173
|
+
|
|
174
|
+
console.log('TxHash', txRes.hash)
|
|
175
|
+
|
|
176
|
+
await wallet.provider.waitForTransaction(txRes.hash)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
const start = Date.now()
|
|
180
|
+
|
|
181
|
+
while (true) {
|
|
182
|
+
try {
|
|
183
|
+
const data = await sdk.getOrderStatus(info.orderHash)
|
|
184
|
+
|
|
185
|
+
if (data.status === OrderStatus.Filled) {
|
|
186
|
+
console.log('fills', data.fills)
|
|
187
|
+
break
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (data.status === OrderStatus.Expired) {
|
|
191
|
+
console.log('Order Expired')
|
|
192
|
+
break
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (data.status === OrderStatus.Cancelled) {
|
|
196
|
+
console.log('Order Cancelled')
|
|
197
|
+
break
|
|
198
|
+
}
|
|
199
|
+
} catch (e) {
|
|
200
|
+
console.log(e)
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
console.log('Order executed for', (Date.now() - start) / 1000, 'sec')
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
main()
|
|
209
|
+
```
|
|
210
|
+
|
|
110
211
|
## Resolvers
|
|
111
212
|
|
|
112
213
|
`settleOrders` function usage and Resolver contract examples you can find [here](https://github.com/1inch/fusion-resolver-example)
|
|
@@ -503,6 +503,7 @@ var FusionOrder = /*#__PURE__*/ function() {
|
|
|
503
503
|
optimizeReceiverAddress: false
|
|
504
504
|
}));
|
|
505
505
|
_order.inner = _limitordersdk.LimitOrder.fromNative(chainId, ethOrdersFactory, _object_spread_props(_object_spread({}, _orderInfo), {
|
|
506
|
+
receiver: _order.receiver,
|
|
506
507
|
salt: _order.salt
|
|
507
508
|
}), _order.inner.makerTraits, _order.inner.extension);
|
|
508
509
|
return _order;
|
|
@@ -400,4 +400,37 @@ describe('FusionOrder Native', function() {
|
|
|
400
400
|
expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
|
|
401
401
|
expect(_fusionorder.FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
|
|
402
402
|
});
|
|
403
|
+
it('should have extension address in receiver if surplus passed', function() {
|
|
404
|
+
var ethOrderFactory = new _limitordersdk.ProxyFactory(_limitordersdk.Address.fromBigInt(1n), _limitordersdk.Address.fromBigInt(2n));
|
|
405
|
+
var chainId = _constants.NetworkEnum.ETHEREUM;
|
|
406
|
+
var settlementExt = _limitordersdk.Address.fromBigInt(3n);
|
|
407
|
+
var maker = new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa');
|
|
408
|
+
var nativeOrder = _fusionorder.FusionOrder.fromNative(chainId, ethOrderFactory, settlementExt, {
|
|
409
|
+
takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
|
|
410
|
+
makingAmount: 1000000000000000000n,
|
|
411
|
+
takingAmount: 1420000000n,
|
|
412
|
+
maker: maker,
|
|
413
|
+
salt: 10n
|
|
414
|
+
}, {
|
|
415
|
+
auction: new _index.AuctionDetails({
|
|
416
|
+
duration: 180n,
|
|
417
|
+
startTime: 1673548149n,
|
|
418
|
+
initialRateBump: 50000,
|
|
419
|
+
points: [
|
|
420
|
+
{
|
|
421
|
+
coefficient: 20000,
|
|
422
|
+
delay: 12
|
|
423
|
+
}
|
|
424
|
+
]
|
|
425
|
+
}),
|
|
426
|
+
whitelist: _index1.Whitelist.new(1673548139n, [
|
|
427
|
+
{
|
|
428
|
+
address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
429
|
+
allowFrom: 0n
|
|
430
|
+
}
|
|
431
|
+
]),
|
|
432
|
+
surplus: new _surplusparams.SurplusParams(10n, new _limitordersdk.Bps(10000n))
|
|
433
|
+
});
|
|
434
|
+
expect(nativeOrder.build().receiver).toEqual(settlementExt.toString());
|
|
435
|
+
});
|
|
403
436
|
});
|
|
@@ -488,6 +488,7 @@ export var FusionOrder = /*#__PURE__*/ function() {
|
|
|
488
488
|
optimizeReceiverAddress: false
|
|
489
489
|
}));
|
|
490
490
|
_order.inner = LimitOrder.fromNative(chainId, ethOrdersFactory, _object_spread_props(_object_spread({}, _orderInfo), {
|
|
491
|
+
receiver: _order.receiver,
|
|
491
492
|
salt: _order.salt
|
|
492
493
|
}), _order.inner.makerTraits, _order.inner.extension);
|
|
493
494
|
return _order;
|
|
@@ -396,4 +396,37 @@ describe('FusionOrder Native', function() {
|
|
|
396
396
|
expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
|
|
397
397
|
expect(FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
|
|
398
398
|
});
|
|
399
|
+
it('should have extension address in receiver if surplus passed', function() {
|
|
400
|
+
var ethOrderFactory = new ProxyFactory(Address.fromBigInt(1n), Address.fromBigInt(2n));
|
|
401
|
+
var chainId = NetworkEnum.ETHEREUM;
|
|
402
|
+
var settlementExt = Address.fromBigInt(3n);
|
|
403
|
+
var maker = new Address('0x00000000219ab540356cbb839cbe05303d7705fa');
|
|
404
|
+
var nativeOrder = FusionOrder.fromNative(chainId, ethOrderFactory, settlementExt, {
|
|
405
|
+
takerAsset: new Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
|
|
406
|
+
makingAmount: 1000000000000000000n,
|
|
407
|
+
takingAmount: 1420000000n,
|
|
408
|
+
maker: maker,
|
|
409
|
+
salt: 10n
|
|
410
|
+
}, {
|
|
411
|
+
auction: new AuctionDetails({
|
|
412
|
+
duration: 180n,
|
|
413
|
+
startTime: 1673548149n,
|
|
414
|
+
initialRateBump: 50000,
|
|
415
|
+
points: [
|
|
416
|
+
{
|
|
417
|
+
coefficient: 20000,
|
|
418
|
+
delay: 12
|
|
419
|
+
}
|
|
420
|
+
]
|
|
421
|
+
}),
|
|
422
|
+
whitelist: Whitelist.new(1673548139n, [
|
|
423
|
+
{
|
|
424
|
+
address: new Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
|
|
425
|
+
allowFrom: 0n
|
|
426
|
+
}
|
|
427
|
+
]),
|
|
428
|
+
surplus: new SurplusParams(10n, new Bps(10000n))
|
|
429
|
+
});
|
|
430
|
+
expect(nativeOrder.build().receiver).toEqual(settlementExt.toString());
|
|
431
|
+
});
|
|
399
432
|
});
|
package/dist/esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@1inch/fusion-sdk","version":"2.
|
|
1
|
+
{"name":"@1inch/fusion-sdk","version":"2.4.1","type":"module"}
|