@1inch/fusion-sdk 2.3.9-rc.0 → 2.3.9-rc.10

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.
Files changed (52) hide show
  1. package/dist/cjs/abi/NativeOrderFactory.abi.json +217 -0
  2. package/dist/cjs/abi/{ETHOrders.abi.json → NativeOrderImpl.abi.json} +110 -255
  3. package/dist/cjs/api/quoter/quote/quote.js +6 -4
  4. package/dist/cjs/api/quoter/quoter.request.js +0 -3
  5. package/dist/cjs/api/quoter/quoter.request.spec.js +0 -15
  6. package/dist/cjs/api/quoter/types.js +0 -2
  7. package/dist/cjs/contracts/index.js +21 -0
  8. package/dist/cjs/contracts/native-order-factory.js +115 -0
  9. package/dist/cjs/contracts/native-order-impl.js +130 -0
  10. package/dist/cjs/contracts/proxy-factory.js +87 -0
  11. package/dist/cjs/fusion-order/fusion-order.js +81 -5
  12. package/dist/cjs/fusion-order/fusion-order.spec.js +106 -0
  13. package/dist/cjs/fusion-order/index.js +0 -1
  14. package/dist/cjs/index.js +1 -0
  15. package/dist/cjs/sdk/sdk.js +79 -40
  16. package/dist/esm/abi/NativeOrderFactory.abi.json +217 -0
  17. package/dist/esm/abi/{ETHOrders.abi.json → NativeOrderImpl.abi.json} +110 -255
  18. package/dist/esm/api/quoter/quote/quote.js +7 -5
  19. package/dist/esm/api/quoter/quoter.request.js +0 -3
  20. package/dist/esm/api/quoter/quoter.request.spec.js +0 -15
  21. package/dist/esm/api/quoter/types.js +0 -2
  22. package/dist/esm/contracts/index.js +4 -0
  23. package/dist/esm/contracts/native-order-factory.js +100 -0
  24. package/dist/esm/contracts/native-order-impl.js +115 -0
  25. package/dist/esm/contracts/proxy-factory.js +72 -0
  26. package/dist/esm/fusion-order/fusion-order.js +79 -3
  27. package/dist/esm/fusion-order/fusion-order.spec.js +106 -0
  28. package/dist/esm/fusion-order/index.js +0 -1
  29. package/dist/esm/fusion-order/types.js +4 -0
  30. package/dist/esm/index.js +1 -0
  31. package/dist/esm/package.json +1 -1
  32. package/dist/esm/sdk/sdk.js +79 -40
  33. package/dist/types/src/api/quoter/quote/quote.d.ts +4 -3
  34. package/dist/types/src/api/quoter/types.d.ts +2 -1
  35. package/dist/types/src/contracts/index.d.ts +4 -0
  36. package/dist/types/src/contracts/native-order-factory.d.ts +9 -0
  37. package/dist/types/src/contracts/native-order-impl.d.ts +9 -0
  38. package/dist/types/src/contracts/proxy-factory.d.ts +8 -0
  39. package/dist/types/src/fusion-order/fusion-order.d.ts +6 -0
  40. package/dist/types/src/fusion-order/index.d.ts +0 -1
  41. package/dist/types/src/fusion-order/types.d.ts +1 -0
  42. package/dist/types/src/index.d.ts +1 -0
  43. package/dist/types/src/sdk/sdk.d.ts +4 -0
  44. package/dist/types/src/sdk/types.d.ts +2 -1
  45. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  46. package/package.json +2 -2
  47. package/dist/cjs/contracts/eth-orders.extension.js +0 -105
  48. package/dist/cjs/fusion-order/fusion-order-from-native.js +0 -183
  49. package/dist/esm/contracts/eth-orders.extension.js +0 -90
  50. package/dist/esm/fusion-order/fusion-order-from-native.js +0 -173
  51. package/dist/types/src/contracts/eth-orders.extension.d.ts +0 -11
  52. package/dist/types/src/fusion-order/fusion-order-from-native.d.ts +0 -13
