@hypercerts-org/marketplace-sdk 0.4.1-alpha.0 → 0.5.0-alpha.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/index.esm.js CHANGED
@@ -2,6 +2,8 @@ import { Contract, ZeroAddress, AbiCoder, TypedDataEncoder, keccak256, solidityP
2
2
  import { HypercertExchangeAbi, TransferManagerAbi, OrderValidatorV2AAbi, deployments, asDeployedChain as asDeployedChain$2 } from '@hypercerts-org/contracts';
3
3
  import { MerkleTree } from 'merkletreejs';
4
4
  import { CONSTANTS } from '@hypercerts-org/sdk';
5
+ import Safe from '@safe-global/protocol-kit';
6
+ import SafeApiKit from '@safe-global/api-kit';
5
7
 
6
8
  var abiIERC721 = [
7
9
  {
@@ -3609,7 +3611,7 @@ var LooksRareProtocol = [
3609
3611
  }
3610
3612
  ];
3611
3613
 
3612
- var TransferManager = [
3614
+ var abiTransferManager = [
3613
3615
  {
3614
3616
  inputs: [
3615
3617
  {
@@ -4547,20 +4549,6 @@ var OrderValidatorV2A = [
4547
4549
  stateMutability: "view",
4548
4550
  type: "function"
4549
4551
  },
4550
- {
4551
- inputs: [
4552
- ],
4553
- name: "royaltyFeeRegistry",
4554
- outputs: [
4555
- {
4556
- internalType: "contract IRoyaltyFeeRegistry",
4557
- name: "",
4558
- type: "address"
4559
- }
4560
- ],
4561
- stateMutability: "view",
4562
- type: "function"
4563
- },
4564
4552
  {
4565
4553
  inputs: [
4566
4554
  ],
@@ -4949,15 +4937,15 @@ var WETH = [
4949
4937
  ];
4950
4938
 
4951
4939
  /**
4952
- * Name of the LooksRare contract. Used for EIP712 domain separator.
4940
+ * EIP712 domain name.
4953
4941
  * @see {@link https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator EIP712 doc}
4954
4942
  */
4955
- const contractName = "LooksRareProtocol";
4943
+ const DOMAIN_NAME = "LooksRareProtocol";
4956
4944
  /**
4957
- * Protocol version. Used for EIP712 domain separator.
4945
+ * EIP712 domain version.
4958
4946
  * @see {@link https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator EIP712 doc}
4959
4947
  */
4960
- const version = 2;
4948
+ const DOMAIN_VERSION = 2;
4961
4949
 
4962
4950
  var e$2 = {
4963
4951
  NAME: "Name",
@@ -5031,20 +5019,20 @@ class GraphQLError extends Error {
5031
5019
 
5032
5020
  var n;
5033
5021
 
5034
- var i$1;
5022
+ var i;
5035
5023
 
5036
5024
  function error(e) {
5037
- return new GraphQLError(`Syntax Error: Unexpected token at ${i$1} in ${e}`);
5025
+ return new GraphQLError(`Syntax Error: Unexpected token at ${i} in ${e}`);
5038
5026
  }
5039
5027
 
5040
5028
  function advance(e) {
5041
- e.lastIndex = i$1;
5029
+ e.lastIndex = i;
5042
5030
  if (e.test(n)) {
5043
- return n.slice(i$1, i$1 = e.lastIndex);
5031
+ return n.slice(i, i = e.lastIndex);
5044
5032
  }
5045
5033
  }
5046
5034
 
5047
- var t = / +(?=[^\s])/y;
5035
+ var t$1 = / +(?=[^\s])/y;
5048
5036
 
5049
5037
  function blockString(e) {
5050
5038
  var r = e.split("\n");
@@ -5053,10 +5041,10 @@ function blockString(e) {
5053
5041
  var a = 0;
5054
5042
  var l = r.length - 1;
5055
5043
  for (var o = 0; o < r.length; o++) {
5056
- t.lastIndex = 0;
5057
- if (t.test(r[o])) {
5058
- if (o && (!i || t.lastIndex < i)) {
5059
- i = t.lastIndex;
5044
+ t$1.lastIndex = 0;
5045
+ if (t$1.test(r[o])) {
5046
+ if (o && (!i || t$1.lastIndex < i)) {
5047
+ i = t$1.lastIndex;
5060
5048
  }
5061
5049
  a = a || o;
5062
5050
  l = o;
@@ -5072,17 +5060,17 @@ function blockString(e) {
5072
5060
  }
5073
5061
 
5074
5062
  function ignored() {
5075
- for (var e = 0 | n.charCodeAt(i$1++); 9 === e || 10 === e || 13 === e || 32 === e || 35 === e || 44 === e || 65279 === e; e = 0 | n.charCodeAt(i$1++)) {
5063
+ for (var e = 0 | n.charCodeAt(i++); 9 === e || 10 === e || 13 === e || 32 === e || 35 === e || 44 === e || 65279 === e; e = 0 | n.charCodeAt(i++)) {
5076
5064
  if (35 === e) {
5077
- while (10 !== (e = n.charCodeAt(i$1++)) && 13 !== e) {}
5065
+ while (10 !== (e = n.charCodeAt(i++)) && 13 !== e) {}
5078
5066
  }
5079
5067
  }
5080
- i$1--;
5068
+ i--;
5081
5069
  }
5082
5070
 
5083
- var a = /[_A-Za-z]\w*/y;
5071
+ var a$1 = /[_A-Za-z]\w*/y;
5084
5072
 
5085
- var l$1 = new RegExp("(?:(null|true|false)|\\$(" + a.source + ')|(-?\\d+)((?:\\.\\d+)?[eE][+-]?\\d+|\\.\\d+)?|("""(?:"""|(?:[\\s\\S]*?[^\\\\])"""))|("(?:"|[^\\r\\n]*?[^\\\\]"))|(' + a.source + "))", "y");
5073
+ var l$1 = new RegExp("(?:(null|true|false)|\\$(" + a$1.source + ')|(-?\\d+)((?:\\.\\d+)?[eE][+-]?\\d+|\\.\\d+)?|("""(?:"""|(?:[\\s\\S]*?[^\\\\])"""))|("(?:"|[^\\r\\n]*?[^\\\\]"))|(' + a$1.source + "))", "y");
5086
5074
 
5087
5075
  var o = function(e) {
5088
5076
  e[e.Const = 1] = "Const";
@@ -5100,30 +5088,30 @@ var u$1 = /\\/;
5100
5088
  function value(e) {
5101
5089
  var r;
5102
5090
  var t;
5103
- l$1.lastIndex = i$1;
5104
- if (91 === n.charCodeAt(i$1)) {
5105
- i$1++;
5091
+ l$1.lastIndex = i;
5092
+ if (91 === n.charCodeAt(i)) {
5093
+ i++;
5106
5094
  ignored();
5107
5095
  var d = [];
5108
- while (93 !== n.charCodeAt(i$1)) {
5096
+ while (93 !== n.charCodeAt(i)) {
5109
5097
  d.push(value(e));
5110
5098
  }
5111
- i$1++;
5099
+ i++;
5112
5100
  ignored();
5113
5101
  return {
5114
5102
  kind: "ListValue",
5115
5103
  values: d
5116
5104
  };
5117
- } else if (123 === n.charCodeAt(i$1)) {
5118
- i$1++;
5105
+ } else if (123 === n.charCodeAt(i)) {
5106
+ i++;
5119
5107
  ignored();
5120
5108
  var s = [];
5121
- while (125 !== n.charCodeAt(i$1)) {
5122
- if (null == (r = advance(a))) {
5109
+ while (125 !== n.charCodeAt(i)) {
5110
+ if (null == (r = advance(a$1))) {
5123
5111
  throw error("ObjectField");
5124
5112
  }
5125
5113
  ignored();
5126
- if (58 !== n.charCodeAt(i$1++)) {
5114
+ if (58 !== n.charCodeAt(i++)) {
5127
5115
  throw error("ObjectField");
5128
5116
  }
5129
5117
  ignored();
@@ -5136,14 +5124,14 @@ function value(e) {
5136
5124
  value: value(e)
5137
5125
  });
5138
5126
  }
5139
- i$1++;
5127
+ i++;
5140
5128
  ignored();
5141
5129
  return {
5142
5130
  kind: "ObjectValue",
5143
5131
  fields: s
5144
5132
  };
5145
5133
  } else if (null != (t = l$1.exec(n))) {
5146
- i$1 = l$1.lastIndex;
5134
+ i = l$1.lastIndex;
5147
5135
  ignored();
5148
5136
  if (null != (r = t[o.Const])) {
5149
5137
  return "null" === r ? {
@@ -5200,17 +5188,17 @@ function value(e) {
5200
5188
  }
5201
5189
 
5202
5190
  function arguments_(e) {
5203
- if (40 === n.charCodeAt(i$1)) {
5191
+ if (40 === n.charCodeAt(i)) {
5204
5192
  var r = [];
5205
- i$1++;
5193
+ i++;
5206
5194
  ignored();
5207
5195
  var t;
5208
5196
  do {
5209
- if (null == (t = advance(a))) {
5197
+ if (null == (t = advance(a$1))) {
5210
5198
  throw error("Argument");
5211
5199
  }
5212
5200
  ignored();
5213
- if (58 !== n.charCodeAt(i$1++)) {
5201
+ if (58 !== n.charCodeAt(i++)) {
5214
5202
  throw error("Argument");
5215
5203
  }
5216
5204
  ignored();
@@ -5222,20 +5210,20 @@ function arguments_(e) {
5222
5210
  },
5223
5211
  value: value(e)
5224
5212
  });
5225
- } while (41 !== n.charCodeAt(i$1));
5226
- i$1++;
5213
+ } while (41 !== n.charCodeAt(i));
5214
+ i++;
5227
5215
  ignored();
5228
5216
  return r;
5229
5217
  }
5230
5218
  }
5231
5219
 
5232
5220
  function directives(e) {
5233
- if (64 === n.charCodeAt(i$1)) {
5221
+ if (64 === n.charCodeAt(i)) {
5234
5222
  var r = [];
5235
5223
  var t;
5236
5224
  do {
5237
- i$1++;
5238
- if (null == (t = advance(a))) {
5225
+ i++;
5226
+ if (null == (t = advance(a$1))) {
5239
5227
  throw error("Directive");
5240
5228
  }
5241
5229
  ignored();
@@ -5247,7 +5235,7 @@ function directives(e) {
5247
5235
  },
5248
5236
  arguments: arguments_(e)
5249
5237
  });
5250
- } while (64 === n.charCodeAt(i$1));
5238
+ } while (64 === n.charCodeAt(i));
5251
5239
  return r;
5252
5240
  }
5253
5241
  }
@@ -5255,12 +5243,12 @@ function directives(e) {
5255
5243
  function type() {
5256
5244
  var e;
5257
5245
  var r = 0;
5258
- while (91 === n.charCodeAt(i$1)) {
5246
+ while (91 === n.charCodeAt(i)) {
5259
5247
  r++;
5260
- i$1++;
5248
+ i++;
5261
5249
  ignored();
5262
5250
  }
5263
- if (null == (e = advance(a))) {
5251
+ if (null == (e = advance(a$1))) {
5264
5252
  throw error("NamedType");
5265
5253
  }
5266
5254
  ignored();
@@ -5272,8 +5260,8 @@ function type() {
5272
5260
  }
5273
5261
  };
5274
5262
  do {
5275
- if (33 === n.charCodeAt(i$1)) {
5276
- i$1++;
5263
+ if (33 === n.charCodeAt(i)) {
5264
+ i++;
5277
5265
  ignored();
5278
5266
  t = {
5279
5267
  kind: "NonNullType",
@@ -5281,7 +5269,7 @@ function type() {
5281
5269
  };
5282
5270
  }
5283
5271
  if (r) {
5284
- if (93 !== n.charCodeAt(i$1++)) {
5272
+ if (93 !== n.charCodeAt(i++)) {
5285
5273
  throw error("NamedType");
5286
5274
  }
5287
5275
  ignored();
@@ -5294,25 +5282,25 @@ function type() {
5294
5282
  return t;
5295
5283
  }
5296
5284
 
5297
- var d$1 = new RegExp("(?:(\\.{3})|(" + a.source + "))", "y");
5285
+ var d$1 = new RegExp("(?:(\\.{3})|(" + a$1.source + "))", "y");
5298
5286
 
5299
- var s = function(e) {
5287
+ var s$1 = function(e) {
5300
5288
  e[e.Spread = 1] = "Spread";
5301
5289
  e[e.Name = 2] = "Name";
5302
5290
  return e;
5303
- }(s || {});
5291
+ }(s$1 || {});
5304
5292
 
5305
5293
  function selectionSet() {
5306
5294
  var e = [];
5307
5295
  var r;
5308
5296
  var t;
5309
5297
  do {
5310
- d$1.lastIndex = i$1;
5298
+ d$1.lastIndex = i;
5311
5299
  if (null != (t = d$1.exec(n))) {
5312
- i$1 = d$1.lastIndex;
5313
- if (null != t[s.Spread]) {
5300
+ i = d$1.lastIndex;
5301
+ if (null != t[s$1.Spread]) {
5314
5302
  ignored();
5315
- var l = advance(a);
5303
+ var l = advance(a$1);
5316
5304
  if (null != l && "on" !== l) {
5317
5305
  ignored();
5318
5306
  e.push({
@@ -5326,13 +5314,13 @@ function selectionSet() {
5326
5314
  } else {
5327
5315
  ignored();
5328
5316
  if ("on" === l) {
5329
- if (null == (l = advance(a))) {
5317
+ if (null == (l = advance(a$1))) {
5330
5318
  throw error("NamedType");
5331
5319
  }
5332
5320
  ignored();
5333
5321
  }
5334
5322
  var o = directives(!1);
5335
- if (123 !== n.charCodeAt(i$1++)) {
5323
+ if (123 !== n.charCodeAt(i++)) {
5336
5324
  throw error("InlineFragment");
5337
5325
  }
5338
5326
  ignored();
@@ -5349,14 +5337,14 @@ function selectionSet() {
5349
5337
  selectionSet: selectionSet()
5350
5338
  });
5351
5339
  }
5352
- } else if (null != (r = t[s.Name])) {
5340
+ } else if (null != (r = t[s$1.Name])) {
5353
5341
  var u = void 0;
5354
5342
  ignored();
5355
- if (58 === n.charCodeAt(i$1)) {
5356
- i$1++;
5343
+ if (58 === n.charCodeAt(i)) {
5344
+ i++;
5357
5345
  ignored();
5358
5346
  u = r;
5359
- if (null == (r = advance(a))) {
5347
+ if (null == (r = advance(a$1))) {
5360
5348
  throw error("Field");
5361
5349
  }
5362
5350
  ignored();
@@ -5365,8 +5353,8 @@ function selectionSet() {
5365
5353
  ignored();
5366
5354
  var c = directives(!1);
5367
5355
  var f = void 0;
5368
- if (123 === n.charCodeAt(i$1)) {
5369
- i$1++;
5356
+ if (123 === n.charCodeAt(i)) {
5357
+ i++;
5370
5358
  ignored();
5371
5359
  f = selectionSet();
5372
5360
  }
@@ -5388,8 +5376,8 @@ function selectionSet() {
5388
5376
  } else {
5389
5377
  throw error("SelectionSet");
5390
5378
  }
5391
- } while (125 !== n.charCodeAt(i$1));
5392
- i$1++;
5379
+ } while (125 !== n.charCodeAt(i));
5380
+ i++;
5393
5381
  ignored();
5394
5382
  return {
5395
5383
  kind: "SelectionSet",
@@ -5400,20 +5388,20 @@ function selectionSet() {
5400
5388
  function fragmentDefinition() {
5401
5389
  var e;
5402
5390
  var r;
5403
- if (null == (e = advance(a))) {
5391
+ if (null == (e = advance(a$1))) {
5404
5392
  throw error("FragmentDefinition");
5405
5393
  }
5406
5394
  ignored();
5407
- if ("on" !== advance(a)) {
5395
+ if ("on" !== advance(a$1)) {
5408
5396
  throw error("FragmentDefinition");
5409
5397
  }
5410
5398
  ignored();
5411
- if (null == (r = advance(a))) {
5399
+ if (null == (r = advance(a$1))) {
5412
5400
  throw error("FragmentDefinition");
5413
5401
  }
5414
5402
  ignored();
5415
5403
  var t = directives(!1);
5416
- if (123 !== n.charCodeAt(i$1++)) {
5404
+ if (123 !== n.charCodeAt(i++)) {
5417
5405
  throw error("FragmentDefinition");
5418
5406
  }
5419
5407
  ignored();
@@ -5443,30 +5431,30 @@ function operationDefinition(e) {
5443
5431
  var l;
5444
5432
  if (e) {
5445
5433
  ignored();
5446
- r = advance(a);
5434
+ r = advance(a$1);
5447
5435
  t = function variableDefinitions() {
5448
5436
  ignored();
5449
- if (40 === n.charCodeAt(i$1)) {
5437
+ if (40 === n.charCodeAt(i)) {
5450
5438
  var e = [];
5451
- i$1++;
5439
+ i++;
5452
5440
  ignored();
5453
5441
  var r;
5454
5442
  do {
5455
- if (36 !== n.charCodeAt(i$1++)) {
5443
+ if (36 !== n.charCodeAt(i++)) {
5456
5444
  throw error("Variable");
5457
5445
  }
5458
- if (null == (r = advance(a))) {
5446
+ if (null == (r = advance(a$1))) {
5459
5447
  throw error("Variable");
5460
5448
  }
5461
5449
  ignored();
5462
- if (58 !== n.charCodeAt(i$1++)) {
5450
+ if (58 !== n.charCodeAt(i++)) {
5463
5451
  throw error("VariableDefinition");
5464
5452
  }
5465
5453
  ignored();
5466
5454
  var t = type();
5467
5455
  var l = void 0;
5468
- if (61 === n.charCodeAt(i$1)) {
5469
- i$1++;
5456
+ if (61 === n.charCodeAt(i)) {
5457
+ i++;
5470
5458
  ignored();
5471
5459
  l = value(!0);
5472
5460
  }
@@ -5484,16 +5472,16 @@ function operationDefinition(e) {
5484
5472
  defaultValue: l,
5485
5473
  directives: directives(!0)
5486
5474
  });
5487
- } while (41 !== n.charCodeAt(i$1));
5488
- i$1++;
5475
+ } while (41 !== n.charCodeAt(i));
5476
+ i++;
5489
5477
  ignored();
5490
5478
  return e;
5491
5479
  }
5492
5480
  }();
5493
5481
  l = directives(!1);
5494
5482
  }
5495
- if (123 === n.charCodeAt(i$1)) {
5496
- i$1++;
5483
+ if (123 === n.charCodeAt(i)) {
5484
+ i++;
5497
5485
  ignored();
5498
5486
  return {
5499
5487
  kind: "OperationDefinition",
@@ -5510,7 +5498,7 @@ function operationDefinition(e) {
5510
5498
  }
5511
5499
 
5512
5500
  function parse(e, r) {
5513
- i$1 = 0;
5501
+ i = 0;
5514
5502
  return function document(e, r) {
5515
5503
  var n;
5516
5504
  var t;
@@ -5525,7 +5513,7 @@ function parse(e, r) {
5525
5513
  } else {
5526
5514
  throw error("Document");
5527
5515
  }
5528
- } while (i$1 < e.length);
5516
+ } while (i < e.length);
5529
5517
  if (!r) {
5530
5518
  var l;
5531
5519
  return {
@@ -5697,42 +5685,88 @@ function print(e) {
5697
5685
  return g[e.kind] ? g[e.kind](e) : "";
5698
5686
  }
5699
5687
 
5688
+ var a = 0;
5689
+
5690
+ var e$1 = new Set;
5691
+
5700
5692
  function initGraphQLTada() {
5701
- function graphql(e, i) {
5702
- var a = parse(e).definitions;
5703
- var t = new Set;
5704
- for (var s of i || []) {
5705
- for (var d of s.definitions) {
5706
- if (d.kind === e$2.FRAGMENT_DEFINITION && !t.has(d)) {
5707
- a.push(d);
5708
- t.add(d);
5693
+ function graphql(t, i) {
5694
+ var o = parse(t).definitions;
5695
+ var s = new Set;
5696
+ for (var f of i || []) {
5697
+ for (var u of f.definitions) {
5698
+ if (u.kind === e$2.FRAGMENT_DEFINITION && !s.has(u)) {
5699
+ o.push(u);
5700
+ s.add(u);
5709
5701
  }
5710
5702
  }
5711
5703
  }
5712
- if (a[0].kind === e$2.FRAGMENT_DEFINITION && a[0].directives) {
5713
- a[0].directives = a[0].directives.filter((n => "_unmask" !== n.name.value));
5704
+ var d;
5705
+ if ((d = o[0].kind === e$2.FRAGMENT_DEFINITION) && o[0].directives) {
5706
+ o[0].directives = o[0].directives.filter((r => "_unmask" !== r.name.value));
5714
5707
  }
5708
+ var c;
5715
5709
  return {
5716
5710
  kind: e$2.DOCUMENT,
5717
- definitions: a
5711
+ definitions: o,
5712
+ get loc() {
5713
+ if (!c && d) {
5714
+ var r = t + function concatLocSources(r) {
5715
+ try {
5716
+ a++;
5717
+ var n = "";
5718
+ for (var t of r) {
5719
+ if (!e$1.has(t)) {
5720
+ e$1.add(t);
5721
+ var {loc: i} = t;
5722
+ if (i) {
5723
+ n += i.source.body;
5724
+ }
5725
+ }
5726
+ }
5727
+ return n;
5728
+ } finally {
5729
+ if (0 == --a) {
5730
+ e$1.clear();
5731
+ }
5732
+ }
5733
+ }(i || []);
5734
+ return {
5735
+ start: 0,
5736
+ end: r.length,
5737
+ source: {
5738
+ body: r,
5739
+ name: "GraphQLTada",
5740
+ locationOffset: {
5741
+ line: 1,
5742
+ column: 1
5743
+ }
5744
+ }
5745
+ };
5746
+ }
5747
+ return c;
5748
+ },
5749
+ set loc(r) {
5750
+ c = r;
5751
+ }
5718
5752
  };
5719
5753
  }
5720
- graphql.scalar = function scalar(n, r) {
5721
- return r;
5754
+ graphql.scalar = function scalar(r, n) {
5755
+ return n;
5722
5756
  };
5723
- graphql.persisted = function persisted(r, e) {
5757
+ graphql.persisted = function persisted(n, a) {
5724
5758
  return {
5725
5759
  kind: e$2.DOCUMENT,
5726
- definitions: e ? e.definitions : [],
5727
- documentId: r
5760
+ definitions: a ? a.definitions : [],
5761
+ documentId: n
5728
5762
  };
5729
5763
  };
5730
5764
  return graphql;
5731
5765
  }
5732
5766
 
5733
- var e$1 = initGraphQLTada();
5767
+ var t = initGraphQLTada();
5734
5768
 
5735
- e$1(`
5769
+ t(`
5736
5770
  query fractionsById($fraction_id: String!) {
5737
5771
  fractions(where: { hypercert_id: { eq: $fraction_id } }) {
5738
5772
  data {
@@ -5745,7 +5779,7 @@ e$1(`
5745
5779
  }
5746
5780
  }
5747
5781
  `);
5748
- const ordersQuery = e$1(`
5782
+ const ordersQuery = t(`
5749
5783
  query OrdersQuery($where: OrderWhereInput) {
5750
5784
  orders(where: $where) {
5751
5785
  count
@@ -6146,11 +6180,7 @@ function take(r) {
6146
6180
  f = !0;
6147
6181
  i(0);
6148
6182
  } else if (0 === e.tag) {
6149
- if (r <= 0) {
6150
- f = !0;
6151
- i(0);
6152
- e[0](1);
6153
- } else {
6183
+ {
6154
6184
  a = e[0];
6155
6185
  }
6156
6186
  } else if (n++ < r) {
@@ -6226,7 +6256,7 @@ function takeWhile(r, t) {
6226
6256
  a(e);
6227
6257
  } else if (!r(e[0])) {
6228
6258
  n = !0;
6229
- if (t) {
6259
+ {
6230
6260
  a(e);
6231
6261
  }
6232
6262
  a(0);
@@ -6444,9 +6474,9 @@ function toPromise(r) {
6444
6474
  }
6445
6475
 
6446
6476
  var rehydrateGraphQlError = r => {
6447
- if (r && r.message && (r.extensions || "GraphQLError" === r.name)) {
6477
+ if (r && "string" == typeof r.message && (r.extensions || "GraphQLError" === r.name)) {
6448
6478
  return r;
6449
- } else if ("object" == typeof r && r.message) {
6479
+ } else if ("object" == typeof r && "string" == typeof r.message) {
6450
6480
  return new GraphQLError(r.message, r.nodes, r.source, r.positions, r.path, r, r.extensions || {});
6451
6481
  } else {
6452
6482
  return new GraphQLError(r);
@@ -6462,11 +6492,11 @@ class CombinedError extends Error {
6462
6492
  return `[Network] ${e.message}`;
6463
6493
  }
6464
6494
  if (r) {
6465
- for (var a of r) {
6495
+ for (var a = 0, n = r.length; a < n; a++) {
6466
6496
  if (t) {
6467
6497
  t += "\n";
6468
6498
  }
6469
- t += `[GraphQL] ${a.message}`;
6499
+ t += `[GraphQL] ${r[a].message}`;
6470
6500
  }
6471
6501
  }
6472
6502
  return t;
@@ -6485,18 +6515,18 @@ class CombinedError extends Error {
6485
6515
 
6486
6516
  var phash = (e, r) => {
6487
6517
  var t = 0 | (r || 5381);
6488
- for (var a = 0, o = 0 | e.length; a < o; a++) {
6518
+ for (var a = 0, n = 0 | e.length; a < n; a++) {
6489
6519
  t = (t << 5) + t + e.charCodeAt(a);
6490
6520
  }
6491
6521
  return t;
6492
6522
  };
6493
6523
 
6494
- var i = new Set;
6524
+ var s = new Set;
6495
6525
 
6496
6526
  var f = new WeakMap;
6497
6527
 
6498
6528
  var stringify = (e, r) => {
6499
- if (null === e || i.has(e)) {
6529
+ if (null === e || s.has(e)) {
6500
6530
  return "null";
6501
6531
  } else if ("object" != typeof e) {
6502
6532
  return JSON.stringify(e) || "";
@@ -6504,56 +6534,56 @@ var stringify = (e, r) => {
6504
6534
  return stringify(e.toJSON(), r);
6505
6535
  } else if (Array.isArray(e)) {
6506
6536
  var t = "[";
6507
- for (var a of e) {
6537
+ for (var a = 0, n = e.length; a < n; a++) {
6508
6538
  if (t.length > 1) {
6509
6539
  t += ",";
6510
6540
  }
6511
- t += stringify(a, r) || "null";
6541
+ t += stringify(e[a], r) || "null";
6512
6542
  }
6513
6543
  return t += "]";
6514
- } else if (!r && (l !== NoopConstructor && e instanceof l || c !== NoopConstructor && e instanceof c)) {
6544
+ } else if (!r && (l !== NoopConstructor && e instanceof l || d !== NoopConstructor && e instanceof d)) {
6515
6545
  return "null";
6516
6546
  }
6517
6547
  var o = Object.keys(e).sort();
6518
6548
  if (!o.length && e.constructor && Object.getPrototypeOf(e).constructor !== Object.prototype.constructor) {
6519
- var n = f.get(e) || Math.random().toString(36).slice(2);
6520
- f.set(e, n);
6549
+ var i = f.get(e) || Math.random().toString(36).slice(2);
6550
+ f.set(e, i);
6521
6551
  return stringify({
6522
- __key: n
6552
+ __key: i
6523
6553
  }, r);
6524
6554
  }
6525
- i.add(e);
6526
- var s = "{";
6527
- for (var d of o) {
6528
- var v = stringify(e[d], r);
6529
- if (v) {
6530
- if (s.length > 1) {
6531
- s += ",";
6555
+ s.add(e);
6556
+ var c = "{";
6557
+ for (var v = 0, p = o.length; v < p; v++) {
6558
+ var u = stringify(e[o[v]], r);
6559
+ if (u) {
6560
+ if (c.length > 1) {
6561
+ c += ",";
6532
6562
  }
6533
- s += stringify(d, r) + ":" + v;
6563
+ c += stringify(o[v], r) + ":" + u;
6534
6564
  }
6535
6565
  }
6536
- i.delete(e);
6537
- return s += "}";
6566
+ s.delete(e);
6567
+ return c += "}";
6538
6568
  };
6539
6569
 
6540
6570
  var extract = (e, r, t) => {
6541
- if (null == t || "object" != typeof t || t.toJSON || i.has(t)) ; else if (Array.isArray(t)) {
6542
- for (var a = 0, o = t.length; a < o; a++) {
6571
+ if (null == t || "object" != typeof t || t.toJSON || s.has(t)) ; else if (Array.isArray(t)) {
6572
+ for (var a = 0, n = t.length; a < n; a++) {
6543
6573
  extract(e, `${r}.${a}`, t[a]);
6544
6574
  }
6545
- } else if (t instanceof l || t instanceof c) {
6575
+ } else if (t instanceof l || t instanceof d) {
6546
6576
  e.set(r, t);
6547
6577
  } else {
6548
- i.add(t);
6549
- for (var n of Object.keys(t)) {
6550
- extract(e, `${r}.${n}`, t[n]);
6578
+ s.add(t);
6579
+ for (var o in t) {
6580
+ extract(e, `${r}.${o}`, t[o]);
6551
6581
  }
6552
6582
  }
6553
6583
  };
6554
6584
 
6555
6585
  var stringifyVariables = (e, r) => {
6556
- i.clear();
6586
+ s.clear();
6557
6587
  return stringify(e, r || !1);
6558
6588
  };
6559
6589
 
@@ -6561,15 +6591,15 @@ class NoopConstructor {}
6561
6591
 
6562
6592
  var l = "undefined" != typeof File ? File : NoopConstructor;
6563
6593
 
6564
- var c = "undefined" != typeof Blob ? Blob : NoopConstructor;
6594
+ var d = "undefined" != typeof Blob ? Blob : NoopConstructor;
6565
6595
 
6566
- var d = /("{3}[\s\S]*"{3}|"(?:\\.|[^"])*")/g;
6596
+ var c = /("{3}[\s\S]*"{3}|"(?:\\.|[^"])*")/g;
6567
6597
 
6568
6598
  var v = /(?:#[^\n\r]+)?(?:[\r\n]+|$)/g;
6569
6599
 
6570
6600
  var replaceOutsideStrings = (e, r) => r % 2 == 0 ? e.replace(v, "\n") : e;
6571
6601
 
6572
- var sanitizeDocument = e => e.split(d).map(replaceOutsideStrings).join("").trim();
6602
+ var sanitizeDocument = e => e.split(c).map(replaceOutsideStrings).join("").trim();
6573
6603
 
6574
6604
  var p = new Map;
6575
6605
 
@@ -6640,32 +6670,34 @@ var keyDocument = e => {
6640
6670
 
6641
6671
  var createRequest = (e, r, t) => {
6642
6672
  var a = r || {};
6643
- var o = keyDocument(e);
6644
- var n = stringifyVariables(a, !0);
6645
- var s = o.__key;
6646
- if ("{}" !== n) {
6647
- s = phash(n, s);
6673
+ var n = keyDocument(e);
6674
+ var o = stringifyVariables(a, !0);
6675
+ var i = n.__key;
6676
+ if ("{}" !== o) {
6677
+ i = phash(o, i);
6648
6678
  }
6649
6679
  return {
6650
- key: s,
6651
- query: o,
6680
+ key: i,
6681
+ query: n,
6652
6682
  variables: a,
6653
6683
  extensions: t
6654
6684
  };
6655
6685
  };
6656
6686
 
6657
6687
  var getOperationName = e => {
6658
- for (var r of e.definitions) {
6659
- if (r.kind === e$2.OPERATION_DEFINITION) {
6660
- return r.name ? r.name.value : void 0;
6688
+ for (var r = 0, t = e.definitions.length; r < t; r++) {
6689
+ var n = e.definitions[r];
6690
+ if (n.kind === e$2.OPERATION_DEFINITION) {
6691
+ return n.name ? n.name.value : void 0;
6661
6692
  }
6662
6693
  }
6663
6694
  };
6664
6695
 
6665
6696
  var getOperationType = e => {
6666
- for (var r of e.definitions) {
6667
- if (r.kind === e$2.OPERATION_DEFINITION) {
6668
- return r.operation;
6697
+ for (var r = 0, t = e.definitions.length; r < t; r++) {
6698
+ var n = e.definitions[r];
6699
+ if (n.kind === e$2.OPERATION_DEFINITION) {
6700
+ return n.operation;
6669
6701
  }
6670
6702
  }
6671
6703
  };
@@ -6692,12 +6724,19 @@ var makeResult = (e, r, t) => {
6692
6724
 
6693
6725
  var deepMerge = (e, r) => {
6694
6726
  if ("object" == typeof e && null != e) {
6695
- if (!e.constructor || e.constructor === Object || Array.isArray(e)) {
6696
- e = Array.isArray(e) ? [ ...e ] : {
6727
+ if (Array.isArray(e)) {
6728
+ e = [ ...e ];
6729
+ for (var t = 0, a = r.length; t < a; t++) {
6730
+ e[t] = deepMerge(e[t], r[t]);
6731
+ }
6732
+ return e;
6733
+ }
6734
+ if (!e.constructor || e.constructor === Object) {
6735
+ e = {
6697
6736
  ...e
6698
6737
  };
6699
- for (var t of Object.keys(r)) {
6700
- e[t] = deepMerge(e[t], r[t]);
6738
+ for (var n in r) {
6739
+ e[n] = deepMerge(e[n], r[n]);
6701
6740
  }
6702
6741
  return e;
6703
6742
  }
@@ -6706,70 +6745,71 @@ var deepMerge = (e, r) => {
6706
6745
  };
6707
6746
 
6708
6747
  var mergeResultPatch = (e, r, t, a) => {
6709
- var o = e.error ? e.error.graphQLErrors : [];
6710
- var n = !!e.extensions || !!(r.payload || r).extensions;
6711
- var s = {
6748
+ var n = e.error ? e.error.graphQLErrors : [];
6749
+ var o = !!e.extensions || !!(r.payload || r).extensions;
6750
+ var i = {
6712
6751
  ...e.extensions,
6713
6752
  ...(r.payload || r).extensions
6714
6753
  };
6715
- var i = r.incremental;
6754
+ var s = r.incremental;
6716
6755
  if ("path" in r) {
6717
- i = [ r ];
6756
+ s = [ r ];
6718
6757
  }
6719
6758
  var f = {
6720
6759
  data: e.data
6721
6760
  };
6722
- if (i) {
6723
- var _loop = function(e) {
6761
+ if (s) {
6762
+ var _loop = function() {
6763
+ var e = s[l];
6724
6764
  if (Array.isArray(e.errors)) {
6725
- o.push(...e.errors);
6765
+ n.push(...e.errors);
6726
6766
  }
6727
6767
  if (e.extensions) {
6728
- Object.assign(s, e.extensions);
6729
- n = !0;
6768
+ Object.assign(i, e.extensions);
6769
+ o = !0;
6730
6770
  }
6731
6771
  var r = "data";
6732
6772
  var t = f;
6733
- var i = [];
6773
+ var d = [];
6734
6774
  if (e.path) {
6735
- i = e.path;
6775
+ d = e.path;
6736
6776
  } else if (a) {
6737
- var l = a.find((r => r.id === e.id));
6777
+ var c = a.find((r => r.id === e.id));
6738
6778
  if (e.subPath) {
6739
- i = [ ...l.path, ...e.subPath ];
6779
+ d = [ ...c.path, ...e.subPath ];
6740
6780
  } else {
6741
- i = l.path;
6781
+ d = c.path;
6742
6782
  }
6743
6783
  }
6744
- for (var c = 0, d = i.length; c < d; r = i[c++]) {
6784
+ for (var v = 0, p = d.length; v < p; r = d[v++]) {
6745
6785
  t = t[r] = Array.isArray(t[r]) ? [ ...t[r] ] : {
6746
6786
  ...t[r]
6747
6787
  };
6748
6788
  }
6749
6789
  if (e.items) {
6750
- var v = +r >= 0 ? r : 0;
6751
- for (var p = 0, u = e.items.length; p < u; p++) {
6752
- t[v + p] = deepMerge(t[v + p], e.items[p]);
6790
+ var u = +r >= 0 ? r : 0;
6791
+ for (var y = 0, h = e.items.length; y < h; y++) {
6792
+ t[u + y] = deepMerge(t[u + y], e.items[y]);
6753
6793
  }
6754
6794
  } else if (void 0 !== e.data) {
6755
6795
  t[r] = deepMerge(t[r], e.data);
6756
6796
  }
6757
6797
  };
6758
- for (var l of i) {
6759
- _loop(l);
6798
+ for (var l = 0, d = s.length; l < d; l++) {
6799
+ _loop();
6760
6800
  }
6761
6801
  } else {
6762
6802
  f.data = (r.payload || r).data || e.data;
6763
- o = r.errors || r.payload && r.payload.errors || o;
6803
+ n = r.errors || r.payload && r.payload.errors || n;
6764
6804
  }
6765
6805
  return {
6766
6806
  operation: e.operation,
6767
6807
  data: f.data,
6768
- error: o.length ? new CombinedError({
6769
- graphQLErrors: o,
6808
+ error: n.length ? new CombinedError({
6809
+ graphQLErrors: n,
6770
6810
  response: t
6771
6811
  }) : void 0,
6772
- extensions: n ? s : void 0,
6812
+ extensions: o ? i : void 0,
6773
6813
  hasNext: null != r.hasNext ? r.hasNext : e.hasNext,
6774
6814
  stale: !1
6775
6815
  };
@@ -6809,18 +6849,18 @@ var makeFetchURL = (e, r) => {
6809
6849
  return e.context.url;
6810
6850
  }
6811
6851
  var a = splitOutSearchParams(e.context.url);
6812
- for (var o in r) {
6813
- var n = r[o];
6814
- if (n) {
6815
- a[1].set(o, "object" == typeof n ? stringifyVariables(n) : n);
6852
+ for (var n in r) {
6853
+ var o = r[n];
6854
+ if (o) {
6855
+ a[1].set(n, "object" == typeof o ? stringifyVariables(o) : o);
6816
6856
  }
6817
6857
  }
6818
- var s = a.join("?");
6819
- if (s.length > 2047 && "force" !== t) {
6858
+ var i = a.join("?");
6859
+ if (i.length > 2047 && "force" !== t) {
6820
6860
  e.context.preferGetMethod = !1;
6821
6861
  return e.context.url;
6822
6862
  }
6823
- return s;
6863
+ return i;
6824
6864
  };
6825
6865
 
6826
6866
  var splitOutSearchParams = e => {
@@ -6833,23 +6873,23 @@ var serializeBody = (e, r) => {
6833
6873
  var t = stringifyVariables(r);
6834
6874
  var a = (e => {
6835
6875
  var r = new Map;
6836
- if (l !== NoopConstructor || c !== NoopConstructor) {
6837
- i.clear();
6876
+ if (l !== NoopConstructor || d !== NoopConstructor) {
6877
+ s.clear();
6838
6878
  extract(r, "variables", e);
6839
6879
  }
6840
6880
  return r;
6841
6881
  })(r.variables);
6842
6882
  if (a.size) {
6843
- var o = new FormData;
6844
- o.append("operations", t);
6845
- o.append("map", stringifyVariables({
6883
+ var n = new FormData;
6884
+ n.append("operations", t);
6885
+ n.append("map", stringifyVariables({
6846
6886
  ...[ ...a.keys() ].map((e => [ e ]))
6847
6887
  }));
6848
- var n = 0;
6849
- for (var s of a.values()) {
6850
- o.append("" + n++, s);
6888
+ var o = 0;
6889
+ for (var i of a.values()) {
6890
+ n.append("" + o++, i);
6851
6891
  }
6852
- return o;
6892
+ return n;
6853
6893
  }
6854
6894
  return t;
6855
6895
  }
@@ -6878,19 +6918,19 @@ var makeFetchOptions = (e, r) => {
6878
6918
  }
6879
6919
  }));
6880
6920
  } else {
6881
- for (var o in a.headers) {
6882
- t[o.toLowerCase()] = a.headers[o];
6921
+ for (var n in a.headers) {
6922
+ t[n.toLowerCase()] = a.headers[n];
6883
6923
  }
6884
6924
  }
6885
6925
  }
6886
- var n = serializeBody(e, r);
6887
- if ("string" == typeof n && !t["content-type"]) {
6926
+ var o = serializeBody(e, r);
6927
+ if ("string" == typeof o && !t["content-type"]) {
6888
6928
  t["content-type"] = "application/json";
6889
6929
  }
6890
6930
  return {
6891
6931
  ...a,
6892
- method: n ? "POST" : "GET",
6893
- body: n,
6932
+ method: o ? "POST" : "GET",
6933
+ body: o,
6894
6934
  headers: t
6895
6935
  };
6896
6936
  };
@@ -6924,8 +6964,8 @@ async function* streamBody(e) {
6924
6964
  async function* split(e, r) {
6925
6965
  var t = "";
6926
6966
  var a;
6927
- for await (var o of e) {
6928
- t += o;
6967
+ for await (var n of e) {
6968
+ t += n;
6929
6969
  while ((a = t.indexOf(r)) > -1) {
6930
6970
  yield t.slice(0, a);
6931
6971
  t = t.slice(a + r.length);
@@ -6935,54 +6975,54 @@ async function* split(e, r) {
6935
6975
 
6936
6976
  async function* fetchOperation(e, r, t) {
6937
6977
  var a = !0;
6938
- var o = null;
6939
- var n;
6978
+ var n = null;
6979
+ var o;
6940
6980
  try {
6941
6981
  yield await Promise.resolve();
6942
- var s = (n = await (e.context.fetch || fetch)(r, t)).headers.get("Content-Type") || "";
6943
- var i;
6944
- if (/multipart\/mixed/i.test(s)) {
6945
- i = async function* parseMultipartMixed(e, r) {
6982
+ var i = (o = await (e.context.fetch || fetch)(r, t)).headers.get("Content-Type") || "";
6983
+ var s;
6984
+ if (/multipart\/mixed/i.test(i)) {
6985
+ s = async function* parseMultipartMixed(e, r) {
6946
6986
  var t = e.match(h);
6947
6987
  var a = "--" + (t ? t[1] : "-");
6948
- var o = !0;
6949
- var n;
6950
- for await (var s of split(streamBody(r), "\r\n" + a)) {
6951
- if (o) {
6952
- o = !1;
6953
- var i = s.indexOf(a);
6954
- if (i > -1) {
6955
- s = s.slice(i + a.length);
6988
+ var n = !0;
6989
+ var o;
6990
+ for await (var i of split(streamBody(r), "\r\n" + a)) {
6991
+ if (n) {
6992
+ n = !1;
6993
+ var s = i.indexOf(a);
6994
+ if (s > -1) {
6995
+ i = i.slice(s + a.length);
6956
6996
  } else {
6957
6997
  continue;
6958
6998
  }
6959
6999
  }
6960
7000
  try {
6961
- yield n = JSON.parse(s.slice(s.indexOf("\r\n\r\n") + 4));
7001
+ yield o = JSON.parse(i.slice(i.indexOf("\r\n\r\n") + 4));
6962
7002
  } catch (e) {
6963
- if (!n) {
7003
+ if (!o) {
6964
7004
  throw e;
6965
7005
  }
6966
7006
  }
6967
- if (n && !1 === n.hasNext) {
7007
+ if (o && !1 === o.hasNext) {
6968
7008
  break;
6969
7009
  }
6970
7010
  }
6971
- if (n && !1 !== n.hasNext) {
7011
+ if (o && !1 !== o.hasNext) {
6972
7012
  yield {
6973
7013
  hasNext: !1
6974
7014
  };
6975
7015
  }
6976
- }(s, n);
6977
- } else if (/text\/event-stream/i.test(s)) {
6978
- i = async function* parseEventStream(e) {
7016
+ }(i, o);
7017
+ } else if (/text\/event-stream/i.test(i)) {
7018
+ s = async function* parseEventStream(e) {
6979
7019
  var r;
6980
7020
  for await (var t of split(streamBody(e), "\n\n")) {
6981
7021
  var a = t.match(m);
6982
7022
  if (a) {
6983
- var o = a[1];
7023
+ var n = a[1];
6984
7024
  try {
6985
- yield r = JSON.parse(o);
7025
+ yield r = JSON.parse(n);
6986
7026
  } catch (e) {
6987
7027
  if (!r) {
6988
7028
  throw e;
@@ -6998,13 +7038,13 @@ async function* fetchOperation(e, r, t) {
6998
7038
  hasNext: !1
6999
7039
  };
7000
7040
  }
7001
- }(n);
7002
- } else if (!/text\//i.test(s)) {
7003
- i = async function* parseJSON(e) {
7041
+ }(o);
7042
+ } else if (!/text\//i.test(i)) {
7043
+ s = async function* parseJSON(e) {
7004
7044
  yield JSON.parse(await e.text());
7005
- }(n);
7045
+ }(o);
7006
7046
  } else {
7007
- i = async function* parseMaybeJSON(e) {
7047
+ s = async function* parseMaybeJSON(e) {
7008
7048
  var r = await e.text();
7009
7049
  try {
7010
7050
  var t = JSON.parse(r);
@@ -7015,28 +7055,28 @@ async function* fetchOperation(e, r, t) {
7015
7055
  } catch (e) {
7016
7056
  throw new Error(r);
7017
7057
  }
7018
- }(n);
7058
+ }(o);
7019
7059
  }
7020
7060
  var f;
7021
- for await (var l of i) {
7022
- if (l.pending && !o) {
7061
+ for await (var l of s) {
7062
+ if (l.pending && !n) {
7023
7063
  f = l.pending;
7024
7064
  } else if (l.pending) {
7025
7065
  f = [ ...f, ...l.pending ];
7026
7066
  }
7027
- o = o ? mergeResultPatch(o, l, n, f) : makeResult(e, l, n);
7067
+ n = n ? mergeResultPatch(n, l, o, f) : makeResult(e, l, o);
7028
7068
  a = !1;
7029
- yield o;
7069
+ yield n;
7030
7070
  a = !0;
7031
7071
  }
7032
- if (!o) {
7033
- yield o = makeResult(e, {}, n);
7072
+ if (!n) {
7073
+ yield n = makeResult(e, {}, o);
7034
7074
  }
7035
7075
  } catch (r) {
7036
7076
  if (!a) {
7037
7077
  throw r;
7038
7078
  }
7039
- yield makeErrorResult(e, n && (n.status < 200 || n.status >= 300) && n.statusText ? new Error(n.statusText) : r, n);
7079
+ yield makeErrorResult(e, o && (o.status < 200 || o.status >= 300) && o.statusText ? new Error(o.statusText) : r, o);
7040
7080
  }
7041
7081
  }
7042
7082
 
@@ -7054,15 +7094,15 @@ function makeFetchSource(e, r, t) {
7054
7094
 
7055
7095
  var collectTypes = (e, r) => {
7056
7096
  if (Array.isArray(e)) {
7057
- for (var t of e) {
7058
- collectTypes(t, r);
7097
+ for (var t = 0, n = e.length; t < n; t++) {
7098
+ collectTypes(e[t], r);
7059
7099
  }
7060
7100
  } else if ("object" == typeof e && null !== e) {
7061
- for (var n in e) {
7062
- if ("__typename" === n && "string" == typeof e[n]) {
7063
- r.add(e[n]);
7101
+ for (var a in e) {
7102
+ if ("__typename" === a && "string" == typeof e[a]) {
7103
+ r.add(e[a]);
7064
7104
  } else {
7065
- collectTypes(e[n], r);
7105
+ collectTypes(e[a], r);
7066
7106
  }
7067
7107
  }
7068
7108
  }
@@ -7072,9 +7112,9 @@ var collectTypes = (e, r) => {
7072
7112
  var formatNode = r => {
7073
7113
  if ("definitions" in r) {
7074
7114
  var t = [];
7075
- for (var n of r.definitions) {
7076
- var a = formatNode(n);
7077
- t.push(a);
7115
+ for (var n = 0, a = r.definitions.length; n < a; n++) {
7116
+ var i = formatNode(r.definitions[n]);
7117
+ t.push(i);
7078
7118
  }
7079
7119
  return {
7080
7120
  ...r,
@@ -7083,33 +7123,35 @@ var formatNode = r => {
7083
7123
  }
7084
7124
  if ("directives" in r && r.directives && r.directives.length) {
7085
7125
  var o = [];
7086
- var i = {};
7087
- for (var s of r.directives) {
7088
- var c = s.name.value;
7089
- if ("_" !== c[0]) {
7090
- o.push(s);
7126
+ var s = {};
7127
+ for (var c = 0, u = r.directives.length; c < u; c++) {
7128
+ var p = r.directives[c];
7129
+ var d = p.name.value;
7130
+ if ("_" !== d[0]) {
7131
+ o.push(p);
7091
7132
  } else {
7092
- c = c.slice(1);
7133
+ d = d.slice(1);
7093
7134
  }
7094
- i[c] = s;
7135
+ s[d] = p;
7095
7136
  }
7096
7137
  r = {
7097
7138
  ...r,
7098
7139
  directives: o,
7099
- _directives: i
7140
+ _directives: s
7100
7141
  };
7101
7142
  }
7102
7143
  if ("selectionSet" in r) {
7103
- var u = [];
7104
- var p = r.kind === e$2.OPERATION_DEFINITION;
7144
+ var l = [];
7145
+ var v = r.kind === e$2.OPERATION_DEFINITION;
7105
7146
  if (r.selectionSet) {
7106
- for (var d of r.selectionSet.selections || []) {
7107
- p = p || d.kind === e$2.FIELD && "__typename" === d.name.value && !d.alias;
7108
- var v = formatNode(d);
7109
- u.push(v);
7147
+ for (var f = 0, h = r.selectionSet.selections.length; f < h; f++) {
7148
+ var k = r.selectionSet.selections[f];
7149
+ v = v || k.kind === e$2.FIELD && "__typename" === k.name.value && !k.alias;
7150
+ var y = formatNode(k);
7151
+ l.push(y);
7110
7152
  }
7111
- if (!p) {
7112
- u.push({
7153
+ if (!v) {
7154
+ l.push({
7113
7155
  kind: e$2.FIELD,
7114
7156
  name: {
7115
7157
  kind: e$2.NAME,
@@ -7122,7 +7164,7 @@ var formatNode = r => {
7122
7164
  ...r,
7123
7165
  selectionSet: {
7124
7166
  ...r.selectionSet,
7125
- selections: u
7167
+ selections: l
7126
7168
  }
7127
7169
  };
7128
7170
  }
@@ -7188,14 +7230,14 @@ var mapTypeNames = e => {
7188
7230
 
7189
7231
  var cacheExchange = ({forward: e, client: r, dispatchDebug: t}) => {
7190
7232
  var a = new Map;
7191
- var o = new Map;
7233
+ var i = new Map;
7192
7234
  var isOperationCached = e => "query" === e.kind && "network-only" !== e.context.requestPolicy && ("cache-only" === e.context.requestPolicy || a.has(e.key));
7193
- return i => {
7235
+ return o => {
7194
7236
  var s = map((e => {
7195
- var o = a.get(e.key);
7237
+ var i = a.get(e.key);
7196
7238
  "production" !== process.env.NODE_ENV && t({
7197
7239
  operation: e,
7198
- ...o ? {
7240
+ ...i ? {
7199
7241
  type: "cacheHit",
7200
7242
  message: "The result was successfully retried from the cache"
7201
7243
  } : {
@@ -7204,74 +7246,74 @@ var cacheExchange = ({forward: e, client: r, dispatchDebug: t}) => {
7204
7246
  },
7205
7247
  source: "cacheExchange"
7206
7248
  });
7207
- var i = o || makeResult(e, {
7249
+ var o = i || makeResult(e, {
7208
7250
  data: null
7209
7251
  });
7210
- i = {
7211
- ...i,
7212
- operation: "production" !== process.env.NODE_ENV ? addMetadata(e, {
7213
- cacheOutcome: o ? "hit" : "miss"
7214
- }) : e
7252
+ o = {
7253
+ ...o,
7254
+ operation: addMetadata(e, {
7255
+ cacheOutcome: i ? "hit" : "miss"
7256
+ })
7215
7257
  };
7216
7258
  if ("cache-and-network" === e.context.requestPolicy) {
7217
- i.stale = !0;
7259
+ o.stale = !0;
7218
7260
  reexecuteOperation(r, e);
7219
7261
  }
7220
- return i;
7221
- }))(filter((e => !shouldSkip(e) && isOperationCached(e)))(i));
7262
+ return o;
7263
+ }))(filter((e => !shouldSkip(e) && isOperationCached(e)))(o));
7222
7264
  var c = onPush((e => {
7223
7265
  var {operation: n} = e;
7224
7266
  if (!n) {
7225
7267
  return;
7226
7268
  }
7227
- var i = n.context.additionalTypenames || [];
7269
+ var o = n.context.additionalTypenames || [];
7228
7270
  if ("subscription" !== e.operation.kind) {
7229
- i = (e => [ ...collectTypes(e, new Set) ])(e.data).concat(i);
7271
+ o = (e => [ ...collectTypes(e, new Set) ])(e.data).concat(o);
7230
7272
  }
7231
7273
  if ("mutation" === e.operation.kind || "subscription" === e.operation.kind) {
7232
7274
  var s = new Set;
7233
7275
  "production" !== process.env.NODE_ENV && t({
7234
7276
  type: "cacheInvalidation",
7235
- message: `The following typenames have been invalidated: ${i}`,
7277
+ message: `The following typenames have been invalidated: ${o}`,
7236
7278
  operation: n,
7237
7279
  data: {
7238
- typenames: i,
7280
+ typenames: o,
7239
7281
  response: e
7240
7282
  },
7241
7283
  source: "cacheExchange"
7242
7284
  });
7243
- for (var c = 0; c < i.length; c++) {
7244
- var u = i[c];
7245
- var p = o.get(u);
7285
+ for (var c = 0; c < o.length; c++) {
7286
+ var u = o[c];
7287
+ var p = i.get(u);
7246
7288
  if (!p) {
7247
- o.set(u, p = new Set);
7289
+ i.set(u, p = new Set);
7248
7290
  }
7249
7291
  for (var d of p.values()) {
7250
7292
  s.add(d);
7251
7293
  }
7252
7294
  p.clear();
7253
7295
  }
7254
- for (var v of s.values()) {
7255
- if (a.has(v)) {
7256
- n = a.get(v).operation;
7257
- a.delete(v);
7296
+ for (var l of s.values()) {
7297
+ if (a.has(l)) {
7298
+ n = a.get(l).operation;
7299
+ a.delete(l);
7258
7300
  reexecuteOperation(r, n);
7259
7301
  }
7260
7302
  }
7261
7303
  } else if ("query" === n.kind && e.data) {
7262
7304
  a.set(n.key, e);
7263
- for (var l = 0; l < i.length; l++) {
7264
- var f = i[l];
7265
- var h = o.get(f);
7305
+ for (var v = 0; v < o.length; v++) {
7306
+ var f = o[v];
7307
+ var h = i.get(f);
7266
7308
  if (!h) {
7267
- o.set(f, h = new Set);
7309
+ i.set(f, h = new Set);
7268
7310
  }
7269
7311
  h.add(n.key);
7270
7312
  }
7271
7313
  }
7272
- }))(e(filter((e => "query" !== e.kind || "cache-only" !== e.context.requestPolicy))(map((e => "production" !== process.env.NODE_ENV ? addMetadata(e, {
7314
+ }))(e(filter((e => "query" !== e.kind || "cache-only" !== e.context.requestPolicy))(map((e => addMetadata(e, {
7273
7315
  cacheOutcome: "miss"
7274
- }) : e))(merge([ map(mapTypeNames)(filter((e => !shouldSkip(e) && !isOperationCached(e)))(i)), filter((e => shouldSkip(e)))(i) ])))));
7316
+ })))(merge([ map(mapTypeNames)(filter((e => !shouldSkip(e) && !isOperationCached(e)))(o)), filter((e => shouldSkip(e)))(o) ])))));
7275
7317
  return merge([ s, c ]);
7276
7318
  };
7277
7319
  };
@@ -7367,8 +7409,8 @@ var C = function Client(e) {
7367
7409
  var t = new Map;
7368
7410
  var n = new Map;
7369
7411
  var a = new Set;
7370
- var o = [];
7371
- var i = {
7412
+ var i = [];
7413
+ var o = {
7372
7414
  url: e.url,
7373
7415
  fetchSubscriptions: e.fetchSubscriptions,
7374
7416
  fetchOptions: e.fetchOptions,
@@ -7394,16 +7436,16 @@ var C = function Client(e) {
7394
7436
  }
7395
7437
  if (!c) {
7396
7438
  c = !0;
7397
- while (c && (e = o.shift())) {
7439
+ while (c && (e = i.shift())) {
7398
7440
  nextOperation(e);
7399
7441
  }
7400
7442
  c = !1;
7401
7443
  }
7402
7444
  }
7403
7445
  var makeResultSource = e => {
7404
- var r = takeUntil(filter((r => "teardown" === r.kind && r.key === e.key))(s.source))(filter((r => r.operation.kind === e.kind && r.operation.key === e.key && (!r.operation.context._instance || r.operation.context._instance === e.context._instance)))(O));
7446
+ var r = takeUntil(filter((r => "teardown" === r.kind && r.key === e.key))(s.source))(filter((r => r.operation.kind === e.kind && r.operation.key === e.key && (!r.operation.context._instance || r.operation.context._instance === e.context._instance)))(E));
7405
7447
  if ("query" !== e.kind) {
7406
- r = takeWhile((e => !!e.hasNext), !0)(r);
7448
+ r = takeWhile((e => !!e.hasNext))(r);
7407
7449
  } else {
7408
7450
  r = switchMap((r => {
7409
7451
  var t = fromValue(r);
@@ -7419,9 +7461,9 @@ var C = function Client(e) {
7419
7461
  t.delete(e.key);
7420
7462
  n.delete(e.key);
7421
7463
  c = !1;
7422
- for (var r = o.length - 1; r >= 0; r--) {
7423
- if (o[r].key === e.key) {
7424
- o.splice(r, 1);
7464
+ for (var r = i.length - 1; r >= 0; r--) {
7465
+ if (i[r].key === e.key) {
7466
+ i.splice(r, 1);
7425
7467
  }
7426
7468
  }
7427
7469
  nextOperation(makeOperation("teardown", e, e.context));
@@ -7430,9 +7472,10 @@ var C = function Client(e) {
7430
7472
  if (!r.hasNext) {
7431
7473
  a.delete(e.key);
7432
7474
  } else {
7433
- for (var n of o) {
7434
- if (n.key === r.operation.key) {
7435
- a.delete(n.key);
7475
+ for (var n = 0; n < i.length; n++) {
7476
+ var o = i[n];
7477
+ if (o.key === r.operation.key) {
7478
+ a.delete(o.key);
7436
7479
  break;
7437
7480
  }
7438
7481
  }
@@ -7457,18 +7500,18 @@ var C = function Client(e) {
7457
7500
  if ("teardown" === e.kind) {
7458
7501
  dispatchOperation(e);
7459
7502
  } else if ("mutation" === e.kind) {
7460
- o.push(e);
7503
+ i.push(e);
7461
7504
  Promise.resolve().then(dispatchOperation);
7462
7505
  } else if (n.has(e.key)) {
7463
7506
  var r = !1;
7464
- for (var t = 0; t < o.length; t++) {
7465
- if (o[t].key === e.key) {
7466
- o[t] = e;
7507
+ for (var t = 0; t < i.length; t++) {
7508
+ if (i[t].key === e.key) {
7509
+ i[t] = e;
7467
7510
  r = !0;
7468
7511
  }
7469
7512
  }
7470
7513
  if (!(r || a.has(e.key) && "network-only" !== e.context.requestPolicy)) {
7471
- o.push(e);
7514
+ i.push(e);
7472
7515
  Promise.resolve().then(dispatchOperation);
7473
7516
  } else {
7474
7517
  a.delete(e.key);
@@ -7486,9 +7529,9 @@ var C = function Client(e) {
7486
7529
  }
7487
7530
  return makeOperation(e, t, {
7488
7531
  _instance: "mutation" === e ? r = r + 1 | 0 : void 0,
7489
- ...i,
7532
+ ...o,
7490
7533
  ...n,
7491
- requestPolicy: n.requestPolicy || i.requestPolicy,
7534
+ requestPolicy: n.requestPolicy || o.requestPolicy,
7492
7535
  suspense: n.suspense || !1 !== n.suspense && p.suspense
7493
7536
  });
7494
7537
  },
@@ -7541,15 +7584,15 @@ var C = function Client(e) {
7541
7584
  p.subscribeToDebugTarget = e => subscribe(e)(x);
7542
7585
  d = f;
7543
7586
  }
7544
- var g = composeExchanges(e.exchanges);
7545
- var O = share(g({
7587
+ var w = composeExchanges(e.exchanges);
7588
+ var E = share(w({
7546
7589
  client: p,
7547
7590
  dispatchDebug: d,
7548
7591
  forward: fallbackExchange({
7549
7592
  dispatchDebug: d
7550
7593
  })
7551
7594
  })(s.source));
7552
- publish(O);
7595
+ publish(E);
7553
7596
  return p;
7554
7597
  };
7555
7598
 
@@ -7668,6 +7711,118 @@ class ApiClient {
7668
7711
  }
7669
7712
  }
7670
7713
 
7714
+ class SafeTransactionBuilder {
7715
+ constructor(walletClient, chainId, addresses) {
7716
+ this.walletClient = walletClient;
7717
+ this.chainId = chainId;
7718
+ this.addresses = addresses;
7719
+ /**
7720
+ * Execute an order on the Hypercert Exchange using Safe
7721
+ * @internal
7722
+ */
7723
+ this.executeOrder = (safeAddress, maker, taker, signature, merkleTree = defaultMerkleTree, overrides) => {
7724
+ const exchangeContract = new Contract(this.addresses.EXCHANGE_V2, HypercertExchangeAbi);
7725
+ const functionName = maker.quoteType === QuoteType.Ask ? "executeTakerBid" : "executeTakerAsk";
7726
+ const value = maker.currency === ZeroAddress ? overrides?.value || maker.price : "0";
7727
+ const transactions = [
7728
+ {
7729
+ to: this.addresses.EXCHANGE_V2,
7730
+ data: exchangeContract.interface.encodeFunctionData(functionName, [taker, maker, signature, merkleTree]),
7731
+ value: value.toString(),
7732
+ },
7733
+ ];
7734
+ return this.performSafeTransactions(safeAddress, transactions);
7735
+ };
7736
+ /**
7737
+ * Perform a series of Safe transactions in a single transaction
7738
+ * @internal
7739
+ */
7740
+ this.performSafeTransactions = async (safeAddress, transactions) => {
7741
+ const senderAddress = this.walletClient.account?.address;
7742
+ if (!senderAddress) {
7743
+ throw new Error("No sender address");
7744
+ }
7745
+ const protocolKit = await Safe.init({
7746
+ provider: this.walletClient,
7747
+ safeAddress: safeAddress,
7748
+ });
7749
+ const connected = await protocolKit.connect(this.walletClient);
7750
+ const nonce = await this.apiKit.getNextNonce(safeAddress);
7751
+ const safeTx = await connected.createTransaction({
7752
+ transactions,
7753
+ options: {
7754
+ nonce,
7755
+ },
7756
+ });
7757
+ const safeTxHash = await connected.getTransactionHash(safeTx);
7758
+ const senderSignature = await connected.signHash(safeTxHash);
7759
+ await this.apiKit.proposeTransaction({
7760
+ safeAddress,
7761
+ safeTransactionData: safeTx.data,
7762
+ safeTxHash,
7763
+ senderAddress,
7764
+ senderSignature: senderSignature.data,
7765
+ });
7766
+ return safeTxHash;
7767
+ };
7768
+ this.apiKit = new SafeApiKit({
7769
+ chainId: BigInt(this.chainId),
7770
+ });
7771
+ }
7772
+ /**
7773
+ * Approve the Hypercert Exchange to transfer the ERC721 tokens
7774
+ * @internal
7775
+ */
7776
+ async bundleApprovals(safeAddress, collectionAddress) {
7777
+ const transferManagerContract = new Contract(this.addresses.TRANSFER_MANAGER_V2, abiTransferManager);
7778
+ const erc721Contract = new Contract(collectionAddress, abiIERC721);
7779
+ const transactions = [
7780
+ {
7781
+ to: this.addresses.TRANSFER_MANAGER_V2,
7782
+ data: transferManagerContract.interface.encodeFunctionData("grantApprovals", [[this.addresses.EXCHANGE_V2]]),
7783
+ value: "0",
7784
+ },
7785
+ {
7786
+ to: collectionAddress,
7787
+ data: erc721Contract.interface.encodeFunctionData("setApprovalForAll", [
7788
+ this.addresses.TRANSFER_MANAGER_V2,
7789
+ true,
7790
+ ]),
7791
+ value: "0",
7792
+ },
7793
+ ];
7794
+ return this.performSafeTransactions(safeAddress, transactions);
7795
+ }
7796
+ /**
7797
+ * Approve an ERC20 to be used as a currency on the Hypercert Exchange using Safe
7798
+ * @internal
7799
+ */
7800
+ async approveErc20(safeAddress, tokenAddress, amount) {
7801
+ const erc20Contract = new Contract(tokenAddress, abiIERC20);
7802
+ const transactions = [
7803
+ {
7804
+ to: tokenAddress,
7805
+ data: erc20Contract.interface.encodeFunctionData("approve", [this.addresses.EXCHANGE_V2, amount]),
7806
+ value: "0",
7807
+ },
7808
+ ];
7809
+ return this.performSafeTransactions(safeAddress, transactions);
7810
+ }
7811
+ /**
7812
+ * Grant a list of operators the rights to transfer user's assets using the transfer manager using Safe
7813
+ * @internal
7814
+ */
7815
+ grantTransferManagerApproval(safeAddress, operators) {
7816
+ const transferManagerContract = new Contract(this.addresses.TRANSFER_MANAGER_V2, abiTransferManager);
7817
+ const transactions = operators.map((operator) => ({
7818
+ to: this.addresses.TRANSFER_MANAGER_V2,
7819
+ data: transferManagerContract.interface.encodeFunctionData("grantApprovals", [[operator]]),
7820
+ value: "0",
7821
+ }));
7822
+ return this.performSafeTransactions(safeAddress, transactions);
7823
+ }
7824
+ }
7825
+
7671
7826
  const ACCEPTED_ERROR_CODES = [
7672
7827
  OrderValidatorCode.ORDER_EXPECTED_TO_BE_VALID,
7673
7828
  OrderValidatorCode.TOO_EARLY_TO_EXECUTE_ORDER,
@@ -7683,8 +7838,9 @@ class HypercertExchangeClient {
7683
7838
  * @param provider Ethers provider
7684
7839
  * @param signer Ethers signer
7685
7840
  * @param overrides Override contract addresses or API endpoint used
7841
+ * @param walletClient Wallet client, necessary for Safe transactions
7686
7842
  */
7687
- constructor(chainId, provider, signer, overrides) {
7843
+ constructor(chainId, provider, signer, overrides, walletClient) {
7688
7844
  const deployment = CONSTANTS.DEPLOYMENTS[asDeployedChain$2(chainId)];
7689
7845
  if (!deployment) {
7690
7846
  throw new Error("Chain not supported");
@@ -7696,6 +7852,7 @@ class HypercertExchangeClient {
7696
7852
  this.signer = signer;
7697
7853
  this.provider = provider;
7698
7854
  this.api = new ApiClient(indexerEnvironment, overrides?.apiEndpoint);
7855
+ this.walletClient = walletClient;
7699
7856
  }
7700
7857
  /**
7701
7858
  * Return the signer if it's set, throw an exception otherwise
@@ -7721,8 +7878,8 @@ class HypercertExchangeClient {
7721
7878
  */
7722
7879
  getTypedDataDomain() {
7723
7880
  return {
7724
- name: contractName,
7725
- version: version.toString(),
7881
+ name: DOMAIN_NAME,
7882
+ version: DOMAIN_VERSION.toString(),
7726
7883
  chainId: this.chainId,
7727
7884
  verifyingContract: this.addresses.EXCHANGE_V2,
7728
7885
  };
@@ -7759,7 +7916,7 @@ class HypercertExchangeClient {
7759
7916
  endTime: endTime,
7760
7917
  price: price,
7761
7918
  itemIds: itemIds,
7762
- amounts: itemIds.map(_ => 1n),
7919
+ amounts: itemIds.map((_) => 1n),
7763
7920
  additionalParameters: encodeParams(additionalParameters, getMakerParamsTypes(strategyId)),
7764
7921
  };
7765
7922
  return {
@@ -7803,7 +7960,7 @@ class HypercertExchangeClient {
7803
7960
  endTime: endTime,
7804
7961
  price: price,
7805
7962
  itemIds: itemIds,
7806
- amounts: itemIds.map(_ => 1n),
7963
+ amounts: itemIds.map((_) => 1n),
7807
7964
  additionalParameters: encodeParams(additionalParameters, getMakerParamsTypes(strategyId)),
7808
7965
  };
7809
7966
  return {
@@ -7832,7 +7989,6 @@ class HypercertExchangeClient {
7832
7989
  */
7833
7990
  async signMakerOrder(maker) {
7834
7991
  const signer = this.getSigner();
7835
- console.log("signing against", this.getTypedDataDomain(), maker);
7836
7992
  return await signMakerOrder(signer, this.getTypedDataDomain(), maker);
7837
7993
  }
7838
7994
  /**
@@ -7861,6 +8017,21 @@ class HypercertExchangeClient {
7861
8017
  const execute = maker.quoteType === QuoteType.Ask ? executeTakerBid : executeTakerAsk;
7862
8018
  return execute(signer, this.addresses.EXCHANGE_V2, taker, maker, signature, merkleTree, overrides);
7863
8019
  }
8020
+ /**
8021
+ * Execute a trade using Safe
8022
+ * @param maker Maker order
8023
+ * @param taker Taker order
8024
+ * @param signature Signature of the maker order
8025
+ * @param merkleTree Optional merkle tree
8026
+ * @returns Safe transaction hash
8027
+ */
8028
+ executeOrderSafe(safeAddress, maker, taker, signature, overrides) {
8029
+ if (!this.walletClient) {
8030
+ throw new Error("No wallet client");
8031
+ }
8032
+ const safeTransactionBuilder = new SafeTransactionBuilder(this.walletClient, this.chainId, this.addresses);
8033
+ return safeTransactionBuilder.executeOrder(safeAddress, maker, taker, signature, undefined, overrides);
8034
+ }
7864
8035
  /**
7865
8036
  * Execute several orders
7866
8037
  * @param orders List of orders data
@@ -7928,6 +8099,20 @@ class HypercertExchangeClient {
7928
8099
  const spenderAddress = this.addresses.EXCHANGE_V2;
7929
8100
  return approve(signer, tokenAddress, spenderAddress, amount, overrides);
7930
8101
  }
8102
+ /**
8103
+ * Approve an ERC20 to be used as a currency on the Hypercert Exchange using Safe
8104
+ * @param tokenAddress Address of the ERC20 to approve
8105
+ * @param amount Amount to be approved (default to MaxUint256)
8106
+ * @param safeAddress Address of the Safe to use
8107
+ * @returns Safe transaction hash
8108
+ */
8109
+ approveErc20Safe(safeAddress, tokenAddress, amount = MaxUint256, overrides) {
8110
+ if (!this.walletClient) {
8111
+ throw new Error("No wallet client");
8112
+ }
8113
+ const safeTransactionBuilder = new SafeTransactionBuilder(this.walletClient, this.chainId, this.addresses);
8114
+ return safeTransactionBuilder.approveErc20(safeAddress, tokenAddress, amount);
8115
+ }
7931
8116
  /**
7932
8117
  * Check whether or not an operator has been approved by the user
7933
8118
  * @param operator Operator address (default to the exchange address)
@@ -7938,6 +8123,16 @@ class HypercertExchangeClient {
7938
8123
  const signerAddress = await signer.getAddress();
7939
8124
  return hasUserApprovedOperator(signer, this.addresses.TRANSFER_MANAGER_V2, signerAddress, operator, overrides);
7940
8125
  }
8126
+ /**
8127
+ * Check whether or not an operator has been approved by the Safe
8128
+ * @param safeAddress Address of the Safe to check
8129
+ * @param operator Operator address (default to the exchange address)
8130
+ * @returns true if the operator is approved, false otherwise
8131
+ */
8132
+ async isTransferManagerApprovedSafe(safeAddress, operator = this.addresses.EXCHANGE_V2, overrides) {
8133
+ const signer = this.getSigner();
8134
+ return hasUserApprovedOperator(signer, this.addresses.TRANSFER_MANAGER_V2, safeAddress, operator, overrides);
8135
+ }
7941
8136
  /**
7942
8137
  * Grant a list of operators the rights to transfer user's assets using the transfer manager
7943
8138
  * @param operators List of operators (default to the exchange address)
@@ -7948,6 +8143,19 @@ class HypercertExchangeClient {
7948
8143
  const signer = this.getSigner();
7949
8144
  return grantApprovals(signer, this.addresses.TRANSFER_MANAGER_V2, operators, overrides);
7950
8145
  }
8146
+ /**
8147
+ * Grant a list of operators the rights to transfer user's assets using the transfer manager using Safe
8148
+ * @param operators List of operators
8149
+ * @param safeAddress Address of the Safe to use
8150
+ * @returns Safe transaction hash
8151
+ */
8152
+ grantTransferManagerApprovalSafe(safeAddress, operators = [this.addresses.EXCHANGE_V2], overrides) {
8153
+ if (!this.walletClient) {
8154
+ throw new Error("No wallet client");
8155
+ }
8156
+ const safeTransactionBuilder = new SafeTransactionBuilder(this.walletClient, this.chainId, this.addresses);
8157
+ return safeTransactionBuilder.grantTransferManagerApproval(safeAddress, operators);
8158
+ }
7951
8159
  /**
7952
8160
  * Revoke a list of operators the rights to transfer user's assets using the transfer manager
7953
8161
  * @param operators List of operators
@@ -8140,6 +8348,16 @@ class HypercertExchangeClient {
8140
8348
  const signedMessage = await signer.signMessage(`Delete listing ${orderId}`);
8141
8349
  return this.api.deleteOrder(orderId, signedMessage);
8142
8350
  }
8351
+ /**
8352
+ * Bundle approval operations into a single Safe transaction
8353
+ * @param safeAddress The address of the Safe contract
8354
+ * @param collectionAddress Address of the collection to approve
8355
+ * @returns Transaction hash
8356
+ */
8357
+ async bundleApprovalsForSafe(safeAddress, walletClient, collectionAddress) {
8358
+ const safeBuilder = new SafeTransactionBuilder(walletClient, this.chainId, this.addresses);
8359
+ return safeBuilder.bundleApprovals(safeAddress, collectionAddress);
8360
+ }
8143
8361
  }
8144
8362
 
8145
8363
  const utils = {
@@ -8155,4 +8373,4 @@ const utils = {
8155
8373
  ...asDeployedChain$1,
8156
8374
  };
8157
8375
 
8158
- export { ApiClient, ChainId, CollectionType, Eip712MakerMerkleTree, Eip712MerkleTree, ErrorCurrency, ErrorItemId, ErrorMerkleTreeDepth, ErrorQuoteType, ErrorSigner, ErrorStrategyType, ErrorTimestamp, HypercertExchangeClient, IERC1155 as IERC1155Abi, abiIERC20 as IERC20Abi, abiIERC721 as IERC721Abi, LooksRareProtocol as LooksRareProtocolAbi, MAX_ORDERS_PER_TREE, MerkleTreeNodePosition, OrderValidatorCode, OrderValidatorV2A as OrderValidatorV2AAbi, QuoteType, SUPPORTED_CURRENCIES, StrategyType, TransferManager as TransferManagerAbi, WETH as WETHAbi, addressesByNetwork, chainInfo, currenciesByNetwork, defaultMerkleTree, utils };
8376
+ export { ApiClient, ChainId, CollectionType, Eip712MakerMerkleTree, Eip712MerkleTree, ErrorCurrency, ErrorItemId, ErrorMerkleTreeDepth, ErrorQuoteType, ErrorSigner, ErrorStrategyType, ErrorTimestamp, HypercertExchangeClient, IERC1155 as IERC1155Abi, abiIERC20 as IERC20Abi, abiIERC721 as IERC721Abi, LooksRareProtocol as LooksRareProtocolAbi, MAX_ORDERS_PER_TREE, MerkleTreeNodePosition, OrderValidatorCode, OrderValidatorV2A as OrderValidatorV2AAbi, QuoteType, SUPPORTED_CURRENCIES, StrategyType, abiTransferManager as TransferManagerAbi, WETH as WETHAbi, addressesByNetwork, chainInfo, currenciesByNetwork, defaultMerkleTree, utils };