@@ -9,6 +9,8 @@ var _index = require("./auction-details/index.js");
9
9
  var _index1 = require("./whitelist/index.js");
10
10
  var _surplusparams = require("./surplus-params.js");
11
11
  var _index2 = require("./fees/index.js");
12
+ var _proxyfactory = require("../contracts/proxy-factory.js");
13
+ var _constants = require("../constants.js");
12
14
  var _index3 = require("../amount-calculator/index.js");
13
15
  var _time = require("../utils/time.js");
14
16
  describe('Fusion Order', function() {
@@ -296,3 +298,107 @@ describe('Fusion Order', function() {
296
298
  expect(surplus).toEqual(25000000n);
297
299
  });
298
300
  });
301
+ describe('FusionOrder Native', function() {
302
+ it('should correct detect that order is from native asset', function() {
303
+ var ethOrderFactory = new _proxyfactory.ProxyFactory(_limitordersdk.Address.fromBigInt(1n), _limitordersdk.Address.fromBigInt(2n));
304
+ var chainId = _constants.NetworkEnum.ETHEREUM;
305
+ var settlementExt = _limitordersdk.Address.fromBigInt(3n);
306
+ var maker = new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa');
307
+ var nativeOrder = _fusionorder.FusionOrder.fromNative(chainId, ethOrderFactory, settlementExt, {
308
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
309
+ makingAmount: 1000000000000000000n,
310
+ takingAmount: 1420000000n,
311
+ maker: maker,
312
+ salt: 10n
313
+ }, {
314
+ auction: new _index.AuctionDetails({
315
+ duration: 180n,
316
+ startTime: 1673548149n,
317
+ initialRateBump: 50000,
318
+ points: [
319
+ {
320
+ coefficient: 20000,
321
+ delay: 12
322
+ }
323
+ ]
324
+ }),
325
+ whitelist: _index1.Whitelist.new(1673548139n, [
326
+ {
327
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
328
+ allowFrom: 0n
329
+ }
330
+ ]),
331
+ surplus: _surplusparams.SurplusParams.NO_FEE
332
+ });
333
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
334
+ expect(_fusionorder.FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
335
+ });
336
+ it('should correct detect that order is from native asset (no salt)', function() {
337
+ var ethOrderFactory = new _proxyfactory.ProxyFactory(new _limitordersdk.Address('0x62c650084e97a0fba2ecf365cc6d8a7722425363'), new _limitordersdk.Address('0xe8773a43fce4eedb18d0edbaf319059e1ae786af'));
338
+ var chainId = _constants.NetworkEnum.ETHEREUM;
339
+ var settlementExt = new _limitordersdk.Address('0x2ad5004c60e16e54d5007c80ce329adde5b51ef5');
340
+ var maker = new _limitordersdk.Address('0x962a836519109e162754161000d65d9dc027fa0f');
341
+ var nativeOrder = _fusionorder.FusionOrder.fromNative(chainId, ethOrderFactory, settlementExt, {
342
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
343
+ makingAmount: 1000000000000000000n,
344
+ takingAmount: 1420000000n,
345
+ maker: maker
346
+ }, {
347
+ auction: new _index.AuctionDetails({
348
+ duration: 180n,
349
+ startTime: 1673548149n,
350
+ initialRateBump: 50000,
351
+ points: [
352
+ {
353
+ coefficient: 20000,
354
+ delay: 12
355
+ }
356
+ ]
357
+ }),
358
+ whitelist: _index1.Whitelist.new(1673548139n, [
359
+ {
360
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
361
+ allowFrom: 0n
362
+ }
363
+ ]),
364
+ surplus: _surplusparams.SurplusParams.NO_FEE
365
+ });
366
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
367
+ expect(_fusionorder.FusionOrder.fromDataAndExtension(nativeOrder.build(), _limitordersdk.Extension.decode(nativeOrder.extension.encode())).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
368
+ });
369
+ it('should correct detect that order is NOT from native asset', function() {
370
+ var ethOrderFactory = new _proxyfactory.ProxyFactory(_limitordersdk.Address.fromBigInt(1n), _limitordersdk.Address.fromBigInt(2n));
371
+ var chainId = _constants.NetworkEnum.ETHEREUM;
372
+ var settlementExt = _limitordersdk.Address.fromBigInt(3n);
373
+ var maker = new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa');
374
+ var nativeOrder = _fusionorder.FusionOrder.new(settlementExt, {
375
+ makerAsset: new _limitordersdk.Address('0x1000000000000000000000000000000000000000'),
376
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
377
+ makingAmount: 1000000000000000000n,
378
+ takingAmount: 1420000000n,
379
+ maker: maker,
380
+ salt: 10n
381
+ }, {
382
+ auction: new _index.AuctionDetails({
383
+ duration: 180n,
384
+ startTime: 1673548149n,
385
+ initialRateBump: 50000,
386
+ points: [
387
+ {
388
+ coefficient: 20000,
389
+ delay: 12
390
+ }
391
+ ]
392
+ }),
393
+ whitelist: _index1.Whitelist.new(1673548139n, [
394
+ {
395
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
396
+ allowFrom: 0n
397
+ }
398
+ ]),
399
+ surplus: _surplusparams.SurplusParams.NO_FEE
400
+ });
401
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
402
+ expect(_fusionorder.FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
403
+ });
404
+ });
@@ -9,7 +9,6 @@ Object.defineProperty(exports, "CHAIN_TO_WRAPPER", {
9
9
  }
10
10
  });
11
11
  _export_star(require("./fusion-order.js"), exports);
12
- _export_star(require("./fusion-order-from-native.js"), exports);
13
12
  _export_star(require("./auction-details/index.js"), exports);
14
13
  _export_star(require("./whitelist/index.js"), exports);
15
14
  _export_star(require("./fusion-extension.js"), exports);
package/dist/cjs/index.js CHANGED
@@ -76,6 +76,7 @@ _export_star(require("./utils/time.js"), exports);
76
76
  _export_star(require("./validations.js"), exports);
77
77
  _export_star(require("./ws-api/index.js"), exports);
78
78
  _export_star(require("./errors.js"), exports);
79
+ _export_star(require("./contracts/index.js"), exports);
79
80
  var _index = require("./api/index.js");
80
81
  function _export_star(from, to) {
81
82
  Object.keys(from).forEach(function(k) {
@@ -12,7 +12,6 @@ var _limitordersdk = require("@1inch/limit-order-sdk");
12
12
  var _index = require("./encoders/index.js");
13
13
  var _index1 = require("../api/index.js");
14
14
  var _index2 = require("../api/orders/index.js");
15
- var _index3 = require("../fusion-order/index.js");
16
15
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
17
16
  try {
18
17
  var info = gen[key](arg);
@@ -74,13 +73,6 @@ function _define_property(obj, key, value) {
74
73
  }
75
74
  return obj;
76
75
  }
77
- function _instanceof(left, right) {
78
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
79
- return !!right[Symbol.hasInstance](left);
80
- } else {
81
- return left instanceof right;
82
- }
83
- }
84
76
  function _ts_generator(thisArg, body) {
85
77
  var f, y, t, g, _ = {
86
78
  label: 0,
@@ -311,7 +303,7 @@ var FusionSDK = /*#__PURE__*/ function() {
311
303
  value: function createOrder(params) {
312
304
  var _this = this;
313
305
  return _async_to_generator(function() {
314
- var quote, order, hash;
306
+ var _quote_nativeOrderFactory, quote, order, hash;
315
307
  return _ts_generator(this, function(_state) {
316
308
  switch(_state.label){
317
309
  case 0:
@@ -339,7 +331,8 @@ var FusionSDK = /*#__PURE__*/ function() {
339
331
  {
340
332
  order: order,
341
333
  hash: hash,
342
- quoteId: quote.quoteId
334
+ quoteId: quote.quoteId,
335
+ nativeOrderFactory: (_quote_nativeOrderFactory = quote.nativeOrderFactory) === null || _quote_nativeOrderFactory === void 0 ? void 0 : _quote_nativeOrderFactory.factory
343
336
  }
344
337
  ];
345
338
  }
@@ -352,12 +345,13 @@ var FusionSDK = /*#__PURE__*/ function() {
352
345
  value: /**
353
346
  * Submit order to relayer
354
347
  *
355
- * Note, that orders from native assets must be submitted onchain as well
356
- * @see EthOrdersExtension.depositForOrder
348
+ * Note, that orders from native assets must be submitted with `submitNativeOrder`
349
+ *
350
+ * @see FusionSDK.submitNativeOrder
357
351
  */ function submitOrder(order, quoteId) {
358
352
  var _this = this;
359
353
  return _async_to_generator(function() {
360
- var signature, orderStruct, relayerRequest;
354
+ var signature;
361
355
  return _ts_generator(this, function(_state) {
362
356
  switch(_state.label){
363
357
  case 0:
@@ -367,34 +361,36 @@ var FusionSDK = /*#__PURE__*/ function() {
367
361
  ];
368
362
  case 1:
369
363
  signature = _state.sent();
370
- orderStruct = order.build();
371
- relayerRequest = _index1.RelayerRequest.new({
372
- order: orderStruct,
373
- signature: signature,
374
- quoteId: quoteId,
375
- extension: order.extension.encode()
376
- });
377
- return [
378
- 4,
379
- _this.api.submitOrder(relayerRequest)
380
- ];
381
- case 2:
382
- _state.sent();
383
364
  return [
384
365
  2,
385
- {
386
- order: orderStruct,
387
- signature: signature,
388
- quoteId: quoteId,
389
- orderHash: order.getOrderHash(_this.config.network),
390
- extension: relayerRequest.extension
391
- }
366
+ _this._submitOrder(order, quoteId, signature)
392
367
  ];
393
368
  }
394
369
  });
395
370
  })();
396
371
  }
397
372
  },
373
+ {
374
+ key: "submitNativeOrder",
375
+ value: /**
376
+ * Submit order to relayer
377
+ *
378
+ * Note, that orders from native assets must be submitted on-chain as well
379
+ * @see NativeOrdersFactory.create
380
+ */ function submitNativeOrder(order, maker, quoteId) {
381
+ var _this = this;
382
+ return _async_to_generator(function() {
383
+ var signature;
384
+ return _ts_generator(this, function(_state) {
385
+ signature = _this.signNativeOrder(order, maker);
386
+ return [
387
+ 2,
388
+ _this._submitOrder(order, quoteId, signature)
389
+ ];
390
+ });
391
+ })();
392
+ }
393
+ },
398
394
  {
399
395
  key: "placeOrder",
400
396
  value: function placeOrder(params) {
@@ -452,17 +448,17 @@ var FusionSDK = /*#__PURE__*/ function() {
452
448
  },
453
449
  {
454
450
  key: "signOrder",
455
- value: function signOrder(order) {
451
+ value: /**
452
+ * Sign order using `blockchainProvider` from config
453
+ *
454
+ * Use FusionSDK.signNativeOrder for signing orders from native asset
455
+ *
456
+ * @see FusionSDK.signNativeOrder
457
+ */ function signOrder(order) {
456
458
  var _this = this;
457
459
  return _async_to_generator(function() {
458
460
  var orderStruct, data;
459
461
  return _ts_generator(this, function(_state) {
460
- if (_instanceof(order, _index3.FusionOrderFromNative)) {
461
- return [
462
- 2,
463
- order.realMaker.toString()
464
- ];
465
- }
466
462
  if (!_this.config.blockchainProvider) {
467
463
  throw new Error('blockchainProvider has not set to config');
468
464
  }
@@ -476,6 +472,49 @@ var FusionSDK = /*#__PURE__*/ function() {
476
472
  })();
477
473
  }
478
474
  },
475
+ {
476
+ key: "signNativeOrder",
477
+ value: function signNativeOrder(order, maker) {
478
+ return order.nativeSignature(maker);
479
+ }
480
+ },
481
+ {
482
+ key: "_submitOrder",
483
+ value: function _submitOrder(order, quoteId, signature) {
484
+ var _this = this;
485
+ return _async_to_generator(function() {
486
+ var orderStruct, relayerRequest;
487
+ return _ts_generator(this, function(_state) {
488
+ switch(_state.label){
489
+ case 0:
490
+ orderStruct = order.build();
491
+ relayerRequest = _index1.RelayerRequest.new({
492
+ order: orderStruct,
493
+ signature: signature,
494
+ quoteId: quoteId,
495
+ extension: order.extension.encode()
496
+ });
497
+ return [
498
+ 4,
499
+ _this.api.submitOrder(relayerRequest)
500
+ ];
501
+ case 1:
502
+ _state.sent();
503
+ return [
504
+ 2,
505
+ {
506
+ order: orderStruct,
507
+ signature: signature,
508
+ quoteId: quoteId,
509
+ orderHash: order.getOrderHash(_this.config.network),
510
+ extension: relayerRequest.extension
511
+ }
512
+ ];
513
+ }
514
+ });
515
+ })();
516
+ }
517
+ },
479
518
  {
480
519
  key: "getQuoteResult",
481
520
  value: function getQuoteResult(params) {
@@ -0,0 +1,217 @@
1
+ [
2
+ {
3
+ "type": "constructor",
4
+ "inputs": [
5
+ {
6
+ "name": "weth",
7
+ "type": "address",
8
+ "internalType": "contract IWETH"
9
+ },
10
+ {
11
+ "name": "nativeOrderImplementation",
12
+ "type": "address",
13
+ "internalType": "address"
14
+ },
15
+ {
16
+ "name": "limitOrderProtocol",
17
+ "type": "address",
18
+ "internalType": "address"
19
+ },
20
+ {
21
+ "name": "accessToken",
22
+ "type": "address",
23
+ "internalType": "contract IERC20"
24
+ }
25
+ ],
26
+ "stateMutability": "nonpayable"
27
+ },
28
+ {
29
+ "type": "function",
30
+ "name": "create",
31
+ "inputs": [
32
+ {
33
+ "name": "makerOrder",
34
+ "type": "tuple",
35
+ "internalType": "struct IOrderMixin.Order",
36
+ "components": [
37
+ {
38
+ "name": "salt",
39
+ "type": "uint256",
40
+ "internalType": "uint256"
41
+ },
42
+ {
43
+ "name": "maker",
44
+ "type": "uint256",
45
+ "internalType": "Address"
46
+ },
47
+ {
48
+ "name": "receiver",
49
+ "type": "uint256",
50
+ "internalType": "Address"
51
+ },
52
+ {
53
+ "name": "makerAsset",
54
+ "type": "uint256",
55
+ "internalType": "Address"
56
+ },
57
+ {
58
+ "name": "takerAsset",
59
+ "type": "uint256",
60
+ "internalType": "Address"
61
+ },
62
+ {
63
+ "name": "makingAmount",
64
+ "type": "uint256",
65
+ "internalType": "uint256"
66
+ },
67
+ {
68
+ "name": "takingAmount",
69
+ "type": "uint256",
70
+ "internalType": "uint256"
71
+ },
72
+ {
73
+ "name": "makerTraits",
74
+ "type": "uint256",
75
+ "internalType": "MakerTraits"
76
+ }
77
+ ]
78
+ }
79
+ ],
80
+ "outputs": [
81
+ {"name": "clone", "type": "address", "internalType": "address"}
82
+ ],
83
+ "stateMutability": "payable"
84
+ },
85
+ {
86
+ "type": "function",
87
+ "name": "owner",
88
+ "inputs": [],
89
+ "outputs": [{"name": "", "type": "address", "internalType": "address"}],
90
+ "stateMutability": "view"
91
+ },
92
+ {
93
+ "type": "function",
94
+ "name": "renounceOwnership",
95
+ "inputs": [],
96
+ "outputs": [],
97
+ "stateMutability": "nonpayable"
98
+ },
99
+ {
100
+ "type": "function",
101
+ "name": "rescueFunds",
102
+ "inputs": [
103
+ {"name": "token", "type": "address", "internalType": "address"},
104
+ {"name": "to", "type": "address", "internalType": "address"},
105
+ {"name": "amount", "type": "uint256", "internalType": "uint256"}
106
+ ],
107
+ "outputs": [],
108
+ "stateMutability": "nonpayable"
109
+ },
110
+ {
111
+ "type": "function",
112
+ "name": "transferOwnership",
113
+ "inputs": [
114
+ {"name": "newOwner", "type": "address", "internalType": "address"}
115
+ ],
116
+ "outputs": [],
117
+ "stateMutability": "nonpayable"
118
+ },
119
+ {
120
+ "type": "event",
121
+ "name": "NativeOrderCreated",
122
+ "inputs": [
123
+ {
124
+ "name": "maker",
125
+ "type": "address",
126
+ "indexed": false,
127
+ "internalType": "address"
128
+ },
129
+ {
130
+ "name": "orderHash",
131
+ "type": "bytes32",
132
+ "indexed": false,
133
+ "internalType": "bytes32"
134
+ },
135
+ {
136
+ "name": "clone",
137
+ "type": "address",
138
+ "indexed": false,
139
+ "internalType": "address"
140
+ },
141
+ {
142
+ "name": "value",
143
+ "type": "uint256",
144
+ "indexed": false,
145
+ "internalType": "uint256"
146
+ }
147
+ ],
148
+ "anonymous": false
149
+ },
150
+ {
151
+ "type": "event",
152
+ "name": "OwnershipTransferred",
153
+ "inputs": [
154
+ {
155
+ "name": "previousOwner",
156
+ "type": "address",
157
+ "indexed": true,
158
+ "internalType": "address"
159
+ },
160
+ {
161
+ "name": "newOwner",
162
+ "type": "address",
163
+ "indexed": true,
164
+ "internalType": "address"
165
+ }
166
+ ],
167
+ "anonymous": false
168
+ },
169
+ {"type": "error", "name": "FailedDeployment", "inputs": []},
170
+ {
171
+ "type": "error",
172
+ "name": "InsufficientBalance",
173
+ "inputs": [
174
+ {"name": "balance", "type": "uint256", "internalType": "uint256"},
175
+ {"name": "needed", "type": "uint256", "internalType": "uint256"}
176
+ ]
177
+ },
178
+ {
179
+ "type": "error",
180
+ "name": "OrderMakerShouldBeMsgSender",
181
+ "inputs": [
182
+ {"name": "expected", "type": "address", "internalType": "address"},
183
+ {"name": "actual", "type": "address", "internalType": "address"}
184
+ ]
185
+ },
186
+ {
187
+ "type": "error",
188
+ "name": "OrderMakingAmountShouldBeEqualToMsgValue",
189
+ "inputs": [
190
+ {"name": "expected", "type": "uint256", "internalType": "uint256"},
191
+ {"name": "actual", "type": "uint256", "internalType": "uint256"}
192
+ ]
193
+ },
194
+ {
195
+ "type": "error",
196
+ "name": "OrderReceiverShouldNotBeThis",
197
+ "inputs": [
198
+ {"name": "receiver", "type": "address", "internalType": "address"},
199
+ {"name": "self", "type": "address", "internalType": "address"}
200
+ ]
201
+ },
202
+ {
203
+ "type": "error",
204
+ "name": "OwnableInvalidOwner",
205
+ "inputs": [
206
+ {"name": "owner", "type": "address", "internalType": "address"}
207
+ ]
208
+ },
209
+ {
210
+ "type": "error",
211
+ "name": "OwnableUnauthorizedAccount",
212
+ "inputs": [
213
+ {"name": "account", "type": "address", "internalType": "address"}
214
+ ]
215
+ },
216
+ {"type": "error", "name": "SafeTransferFailed", "inputs": []}
217
+ ]