@imtbl/sdk 0.1.8-alpha → 0.1.8-alpha.2

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.cjs CHANGED
@@ -8,7 +8,6 @@ var magicSdk = require('magic-sdk');
8
8
  var oidc = require('@magic-ext/oidc');
9
9
  var BN = require('bn.js');
10
10
  var encUtils = require('enc-utils');
11
- var constants = require('@opensea/seaport-js/lib/constants');
12
11
  var FormData = require('form-data');
13
12
  var seaportJs = require('@opensea/seaport-js');
14
13
  var units = require('@ethersproject/units');
@@ -66,17 +65,17 @@ class ImmutableConfiguration {
66
65
  */
67
66
  // Some imports not used depending on template conditions
68
67
  // @ts-ignore
69
- const BASE_PATH = "https://indexer-mr.dev.imtbl.com".replace(/\/+$/, "");
68
+ const BASE_PATH$1 = "https://indexer-mr.dev.imtbl.com".replace(/\/+$/, "");
70
69
  /**
71
70
  *
72
71
  * @export
73
72
  * @class BaseAPI
74
73
  */
75
- class BaseAPI {
74
+ let BaseAPI$1 = class BaseAPI {
76
75
  basePath;
77
76
  axios;
78
77
  configuration;
79
- constructor(configuration, basePath = BASE_PATH, axios = globalAxios) {
78
+ constructor(configuration, basePath = BASE_PATH$1, axios = globalAxios) {
80
79
  this.basePath = basePath;
81
80
  this.axios = axios;
82
81
  if (configuration) {
@@ -84,21 +83,21 @@ class BaseAPI {
84
83
  this.basePath = configuration.basePath || this.basePath;
85
84
  }
86
85
  }
87
- }
86
+ };
88
87
  /**
89
88
  *
90
89
  * @export
91
90
  * @class RequiredError
92
91
  * @extends {Error}
93
92
  */
94
- class RequiredError extends Error {
93
+ let RequiredError$1 = class RequiredError extends Error {
95
94
  field;
96
95
  name = "RequiredError";
97
96
  constructor(field, msg) {
98
97
  super(msg);
99
98
  this.field = field;
100
99
  }
101
- }
100
+ };
102
101
 
103
102
  /* tslint:disable */
104
103
  /* eslint-disable */
@@ -117,24 +116,24 @@ class RequiredError extends Error {
117
116
  *
118
117
  * @export
119
118
  */
120
- const DUMMY_BASE_URL = 'https://example.com';
119
+ const DUMMY_BASE_URL$1 = 'https://example.com';
121
120
  /**
122
121
  *
123
122
  * @throws {RequiredError}
124
123
  * @export
125
124
  */
126
- const assertParamExists = function (functionName, paramName, paramValue) {
125
+ const assertParamExists$1 = function (functionName, paramName, paramValue) {
127
126
  if (paramValue === null || paramValue === undefined) {
128
- throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
127
+ throw new RequiredError$1(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
129
128
  }
130
129
  };
131
- function setFlattenedQueryParams(urlSearchParams, parameter, key = "") {
130
+ function setFlattenedQueryParams$1(urlSearchParams, parameter, key = "") {
132
131
  if (typeof parameter === "object") {
133
132
  if (Array.isArray(parameter)) {
134
- parameter.forEach(item => setFlattenedQueryParams(urlSearchParams, item, key));
133
+ parameter.forEach(item => setFlattenedQueryParams$1(urlSearchParams, item, key));
135
134
  }
136
135
  else {
137
- Object.keys(parameter).forEach(currentKey => setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`));
136
+ Object.keys(parameter).forEach(currentKey => setFlattenedQueryParams$1(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`));
138
137
  }
139
138
  }
140
139
  else {
@@ -150,23 +149,23 @@ function setFlattenedQueryParams(urlSearchParams, parameter, key = "") {
150
149
  *
151
150
  * @export
152
151
  */
153
- const setSearchParams = function (url, ...objects) {
152
+ const setSearchParams$1 = function (url, ...objects) {
154
153
  const searchParams = new URLSearchParams(url.search);
155
- setFlattenedQueryParams(searchParams, objects);
154
+ setFlattenedQueryParams$1(searchParams, objects);
156
155
  url.search = searchParams.toString();
157
156
  };
158
157
  /**
159
158
  *
160
159
  * @export
161
160
  */
162
- const toPathString = function (url) {
161
+ const toPathString$1 = function (url) {
163
162
  return url.pathname + url.search + url.hash;
164
163
  };
165
164
  /**
166
165
  *
167
166
  * @export
168
167
  */
169
- const createRequestFunction = function (axiosArgs, globalAxios, BASE_PATH, configuration) {
168
+ const createRequestFunction$1 = function (axiosArgs, globalAxios, BASE_PATH, configuration) {
170
169
  return (axios = globalAxios, basePath = BASE_PATH) => {
171
170
  const axiosRequestArgs = { ...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url };
172
171
  return axios.request(axiosRequestArgs);
@@ -202,14 +201,14 @@ const ActivitiesApiAxiosParamCreator = function (configuration) {
202
201
  */
203
202
  getActivity: async (chainName, activityId, options = {}) => {
204
203
  // verify required parameter 'chainName' is not null or undefined
205
- assertParamExists('getActivity', 'chainName', chainName);
204
+ assertParamExists$1('getActivity', 'chainName', chainName);
206
205
  // verify required parameter 'activityId' is not null or undefined
207
- assertParamExists('getActivity', 'activityId', activityId);
206
+ assertParamExists$1('getActivity', 'activityId', activityId);
208
207
  const localVarPath = `/v1/chains/{chain_name}/activities/{activity_id}`
209
208
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)))
210
209
  .replace(`{${"activity_id"}}`, encodeURIComponent(String(activityId)));
211
210
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
212
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
211
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
213
212
  let baseOptions;
214
213
  if (configuration) {
215
214
  baseOptions = configuration.baseOptions;
@@ -217,11 +216,11 @@ const ActivitiesApiAxiosParamCreator = function (configuration) {
217
216
  const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
218
217
  const localVarHeaderParameter = {};
219
218
  const localVarQueryParameter = {};
220
- setSearchParams(localVarUrlObj, localVarQueryParameter);
219
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
221
220
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
222
221
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
223
222
  return {
224
- url: toPathString(localVarUrlObj),
223
+ url: toPathString$1(localVarUrlObj),
225
224
  options: localVarRequestOptions,
226
225
  };
227
226
  },
@@ -243,11 +242,11 @@ const ActivitiesApiAxiosParamCreator = function (configuration) {
243
242
  */
244
243
  listActivities: async (chainName, contractAddress, tokenId, accountAddress, activityType, fromIndexedAt, toIndexedAt, transactionHash, pageCursor, pageSize, options = {}) => {
245
244
  // verify required parameter 'chainName' is not null or undefined
246
- assertParamExists('listActivities', 'chainName', chainName);
245
+ assertParamExists$1('listActivities', 'chainName', chainName);
247
246
  const localVarPath = `/v1/chains/{chain_name}/activities`
248
247
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
249
248
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
250
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
249
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
251
250
  let baseOptions;
252
251
  if (configuration) {
253
252
  baseOptions = configuration.baseOptions;
@@ -286,11 +285,11 @@ const ActivitiesApiAxiosParamCreator = function (configuration) {
286
285
  if (pageSize !== undefined) {
287
286
  localVarQueryParameter['page_size'] = pageSize;
288
287
  }
289
- setSearchParams(localVarUrlObj, localVarQueryParameter);
288
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
290
289
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
291
290
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
292
291
  return {
293
- url: toPathString(localVarUrlObj),
292
+ url: toPathString$1(localVarUrlObj),
294
293
  options: localVarRequestOptions,
295
294
  };
296
295
  },
@@ -313,7 +312,7 @@ const ActivitiesApiFp = function (configuration) {
313
312
  */
314
313
  async getActivity(chainName, activityId, options) {
315
314
  const localVarAxiosArgs = await localVarAxiosParamCreator.getActivity(chainName, activityId, options);
316
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
315
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
317
316
  },
318
317
  /**
319
318
  * List all activities
@@ -333,7 +332,7 @@ const ActivitiesApiFp = function (configuration) {
333
332
  */
334
333
  async listActivities(chainName, contractAddress, tokenId, accountAddress, activityType, fromIndexedAt, toIndexedAt, transactionHash, pageCursor, pageSize, options) {
335
334
  const localVarAxiosArgs = await localVarAxiosParamCreator.listActivities(chainName, contractAddress, tokenId, accountAddress, activityType, fromIndexedAt, toIndexedAt, transactionHash, pageCursor, pageSize, options);
336
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
335
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
337
336
  },
338
337
  };
339
338
  };
@@ -343,7 +342,7 @@ const ActivitiesApiFp = function (configuration) {
343
342
  * @class ActivitiesApi
344
343
  * @extends {BaseAPI}
345
344
  */
346
- class ActivitiesApi extends BaseAPI {
345
+ class ActivitiesApi extends BaseAPI$1 {
347
346
  /**
348
347
  * Get a single activity by ID
349
348
  * @summary Get a single activity by ID
@@ -398,7 +397,7 @@ const ChainsApiAxiosParamCreator = function (configuration) {
398
397
  listChains: async (pageCursor, pageSize, options = {}) => {
399
398
  const localVarPath = `/v1/chains`;
400
399
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
401
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
400
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
402
401
  let baseOptions;
403
402
  if (configuration) {
404
403
  baseOptions = configuration.baseOptions;
@@ -412,11 +411,11 @@ const ChainsApiAxiosParamCreator = function (configuration) {
412
411
  if (pageSize !== undefined) {
413
412
  localVarQueryParameter['page_size'] = pageSize;
414
413
  }
415
- setSearchParams(localVarUrlObj, localVarQueryParameter);
414
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
416
415
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
417
416
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
418
417
  return {
419
- url: toPathString(localVarUrlObj),
418
+ url: toPathString$1(localVarUrlObj),
420
419
  options: localVarRequestOptions,
421
420
  };
422
421
  },
@@ -439,7 +438,7 @@ const ChainsApiFp = function (configuration) {
439
438
  */
440
439
  async listChains(pageCursor, pageSize, options) {
441
440
  const localVarAxiosArgs = await localVarAxiosParamCreator.listChains(pageCursor, pageSize, options);
442
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
441
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
443
442
  },
444
443
  };
445
444
  };
@@ -449,7 +448,7 @@ const ChainsApiFp = function (configuration) {
449
448
  * @class ChainsApi
450
449
  * @extends {BaseAPI}
451
450
  */
452
- class ChainsApi extends BaseAPI {
451
+ class ChainsApi extends BaseAPI$1 {
453
452
  /**
454
453
  * List supported chains
455
454
  * @summary List supported chains
@@ -492,14 +491,14 @@ const CollectionsApiAxiosParamCreator = function (configuration) {
492
491
  */
493
492
  getCollection: async (contractAddress, chainName, options = {}) => {
494
493
  // verify required parameter 'contractAddress' is not null or undefined
495
- assertParamExists('getCollection', 'contractAddress', contractAddress);
494
+ assertParamExists$1('getCollection', 'contractAddress', contractAddress);
496
495
  // verify required parameter 'chainName' is not null or undefined
497
- assertParamExists('getCollection', 'chainName', chainName);
496
+ assertParamExists$1('getCollection', 'chainName', chainName);
498
497
  const localVarPath = `/v1/chains/{chain_name}/collections/{contract_address}`
499
498
  .replace(`{${"contract_address"}}`, encodeURIComponent(String(contractAddress)))
500
499
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
501
500
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
502
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
501
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
503
502
  let baseOptions;
504
503
  if (configuration) {
505
504
  baseOptions = configuration.baseOptions;
@@ -507,11 +506,11 @@ const CollectionsApiAxiosParamCreator = function (configuration) {
507
506
  const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
508
507
  const localVarHeaderParameter = {};
509
508
  const localVarQueryParameter = {};
510
- setSearchParams(localVarUrlObj, localVarQueryParameter);
509
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
511
510
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
512
511
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
513
512
  return {
514
- url: toPathString(localVarUrlObj),
513
+ url: toPathString$1(localVarUrlObj),
515
514
  options: localVarRequestOptions,
516
515
  };
517
516
  },
@@ -526,11 +525,11 @@ const CollectionsApiAxiosParamCreator = function (configuration) {
526
525
  */
527
526
  listCollections: async (chainName, pageCursor, pageSize, options = {}) => {
528
527
  // verify required parameter 'chainName' is not null or undefined
529
- assertParamExists('listCollections', 'chainName', chainName);
528
+ assertParamExists$1('listCollections', 'chainName', chainName);
530
529
  const localVarPath = `/v1/chains/{chain_name}/collections`
531
530
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
532
531
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
533
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
532
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
534
533
  let baseOptions;
535
534
  if (configuration) {
536
535
  baseOptions = configuration.baseOptions;
@@ -544,11 +543,11 @@ const CollectionsApiAxiosParamCreator = function (configuration) {
544
543
  if (pageSize !== undefined) {
545
544
  localVarQueryParameter['page_size'] = pageSize;
546
545
  }
547
- setSearchParams(localVarUrlObj, localVarQueryParameter);
546
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
548
547
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
549
548
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
550
549
  return {
551
- url: toPathString(localVarUrlObj),
550
+ url: toPathString$1(localVarUrlObj),
552
551
  options: localVarRequestOptions,
553
552
  };
554
553
  },
@@ -571,7 +570,7 @@ const CollectionsApiFp = function (configuration) {
571
570
  */
572
571
  async getCollection(contractAddress, chainName, options) {
573
572
  const localVarAxiosArgs = await localVarAxiosParamCreator.getCollection(contractAddress, chainName, options);
574
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
573
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
575
574
  },
576
575
  /**
577
576
  * List all collections
@@ -584,7 +583,7 @@ const CollectionsApiFp = function (configuration) {
584
583
  */
585
584
  async listCollections(chainName, pageCursor, pageSize, options) {
586
585
  const localVarAxiosArgs = await localVarAxiosParamCreator.listCollections(chainName, pageCursor, pageSize, options);
587
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
586
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
588
587
  },
589
588
  };
590
589
  };
@@ -594,7 +593,7 @@ const CollectionsApiFp = function (configuration) {
594
593
  * @class CollectionsApi
595
594
  * @extends {BaseAPI}
596
595
  */
597
- class CollectionsApi extends BaseAPI {
596
+ class CollectionsApi extends BaseAPI$1 {
598
597
  /**
599
598
  * Get collection by contract address
600
599
  * @summary Get collection by contract address
@@ -651,17 +650,17 @@ const NftOwnersApiAxiosParamCreator = function (configuration) {
651
650
  */
652
651
  listNFTOwners: async (contractAddress, tokenId, chainName, pageCursor, pageSize, options = {}) => {
653
652
  // verify required parameter 'contractAddress' is not null or undefined
654
- assertParamExists('listNFTOwners', 'contractAddress', contractAddress);
653
+ assertParamExists$1('listNFTOwners', 'contractAddress', contractAddress);
655
654
  // verify required parameter 'tokenId' is not null or undefined
656
- assertParamExists('listNFTOwners', 'tokenId', tokenId);
655
+ assertParamExists$1('listNFTOwners', 'tokenId', tokenId);
657
656
  // verify required parameter 'chainName' is not null or undefined
658
- assertParamExists('listNFTOwners', 'chainName', chainName);
657
+ assertParamExists$1('listNFTOwners', 'chainName', chainName);
659
658
  const localVarPath = `/v1/chains/{chain_name}/collections/{contract_address}/nfts/{token_id}/owners`
660
659
  .replace(`{${"contract_address"}}`, encodeURIComponent(String(contractAddress)))
661
660
  .replace(`{${"token_id"}}`, encodeURIComponent(String(tokenId)))
662
661
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
663
662
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
664
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
663
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
665
664
  let baseOptions;
666
665
  if (configuration) {
667
666
  baseOptions = configuration.baseOptions;
@@ -675,11 +674,11 @@ const NftOwnersApiAxiosParamCreator = function (configuration) {
675
674
  if (pageSize !== undefined) {
676
675
  localVarQueryParameter['page_size'] = pageSize;
677
676
  }
678
- setSearchParams(localVarUrlObj, localVarQueryParameter);
677
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
679
678
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
680
679
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
681
680
  return {
682
- url: toPathString(localVarUrlObj),
681
+ url: toPathString$1(localVarUrlObj),
683
682
  options: localVarRequestOptions,
684
683
  };
685
684
  },
@@ -705,7 +704,7 @@ const NftOwnersApiFp = function (configuration) {
705
704
  */
706
705
  async listNFTOwners(contractAddress, tokenId, chainName, pageCursor, pageSize, options) {
707
706
  const localVarAxiosArgs = await localVarAxiosParamCreator.listNFTOwners(contractAddress, tokenId, chainName, pageCursor, pageSize, options);
708
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
707
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
709
708
  },
710
709
  };
711
710
  };
@@ -715,7 +714,7 @@ const NftOwnersApiFp = function (configuration) {
715
714
  * @class NftOwnersApi
716
715
  * @extends {BaseAPI}
717
716
  */
718
- class NftOwnersApi extends BaseAPI {
717
+ class NftOwnersApi extends BaseAPI$1 {
719
718
  /**
720
719
  * List NFT owners by token ID
721
720
  * @summary List NFT owners by token ID
@@ -759,17 +758,17 @@ const NftsApiAxiosParamCreator = function (configuration) {
759
758
  */
760
759
  getNFT: async (contractAddress, tokenId, chainName, options = {}) => {
761
760
  // verify required parameter 'contractAddress' is not null or undefined
762
- assertParamExists('getNFT', 'contractAddress', contractAddress);
761
+ assertParamExists$1('getNFT', 'contractAddress', contractAddress);
763
762
  // verify required parameter 'tokenId' is not null or undefined
764
- assertParamExists('getNFT', 'tokenId', tokenId);
763
+ assertParamExists$1('getNFT', 'tokenId', tokenId);
765
764
  // verify required parameter 'chainName' is not null or undefined
766
- assertParamExists('getNFT', 'chainName', chainName);
765
+ assertParamExists$1('getNFT', 'chainName', chainName);
767
766
  const localVarPath = `/v1/chains/{chain_name}/collections/{contract_address}/nfts/{token_id}`
768
767
  .replace(`{${"contract_address"}}`, encodeURIComponent(String(contractAddress)))
769
768
  .replace(`{${"token_id"}}`, encodeURIComponent(String(tokenId)))
770
769
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
771
770
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
772
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
771
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
773
772
  let baseOptions;
774
773
  if (configuration) {
775
774
  baseOptions = configuration.baseOptions;
@@ -777,11 +776,11 @@ const NftsApiAxiosParamCreator = function (configuration) {
777
776
  const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
778
777
  const localVarHeaderParameter = {};
779
778
  const localVarQueryParameter = {};
780
- setSearchParams(localVarUrlObj, localVarQueryParameter);
779
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
781
780
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
782
781
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
783
782
  return {
784
- url: toPathString(localVarUrlObj),
783
+ url: toPathString$1(localVarUrlObj),
785
784
  options: localVarRequestOptions,
786
785
  };
787
786
  },
@@ -797,14 +796,14 @@ const NftsApiAxiosParamCreator = function (configuration) {
797
796
  */
798
797
  listNFTs: async (contractAddress, chainName, pageCursor, pageSize, options = {}) => {
799
798
  // verify required parameter 'contractAddress' is not null or undefined
800
- assertParamExists('listNFTs', 'contractAddress', contractAddress);
799
+ assertParamExists$1('listNFTs', 'contractAddress', contractAddress);
801
800
  // verify required parameter 'chainName' is not null or undefined
802
- assertParamExists('listNFTs', 'chainName', chainName);
801
+ assertParamExists$1('listNFTs', 'chainName', chainName);
803
802
  const localVarPath = `/v1/chains/{chain_name}/collections/{contract_address}/nfts`
804
803
  .replace(`{${"contract_address"}}`, encodeURIComponent(String(contractAddress)))
805
804
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
806
805
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
807
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
806
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
808
807
  let baseOptions;
809
808
  if (configuration) {
810
809
  baseOptions = configuration.baseOptions;
@@ -818,11 +817,11 @@ const NftsApiAxiosParamCreator = function (configuration) {
818
817
  if (pageSize !== undefined) {
819
818
  localVarQueryParameter['page_size'] = pageSize;
820
819
  }
821
- setSearchParams(localVarUrlObj, localVarQueryParameter);
820
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
822
821
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
823
822
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
824
823
  return {
825
- url: toPathString(localVarUrlObj),
824
+ url: toPathString$1(localVarUrlObj),
826
825
  options: localVarRequestOptions,
827
826
  };
828
827
  },
@@ -839,14 +838,14 @@ const NftsApiAxiosParamCreator = function (configuration) {
839
838
  */
840
839
  listNFTsByAccountAddress: async (accountAddress, chainName, contractAddress, pageCursor, pageSize, options = {}) => {
841
840
  // verify required parameter 'accountAddress' is not null or undefined
842
- assertParamExists('listNFTsByAccountAddress', 'accountAddress', accountAddress);
841
+ assertParamExists$1('listNFTsByAccountAddress', 'accountAddress', accountAddress);
843
842
  // verify required parameter 'chainName' is not null or undefined
844
- assertParamExists('listNFTsByAccountAddress', 'chainName', chainName);
843
+ assertParamExists$1('listNFTsByAccountAddress', 'chainName', chainName);
845
844
  const localVarPath = `/v1/chains/{chain_name}/accounts/{account_address}/nfts`
846
845
  .replace(`{${"account_address"}}`, encodeURIComponent(String(accountAddress)))
847
846
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
848
847
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
849
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
848
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
850
849
  let baseOptions;
851
850
  if (configuration) {
852
851
  baseOptions = configuration.baseOptions;
@@ -863,11 +862,11 @@ const NftsApiAxiosParamCreator = function (configuration) {
863
862
  if (pageSize !== undefined) {
864
863
  localVarQueryParameter['page_size'] = pageSize;
865
864
  }
866
- setSearchParams(localVarUrlObj, localVarQueryParameter);
865
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
867
866
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
868
867
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
869
868
  return {
870
- url: toPathString(localVarUrlObj),
869
+ url: toPathString$1(localVarUrlObj),
871
870
  options: localVarRequestOptions,
872
871
  };
873
872
  },
@@ -891,7 +890,7 @@ const NftsApiFp = function (configuration) {
891
890
  */
892
891
  async getNFT(contractAddress, tokenId, chainName, options) {
893
892
  const localVarAxiosArgs = await localVarAxiosParamCreator.getNFT(contractAddress, tokenId, chainName, options);
894
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
893
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
895
894
  },
896
895
  /**
897
896
  * List NFTs by contract address
@@ -905,7 +904,7 @@ const NftsApiFp = function (configuration) {
905
904
  */
906
905
  async listNFTs(contractAddress, chainName, pageCursor, pageSize, options) {
907
906
  const localVarAxiosArgs = await localVarAxiosParamCreator.listNFTs(contractAddress, chainName, pageCursor, pageSize, options);
908
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
907
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
909
908
  },
910
909
  /**
911
910
  * List NFTs by account address
@@ -920,7 +919,7 @@ const NftsApiFp = function (configuration) {
920
919
  */
921
920
  async listNFTsByAccountAddress(accountAddress, chainName, contractAddress, pageCursor, pageSize, options) {
922
921
  const localVarAxiosArgs = await localVarAxiosParamCreator.listNFTsByAccountAddress(accountAddress, chainName, contractAddress, pageCursor, pageSize, options);
923
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
922
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
924
923
  },
925
924
  };
926
925
  };
@@ -930,7 +929,7 @@ const NftsApiFp = function (configuration) {
930
929
  * @class NftsApi
931
930
  * @extends {BaseAPI}
932
931
  */
933
- class NftsApi extends BaseAPI {
932
+ class NftsApi extends BaseAPI$1 {
934
933
  /**
935
934
  * Get NFT by token ID
936
935
  * @summary Get NFT by token ID
@@ -979,7 +978,7 @@ class NftsApi extends BaseAPI {
979
978
  * https://openapi-generator.tech
980
979
  * Do not edit the class manually.
981
980
  */
982
- class Configuration {
981
+ let Configuration$1 = class Configuration {
983
982
  /**
984
983
  * parameter for apiKey security
985
984
  * @param name security name
@@ -1052,7 +1051,7 @@ class Configuration {
1052
1051
  const jsonMime = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
1053
1052
  return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
1054
1053
  }
1055
- }
1054
+ };
1056
1055
 
1057
1056
  /**
1058
1057
  * Custom Error class that is returned from the API when a request fails
@@ -1088,7 +1087,7 @@ const createAPIConfiguration = ({ basePath, headers: baseHeaders, }) => {
1088
1087
  basePath,
1089
1088
  baseOptions: { headers },
1090
1089
  };
1091
- return new Configuration(configParams);
1090
+ return new Configuration$1(configParams);
1092
1091
  };
1093
1092
  const production$1 = () => createAPIConfiguration({
1094
1093
  basePath: 'https://indexer-mr.dev.imtbl.com/v1', // TODO update before mainnet release
@@ -1884,186 +1883,606 @@ function convertToSignableToken(token) {
1884
1883
  }
1885
1884
  }
1886
1885
 
1887
- var PassportErrorType;
1888
- (function (PassportErrorType) {
1889
- PassportErrorType["AUTHENTICATION_ERROR"] = "AUTHENTICATION_ERROR";
1890
- PassportErrorType["INVALID_CONFIGURATION"] = "INVALID_CONFIGURATION";
1891
- PassportErrorType["WALLET_CONNECTION_ERROR"] = "WALLET_CONNECTION_ERROR";
1892
- PassportErrorType["NOT_LOGGED_IN_ERROR"] = "NOT_LOGGED_IN_ERROR";
1893
- PassportErrorType["SILENT_LOGIN_ERROR"] = "SILENT_LOGIN_ERROR";
1894
- PassportErrorType["REFRESH_TOKEN_ERROR"] = "REFRESH_TOKEN_ERROR";
1895
- PassportErrorType["USER_REGISTRATION_ERROR"] = "USER_REGISTRATION_ERROR";
1896
- PassportErrorType["LOGOUT_ERROR"] = "LOGOUT_ERROR";
1897
- PassportErrorType["TRANSFER_ERROR"] = "TRANSFER_ERROR";
1898
- PassportErrorType["CREATE_ORDER_ERROR"] = "CREATE_ORDER_ERROR";
1899
- PassportErrorType["CANCEL_ORDER_ERROR"] = "CANCEL_ORDER_ERROR";
1900
- PassportErrorType["EXCHANGE_TRANSFER_ERROR"] = "EXCHANGE_TRANSFER_ERROR";
1901
- PassportErrorType["CREATE_TRADE_ERROR"] = "CREATE_TRADE_ERROR";
1902
- PassportErrorType["OPERATION_NOT_SUPPORTED_ERROR"] = "OPERATION_NOT_SUPPORTED_ERROR";
1903
- })(PassportErrorType || (PassportErrorType = {}));
1904
- class PassportError extends Error {
1905
- type;
1906
- constructor(message, type) {
1907
- super(message);
1908
- this.type = type;
1886
+ /* tslint:disable */
1887
+ /* eslint-disable */
1888
+ /**
1889
+ * Swagger Guardian
1890
+ * Guardian API
1891
+ *
1892
+ * The version of the OpenAPI document: 1.0.0
1893
+ * Contact: support@immutable.com
1894
+ *
1895
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1896
+ * https://openapi-generator.tech
1897
+ * Do not edit the class manually.
1898
+ */
1899
+ const BASE_PATH = "http://guardian.sandbox.imtbl.com".replace(/\/+$/, "");
1900
+ /**
1901
+ *
1902
+ * @export
1903
+ * @class BaseAPI
1904
+ */
1905
+ class BaseAPI {
1906
+ basePath;
1907
+ axios;
1908
+ configuration;
1909
+ constructor(configuration, basePath = BASE_PATH, axios = globalAxios) {
1910
+ this.basePath = basePath;
1911
+ this.axios = axios;
1912
+ if (configuration) {
1913
+ this.configuration = configuration;
1914
+ this.basePath = configuration.basePath || this.basePath;
1915
+ }
1909
1916
  }
1910
1917
  }
1911
- const withPassportError = async (fn, customErrorType) => {
1912
- try {
1913
- return await fn();
1918
+ /**
1919
+ *
1920
+ * @export
1921
+ * @class RequiredError
1922
+ * @extends {Error}
1923
+ */
1924
+ class RequiredError extends Error {
1925
+ field;
1926
+ constructor(field, msg) {
1927
+ super(msg);
1928
+ this.field = field;
1929
+ this.name = "RequiredError";
1914
1930
  }
1915
- catch (error) {
1916
- const errorMessage = `${customErrorType}: ${error.message}` || 'UnknownError';
1917
- throw new PassportError(errorMessage, customErrorType);
1931
+ }
1932
+
1933
+ /* tslint:disable */
1934
+ /* eslint-disable */
1935
+ /**
1936
+ * Swagger Guardian
1937
+ * Guardian API
1938
+ *
1939
+ * The version of the OpenAPI document: 1.0.0
1940
+ * Contact: support@immutable.com
1941
+ *
1942
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1943
+ * https://openapi-generator.tech
1944
+ * Do not edit the class manually.
1945
+ */
1946
+ /**
1947
+ *
1948
+ * @export
1949
+ */
1950
+ const DUMMY_BASE_URL = 'https://example.com';
1951
+ /**
1952
+ *
1953
+ * @throws {RequiredError}
1954
+ * @export
1955
+ */
1956
+ const assertParamExists = function (functionName, paramName, paramValue) {
1957
+ if (paramValue === null || paramValue === undefined) {
1958
+ throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
1918
1959
  }
1919
1960
  };
1920
-
1921
- const POLL_INTERVAL = 1 * 1000; // every 1 second
1922
- const MAX_RETRIES = 3;
1923
- const wait = (ms) => new Promise((resolve) => {
1924
- setTimeout(() => resolve(), ms);
1925
- });
1926
- const retryWithDelay = async (fn, options) => {
1927
- const { retries = MAX_RETRIES, interval = POLL_INTERVAL, finalErr = Error('Retry failed'), } = options || {};
1928
- try {
1929
- return await fn();
1961
+ /**
1962
+ *
1963
+ * @export
1964
+ */
1965
+ const setBearerAuthToObject = async function (object, configuration) {
1966
+ if (configuration && configuration.accessToken) {
1967
+ const accessToken = typeof configuration.accessToken === 'function'
1968
+ ? await configuration.accessToken()
1969
+ : await configuration.accessToken;
1970
+ object["Authorization"] = "Bearer " + accessToken;
1930
1971
  }
1931
- catch (err) {
1932
- if (retries <= 0) {
1933
- return Promise.reject(finalErr);
1972
+ };
1973
+ function setFlattenedQueryParams(urlSearchParams, parameter, key = "") {
1974
+ if (parameter == null)
1975
+ return;
1976
+ if (typeof parameter === "object") {
1977
+ if (Array.isArray(parameter)) {
1978
+ parameter.forEach(item => setFlattenedQueryParams(urlSearchParams, item, key));
1979
+ }
1980
+ else {
1981
+ Object.keys(parameter).forEach(currentKey => setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`));
1934
1982
  }
1935
- await wait(interval);
1936
- return retryWithDelay(fn, { retries: retries - 1, finalErr });
1937
1983
  }
1938
- };
1939
-
1940
- const getAuthConfiguration = ({ oidcConfiguration, authenticationDomain, }) => {
1941
- const baseConfiguration = {
1942
- authority: authenticationDomain,
1943
- redirect_uri: oidcConfiguration.redirectUri,
1944
- popup_redirect_uri: oidcConfiguration.redirectUri,
1945
- client_id: oidcConfiguration.clientId,
1946
- metadata: {
1947
- authorization_endpoint: `${authenticationDomain}/authorize`,
1948
- token_endpoint: `${authenticationDomain}/oauth/token`,
1949
- userinfo_endpoint: `${authenticationDomain}/userinfo`,
1950
- end_session_endpoint: `${authenticationDomain}/v2/logout`
1951
- + `?returnTo=${encodeURIComponent(oidcConfiguration.logoutRedirectUri)}`
1952
- + `&client_id=${oidcConfiguration.clientId}`,
1953
- },
1954
- mergeClaims: true,
1955
- loadUserInfo: true,
1956
- scope: oidcConfiguration.scope,
1957
- };
1958
- if (oidcConfiguration.audience) {
1959
- baseConfiguration.extraQueryParams = {
1960
- audience: oidcConfiguration.audience,
1961
- };
1984
+ else {
1985
+ if (urlSearchParams.has(key)) {
1986
+ urlSearchParams.append(key, parameter);
1987
+ }
1988
+ else {
1989
+ urlSearchParams.set(key, parameter);
1990
+ }
1962
1991
  }
1963
- return baseConfiguration;
1992
+ }
1993
+ /**
1994
+ *
1995
+ * @export
1996
+ */
1997
+ const setSearchParams = function (url, ...objects) {
1998
+ const searchParams = new URLSearchParams(url.search);
1999
+ setFlattenedQueryParams(searchParams, objects);
2000
+ url.search = searchParams.toString();
1964
2001
  };
1965
- class AuthManager {
1966
- userManager;
1967
- config;
1968
- constructor(config) {
1969
- this.config = config;
1970
- this.userManager = new oidcClientTs.UserManager(getAuthConfiguration(config));
1971
- }
1972
- static mapOidcUserToDomainModel = (oidcUser) => {
1973
- const passport = oidcUser.profile?.passport;
1974
- return {
1975
- expired: oidcUser.expired,
1976
- idToken: oidcUser.id_token,
1977
- accessToken: oidcUser.access_token,
1978
- refreshToken: oidcUser.refresh_token,
1979
- profile: {
1980
- sub: oidcUser.profile.sub,
1981
- email: oidcUser.profile.email,
1982
- nickname: oidcUser.profile.nickname,
1983
- },
1984
- etherKey: passport?.ether_key || '',
1985
- };
2002
+ /**
2003
+ *
2004
+ * @export
2005
+ */
2006
+ const toPathString = function (url) {
2007
+ return url.pathname + url.search + url.hash;
2008
+ };
2009
+ /**
2010
+ *
2011
+ * @export
2012
+ */
2013
+ const createRequestFunction = function (axiosArgs, globalAxios, BASE_PATH, configuration) {
2014
+ return (axios = globalAxios, basePath = BASE_PATH) => {
2015
+ const axiosRequestArgs = { ...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url };
2016
+ return axios.request(axiosRequestArgs);
1986
2017
  };
1987
- async login() {
1988
- return withPassportError(async () => {
1989
- const popupWindowFeatures = { width: 410, height: 450 };
1990
- const oidcUser = await this.userManager.signinPopup({
1991
- popupWindowFeatures,
1992
- });
1993
- return AuthManager.mapOidcUserToDomainModel(oidcUser);
1994
- }, PassportErrorType.AUTHENTICATION_ERROR);
1995
- }
1996
- async loginCallback() {
1997
- return withPassportError(async () => this.userManager.signinPopupCallback(), PassportErrorType.AUTHENTICATION_ERROR);
1998
- }
1999
- async logout() {
2000
- return withPassportError(async () => this.userManager.signoutRedirect(), PassportErrorType.LOGOUT_ERROR);
2001
- }
2002
- async loginSilent() {
2003
- return withPassportError(async () => {
2004
- const existedUser = await this.getUser();
2005
- if (!existedUser) {
2006
- return null;
2007
- }
2008
- const oidcUser = await this.userManager.signinSilent();
2009
- if (!oidcUser) {
2010
- return null;
2018
+ };
2019
+
2020
+ /* tslint:disable */
2021
+ /* eslint-disable */
2022
+ /**
2023
+ * Swagger Guardian
2024
+ * Guardian API
2025
+ *
2026
+ * The version of the OpenAPI document: 1.0.0
2027
+ * Contact: support@immutable.com
2028
+ *
2029
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2030
+ * https://openapi-generator.tech
2031
+ * Do not edit the class manually.
2032
+ */
2033
+ /**
2034
+ * StarkexTransactionsApi - axios parameter creator
2035
+ * @export
2036
+ */
2037
+ const StarkexTransactionsApiAxiosParamCreator = function (configuration) {
2038
+ return {
2039
+ /**
2040
+ * Check if it is a valid transaction by payload hash
2041
+ * @summary Evaluate if it is an valid transaction
2042
+ * @param {string} payloadHash Hash for the payload
2043
+ * @param {*} [options] Override http request option.
2044
+ * @throws {RequiredError}
2045
+ */
2046
+ evaluateStarkexTransaction: async (payloadHash, options = {}) => {
2047
+ // verify required parameter 'payloadHash' is not null or undefined
2048
+ assertParamExists('evaluateStarkexTransaction', 'payloadHash', payloadHash);
2049
+ const localVarPath = `/guardian/v1/starkex/evaluate/{payloadHash}`
2050
+ .replace(`{${"payloadHash"}}`, encodeURIComponent(String(payloadHash)));
2051
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2052
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2053
+ let baseOptions;
2054
+ if (configuration) {
2055
+ baseOptions = configuration.baseOptions;
2011
2056
  }
2012
- return AuthManager.mapOidcUserToDomainModel(oidcUser);
2013
- }, PassportErrorType.SILENT_LOGIN_ERROR);
2057
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
2058
+ const localVarHeaderParameter = {};
2059
+ const localVarQueryParameter = {};
2060
+ // authentication BearerAuth required
2061
+ // http bearer authentication required
2062
+ await setBearerAuthToObject(localVarHeaderParameter, configuration);
2063
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2064
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2065
+ localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
2066
+ return {
2067
+ url: toPathString(localVarUrlObj),
2068
+ options: localVarRequestOptions,
2069
+ };
2070
+ },
2071
+ };
2072
+ };
2073
+ /**
2074
+ * StarkexTransactionsApi - functional programming interface
2075
+ * @export
2076
+ */
2077
+ const StarkexTransactionsApiFp = function (configuration) {
2078
+ const localVarAxiosParamCreator = StarkexTransactionsApiAxiosParamCreator(configuration);
2079
+ return {
2080
+ /**
2081
+ * Check if it is a valid transaction by payload hash
2082
+ * @summary Evaluate if it is an valid transaction
2083
+ * @param {string} payloadHash Hash for the payload
2084
+ * @param {*} [options] Override http request option.
2085
+ * @throws {RequiredError}
2086
+ */
2087
+ async evaluateStarkexTransaction(payloadHash, options) {
2088
+ const localVarAxiosArgs = await localVarAxiosParamCreator.evaluateStarkexTransaction(payloadHash, options);
2089
+ return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
2090
+ },
2091
+ };
2092
+ };
2093
+ /**
2094
+ * StarkexTransactionsApi - object-oriented interface
2095
+ * @export
2096
+ * @class StarkexTransactionsApi
2097
+ * @extends {BaseAPI}
2098
+ */
2099
+ class StarkexTransactionsApi extends BaseAPI {
2100
+ /**
2101
+ * Check if it is a valid transaction by payload hash
2102
+ * @summary Evaluate if it is an valid transaction
2103
+ * @param {StarkexTransactionsApiEvaluateStarkexTransactionRequest} requestParameters Request parameters.
2104
+ * @param {*} [options] Override http request option.
2105
+ * @throws {RequiredError}
2106
+ * @memberof StarkexTransactionsApi
2107
+ */
2108
+ evaluateStarkexTransaction(requestParameters, options) {
2109
+ return StarkexTransactionsApiFp(this.configuration).evaluateStarkexTransaction(requestParameters.payloadHash, options).then((request) => request(this.axios, this.basePath));
2014
2110
  }
2015
- async getUser() {
2016
- return withPassportError(async () => {
2017
- const oidcUser = await this.userManager.getUser();
2018
- if (!oidcUser) {
2019
- return null;
2111
+ }
2112
+
2113
+ /* tslint:disable */
2114
+ /* eslint-disable */
2115
+ /**
2116
+ * Swagger Guardian
2117
+ * Guardian API
2118
+ *
2119
+ * The version of the OpenAPI document: 1.0.0
2120
+ * Contact: support@immutable.com
2121
+ *
2122
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2123
+ * https://openapi-generator.tech
2124
+ * Do not edit the class manually.
2125
+ */
2126
+ /**
2127
+ * TransactionsApi - axios parameter creator
2128
+ * @export
2129
+ */
2130
+ const TransactionsApiAxiosParamCreator = function (configuration) {
2131
+ return {
2132
+ /**
2133
+ * Get a transaction by payload hash
2134
+ * @summary Info for a specific transaction
2135
+ * @param {string} transactionID The id of the starkex transaction to retrieve
2136
+ * @param {string} chainType roll up type
2137
+ * @param {number} [chainID] ID of evm chain
2138
+ * @param {*} [options] Override http request option.
2139
+ * @throws {RequiredError}
2140
+ */
2141
+ getTransactionByID: async (transactionID, chainType, chainID, options = {}) => {
2142
+ // verify required parameter 'transactionID' is not null or undefined
2143
+ assertParamExists('getTransactionByID', 'transactionID', transactionID);
2144
+ // verify required parameter 'chainType' is not null or undefined
2145
+ assertParamExists('getTransactionByID', 'chainType', chainType);
2146
+ const localVarPath = `/guardian/v1/transactions/{transactionID}`
2147
+ .replace(`{${"transactionID"}}`, encodeURIComponent(String(transactionID)));
2148
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2149
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2150
+ let baseOptions;
2151
+ if (configuration) {
2152
+ baseOptions = configuration.baseOptions;
2020
2153
  }
2021
- return AuthManager.mapOidcUserToDomainModel(oidcUser);
2022
- }, PassportErrorType.NOT_LOGGED_IN_ERROR);
2023
- }
2024
- async requestRefreshTokenAfterRegistration() {
2025
- return withPassportError(async () => {
2026
- const updatedUser = await retryWithDelay(async () => {
2027
- const user = await this.userManager.signinSilent();
2028
- const passportMetadata = user?.profile?.passport;
2029
- const metadataExists = !!passportMetadata?.ether_key
2030
- && !!passportMetadata?.stark_key
2031
- && !!passportMetadata?.user_admin_key;
2032
- if (metadataExists) {
2033
- return user;
2034
- }
2035
- return Promise.reject(new Error('user wallet addresses not exist'));
2036
- });
2037
- if (!updatedUser) {
2038
- return null;
2154
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
2155
+ const localVarHeaderParameter = {};
2156
+ const localVarQueryParameter = {};
2157
+ // authentication BearerAuth required
2158
+ // http bearer authentication required
2159
+ await setBearerAuthToObject(localVarHeaderParameter, configuration);
2160
+ if (chainType !== undefined) {
2161
+ localVarQueryParameter['chainType'] = chainType;
2039
2162
  }
2040
- return AuthManager.mapOidcUserToDomainModel(updatedUser);
2041
- }, PassportErrorType.REFRESH_TOKEN_ERROR);
2163
+ if (chainID !== undefined) {
2164
+ localVarQueryParameter['chainID'] = chainID;
2165
+ }
2166
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2167
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2168
+ localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
2169
+ return {
2170
+ url: toPathString(localVarUrlObj),
2171
+ options: localVarRequestOptions,
2172
+ };
2173
+ },
2174
+ };
2175
+ };
2176
+ /**
2177
+ * TransactionsApi - functional programming interface
2178
+ * @export
2179
+ */
2180
+ const TransactionsApiFp = function (configuration) {
2181
+ const localVarAxiosParamCreator = TransactionsApiAxiosParamCreator(configuration);
2182
+ return {
2183
+ /**
2184
+ * Get a transaction by payload hash
2185
+ * @summary Info for a specific transaction
2186
+ * @param {string} transactionID The id of the starkex transaction to retrieve
2187
+ * @param {string} chainType roll up type
2188
+ * @param {number} [chainID] ID of evm chain
2189
+ * @param {*} [options] Override http request option.
2190
+ * @throws {RequiredError}
2191
+ */
2192
+ async getTransactionByID(transactionID, chainType, chainID, options) {
2193
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getTransactionByID(transactionID, chainType, chainID, options);
2194
+ return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
2195
+ },
2196
+ };
2197
+ };
2198
+ /**
2199
+ * TransactionsApi - object-oriented interface
2200
+ * @export
2201
+ * @class TransactionsApi
2202
+ * @extends {BaseAPI}
2203
+ */
2204
+ class TransactionsApi extends BaseAPI {
2205
+ /**
2206
+ * Get a transaction by payload hash
2207
+ * @summary Info for a specific transaction
2208
+ * @param {TransactionsApiGetTransactionByIDRequest} requestParameters Request parameters.
2209
+ * @param {*} [options] Override http request option.
2210
+ * @throws {RequiredError}
2211
+ * @memberof TransactionsApi
2212
+ */
2213
+ getTransactionByID(requestParameters, options) {
2214
+ return TransactionsApiFp(this.configuration).getTransactionByID(requestParameters.transactionID, requestParameters.chainType, requestParameters.chainID, options).then((request) => request(this.axios, this.basePath));
2042
2215
  }
2043
2216
  }
2044
2217
 
2045
- class MagicAdapter {
2046
- magicClient;
2047
- config;
2048
- constructor(config) {
2049
- this.config = config;
2050
- this.magicClient = new magicSdk.Magic(config.magicPublishableApiKey, {
2051
- network: config.network,
2052
- extensions: [new oidc.OpenIdExtension()],
2053
- });
2054
- }
2055
- async login(idToken) {
2056
- return withPassportError(async () => {
2057
- await this.magicClient.openid.loginWithOIDC({
2058
- jwt: idToken,
2059
- providerId: this.config.magicProviderId,
2060
- });
2061
- return new ethers.ethers.providers.Web3Provider(this.magicClient
2062
- .rpcProvider);
2063
- }, PassportErrorType.WALLET_CONNECTION_ERROR);
2218
+ /* tslint:disable */
2219
+ /* eslint-disable */
2220
+ /**
2221
+ * Swagger Guardian
2222
+ * Guardian API
2223
+ *
2224
+ * The version of the OpenAPI document: 1.0.0
2225
+ * Contact: support@immutable.com
2226
+ *
2227
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2228
+ * https://openapi-generator.tech
2229
+ * Do not edit the class manually.
2230
+ */
2231
+ class Configuration {
2232
+ /**
2233
+ * parameter for apiKey security
2234
+ * @param name security name
2235
+ * @memberof Configuration
2236
+ */
2237
+ apiKey;
2238
+ /**
2239
+ * parameter for basic security
2240
+ *
2241
+ * @type {string}
2242
+ * @memberof Configuration
2243
+ */
2244
+ username;
2245
+ /**
2246
+ * parameter for basic security
2247
+ *
2248
+ * @type {string}
2249
+ * @memberof Configuration
2250
+ */
2251
+ password;
2252
+ /**
2253
+ * parameter for oauth2 security
2254
+ * @param name security name
2255
+ * @param scopes oauth2 scope
2256
+ * @memberof Configuration
2257
+ */
2258
+ accessToken;
2259
+ /**
2260
+ * override base path
2261
+ *
2262
+ * @type {string}
2263
+ * @memberof Configuration
2264
+ */
2265
+ basePath;
2266
+ /**
2267
+ * base options for axios calls
2268
+ *
2269
+ * @type {any}
2270
+ * @memberof Configuration
2271
+ */
2272
+ baseOptions;
2273
+ /**
2274
+ * The FormData constructor that will be used to create multipart form data
2275
+ * requests. You can inject this here so that execution environments that
2276
+ * do not support the FormData class can still run the generated client.
2277
+ *
2278
+ * @type {new () => FormData}
2279
+ */
2280
+ formDataCtor;
2281
+ constructor(param = {}) {
2282
+ this.apiKey = param.apiKey;
2283
+ this.username = param.username;
2284
+ this.password = param.password;
2285
+ this.accessToken = param.accessToken;
2286
+ this.basePath = param.basePath;
2287
+ this.baseOptions = param.baseOptions;
2288
+ this.formDataCtor = param.formDataCtor;
2064
2289
  }
2065
- }
2066
-
2290
+ /**
2291
+ * Check if the given MIME is a JSON MIME.
2292
+ * JSON MIME examples:
2293
+ * application/json
2294
+ * application/json; charset=UTF8
2295
+ * APPLICATION/JSON
2296
+ * application/vnd.company+json
2297
+ * @param mime - MIME (Multipurpose Internet Mail Extensions)
2298
+ * @return True if the given MIME is JSON, false otherwise.
2299
+ */
2300
+ isJsonMime(mime) {
2301
+ const jsonMime = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
2302
+ return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
2303
+ }
2304
+ }
2305
+
2306
+ var PassportErrorType;
2307
+ (function (PassportErrorType) {
2308
+ PassportErrorType["AUTHENTICATION_ERROR"] = "AUTHENTICATION_ERROR";
2309
+ PassportErrorType["INVALID_CONFIGURATION"] = "INVALID_CONFIGURATION";
2310
+ PassportErrorType["WALLET_CONNECTION_ERROR"] = "WALLET_CONNECTION_ERROR";
2311
+ PassportErrorType["NOT_LOGGED_IN_ERROR"] = "NOT_LOGGED_IN_ERROR";
2312
+ PassportErrorType["SILENT_LOGIN_ERROR"] = "SILENT_LOGIN_ERROR";
2313
+ PassportErrorType["REFRESH_TOKEN_ERROR"] = "REFRESH_TOKEN_ERROR";
2314
+ PassportErrorType["USER_REGISTRATION_ERROR"] = "USER_REGISTRATION_ERROR";
2315
+ PassportErrorType["LOGOUT_ERROR"] = "LOGOUT_ERROR";
2316
+ PassportErrorType["TRANSFER_ERROR"] = "TRANSFER_ERROR";
2317
+ PassportErrorType["CREATE_ORDER_ERROR"] = "CREATE_ORDER_ERROR";
2318
+ PassportErrorType["CANCEL_ORDER_ERROR"] = "CANCEL_ORDER_ERROR";
2319
+ PassportErrorType["EXCHANGE_TRANSFER_ERROR"] = "EXCHANGE_TRANSFER_ERROR";
2320
+ PassportErrorType["CREATE_TRADE_ERROR"] = "CREATE_TRADE_ERROR";
2321
+ PassportErrorType["OPERATION_NOT_SUPPORTED_ERROR"] = "OPERATION_NOT_SUPPORTED_ERROR";
2322
+ })(PassportErrorType || (PassportErrorType = {}));
2323
+ class PassportError extends Error {
2324
+ type;
2325
+ constructor(message, type) {
2326
+ super(message);
2327
+ this.type = type;
2328
+ }
2329
+ }
2330
+ const withPassportError = async (fn, customErrorType) => {
2331
+ try {
2332
+ return await fn();
2333
+ }
2334
+ catch (error) {
2335
+ const errorMessage = `${customErrorType}: ${error.message}` || 'UnknownError';
2336
+ throw new PassportError(errorMessage, customErrorType);
2337
+ }
2338
+ };
2339
+
2340
+ const POLL_INTERVAL = 1 * 1000; // every 1 second
2341
+ const MAX_RETRIES = 3;
2342
+ const wait = (ms) => new Promise((resolve) => {
2343
+ setTimeout(() => resolve(), ms);
2344
+ });
2345
+ const retryWithDelay = async (fn, options) => {
2346
+ const { retries = MAX_RETRIES, interval = POLL_INTERVAL, finalErr = Error('Retry failed'), } = options || {};
2347
+ try {
2348
+ return await fn();
2349
+ }
2350
+ catch (err) {
2351
+ if (retries <= 0) {
2352
+ return Promise.reject(finalErr);
2353
+ }
2354
+ await wait(interval);
2355
+ return retryWithDelay(fn, { retries: retries - 1, finalErr });
2356
+ }
2357
+ };
2358
+
2359
+ const getAuthConfiguration = ({ oidcConfiguration, authenticationDomain, }) => {
2360
+ const baseConfiguration = {
2361
+ authority: authenticationDomain,
2362
+ redirect_uri: oidcConfiguration.redirectUri,
2363
+ popup_redirect_uri: oidcConfiguration.redirectUri,
2364
+ client_id: oidcConfiguration.clientId,
2365
+ metadata: {
2366
+ authorization_endpoint: `${authenticationDomain}/authorize`,
2367
+ token_endpoint: `${authenticationDomain}/oauth/token`,
2368
+ userinfo_endpoint: `${authenticationDomain}/userinfo`,
2369
+ end_session_endpoint: `${authenticationDomain}/v2/logout`
2370
+ + `?returnTo=${encodeURIComponent(oidcConfiguration.logoutRedirectUri)}`
2371
+ + `&client_id=${oidcConfiguration.clientId}`,
2372
+ },
2373
+ mergeClaims: true,
2374
+ loadUserInfo: true,
2375
+ scope: oidcConfiguration.scope,
2376
+ };
2377
+ if (oidcConfiguration.audience) {
2378
+ baseConfiguration.extraQueryParams = {
2379
+ audience: oidcConfiguration.audience,
2380
+ };
2381
+ }
2382
+ return baseConfiguration;
2383
+ };
2384
+ class AuthManager {
2385
+ userManager;
2386
+ config;
2387
+ constructor(config) {
2388
+ this.config = config;
2389
+ this.userManager = new oidcClientTs.UserManager(getAuthConfiguration(config));
2390
+ }
2391
+ static mapOidcUserToDomainModel = (oidcUser) => {
2392
+ const passport = oidcUser.profile?.passport;
2393
+ return {
2394
+ expired: oidcUser.expired,
2395
+ idToken: oidcUser.id_token,
2396
+ accessToken: oidcUser.access_token,
2397
+ refreshToken: oidcUser.refresh_token,
2398
+ profile: {
2399
+ sub: oidcUser.profile.sub,
2400
+ email: oidcUser.profile.email,
2401
+ nickname: oidcUser.profile.nickname,
2402
+ },
2403
+ etherKey: passport?.ether_key || '',
2404
+ };
2405
+ };
2406
+ async login() {
2407
+ return withPassportError(async () => {
2408
+ const popupWindowFeatures = { width: 410, height: 450 };
2409
+ const oidcUser = await this.userManager.signinPopup({
2410
+ popupWindowFeatures,
2411
+ });
2412
+ return AuthManager.mapOidcUserToDomainModel(oidcUser);
2413
+ }, PassportErrorType.AUTHENTICATION_ERROR);
2414
+ }
2415
+ async loginCallback() {
2416
+ return withPassportError(async () => this.userManager.signinPopupCallback(), PassportErrorType.AUTHENTICATION_ERROR);
2417
+ }
2418
+ async logout() {
2419
+ return withPassportError(async () => this.userManager.signoutRedirect(), PassportErrorType.LOGOUT_ERROR);
2420
+ }
2421
+ async loginSilent() {
2422
+ return withPassportError(async () => {
2423
+ const existedUser = await this.getUser();
2424
+ if (!existedUser) {
2425
+ return null;
2426
+ }
2427
+ const oidcUser = await this.userManager.signinSilent();
2428
+ if (!oidcUser) {
2429
+ return null;
2430
+ }
2431
+ return AuthManager.mapOidcUserToDomainModel(oidcUser);
2432
+ }, PassportErrorType.SILENT_LOGIN_ERROR);
2433
+ }
2434
+ async getUser() {
2435
+ return withPassportError(async () => {
2436
+ const oidcUser = await this.userManager.getUser();
2437
+ if (!oidcUser) {
2438
+ return null;
2439
+ }
2440
+ return AuthManager.mapOidcUserToDomainModel(oidcUser);
2441
+ }, PassportErrorType.NOT_LOGGED_IN_ERROR);
2442
+ }
2443
+ async requestRefreshTokenAfterRegistration() {
2444
+ return withPassportError(async () => {
2445
+ const updatedUser = await retryWithDelay(async () => {
2446
+ const user = await this.userManager.signinSilent();
2447
+ const passportMetadata = user?.profile?.passport;
2448
+ const metadataExists = !!passportMetadata?.ether_key
2449
+ && !!passportMetadata?.stark_key
2450
+ && !!passportMetadata?.user_admin_key;
2451
+ if (metadataExists) {
2452
+ return user;
2453
+ }
2454
+ return Promise.reject(new Error('user wallet addresses not exist'));
2455
+ });
2456
+ if (!updatedUser) {
2457
+ return null;
2458
+ }
2459
+ return AuthManager.mapOidcUserToDomainModel(updatedUser);
2460
+ }, PassportErrorType.REFRESH_TOKEN_ERROR);
2461
+ }
2462
+ }
2463
+
2464
+ class MagicAdapter {
2465
+ magicClient;
2466
+ config;
2467
+ constructor(config) {
2468
+ this.config = config;
2469
+ this.magicClient = new magicSdk.Magic(config.magicPublishableApiKey, {
2470
+ network: config.network,
2471
+ extensions: [new oidc.OpenIdExtension()],
2472
+ });
2473
+ }
2474
+ async login(idToken) {
2475
+ return withPassportError(async () => {
2476
+ await this.magicClient.openid.loginWithOIDC({
2477
+ jwt: idToken,
2478
+ providerId: this.config.magicProviderId,
2479
+ });
2480
+ return new ethers.ethers.providers.Web3Provider(this.magicClient
2481
+ .rpcProvider);
2482
+ }, PassportErrorType.WALLET_CONNECTION_ERROR);
2483
+ }
2484
+ }
2485
+
2067
2486
  var ReceiveMessage;
2068
2487
  (function (ReceiveMessage) {
2069
2488
  ReceiveMessage["CONFIRMATION_WINDOW_READY"] = "confirmation_window_ready";
@@ -2163,10 +2582,78 @@ class ConfirmationScreen {
2163
2582
  }, CONFIRMATION_WINDOW_CLOSED_POLLING_DURATION);
2164
2583
  });
2165
2584
  }
2585
+ startGuardianTransaction(transactionId, popupOptions) {
2586
+ return new Promise((resolve, reject) => {
2587
+ const messageHandler = ({ data, origin }) => {
2588
+ if (origin !== this.config.passportDomain
2589
+ || data.eventType !== PASSPORT_EVENT_TYPE) {
2590
+ return;
2591
+ }
2592
+ switch (data.messageType) {
2593
+ case ReceiveMessage.CONFIRMATION_WINDOW_READY: {
2594
+ break;
2595
+ }
2596
+ case ReceiveMessage.TRANSACTION_CONFIRMED: {
2597
+ resolve({ confirmed: true });
2598
+ break;
2599
+ }
2600
+ case ReceiveMessage.TRANSACTION_ERROR: {
2601
+ reject(new Error('Transaction error'));
2602
+ break;
2603
+ }
2604
+ default:
2605
+ reject(new Error('Unsupported message type'));
2606
+ }
2607
+ };
2608
+ window.addEventListener('message', messageHandler);
2609
+ const confirmationWindow = openPopupCenter({
2610
+ // eslint-disable-next-line max-len
2611
+ url: `${this.config.passportDomain}/transaction-confirmation/transaction.html?transactionId=${transactionId}&chainType=starkex`,
2612
+ title: CONFIRMATION_WINDOW_TITLE,
2613
+ width: popupOptions?.width || CONFIRMATION_WINDOW_WIDTH,
2614
+ height: popupOptions?.height || CONFIRMATION_WINDOW_HEIGHT,
2615
+ });
2616
+ // https://stackoverflow.com/questions/9388380/capture-the-close-event-of-popup-window-in-javascript/48240128#48240128
2617
+ const timer = setInterval(() => {
2618
+ if (confirmationWindow.closed) {
2619
+ clearInterval(timer);
2620
+ window.removeEventListener('message', messageHandler);
2621
+ resolve({ confirmed: false });
2622
+ }
2623
+ }, CONFIRMATION_WINDOW_CLOSED_POLLING_DURATION);
2624
+ });
2625
+ }
2166
2626
  }
2167
2627
 
2168
2628
  const ERC721$1 = 'ERC721';
2169
- async function transfer$1({ request, transfersApi, starkSigner, user, confirmationScreen, }) {
2629
+ const transferWithGuardian = async ({ accessToken, imxPublicApiDomain, payloadHash, confirmationScreen, }) => {
2630
+ const transactionAPI = new TransactionsApi(new Configuration({
2631
+ accessToken,
2632
+ basePath: imxPublicApiDomain,
2633
+ }));
2634
+ const starkExTransactionApi = new StarkexTransactionsApi(new Configuration({
2635
+ accessToken,
2636
+ basePath: imxPublicApiDomain,
2637
+ }));
2638
+ const transactionRes = await retryWithDelay(async () => transactionAPI.getTransactionByID({
2639
+ transactionID: payloadHash,
2640
+ chainType: 'starkex',
2641
+ }));
2642
+ if (!transactionRes.data.id) {
2643
+ throw new Error("Transaction doesn't exists");
2644
+ }
2645
+ const evaluateStarkexRes = await starkExTransactionApi.evaluateStarkexTransaction({
2646
+ payloadHash,
2647
+ });
2648
+ const { confirmationRequired } = evaluateStarkexRes.data;
2649
+ if (confirmationRequired) {
2650
+ const confirmationResult = await confirmationScreen.startGuardianTransaction(payloadHash);
2651
+ if (!confirmationResult.confirmed) {
2652
+ throw new Error('Transaction rejected by user');
2653
+ }
2654
+ }
2655
+ };
2656
+ async function transfer$1({ request, transfersApi, starkSigner, user, imxPublicApiDomain, confirmationScreen, }) {
2170
2657
  return withPassportError(async () => {
2171
2658
  const transferAmount = request.type === ERC721$1 ? '1' : request.amount;
2172
2659
  const getSignableTransferRequest = {
@@ -2175,16 +2662,18 @@ async function transfer$1({ request, transfersApi, starkSigner, user, confirmati
2175
2662
  amount: transferAmount,
2176
2663
  receiver: request.receiver,
2177
2664
  };
2665
+ const headers = {
2666
+ Authorization: `Bearer ${user.accessToken}`,
2667
+ };
2178
2668
  const signableResult = await transfersApi.getSignableTransferV1({
2179
2669
  getSignableTransferRequest,
2670
+ }, { headers });
2671
+ await transferWithGuardian({
2672
+ imxPublicApiDomain,
2673
+ accessToken: user.accessToken,
2674
+ payloadHash: signableResult.data.payload_hash,
2675
+ confirmationScreen,
2180
2676
  });
2181
- const confirmationResult = await confirmationScreen.startTransaction(user.accessToken, {
2182
- transactionType: TransactionTypes.createTransfer,
2183
- transactionData: getSignableTransferRequest,
2184
- });
2185
- if (!confirmationResult.confirmed) {
2186
- throw new Error('Transaction rejected by user');
2187
- }
2188
2677
  const signableResultData = signableResult.data;
2189
2678
  const { payload_hash: payloadHash } = signableResultData;
2190
2679
  const starkSignature = await starkSigner.signMessage(payloadHash);
@@ -2203,10 +2692,6 @@ async function transfer$1({ request, transfersApi, starkSigner, user, confirmati
2203
2692
  const createTransferRequest = {
2204
2693
  createTransferRequest: transferSigningParams,
2205
2694
  };
2206
- const headers = {
2207
- // eslint-disable-next-line @typescript-eslint/naming-convention
2208
- Authorization: `Bearer ${user.accessToken}`,
2209
- };
2210
2695
  const { data: responseData } = await transfersApi.createTransferV1(createTransferRequest, { headers });
2211
2696
  return {
2212
2697
  sent_signature: responseData.sent_signature,
@@ -2462,10 +2947,12 @@ class PassportImxProvider {
2462
2947
  starkSigner;
2463
2948
  immutableXClient;
2464
2949
  confirmationScreen;
2465
- constructor({ user, starkSigner, immutableXClient, confirmationScreen, }) {
2950
+ imxPublicApiDomain;
2951
+ constructor({ user, starkSigner, immutableXClient, imxPublicApiDomain, confirmationScreen, }) {
2466
2952
  this.user = user;
2467
2953
  this.starkSigner = starkSigner;
2468
2954
  this.immutableXClient = immutableXClient;
2955
+ this.imxPublicApiDomain = imxPublicApiDomain;
2469
2956
  this.confirmationScreen = confirmationScreen;
2470
2957
  }
2471
2958
  async transfer(request) {
@@ -2475,6 +2962,7 @@ class PassportImxProvider {
2475
2962
  starkSigner: this.starkSigner,
2476
2963
  transfersApi: this.immutableXClient.transfersApi,
2477
2964
  confirmationScreen: this.confirmationScreen,
2965
+ imxPublicApiDomain: this.imxPublicApiDomain,
2478
2966
  });
2479
2967
  }
2480
2968
  // TODO: Remove once implemented
@@ -2577,6 +3065,7 @@ class PassportConfiguration {
2577
3065
  network;
2578
3066
  authenticationDomain;
2579
3067
  passportDomain;
3068
+ imxPublicApiDomain;
2580
3069
  magicPublishableApiKey;
2581
3070
  magicProviderId;
2582
3071
  oidcConfiguration;
@@ -2596,10 +3085,12 @@ class PassportConfiguration {
2596
3085
  'magicPublishableApiKey',
2597
3086
  'magicProviderId',
2598
3087
  'passportDomain',
3088
+ 'imxPublicApiDomain',
2599
3089
  ], 'overrides');
2600
3090
  this.network = overrides.network;
2601
3091
  this.authenticationDomain = overrides.authenticationDomain;
2602
3092
  this.passportDomain = overrides.passportDomain;
3093
+ this.imxPublicApiDomain = overrides.imxPublicApiDomain;
2603
3094
  this.magicPublishableApiKey = overrides.magicPublishableApiKey;
2604
3095
  this.magicProviderId = overrides.magicProviderId;
2605
3096
  }
@@ -2611,6 +3102,7 @@ class PassportConfiguration {
2611
3102
  this.magicPublishableApiKey = 'pk_live_10F423798A540ED7';
2612
3103
  this.magicProviderId = 'fSMzaRQ4O7p4fttl7pCyGVtJS_G70P8SNsLXtPPGHo0=';
2613
3104
  this.passportDomain = 'https://passport.immutable.com';
3105
+ this.imxPublicApiDomain = 'https://api.immutable.com';
2614
3106
  break;
2615
3107
  }
2616
3108
  case exports.Environment.SANDBOX:
@@ -2620,6 +3112,7 @@ class PassportConfiguration {
2620
3112
  this.magicPublishableApiKey = 'pk_live_10F423798A540ED7';
2621
3113
  this.magicProviderId = 'fSMzaRQ4O7p4fttl7pCyGVtJS_G70P8SNsLXtPPGHo0=';
2622
3114
  this.passportDomain = 'https://passport.sandbox.immutable.com';
3115
+ this.imxPublicApiDomain = 'https://api.sandbox.immutable.com';
2623
3116
  break;
2624
3117
  }
2625
3118
  }
@@ -2689,6 +3182,7 @@ class Passport {
2689
3182
  user: updatedUser,
2690
3183
  starkSigner,
2691
3184
  immutableXClient: this.immutableXClient,
3185
+ imxPublicApiDomain: this.config.imxPublicApiDomain,
2692
3186
  confirmationScreen: this.confirmationScreen,
2693
3187
  });
2694
3188
  }
@@ -2697,6 +3191,7 @@ class Passport {
2697
3191
  user: userWithEtherKey,
2698
3192
  starkSigner,
2699
3193
  immutableXClient: this.immutableXClient,
3194
+ imxPublicApiDomain: this.config.imxPublicApiDomain,
2700
3195
  confirmationScreen: this.confirmationScreen,
2701
3196
  });
2702
3197
  }
@@ -3282,6 +3777,265 @@ var SellItem;
3282
3777
  })(SellItem.item_type || (SellItem.item_type = {}));
3283
3778
  })(SellItem || (SellItem = {}));
3284
3779
 
3780
+ /* eslint-disable */
3781
+ // TODO: Resolve these from seaport-js.
3782
+ // There is some bundling issue that is preventing this from working
3783
+ const SEAPORT_CONTRACT_NAME = 'Seaport';
3784
+ const SEAPORT_CONTRACT_VERSION_V1_4 = '1.4';
3785
+ const EIP_712_ORDER_TYPE = {
3786
+ OrderComponents: [
3787
+ { name: 'offerer', type: 'address' },
3788
+ { name: 'zone', type: 'address' },
3789
+ { name: 'offer', type: 'OfferItem[]' },
3790
+ { name: 'consideration', type: 'ConsiderationItem[]' },
3791
+ { name: 'orderType', type: 'uint8' },
3792
+ { name: 'startTime', type: 'uint256' },
3793
+ { name: 'endTime', type: 'uint256' },
3794
+ { name: 'zoneHash', type: 'bytes32' },
3795
+ { name: 'salt', type: 'uint256' },
3796
+ { name: 'conduitKey', type: 'bytes32' },
3797
+ { name: 'counter', type: 'uint256' },
3798
+ ],
3799
+ OfferItem: [
3800
+ { name: 'itemType', type: 'uint8' },
3801
+ { name: 'token', type: 'address' },
3802
+ { name: 'identifierOrCriteria', type: 'uint256' },
3803
+ { name: 'startAmount', type: 'uint256' },
3804
+ { name: 'endAmount', type: 'uint256' },
3805
+ ],
3806
+ ConsiderationItem: [
3807
+ { name: 'itemType', type: 'uint8' },
3808
+ { name: 'token', type: 'address' },
3809
+ { name: 'identifierOrCriteria', type: 'uint256' },
3810
+ { name: 'startAmount', type: 'uint256' },
3811
+ { name: 'endAmount', type: 'uint256' },
3812
+ { name: 'recipient', type: 'address' },
3813
+ ],
3814
+ };
3815
+ var OrderType;
3816
+ (function (OrderType) {
3817
+ OrderType[OrderType["FULL_OPEN"] = 0] = "FULL_OPEN";
3818
+ OrderType[OrderType["PARTIAL_OPEN"] = 1] = "PARTIAL_OPEN";
3819
+ OrderType[OrderType["FULL_RESTRICTED"] = 2] = "FULL_RESTRICTED";
3820
+ OrderType[OrderType["PARTIAL_RESTRICTED"] = 3] = "PARTIAL_RESTRICTED";
3821
+ })(OrderType || (OrderType = {}));
3822
+ var ItemType;
3823
+ (function (ItemType) {
3824
+ ItemType[ItemType["NATIVE"] = 0] = "NATIVE";
3825
+ ItemType[ItemType["ERC20"] = 1] = "ERC20";
3826
+ ItemType[ItemType["ERC721"] = 2] = "ERC721";
3827
+ ItemType[ItemType["ERC1155"] = 3] = "ERC1155";
3828
+ ItemType[ItemType["ERC721_WITH_CRITERIA"] = 4] = "ERC721_WITH_CRITERIA";
3829
+ ItemType[ItemType["ERC1155_WITH_CRITERIA"] = 5] = "ERC1155_WITH_CRITERIA";
3830
+ })(ItemType || (ItemType = {}));
3831
+ var Side;
3832
+ (function (Side) {
3833
+ Side[Side["OFFER"] = 0] = "OFFER";
3834
+ Side[Side["CONSIDERATION"] = 1] = "CONSIDERATION";
3835
+ })(Side || (Side = {}));
3836
+ var BasicOrderRouteType;
3837
+ (function (BasicOrderRouteType) {
3838
+ BasicOrderRouteType[BasicOrderRouteType["ETH_TO_ERC721"] = 0] = "ETH_TO_ERC721";
3839
+ BasicOrderRouteType[BasicOrderRouteType["ETH_TO_ERC1155"] = 1] = "ETH_TO_ERC1155";
3840
+ BasicOrderRouteType[BasicOrderRouteType["ERC20_TO_ERC721"] = 2] = "ERC20_TO_ERC721";
3841
+ BasicOrderRouteType[BasicOrderRouteType["ERC20_TO_ERC1155"] = 3] = "ERC20_TO_ERC1155";
3842
+ BasicOrderRouteType[BasicOrderRouteType["ERC721_TO_ERC20"] = 4] = "ERC721_TO_ERC20";
3843
+ BasicOrderRouteType[BasicOrderRouteType["ERC1155_TO_ERC20"] = 5] = "ERC1155_TO_ERC20";
3844
+ })(BasicOrderRouteType || (BasicOrderRouteType = {}));
3845
+
3846
+ function getOrderComponentsFromMessage(orderMessage) {
3847
+ const data = JSON.parse(orderMessage);
3848
+ const orderComponents = data.message;
3849
+ orderComponents.salt = ethers.BigNumber.from(orderComponents.salt).toHexString();
3850
+ return orderComponents;
3851
+ }
3852
+
3853
+ // Add 20% more gas than estimate to prevent out of gas errors
3854
+ // This can always be overwritten by the user signing the transaction
3855
+ async function prepareTransaction(transactionMethods) {
3856
+ const transaction = await transactionMethods.buildTransaction();
3857
+ transaction.gasLimit = await transactionMethods.estimateGas();
3858
+ transaction.gasLimit = transaction.gasLimit
3859
+ .add(transaction.gasLimit.div(5));
3860
+ return transaction;
3861
+ }
3862
+
3863
+ function mapImmutableOrderToSeaportOrderComponents(order, counter, zoneAddress) {
3864
+ const considerationItems = order.buy.map((buyItem) => ({
3865
+ startAmount: buyItem.start_amount,
3866
+ endAmount: buyItem.start_amount,
3867
+ itemType: buyItem.item_type === 'ERC20' ? ItemType.ERC20 : ItemType.NATIVE,
3868
+ recipient: order.account_address,
3869
+ token: buyItem.contract_address || ethers.constants.AddressZero,
3870
+ identifierOrCriteria: '0',
3871
+ }));
3872
+ const fees = order.buy_fees.map((fee) => ({
3873
+ startAmount: fee.amount,
3874
+ endAmount: fee.amount,
3875
+ itemType: order.buy[0].item_type === 'ERC20' ? ItemType.ERC20 : ItemType.NATIVE,
3876
+ recipient: fee.recipient,
3877
+ token: order.buy[0].contract_address || ethers.constants.AddressZero,
3878
+ identifierOrCriteria: '0',
3879
+ }));
3880
+ return {
3881
+ conduitKey: ethers.constants.HashZero,
3882
+ consideration: [...considerationItems, ...fees],
3883
+ offer: order.sell.map((sellItem) => ({
3884
+ startAmount: '1',
3885
+ endAmount: '1',
3886
+ itemType: ItemType.ERC721,
3887
+ token: sellItem.contract_address,
3888
+ identifierOrCriteria: sellItem.token_id,
3889
+ })),
3890
+ counter,
3891
+ endTime: Math.round(new Date(order.end_time).getTime() / 1000).toString(),
3892
+ startTime: Math.round(new Date(order.start_time).getTime() / 1000).toString(),
3893
+ salt: order.salt,
3894
+ offerer: order.account_address,
3895
+ zone: zoneAddress,
3896
+ totalOriginalConsiderationItems: 2,
3897
+ orderType: OrderType.FULL_RESTRICTED,
3898
+ zoneHash: ethers.constants.HashZero,
3899
+ };
3900
+ }
3901
+
3902
+ class Seaport {
3903
+ seaport;
3904
+ provider;
3905
+ seaportContractAddress;
3906
+ zoneContractAddress;
3907
+ constructor(seaport, provider, seaportContractAddress, zoneContractAddress) {
3908
+ this.seaport = seaport;
3909
+ this.provider = provider;
3910
+ this.seaportContractAddress = seaportContractAddress;
3911
+ this.zoneContractAddress = zoneContractAddress;
3912
+ }
3913
+ async prepareSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry) {
3914
+ const { actions } = await this.createSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry);
3915
+ let approvalTransaction;
3916
+ const approvalAction = actions
3917
+ .find((action) => action.type === 'approval');
3918
+ if (approvalAction) {
3919
+ approvalTransaction = await prepareTransaction(approvalAction.transactionMethods);
3920
+ }
3921
+ const createAction = actions
3922
+ .find((action) => action.type === 'create');
3923
+ if (!createAction) {
3924
+ throw new Error('No create order action found');
3925
+ }
3926
+ const orderMessageToSign = await createAction.getMessageToSign();
3927
+ const orderComponents = getOrderComponentsFromMessage(orderMessageToSign);
3928
+ return {
3929
+ unsignedApprovalTransaction: approvalTransaction,
3930
+ typedOrderMessageForSigning: await this.getTypedDataFromOrderComponents(orderComponents),
3931
+ orderComponents,
3932
+ orderHash: await this.seaport.getOrderHash(orderComponents),
3933
+ };
3934
+ }
3935
+ async fulfilOrder(order, account) {
3936
+ const orderComponents = await this.mapImmutableOrderToSeaportOrderComponents(order);
3937
+ const { actions } = await this.seaport.fulfillOrders({
3938
+ accountAddress: account,
3939
+ fulfillOrderDetails: [{
3940
+ order: {
3941
+ parameters: orderComponents,
3942
+ signature: order.signature,
3943
+ },
3944
+ extraData: order.protocol_data.operator_signature,
3945
+ }],
3946
+ });
3947
+ let approvalTransaction;
3948
+ const approvalAction = actions
3949
+ .find((action) => action.type === 'approval');
3950
+ if (approvalAction) {
3951
+ approvalTransaction = await prepareTransaction(approvalAction.transactionMethods);
3952
+ }
3953
+ const fulfillmentAction = actions
3954
+ .find((action) => action.type === 'exchange');
3955
+ if (!fulfillmentAction) {
3956
+ throw new Error('No exchange action found');
3957
+ }
3958
+ const fulfillmentTransaction = await prepareTransaction(fulfillmentAction.transactionMethods);
3959
+ return {
3960
+ unsignedApprovalTransaction: approvalTransaction,
3961
+ unsignedFulfillmentTransaction: fulfillmentTransaction,
3962
+ };
3963
+ }
3964
+ async cancelOrder(order, account) {
3965
+ const orderComponents = await this.mapImmutableOrderToSeaportOrderComponents(order);
3966
+ const cancellationTransaction = await this.seaport.cancelOrders([orderComponents], account);
3967
+ return prepareTransaction(cancellationTransaction);
3968
+ }
3969
+ async mapImmutableOrderToSeaportOrderComponents(order) {
3970
+ const counterForOfferer = await this.seaport.getCounter(order.account_address);
3971
+ return mapImmutableOrderToSeaportOrderComponents(order, counterForOfferer.toString(), this.zoneContractAddress);
3972
+ }
3973
+ createSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry) {
3974
+ return this.seaport.createOrder({
3975
+ allowPartialFills: false,
3976
+ offer: [
3977
+ {
3978
+ itemType: ItemType.ERC721,
3979
+ token: listingItem.contractAddress,
3980
+ identifier: listingItem.tokenId,
3981
+ },
3982
+ ],
3983
+ consideration: [
3984
+ {
3985
+ token: considerationItem.type === 'ERC20' ? considerationItem.contractAddress : undefined,
3986
+ amount: considerationItem.amount,
3987
+ recipient: offerer,
3988
+ },
3989
+ {
3990
+ token: considerationItem.type === 'ERC20' ? considerationItem.contractAddress : undefined,
3991
+ amount: royaltyInfo.amountRequired,
3992
+ recipient: royaltyInfo.recipient,
3993
+ },
3994
+ ],
3995
+ startTime: (orderStart.getTime() / 1000).toFixed(0),
3996
+ endTime: (orderExpiry.getTime() / 1000).toFixed(0),
3997
+ zone: this.zoneContractAddress,
3998
+ restrictedByZone: true,
3999
+ }, offerer);
4000
+ }
4001
+ async getTypedDataFromOrderComponents(orderComponents) {
4002
+ const { chainId } = await this.provider.getNetwork();
4003
+ const domainData = {
4004
+ name: SEAPORT_CONTRACT_NAME,
4005
+ version: SEAPORT_CONTRACT_VERSION_V1_4,
4006
+ chainId,
4007
+ verifyingContract: this.seaportContractAddress,
4008
+ };
4009
+ return {
4010
+ domain: domainData,
4011
+ types: EIP_712_ORDER_TYPE,
4012
+ value: orderComponents,
4013
+ };
4014
+ }
4015
+ }
4016
+
4017
+ class SeaportFactory {
4018
+ seaportContractAddress;
4019
+ zoneContractAddress;
4020
+ provider;
4021
+ seaport;
4022
+ constructor(seaportContractAddress, zoneContractAddress, provider) {
4023
+ this.seaportContractAddress = seaportContractAddress;
4024
+ this.zoneContractAddress = zoneContractAddress;
4025
+ this.provider = provider;
4026
+ this.seaport = new seaportJs.Seaport(provider, {
4027
+ seaportVersion: '1.4',
4028
+ balanceAndApprovalChecksOnOrderCreation: true,
4029
+ overrides: {
4030
+ contractAddress: seaportContractAddress,
4031
+ },
4032
+ });
4033
+ }
4034
+ create() {
4035
+ return new Seaport(this.seaport, this.provider, this.seaportContractAddress, this.zoneContractAddress);
4036
+ }
4037
+ }
4038
+
3285
4039
  class ImmutableApiClient {
3286
4040
  orderbookService;
3287
4041
  chainId;
@@ -3302,7 +4056,7 @@ class ImmutableApiClient {
3302
4056
  if (orderComponents.offer.length !== 1) {
3303
4057
  throw new Error('Only one item can be listed at a time');
3304
4058
  }
3305
- if (Number(orderComponents.offer[0].itemType) !== constants.ItemType.ERC721) {
4059
+ if (Number(orderComponents.offer[0].itemType) !== ItemType.ERC721) {
3306
4060
  throw new Error('Only ERC721 tokens can be listed');
3307
4061
  }
3308
4062
  const considerationItemTypeTheSame = new Set([...orderComponents.consideration.map((c) => c.itemType)]).size === 1;
@@ -3316,7 +4070,7 @@ class ImmutableApiClient {
3316
4070
  account_address: offerer,
3317
4071
  buy: [
3318
4072
  {
3319
- item_type: Number(orderComponents.consideration[0].itemType) === constants.ItemType.NATIVE
4073
+ item_type: Number(orderComponents.consideration[0].itemType) === ItemType.NATIVE
3320
4074
  ? BuyItem.item_type.NATIVE
3321
4075
  : BuyItem.item_type.ERC20,
3322
4076
  start_amount: orderComponents.consideration[0].startAmount,
@@ -3378,7 +4132,7 @@ class ERC721 {
3378
4132
  /* Autogenerated file. Do not edit manually. */
3379
4133
  /* tslint:disable */
3380
4134
  /* eslint-disable */
3381
- const _abi = [
4135
+ const _abi$2 = [
3382
4136
  {
3383
4137
  inputs: [
3384
4138
  {
@@ -4267,12 +5021,12 @@ const _abi = [
4267
5021
  },
4268
5022
  ];
4269
5023
  class ImmutableERC721Base__factory {
4270
- static abi = _abi;
5024
+ static abi = _abi$2;
4271
5025
  static createInterface() {
4272
- return new ethers.utils.Interface(_abi);
5026
+ return new ethers.utils.Interface(_abi$2);
4273
5027
  }
4274
5028
  static connect(address, signerOrProvider) {
4275
- return new ethers.Contract(address, _abi, signerOrProvider);
5029
+ return new ethers.Contract(address, _abi$2, signerOrProvider);
4276
5030
  }
4277
5031
  }
4278
5032
 
@@ -4286,199 +5040,6 @@ class ERC721Factory {
4286
5040
  }
4287
5041
  }
4288
5042
 
4289
- function getOrderComponentsFromMessage(orderMessage) {
4290
- const data = JSON.parse(orderMessage);
4291
- const orderComponents = data.message;
4292
- orderComponents.salt = ethers.BigNumber.from(orderComponents.salt).toHexString();
4293
- return orderComponents;
4294
- }
4295
-
4296
- // Add 20% more gas than estimate to prevent out of gas errors
4297
- // This can always be overwritten by the user signing the transaction
4298
- async function prepareTransaction(transactionMethods) {
4299
- const transaction = await transactionMethods.buildTransaction();
4300
- transaction.gasLimit = await transactionMethods.estimateGas();
4301
- transaction.gasLimit = transaction.gasLimit
4302
- .add(transaction.gasLimit.div(5));
4303
- return transaction;
4304
- }
4305
-
4306
- function mapImmutableOrderToSeaportOrderComponents(order, counter, zoneAddress) {
4307
- const considerationItems = order.buy.map((buyItem) => ({
4308
- startAmount: buyItem.start_amount,
4309
- endAmount: buyItem.start_amount,
4310
- itemType: buyItem.item_type === 'ERC20' ? constants.ItemType.ERC20 : constants.ItemType.NATIVE,
4311
- recipient: order.account_address,
4312
- token: buyItem.contract_address || ethers.constants.AddressZero,
4313
- identifierOrCriteria: '0',
4314
- }));
4315
- const fees = order.buy_fees.map((fee) => ({
4316
- startAmount: fee.amount,
4317
- endAmount: fee.amount,
4318
- itemType: order.buy[0].item_type === 'ERC20' ? constants.ItemType.ERC20 : constants.ItemType.NATIVE,
4319
- recipient: fee.recipient,
4320
- token: order.buy[0].contract_address || ethers.constants.AddressZero,
4321
- identifierOrCriteria: '0',
4322
- }));
4323
- return {
4324
- conduitKey: ethers.constants.HashZero,
4325
- consideration: [...considerationItems, ...fees],
4326
- offer: order.sell.map((sellItem) => ({
4327
- startAmount: '1',
4328
- endAmount: '1',
4329
- itemType: constants.ItemType.ERC721,
4330
- token: sellItem.contract_address,
4331
- identifierOrCriteria: sellItem.token_id,
4332
- })),
4333
- counter,
4334
- endTime: Math.round(new Date(order.end_time).getTime() / 1000).toString(),
4335
- startTime: Math.round(new Date(order.start_time).getTime() / 1000).toString(),
4336
- salt: order.salt,
4337
- offerer: order.account_address,
4338
- zone: zoneAddress,
4339
- totalOriginalConsiderationItems: 2,
4340
- orderType: constants.OrderType.FULL_RESTRICTED,
4341
- zoneHash: ethers.constants.HashZero,
4342
- };
4343
- }
4344
-
4345
- class Seaport {
4346
- seaport;
4347
- provider;
4348
- seaportContractAddress;
4349
- zoneContractAddress;
4350
- constructor(seaport, provider, seaportContractAddress, zoneContractAddress) {
4351
- this.seaport = seaport;
4352
- this.provider = provider;
4353
- this.seaportContractAddress = seaportContractAddress;
4354
- this.zoneContractAddress = zoneContractAddress;
4355
- }
4356
- async prepareSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry) {
4357
- const { actions } = await this.createSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry);
4358
- let approvalTransaction;
4359
- const approvalAction = actions
4360
- .find((action) => action.type === 'approval');
4361
- if (approvalAction) {
4362
- approvalTransaction = await prepareTransaction(approvalAction.transactionMethods);
4363
- }
4364
- const createAction = actions
4365
- .find((action) => action.type === 'create');
4366
- if (!createAction) {
4367
- throw new Error('No create order action found');
4368
- }
4369
- const orderMessageToSign = await createAction.getMessageToSign();
4370
- const orderComponents = getOrderComponentsFromMessage(orderMessageToSign);
4371
- return {
4372
- unsignedApprovalTransaction: approvalTransaction,
4373
- typedOrderMessageForSigning: await this.getTypedDataFromOrderComponents(orderComponents),
4374
- orderComponents,
4375
- orderHash: await this.seaport.getOrderHash(orderComponents),
4376
- };
4377
- }
4378
- async fulfilOrder(order, account) {
4379
- const orderComponents = await this.mapImmutableOrderToSeaportOrderComponents(order);
4380
- const { actions } = await this.seaport.fulfillOrders({
4381
- accountAddress: account,
4382
- fulfillOrderDetails: [{
4383
- order: {
4384
- parameters: orderComponents,
4385
- signature: order.signature,
4386
- },
4387
- extraData: order.protocol_data.operator_signature,
4388
- }],
4389
- });
4390
- let approvalTransaction;
4391
- const approvalAction = actions
4392
- .find((action) => action.type === 'approval');
4393
- if (approvalAction) {
4394
- approvalTransaction = await prepareTransaction(approvalAction.transactionMethods);
4395
- }
4396
- const fulfillmentAction = actions
4397
- .find((action) => action.type === 'exchange');
4398
- if (!fulfillmentAction) {
4399
- throw new Error('No exchange action found');
4400
- }
4401
- const fulfillmentTransaction = await prepareTransaction(fulfillmentAction.transactionMethods);
4402
- return {
4403
- unsignedApprovalTransaction: approvalTransaction,
4404
- unsignedFulfillmentTransaction: fulfillmentTransaction,
4405
- };
4406
- }
4407
- async cancelOrder(order, account) {
4408
- const orderComponents = await this.mapImmutableOrderToSeaportOrderComponents(order);
4409
- const cancellationTransaction = await this.seaport.cancelOrders([orderComponents], account);
4410
- return prepareTransaction(cancellationTransaction);
4411
- }
4412
- async mapImmutableOrderToSeaportOrderComponents(order) {
4413
- const counterForOfferer = await this.seaport.getCounter(order.account_address);
4414
- return mapImmutableOrderToSeaportOrderComponents(order, counterForOfferer.toString(), this.zoneContractAddress);
4415
- }
4416
- createSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry) {
4417
- return this.seaport.createOrder({
4418
- allowPartialFills: false,
4419
- offer: [
4420
- {
4421
- itemType: constants.ItemType.ERC721,
4422
- token: listingItem.contractAddress,
4423
- identifier: listingItem.tokenId,
4424
- },
4425
- ],
4426
- consideration: [
4427
- {
4428
- token: considerationItem.type === 'ERC20' ? considerationItem.contractAddress : undefined,
4429
- amount: considerationItem.amount,
4430
- recipient: offerer,
4431
- },
4432
- {
4433
- token: considerationItem.type === 'ERC20' ? considerationItem.contractAddress : undefined,
4434
- amount: royaltyInfo.amountRequired,
4435
- recipient: royaltyInfo.recipient,
4436
- },
4437
- ],
4438
- startTime: (orderStart.getTime() / 1000).toFixed(0),
4439
- endTime: (orderExpiry.getTime() / 1000).toFixed(0),
4440
- zone: this.zoneContractAddress,
4441
- restrictedByZone: true,
4442
- }, offerer);
4443
- }
4444
- async getTypedDataFromOrderComponents(orderComponents) {
4445
- const { chainId } = await this.provider.getNetwork();
4446
- const domainData = {
4447
- name: constants.SEAPORT_CONTRACT_NAME,
4448
- version: constants.SEAPORT_CONTRACT_VERSION_V1_4,
4449
- chainId,
4450
- verifyingContract: this.seaportContractAddress,
4451
- };
4452
- return {
4453
- domain: domainData,
4454
- types: constants.EIP_712_ORDER_TYPE,
4455
- value: orderComponents,
4456
- };
4457
- }
4458
- }
4459
-
4460
- class SeaportFactory {
4461
- seaportContractAddress;
4462
- zoneContractAddress;
4463
- provider;
4464
- seaport;
4465
- constructor(seaportContractAddress, zoneContractAddress, provider) {
4466
- this.seaportContractAddress = seaportContractAddress;
4467
- this.zoneContractAddress = zoneContractAddress;
4468
- this.provider = provider;
4469
- this.seaport = new seaportJs.Seaport(provider, {
4470
- seaportVersion: '1.4',
4471
- balanceAndApprovalChecksOnOrderCreation: true,
4472
- overrides: {
4473
- contractAddress: seaportContractAddress,
4474
- },
4475
- });
4476
- }
4477
- create() {
4478
- return new Seaport(this.seaport, this.provider, this.seaportContractAddress, this.zoneContractAddress);
4479
- }
4480
- }
4481
-
4482
5043
  /**
4483
5044
  * zkEVM orderbook SDK
4484
5045
  * @constructor
@@ -6652,11 +7213,1515 @@ function $430e3eda76fa4d5f$export$931068bc678f0d73(tagName, provider) {
6652
7213
  attemptToSetProvider();
6653
7214
  }
6654
7215
 
6655
- // only for infrastructure. will be removed once wrapped functions are created
6656
- const erc20 = 1;
6657
-
6658
- // only for infrastructure. will be removed once wrapped functions are created
6659
- const erc721permissionedmintable = 1;
7216
+ /* Autogenerated file. Do not edit manually. */
7217
+ /* tslint:disable */
7218
+ /* eslint-disable */
7219
+ const _abi$1 = [
7220
+ {
7221
+ inputs: [
7222
+ {
7223
+ internalType: "string",
7224
+ name: "name_",
7225
+ type: "string",
7226
+ },
7227
+ {
7228
+ internalType: "string",
7229
+ name: "symbol_",
7230
+ type: "string",
7231
+ },
7232
+ ],
7233
+ stateMutability: "nonpayable",
7234
+ type: "constructor",
7235
+ },
7236
+ {
7237
+ anonymous: false,
7238
+ inputs: [
7239
+ {
7240
+ indexed: true,
7241
+ internalType: "address",
7242
+ name: "owner",
7243
+ type: "address",
7244
+ },
7245
+ {
7246
+ indexed: true,
7247
+ internalType: "address",
7248
+ name: "spender",
7249
+ type: "address",
7250
+ },
7251
+ {
7252
+ indexed: false,
7253
+ internalType: "uint256",
7254
+ name: "value",
7255
+ type: "uint256",
7256
+ },
7257
+ ],
7258
+ name: "Approval",
7259
+ type: "event",
7260
+ },
7261
+ {
7262
+ anonymous: false,
7263
+ inputs: [
7264
+ {
7265
+ indexed: true,
7266
+ internalType: "address",
7267
+ name: "from",
7268
+ type: "address",
7269
+ },
7270
+ {
7271
+ indexed: true,
7272
+ internalType: "address",
7273
+ name: "to",
7274
+ type: "address",
7275
+ },
7276
+ {
7277
+ indexed: false,
7278
+ internalType: "uint256",
7279
+ name: "value",
7280
+ type: "uint256",
7281
+ },
7282
+ ],
7283
+ name: "Transfer",
7284
+ type: "event",
7285
+ },
7286
+ {
7287
+ inputs: [
7288
+ {
7289
+ internalType: "address",
7290
+ name: "owner",
7291
+ type: "address",
7292
+ },
7293
+ {
7294
+ internalType: "address",
7295
+ name: "spender",
7296
+ type: "address",
7297
+ },
7298
+ ],
7299
+ name: "allowance",
7300
+ outputs: [
7301
+ {
7302
+ internalType: "uint256",
7303
+ name: "",
7304
+ type: "uint256",
7305
+ },
7306
+ ],
7307
+ stateMutability: "view",
7308
+ type: "function",
7309
+ },
7310
+ {
7311
+ inputs: [
7312
+ {
7313
+ internalType: "address",
7314
+ name: "spender",
7315
+ type: "address",
7316
+ },
7317
+ {
7318
+ internalType: "uint256",
7319
+ name: "amount",
7320
+ type: "uint256",
7321
+ },
7322
+ ],
7323
+ name: "approve",
7324
+ outputs: [
7325
+ {
7326
+ internalType: "bool",
7327
+ name: "",
7328
+ type: "bool",
7329
+ },
7330
+ ],
7331
+ stateMutability: "nonpayable",
7332
+ type: "function",
7333
+ },
7334
+ {
7335
+ inputs: [
7336
+ {
7337
+ internalType: "address",
7338
+ name: "account",
7339
+ type: "address",
7340
+ },
7341
+ ],
7342
+ name: "balanceOf",
7343
+ outputs: [
7344
+ {
7345
+ internalType: "uint256",
7346
+ name: "",
7347
+ type: "uint256",
7348
+ },
7349
+ ],
7350
+ stateMutability: "view",
7351
+ type: "function",
7352
+ },
7353
+ {
7354
+ inputs: [],
7355
+ name: "decimals",
7356
+ outputs: [
7357
+ {
7358
+ internalType: "uint8",
7359
+ name: "",
7360
+ type: "uint8",
7361
+ },
7362
+ ],
7363
+ stateMutability: "view",
7364
+ type: "function",
7365
+ },
7366
+ {
7367
+ inputs: [
7368
+ {
7369
+ internalType: "address",
7370
+ name: "spender",
7371
+ type: "address",
7372
+ },
7373
+ {
7374
+ internalType: "uint256",
7375
+ name: "subtractedValue",
7376
+ type: "uint256",
7377
+ },
7378
+ ],
7379
+ name: "decreaseAllowance",
7380
+ outputs: [
7381
+ {
7382
+ internalType: "bool",
7383
+ name: "",
7384
+ type: "bool",
7385
+ },
7386
+ ],
7387
+ stateMutability: "nonpayable",
7388
+ type: "function",
7389
+ },
7390
+ {
7391
+ inputs: [
7392
+ {
7393
+ internalType: "address",
7394
+ name: "spender",
7395
+ type: "address",
7396
+ },
7397
+ {
7398
+ internalType: "uint256",
7399
+ name: "addedValue",
7400
+ type: "uint256",
7401
+ },
7402
+ ],
7403
+ name: "increaseAllowance",
7404
+ outputs: [
7405
+ {
7406
+ internalType: "bool",
7407
+ name: "",
7408
+ type: "bool",
7409
+ },
7410
+ ],
7411
+ stateMutability: "nonpayable",
7412
+ type: "function",
7413
+ },
7414
+ {
7415
+ inputs: [],
7416
+ name: "name",
7417
+ outputs: [
7418
+ {
7419
+ internalType: "string",
7420
+ name: "",
7421
+ type: "string",
7422
+ },
7423
+ ],
7424
+ stateMutability: "view",
7425
+ type: "function",
7426
+ },
7427
+ {
7428
+ inputs: [],
7429
+ name: "symbol",
7430
+ outputs: [
7431
+ {
7432
+ internalType: "string",
7433
+ name: "",
7434
+ type: "string",
7435
+ },
7436
+ ],
7437
+ stateMutability: "view",
7438
+ type: "function",
7439
+ },
7440
+ {
7441
+ inputs: [],
7442
+ name: "totalSupply",
7443
+ outputs: [
7444
+ {
7445
+ internalType: "uint256",
7446
+ name: "",
7447
+ type: "uint256",
7448
+ },
7449
+ ],
7450
+ stateMutability: "view",
7451
+ type: "function",
7452
+ },
7453
+ {
7454
+ inputs: [
7455
+ {
7456
+ internalType: "address",
7457
+ name: "to",
7458
+ type: "address",
7459
+ },
7460
+ {
7461
+ internalType: "uint256",
7462
+ name: "amount",
7463
+ type: "uint256",
7464
+ },
7465
+ ],
7466
+ name: "transfer",
7467
+ outputs: [
7468
+ {
7469
+ internalType: "bool",
7470
+ name: "",
7471
+ type: "bool",
7472
+ },
7473
+ ],
7474
+ stateMutability: "nonpayable",
7475
+ type: "function",
7476
+ },
7477
+ {
7478
+ inputs: [
7479
+ {
7480
+ internalType: "address",
7481
+ name: "from",
7482
+ type: "address",
7483
+ },
7484
+ {
7485
+ internalType: "address",
7486
+ name: "to",
7487
+ type: "address",
7488
+ },
7489
+ {
7490
+ internalType: "uint256",
7491
+ name: "amount",
7492
+ type: "uint256",
7493
+ },
7494
+ ],
7495
+ name: "transferFrom",
7496
+ outputs: [
7497
+ {
7498
+ internalType: "bool",
7499
+ name: "",
7500
+ type: "bool",
7501
+ },
7502
+ ],
7503
+ stateMutability: "nonpayable",
7504
+ type: "function",
7505
+ },
7506
+ ];
7507
+ const _bytecode$1 = "0x60806040523480156200001157600080fd5b50604051620017ec380380620017ec8339818101604052810190620000379190620001f6565b8160039081620000489190620004c6565b5080600490816200005a9190620004c6565b505050620005ad565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620000cc8262000081565b810181811067ffffffffffffffff82111715620000ee57620000ed62000092565b5b80604052505050565b60006200010362000063565b9050620001118282620000c1565b919050565b600067ffffffffffffffff82111562000134576200013362000092565b5b6200013f8262000081565b9050602081019050919050565b60005b838110156200016c5780820151818401526020810190506200014f565b60008484015250505050565b60006200018f620001898462000116565b620000f7565b905082815260208101848484011115620001ae57620001ad6200007c565b5b620001bb8482856200014c565b509392505050565b600082601f830112620001db57620001da62000077565b5b8151620001ed84826020860162000178565b91505092915050565b6000806040838503121562000210576200020f6200006d565b5b600083015167ffffffffffffffff81111562000231576200023062000072565b5b6200023f85828601620001c3565b925050602083015167ffffffffffffffff81111562000263576200026262000072565b5b6200027185828601620001c3565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ce57607f821691505b602082108103620002e457620002e362000286565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200034e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200030f565b6200035a86836200030f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003a7620003a16200039b8462000372565b6200037c565b62000372565b9050919050565b6000819050919050565b620003c38362000386565b620003db620003d282620003ae565b8484546200031c565b825550505050565b600090565b620003f2620003e3565b620003ff818484620003b8565b505050565b5b8181101562000427576200041b600082620003e8565b60018101905062000405565b5050565b601f82111562000476576200044081620002ea565b6200044b84620002ff565b810160208510156200045b578190505b620004736200046a85620002ff565b83018262000404565b50505b505050565b600082821c905092915050565b60006200049b600019846008026200047b565b1980831691505092915050565b6000620004b6838362000488565b9150826002028217905092915050565b620004d1826200027b565b67ffffffffffffffff811115620004ed57620004ec62000092565b5b620004f98254620002b5565b620005068282856200042b565b600060209050601f8311600181146200053e576000841562000529578287015190505b620005358582620004a8565b865550620005a5565b601f1984166200054e86620002ea565b60005b82811015620005785784890151825560018201915060208501945060208101905062000551565b8683101562000598578489015162000594601f89168262000488565b8355505b6001600288020188555050505b505050505050565b61122f80620005bd6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b0c565b60405180910390f35b6100e660048036038101906100e19190610bc7565b610308565b6040516100f39190610c22565b60405180910390f35b61010461032b565b6040516101119190610c4c565b60405180910390f35b610134600480360381019061012f9190610c67565b610335565b6040516101419190610c22565b60405180910390f35b610152610364565b60405161015f9190610cd6565b60405180910390f35b610182600480360381019061017d9190610bc7565b61036d565b60405161018f9190610c22565b60405180910390f35b6101b260048036038101906101ad9190610cf1565b6103a4565b6040516101bf9190610c4c565b60405180910390f35b6101d06103ec565b6040516101dd9190610b0c565b60405180910390f35b61020060048036038101906101fb9190610bc7565b61047e565b60405161020d9190610c22565b60405180910390f35b610230600480360381019061022b9190610bc7565b6104f5565b60405161023d9190610c22565b60405180910390f35b610260600480360381019061025b9190610d1e565b610518565b60405161026d9190610c4c565b60405180910390f35b60606003805461028590610d8d565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d8d565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610ded565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d8d565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d8d565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e93565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fb7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c4c565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90611023565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611147565b60405180910390fd5b6108e5838383610a72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111d9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a599190610c4c565b60405180910390a3610a6c848484610a77565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ab6578082015181840152602081019050610a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ade82610a7c565b610ae88185610a87565b9350610af8818560208601610a98565b610b0181610ac2565b840191505092915050565b60006020820190508181036000830152610b268184610ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5e82610b33565b9050919050565b610b6e81610b53565b8114610b7957600080fd5b50565b600081359050610b8b81610b65565b92915050565b6000819050919050565b610ba481610b91565b8114610baf57600080fd5b50565b600081359050610bc181610b9b565b92915050565b60008060408385031215610bde57610bdd610b2e565b5b6000610bec85828601610b7c565b9250506020610bfd85828601610bb2565b9150509250929050565b60008115159050919050565b610c1c81610c07565b82525050565b6000602082019050610c376000830184610c13565b92915050565b610c4681610b91565b82525050565b6000602082019050610c616000830184610c3d565b92915050565b600080600060608486031215610c8057610c7f610b2e565b5b6000610c8e86828701610b7c565b9350506020610c9f86828701610b7c565b9250506040610cb086828701610bb2565b9150509250925092565b600060ff82169050919050565b610cd081610cba565b82525050565b6000602082019050610ceb6000830184610cc7565b92915050565b600060208284031215610d0757610d06610b2e565b5b6000610d1584828501610b7c565b91505092915050565b60008060408385031215610d3557610d34610b2e565b5b6000610d4385828601610b7c565b9250506020610d5485828601610b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610da557607f821691505b602082108103610db857610db7610d5e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df882610b91565b9150610e0383610b91565b9250828201905080821115610e1b57610e1a610dbe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e7d602583610a87565b9150610e8882610e21565b604082019050919050565b60006020820190508181036000830152610eac81610e70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f0f602483610a87565b9150610f1a82610eb3565b604082019050919050565b60006020820190508181036000830152610f3e81610f02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602283610a87565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061100d601d83610a87565b915061101882610fd7565b602082019050919050565b6000602082019050818103600083015261103c81611000565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061109f602583610a87565b91506110aa82611043565b604082019050919050565b600060208201905081810360008301526110ce81611092565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611131602383610a87565b915061113c826110d5565b604082019050919050565b6000602082019050818103600083015261116081611124565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111c3602683610a87565b91506111ce82611167565b604082019050919050565b600060208201905081810360008301526111f2816111b6565b905091905056fea26469706673582212204188b273199f085e1921ec1a1fa55abdee2e425960bda675a51fac85acd9972064736f6c63430008110033";
7508
+ const isSuperArgs$1 = (xs) => xs.length > 1;
7509
+ class ERC20__factory extends ethers.ContractFactory {
7510
+ constructor(...args) {
7511
+ if (isSuperArgs$1(args)) {
7512
+ super(...args);
7513
+ }
7514
+ else {
7515
+ super(_abi$1, _bytecode$1, args[0]);
7516
+ }
7517
+ }
7518
+ deploy(name_, symbol_, overrides) {
7519
+ return super.deploy(name_, symbol_, overrides || {});
7520
+ }
7521
+ getDeployTransaction(name_, symbol_, overrides) {
7522
+ return super.getDeployTransaction(name_, symbol_, overrides || {});
7523
+ }
7524
+ attach(address) {
7525
+ return super.attach(address);
7526
+ }
7527
+ connect(signer) {
7528
+ return super.connect(signer);
7529
+ }
7530
+ static bytecode = _bytecode$1;
7531
+ static abi = _abi$1;
7532
+ static createInterface() {
7533
+ return new ethers.utils.Interface(_abi$1);
7534
+ }
7535
+ static connect(address, signerOrProvider) {
7536
+ return new ethers.Contract(address, _abi$1, signerOrProvider);
7537
+ }
7538
+ }
7539
+
7540
+ /* Autogenerated file. Do not edit manually. */
7541
+ /* tslint:disable */
7542
+ /* eslint-disable */
7543
+ const _abi = [
7544
+ {
7545
+ inputs: [
7546
+ {
7547
+ internalType: "address",
7548
+ name: "owner_",
7549
+ type: "address",
7550
+ },
7551
+ {
7552
+ internalType: "string",
7553
+ name: "name_",
7554
+ type: "string",
7555
+ },
7556
+ {
7557
+ internalType: "string",
7558
+ name: "symbol_",
7559
+ type: "string",
7560
+ },
7561
+ {
7562
+ internalType: "string",
7563
+ name: "baseURI_",
7564
+ type: "string",
7565
+ },
7566
+ {
7567
+ internalType: "string",
7568
+ name: "contractURI_",
7569
+ type: "string",
7570
+ },
7571
+ {
7572
+ internalType: "address",
7573
+ name: "_receiver",
7574
+ type: "address",
7575
+ },
7576
+ {
7577
+ internalType: "uint96",
7578
+ name: "_feeNumerator",
7579
+ type: "uint96",
7580
+ },
7581
+ ],
7582
+ stateMutability: "nonpayable",
7583
+ type: "constructor",
7584
+ },
7585
+ {
7586
+ inputs: [
7587
+ {
7588
+ internalType: "address",
7589
+ name: "target",
7590
+ type: "address",
7591
+ },
7592
+ ],
7593
+ name: "ApproveTargetNotInAllowlist",
7594
+ type: "error",
7595
+ },
7596
+ {
7597
+ inputs: [
7598
+ {
7599
+ internalType: "address",
7600
+ name: "caller",
7601
+ type: "address",
7602
+ },
7603
+ ],
7604
+ name: "CallerNotInAllowlist",
7605
+ type: "error",
7606
+ },
7607
+ {
7608
+ anonymous: false,
7609
+ inputs: [
7610
+ {
7611
+ indexed: true,
7612
+ internalType: "address",
7613
+ name: "owner",
7614
+ type: "address",
7615
+ },
7616
+ {
7617
+ indexed: true,
7618
+ internalType: "address",
7619
+ name: "approved",
7620
+ type: "address",
7621
+ },
7622
+ {
7623
+ indexed: true,
7624
+ internalType: "uint256",
7625
+ name: "tokenId",
7626
+ type: "uint256",
7627
+ },
7628
+ ],
7629
+ name: "Approval",
7630
+ type: "event",
7631
+ },
7632
+ {
7633
+ anonymous: false,
7634
+ inputs: [
7635
+ {
7636
+ indexed: true,
7637
+ internalType: "address",
7638
+ name: "owner",
7639
+ type: "address",
7640
+ },
7641
+ {
7642
+ indexed: true,
7643
+ internalType: "address",
7644
+ name: "operator",
7645
+ type: "address",
7646
+ },
7647
+ {
7648
+ indexed: false,
7649
+ internalType: "bool",
7650
+ name: "approved",
7651
+ type: "bool",
7652
+ },
7653
+ ],
7654
+ name: "ApprovalForAll",
7655
+ type: "event",
7656
+ },
7657
+ {
7658
+ anonymous: false,
7659
+ inputs: [
7660
+ {
7661
+ indexed: true,
7662
+ internalType: "bytes32",
7663
+ name: "role",
7664
+ type: "bytes32",
7665
+ },
7666
+ {
7667
+ indexed: true,
7668
+ internalType: "bytes32",
7669
+ name: "previousAdminRole",
7670
+ type: "bytes32",
7671
+ },
7672
+ {
7673
+ indexed: true,
7674
+ internalType: "bytes32",
7675
+ name: "newAdminRole",
7676
+ type: "bytes32",
7677
+ },
7678
+ ],
7679
+ name: "RoleAdminChanged",
7680
+ type: "event",
7681
+ },
7682
+ {
7683
+ anonymous: false,
7684
+ inputs: [
7685
+ {
7686
+ indexed: true,
7687
+ internalType: "bytes32",
7688
+ name: "role",
7689
+ type: "bytes32",
7690
+ },
7691
+ {
7692
+ indexed: true,
7693
+ internalType: "address",
7694
+ name: "account",
7695
+ type: "address",
7696
+ },
7697
+ {
7698
+ indexed: true,
7699
+ internalType: "address",
7700
+ name: "sender",
7701
+ type: "address",
7702
+ },
7703
+ ],
7704
+ name: "RoleGranted",
7705
+ type: "event",
7706
+ },
7707
+ {
7708
+ anonymous: false,
7709
+ inputs: [
7710
+ {
7711
+ indexed: true,
7712
+ internalType: "bytes32",
7713
+ name: "role",
7714
+ type: "bytes32",
7715
+ },
7716
+ {
7717
+ indexed: true,
7718
+ internalType: "address",
7719
+ name: "account",
7720
+ type: "address",
7721
+ },
7722
+ {
7723
+ indexed: true,
7724
+ internalType: "address",
7725
+ name: "sender",
7726
+ type: "address",
7727
+ },
7728
+ ],
7729
+ name: "RoleRevoked",
7730
+ type: "event",
7731
+ },
7732
+ {
7733
+ anonymous: false,
7734
+ inputs: [
7735
+ {
7736
+ indexed: false,
7737
+ internalType: "address",
7738
+ name: "oldRegistry",
7739
+ type: "address",
7740
+ },
7741
+ {
7742
+ indexed: false,
7743
+ internalType: "address",
7744
+ name: "newRegistry",
7745
+ type: "address",
7746
+ },
7747
+ ],
7748
+ name: "RoyaltytAllowlistRegistryUpdated",
7749
+ type: "event",
7750
+ },
7751
+ {
7752
+ anonymous: false,
7753
+ inputs: [
7754
+ {
7755
+ indexed: true,
7756
+ internalType: "address",
7757
+ name: "from",
7758
+ type: "address",
7759
+ },
7760
+ {
7761
+ indexed: true,
7762
+ internalType: "address",
7763
+ name: "to",
7764
+ type: "address",
7765
+ },
7766
+ {
7767
+ indexed: true,
7768
+ internalType: "uint256",
7769
+ name: "tokenId",
7770
+ type: "uint256",
7771
+ },
7772
+ ],
7773
+ name: "Transfer",
7774
+ type: "event",
7775
+ },
7776
+ {
7777
+ inputs: [],
7778
+ name: "DEFAULT_ADMIN_ROLE",
7779
+ outputs: [
7780
+ {
7781
+ internalType: "bytes32",
7782
+ name: "",
7783
+ type: "bytes32",
7784
+ },
7785
+ ],
7786
+ stateMutability: "view",
7787
+ type: "function",
7788
+ },
7789
+ {
7790
+ inputs: [],
7791
+ name: "MINTER_ROLE",
7792
+ outputs: [
7793
+ {
7794
+ internalType: "bytes32",
7795
+ name: "",
7796
+ type: "bytes32",
7797
+ },
7798
+ ],
7799
+ stateMutability: "view",
7800
+ type: "function",
7801
+ },
7802
+ {
7803
+ inputs: [
7804
+ {
7805
+ internalType: "address",
7806
+ name: "to",
7807
+ type: "address",
7808
+ },
7809
+ {
7810
+ internalType: "uint256",
7811
+ name: "tokenId",
7812
+ type: "uint256",
7813
+ },
7814
+ ],
7815
+ name: "approve",
7816
+ outputs: [],
7817
+ stateMutability: "nonpayable",
7818
+ type: "function",
7819
+ },
7820
+ {
7821
+ inputs: [
7822
+ {
7823
+ internalType: "address",
7824
+ name: "owner",
7825
+ type: "address",
7826
+ },
7827
+ ],
7828
+ name: "balanceOf",
7829
+ outputs: [
7830
+ {
7831
+ internalType: "uint256",
7832
+ name: "",
7833
+ type: "uint256",
7834
+ },
7835
+ ],
7836
+ stateMutability: "view",
7837
+ type: "function",
7838
+ },
7839
+ {
7840
+ inputs: [],
7841
+ name: "baseURI",
7842
+ outputs: [
7843
+ {
7844
+ internalType: "string",
7845
+ name: "",
7846
+ type: "string",
7847
+ },
7848
+ ],
7849
+ stateMutability: "view",
7850
+ type: "function",
7851
+ },
7852
+ {
7853
+ inputs: [
7854
+ {
7855
+ internalType: "uint256",
7856
+ name: "tokenId",
7857
+ type: "uint256",
7858
+ },
7859
+ ],
7860
+ name: "burn",
7861
+ outputs: [],
7862
+ stateMutability: "nonpayable",
7863
+ type: "function",
7864
+ },
7865
+ {
7866
+ inputs: [],
7867
+ name: "contractURI",
7868
+ outputs: [
7869
+ {
7870
+ internalType: "string",
7871
+ name: "",
7872
+ type: "string",
7873
+ },
7874
+ ],
7875
+ stateMutability: "view",
7876
+ type: "function",
7877
+ },
7878
+ {
7879
+ inputs: [],
7880
+ name: "getAdmins",
7881
+ outputs: [
7882
+ {
7883
+ internalType: "address[]",
7884
+ name: "",
7885
+ type: "address[]",
7886
+ },
7887
+ ],
7888
+ stateMutability: "view",
7889
+ type: "function",
7890
+ },
7891
+ {
7892
+ inputs: [
7893
+ {
7894
+ internalType: "uint256",
7895
+ name: "tokenId",
7896
+ type: "uint256",
7897
+ },
7898
+ ],
7899
+ name: "getApproved",
7900
+ outputs: [
7901
+ {
7902
+ internalType: "address",
7903
+ name: "",
7904
+ type: "address",
7905
+ },
7906
+ ],
7907
+ stateMutability: "view",
7908
+ type: "function",
7909
+ },
7910
+ {
7911
+ inputs: [
7912
+ {
7913
+ internalType: "bytes32",
7914
+ name: "role",
7915
+ type: "bytes32",
7916
+ },
7917
+ ],
7918
+ name: "getRoleAdmin",
7919
+ outputs: [
7920
+ {
7921
+ internalType: "bytes32",
7922
+ name: "",
7923
+ type: "bytes32",
7924
+ },
7925
+ ],
7926
+ stateMutability: "view",
7927
+ type: "function",
7928
+ },
7929
+ {
7930
+ inputs: [
7931
+ {
7932
+ internalType: "bytes32",
7933
+ name: "role",
7934
+ type: "bytes32",
7935
+ },
7936
+ {
7937
+ internalType: "uint256",
7938
+ name: "index",
7939
+ type: "uint256",
7940
+ },
7941
+ ],
7942
+ name: "getRoleMember",
7943
+ outputs: [
7944
+ {
7945
+ internalType: "address",
7946
+ name: "",
7947
+ type: "address",
7948
+ },
7949
+ ],
7950
+ stateMutability: "view",
7951
+ type: "function",
7952
+ },
7953
+ {
7954
+ inputs: [
7955
+ {
7956
+ internalType: "bytes32",
7957
+ name: "role",
7958
+ type: "bytes32",
7959
+ },
7960
+ ],
7961
+ name: "getRoleMemberCount",
7962
+ outputs: [
7963
+ {
7964
+ internalType: "uint256",
7965
+ name: "",
7966
+ type: "uint256",
7967
+ },
7968
+ ],
7969
+ stateMutability: "view",
7970
+ type: "function",
7971
+ },
7972
+ {
7973
+ inputs: [
7974
+ {
7975
+ internalType: "address",
7976
+ name: "user",
7977
+ type: "address",
7978
+ },
7979
+ ],
7980
+ name: "grantMinterRole",
7981
+ outputs: [],
7982
+ stateMutability: "nonpayable",
7983
+ type: "function",
7984
+ },
7985
+ {
7986
+ inputs: [
7987
+ {
7988
+ internalType: "bytes32",
7989
+ name: "role",
7990
+ type: "bytes32",
7991
+ },
7992
+ {
7993
+ internalType: "address",
7994
+ name: "account",
7995
+ type: "address",
7996
+ },
7997
+ ],
7998
+ name: "grantRole",
7999
+ outputs: [],
8000
+ stateMutability: "nonpayable",
8001
+ type: "function",
8002
+ },
8003
+ {
8004
+ inputs: [
8005
+ {
8006
+ internalType: "bytes32",
8007
+ name: "role",
8008
+ type: "bytes32",
8009
+ },
8010
+ {
8011
+ internalType: "address",
8012
+ name: "account",
8013
+ type: "address",
8014
+ },
8015
+ ],
8016
+ name: "hasRole",
8017
+ outputs: [
8018
+ {
8019
+ internalType: "bool",
8020
+ name: "",
8021
+ type: "bool",
8022
+ },
8023
+ ],
8024
+ stateMutability: "view",
8025
+ type: "function",
8026
+ },
8027
+ {
8028
+ inputs: [
8029
+ {
8030
+ internalType: "address",
8031
+ name: "owner",
8032
+ type: "address",
8033
+ },
8034
+ {
8035
+ internalType: "address",
8036
+ name: "operator",
8037
+ type: "address",
8038
+ },
8039
+ ],
8040
+ name: "isApprovedForAll",
8041
+ outputs: [
8042
+ {
8043
+ internalType: "bool",
8044
+ name: "",
8045
+ type: "bool",
8046
+ },
8047
+ ],
8048
+ stateMutability: "view",
8049
+ type: "function",
8050
+ },
8051
+ {
8052
+ inputs: [
8053
+ {
8054
+ internalType: "address",
8055
+ name: "to",
8056
+ type: "address",
8057
+ },
8058
+ {
8059
+ internalType: "uint256",
8060
+ name: "amount",
8061
+ type: "uint256",
8062
+ },
8063
+ ],
8064
+ name: "mint",
8065
+ outputs: [],
8066
+ stateMutability: "nonpayable",
8067
+ type: "function",
8068
+ },
8069
+ {
8070
+ inputs: [],
8071
+ name: "name",
8072
+ outputs: [
8073
+ {
8074
+ internalType: "string",
8075
+ name: "",
8076
+ type: "string",
8077
+ },
8078
+ ],
8079
+ stateMutability: "view",
8080
+ type: "function",
8081
+ },
8082
+ {
8083
+ inputs: [
8084
+ {
8085
+ internalType: "uint256",
8086
+ name: "tokenId",
8087
+ type: "uint256",
8088
+ },
8089
+ ],
8090
+ name: "ownerOf",
8091
+ outputs: [
8092
+ {
8093
+ internalType: "address",
8094
+ name: "",
8095
+ type: "address",
8096
+ },
8097
+ ],
8098
+ stateMutability: "view",
8099
+ type: "function",
8100
+ },
8101
+ {
8102
+ inputs: [
8103
+ {
8104
+ internalType: "bytes32",
8105
+ name: "role",
8106
+ type: "bytes32",
8107
+ },
8108
+ {
8109
+ internalType: "address",
8110
+ name: "account",
8111
+ type: "address",
8112
+ },
8113
+ ],
8114
+ name: "renounceRole",
8115
+ outputs: [],
8116
+ stateMutability: "nonpayable",
8117
+ type: "function",
8118
+ },
8119
+ {
8120
+ inputs: [
8121
+ {
8122
+ internalType: "address",
8123
+ name: "user",
8124
+ type: "address",
8125
+ },
8126
+ ],
8127
+ name: "revokeMinterRole",
8128
+ outputs: [],
8129
+ stateMutability: "nonpayable",
8130
+ type: "function",
8131
+ },
8132
+ {
8133
+ inputs: [
8134
+ {
8135
+ internalType: "bytes32",
8136
+ name: "role",
8137
+ type: "bytes32",
8138
+ },
8139
+ {
8140
+ internalType: "address",
8141
+ name: "account",
8142
+ type: "address",
8143
+ },
8144
+ ],
8145
+ name: "revokeRole",
8146
+ outputs: [],
8147
+ stateMutability: "nonpayable",
8148
+ type: "function",
8149
+ },
8150
+ {
8151
+ inputs: [],
8152
+ name: "royaltyAllowlist",
8153
+ outputs: [
8154
+ {
8155
+ internalType: "contract IRoyaltyAllowlist",
8156
+ name: "",
8157
+ type: "address",
8158
+ },
8159
+ ],
8160
+ stateMutability: "view",
8161
+ type: "function",
8162
+ },
8163
+ {
8164
+ inputs: [
8165
+ {
8166
+ internalType: "uint256",
8167
+ name: "_tokenId",
8168
+ type: "uint256",
8169
+ },
8170
+ {
8171
+ internalType: "uint256",
8172
+ name: "_salePrice",
8173
+ type: "uint256",
8174
+ },
8175
+ ],
8176
+ name: "royaltyInfo",
8177
+ outputs: [
8178
+ {
8179
+ internalType: "address",
8180
+ name: "",
8181
+ type: "address",
8182
+ },
8183
+ {
8184
+ internalType: "uint256",
8185
+ name: "",
8186
+ type: "uint256",
8187
+ },
8188
+ ],
8189
+ stateMutability: "view",
8190
+ type: "function",
8191
+ },
8192
+ {
8193
+ inputs: [
8194
+ {
8195
+ internalType: "address",
8196
+ name: "from",
8197
+ type: "address",
8198
+ },
8199
+ {
8200
+ internalType: "address",
8201
+ name: "to",
8202
+ type: "address",
8203
+ },
8204
+ {
8205
+ internalType: "uint256",
8206
+ name: "tokenId",
8207
+ type: "uint256",
8208
+ },
8209
+ ],
8210
+ name: "safeTransferFrom",
8211
+ outputs: [],
8212
+ stateMutability: "nonpayable",
8213
+ type: "function",
8214
+ },
8215
+ {
8216
+ inputs: [
8217
+ {
8218
+ internalType: "address",
8219
+ name: "from",
8220
+ type: "address",
8221
+ },
8222
+ {
8223
+ internalType: "address",
8224
+ name: "to",
8225
+ type: "address",
8226
+ },
8227
+ {
8228
+ internalType: "uint256",
8229
+ name: "tokenId",
8230
+ type: "uint256",
8231
+ },
8232
+ {
8233
+ internalType: "bytes",
8234
+ name: "data",
8235
+ type: "bytes",
8236
+ },
8237
+ ],
8238
+ name: "safeTransferFrom",
8239
+ outputs: [],
8240
+ stateMutability: "nonpayable",
8241
+ type: "function",
8242
+ },
8243
+ {
8244
+ inputs: [
8245
+ {
8246
+ internalType: "address",
8247
+ name: "operator",
8248
+ type: "address",
8249
+ },
8250
+ {
8251
+ internalType: "bool",
8252
+ name: "approved",
8253
+ type: "bool",
8254
+ },
8255
+ ],
8256
+ name: "setApprovalForAll",
8257
+ outputs: [],
8258
+ stateMutability: "nonpayable",
8259
+ type: "function",
8260
+ },
8261
+ {
8262
+ inputs: [
8263
+ {
8264
+ internalType: "string",
8265
+ name: "baseURI_",
8266
+ type: "string",
8267
+ },
8268
+ ],
8269
+ name: "setBaseURI",
8270
+ outputs: [],
8271
+ stateMutability: "nonpayable",
8272
+ type: "function",
8273
+ },
8274
+ {
8275
+ inputs: [
8276
+ {
8277
+ internalType: "string",
8278
+ name: "_contractURI",
8279
+ type: "string",
8280
+ },
8281
+ ],
8282
+ name: "setContractURI",
8283
+ outputs: [],
8284
+ stateMutability: "nonpayable",
8285
+ type: "function",
8286
+ },
8287
+ {
8288
+ inputs: [
8289
+ {
8290
+ internalType: "address",
8291
+ name: "_royaltyAllowlist",
8292
+ type: "address",
8293
+ },
8294
+ ],
8295
+ name: "setRoyaltyAllowlistRegistry",
8296
+ outputs: [],
8297
+ stateMutability: "nonpayable",
8298
+ type: "function",
8299
+ },
8300
+ {
8301
+ inputs: [
8302
+ {
8303
+ internalType: "bytes4",
8304
+ name: "interfaceId",
8305
+ type: "bytes4",
8306
+ },
8307
+ ],
8308
+ name: "supportsInterface",
8309
+ outputs: [
8310
+ {
8311
+ internalType: "bool",
8312
+ name: "",
8313
+ type: "bool",
8314
+ },
8315
+ ],
8316
+ stateMutability: "view",
8317
+ type: "function",
8318
+ },
8319
+ {
8320
+ inputs: [],
8321
+ name: "symbol",
8322
+ outputs: [
8323
+ {
8324
+ internalType: "string",
8325
+ name: "",
8326
+ type: "string",
8327
+ },
8328
+ ],
8329
+ stateMutability: "view",
8330
+ type: "function",
8331
+ },
8332
+ {
8333
+ inputs: [
8334
+ {
8335
+ internalType: "uint256",
8336
+ name: "index",
8337
+ type: "uint256",
8338
+ },
8339
+ ],
8340
+ name: "tokenByIndex",
8341
+ outputs: [
8342
+ {
8343
+ internalType: "uint256",
8344
+ name: "",
8345
+ type: "uint256",
8346
+ },
8347
+ ],
8348
+ stateMutability: "view",
8349
+ type: "function",
8350
+ },
8351
+ {
8352
+ inputs: [
8353
+ {
8354
+ internalType: "address",
8355
+ name: "owner",
8356
+ type: "address",
8357
+ },
8358
+ {
8359
+ internalType: "uint256",
8360
+ name: "index",
8361
+ type: "uint256",
8362
+ },
8363
+ ],
8364
+ name: "tokenOfOwnerByIndex",
8365
+ outputs: [
8366
+ {
8367
+ internalType: "uint256",
8368
+ name: "",
8369
+ type: "uint256",
8370
+ },
8371
+ ],
8372
+ stateMutability: "view",
8373
+ type: "function",
8374
+ },
8375
+ {
8376
+ inputs: [
8377
+ {
8378
+ internalType: "uint256",
8379
+ name: "tokenId",
8380
+ type: "uint256",
8381
+ },
8382
+ ],
8383
+ name: "tokenURI",
8384
+ outputs: [
8385
+ {
8386
+ internalType: "string",
8387
+ name: "",
8388
+ type: "string",
8389
+ },
8390
+ ],
8391
+ stateMutability: "view",
8392
+ type: "function",
8393
+ },
8394
+ {
8395
+ inputs: [],
8396
+ name: "totalSupply",
8397
+ outputs: [
8398
+ {
8399
+ internalType: "uint256",
8400
+ name: "",
8401
+ type: "uint256",
8402
+ },
8403
+ ],
8404
+ stateMutability: "view",
8405
+ type: "function",
8406
+ },
8407
+ {
8408
+ inputs: [
8409
+ {
8410
+ internalType: "address",
8411
+ name: "from",
8412
+ type: "address",
8413
+ },
8414
+ {
8415
+ internalType: "address",
8416
+ name: "to",
8417
+ type: "address",
8418
+ },
8419
+ {
8420
+ internalType: "uint256",
8421
+ name: "tokenId",
8422
+ type: "uint256",
8423
+ },
8424
+ ],
8425
+ name: "transferFrom",
8426
+ outputs: [],
8427
+ stateMutability: "nonpayable",
8428
+ type: "function",
8429
+ },
8430
+ ];
8431
+ const _bytecode = "0x60806040523480156200001157600080fd5b50604051620060d4380380620060d4833981810160405281019062000037919062000762565b868686868686868585816000908162000051919062000adc565b50806001908162000063919062000adc565b505050620000788282620000dc60201b60201c565b6200008d6000801b886200027f60201b60201c565b83601090816200009e919062000adc565b5082600f9081620000b0919062000adc565b50620000c86011620002c760201b620015f11760201c565b505050505050505050505050505062000cde565b620000ec620002dd60201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156200014d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001449062000c4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b69062000cbc565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b620002968282620002e760201b620016071760201c565b620002c28160076000858152602001908152602001600020620003d960201b620016e81790919060201c565b505050565b6001816000016000828254019250508190555050565b6000612710905090565b620002f982826200041160201b60201c565b620003d55760016006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200037a6200047c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000409836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200048460201b60201c565b905092915050565b60006006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000620004988383620004fe60201b60201c565b620004f3578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620004f8565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005628262000535565b9050919050565b620005748162000555565b81146200058057600080fd5b50565b600081519050620005948162000569565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620005ef82620005a4565b810181811067ffffffffffffffff82111715620006115762000610620005b5565b5b80604052505050565b60006200062662000521565b9050620006348282620005e4565b919050565b600067ffffffffffffffff821115620006575762000656620005b5565b5b6200066282620005a4565b9050602081019050919050565b60005b838110156200068f57808201518184015260208101905062000672565b60008484015250505050565b6000620006b2620006ac8462000639565b6200061a565b905082815260208101848484011115620006d157620006d06200059f565b5b620006de8482856200066f565b509392505050565b600082601f830112620006fe57620006fd6200059a565b5b8151620007108482602086016200069b565b91505092915050565b60006bffffffffffffffffffffffff82169050919050565b6200073c8162000719565b81146200074857600080fd5b50565b6000815190506200075c8162000731565b92915050565b600080600080600080600060e0888a0312156200078457620007836200052b565b5b6000620007948a828b0162000583565b975050602088015167ffffffffffffffff811115620007b857620007b762000530565b5b620007c68a828b01620006e6565b965050604088015167ffffffffffffffff811115620007ea57620007e962000530565b5b620007f88a828b01620006e6565b955050606088015167ffffffffffffffff8111156200081c576200081b62000530565b5b6200082a8a828b01620006e6565b945050608088015167ffffffffffffffff8111156200084e576200084d62000530565b5b6200085c8a828b01620006e6565b93505060a06200086f8a828b0162000583565b92505060c0620008828a828b016200074b565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008e457607f821691505b602082108103620008fa57620008f96200089c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000925565b62000970868362000925565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009bd620009b7620009b18462000988565b62000992565b62000988565b9050919050565b6000819050919050565b620009d9836200099c565b620009f1620009e882620009c4565b84845462000932565b825550505050565b600090565b62000a08620009f9565b62000a15818484620009ce565b505050565b5b8181101562000a3d5762000a31600082620009fe565b60018101905062000a1b565b5050565b601f82111562000a8c5762000a568162000900565b62000a618462000915565b8101602085101562000a71578190505b62000a8962000a808562000915565b83018262000a1a565b50505b505050565b600082821c905092915050565b600062000ab16000198460080262000a91565b1980831691505092915050565b600062000acc838362000a9e565b9150826002028217905092915050565b62000ae78262000891565b67ffffffffffffffff81111562000b035762000b02620005b5565b5b62000b0f8254620008cb565b62000b1c82828562000a41565b600060209050601f83116001811462000b54576000841562000b3f578287015190505b62000b4b858262000abe565b86555062000bbb565b601f19841662000b648662000900565b60005b8281101562000b8e5784890151825560018201915060208501945060208101905062000b67565b8683101562000bae578489015162000baa601f89168262000a9e565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062000c32602a8362000bc3565b915062000c3f8262000bd4565b604082019050919050565b6000602082019050818103600083015262000c658162000c23565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000ca460198362000bc3565b915062000cb18262000c6c565b602082019050919050565b6000602082019050818103600083015262000cd78162000c95565b9050919050565b6153e68062000cee6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80636352211e1161013057806395d89b41116100b8578063ca15c8731161007c578063ca15c87314610697578063d5391393146106c7578063d547741f146106e5578063e8a3d48514610701578063e985e9c51461071f57610227565b806395d89b41146105f3578063a217fddf14610611578063a22cb4651461062f578063b88d4fde1461064b578063c87b56dd1461066757610227565b80636c0360eb116100ff5780636c0360eb1461052957806370a08231146105475780639010d07c1461057757806391d14854146105a7578063938e3d7b146105d757610227565b80636352211e146104a35780636588962a146104d357806369e2f0fb146104ef5780636b3a06321461050b57610227565b80632f745c59116101b357806340c10f191161018257806340c10f191461040357806342842e0e1461041f57806342966c681461043b5780634f6ccce71461045757806355f804b31461048757610227565b80632f745c591461037d57806331ae450b146103ad57806336568abe146103cb5780633dd1eb61146103e757610227565b806318160ddd116101fa57806318160ddd146102c657806323b872dd146102e4578063248a9ca3146103005780632a55205a146103305780632f2ff15d1461036157610227565b806301ffc9a71461022c57806306fdde031461025c578063081812fc1461027a578063095ea7b3146102aa575b600080fd5b61024660048036038101906102419190613a2e565b61074f565b6040516102539190613a76565b60405180910390f35b610264610761565b6040516102719190613b21565b60405180910390f35b610294600480360381019061028f9190613b79565b6107f3565b6040516102a19190613be7565b60405180910390f35b6102c460048036038101906102bf9190613c2e565b610839565b005b6102ce610847565b6040516102db9190613c7d565b60405180910390f35b6102fe60048036038101906102f99190613c98565b610854565b005b61031a60048036038101906103159190613d21565b6108b4565b6040516103279190613d5d565b60405180910390f35b61034a60048036038101906103459190613d78565b6108d4565b604051610358929190613db8565b60405180910390f35b61037b60048036038101906103769190613de1565b610abe565b005b61039760048036038101906103929190613c2e565b610adf565b6040516103a49190613c7d565b60405180910390f35b6103b5610b84565b6040516103c29190613edf565b60405180910390f35b6103e560048036038101906103e09190613de1565b610c64565b005b61040160048036038101906103fc9190613f01565b610ce7565b005b61041d60048036038101906104189190613c2e565b610d22565b005b61043960048036038101906104349190613c98565b610d7a565b005b61045560048036038101906104509190613b79565b610d9a565b005b610471600480360381019061046c9190613b79565b610df6565b60405161047e9190613c7d565b60405180910390f35b6104a1600480360381019061049c9190614063565b610e67565b005b6104bd60048036038101906104b89190613b79565b610e88565b6040516104ca9190613be7565b60405180910390f35b6104ed60048036038101906104e89190613f01565b610f0e565b005b61050960048036038101906105049190613f01565b611094565b005b6105136110cf565b604051610520919061410b565b60405180910390f35b6105316110f5565b60405161053e9190613b21565b60405180910390f35b610561600480360381019061055c9190613f01565b611183565b60405161056e9190613c7d565b60405180910390f35b610591600480360381019061058c9190614126565b61123a565b60405161059e9190613be7565b60405180910390f35b6105c160048036038101906105bc9190613de1565b611269565b6040516105ce9190613a76565b60405180910390f35b6105f160048036038101906105ec9190614063565b6112d4565b005b6105fb6112f5565b6040516106089190613b21565b60405180910390f35b610619611387565b6040516106269190613d5d565b60405180910390f35b61064960048036038101906106449190614192565b61138e565b005b61066560048036038101906106609190614273565b61139c565b005b610681600480360381019061067c9190613b79565b6113fe565b60405161068e9190613b21565b60405180910390f35b6106b160048036038101906106ac9190613d21565b611466565b6040516106be9190613c7d565b60405180910390f35b6106cf61148a565b6040516106dc9190613d5d565b60405180910390f35b6106ff60048036038101906106fa9190613de1565b6114ae565b005b6107096114cf565b6040516107169190613b21565b60405180910390f35b610739600480360381019061073491906142f6565b61155d565b6040516107469190613a76565b60405180910390f35b600061075a82611718565b9050919050565b60606000805461077090614365565b80601f016020809104026020016040519081016040528092919081815260200182805461079c90614365565b80156107e95780601f106107be576101008083540402835291602001916107e9565b820191906000526020600020905b8154815290600101906020018083116107cc57829003601f168201915b5050505050905090565b60006107fe82611792565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61084382826117dd565b5050565b6000600b80549050905090565b61086561085f6117f4565b826117fc565b6108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90614408565b60405180910390fd5b6108af838383611891565b505050565b600060066000838152602001908152602001600020600101549050919050565b6000806000600e60008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610a6957600d6040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610a736118a1565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610a9f9190614457565b610aa991906144c8565b90508160000151819350935050509250929050565b610ac7826108b4565b610ad0816118ab565b610ada83836118bf565b505050565b6000610aea83611183565b8210610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b229061456b565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b60606000610b946000801b611466565b905060008167ffffffffffffffff811115610bb257610bb1613f38565b5b604051908082528060200260200182016040528015610be05781602001602082028036833780820191505090505b50905060005b82811015610c5b57610bfb6000801b8261123a565b828281518110610c0e57610c0d61458b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080610c53906145ba565b915050610be6565b50809250505090565b610c6c6117f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd090614674565b60405180910390fd5b610ce382826118f3565b5050565b6000801b610cf4816118ab565b610d1e7f4d494e5445525f524f4c4500000000000000000000000000000000000000000083610abe565b5050565b7f4d494e5445525f524f4c45000000000000000000000000000000000000000000610d4c816118ab565b60005b82811015610d7457610d6084611927565b508080610d6c906145ba565b915050610d4f565b50505050565b610d958383836040518060200160405280600081525061139c565b505050565b610dab610da56117f4565b826117fc565b610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190614408565b60405180910390fd5b610df381611953565b50565b6000610e00610847565b8210610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890614706565b60405180910390fd5b600b8281548110610e5557610e5461458b565b5b90600052602060002001549050919050565b6000801b610e74816118ab565b8160109081610e8391906148c8565b505050565b600080610e9483611aa1565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc906149e6565b60405180910390fd5b80915050919050565b6000801b610f1b816118ab565b8173ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f05a3b809000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610f749190614a15565b602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190614a45565b610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90614ae4565b60405180910390fd5b7f4a1d010d926ae0d4294a4afe61ae81bb378335fbf671e099a7138b5afeefdf84600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051611047929190614b04565b60405180910390a181600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000801b6110a1816118ab565b6110cb7f4d494e5445525f524f4c45000000000000000000000000000000000000000000836114ae565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010805461110290614365565b80601f016020809104026020016040519081016040528092919081815260200182805461112e90614365565b801561117b5780601f106111505761010080835404028352916020019161117b565b820191906000526020600020905b81548152906001019060200180831161115e57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90614b9f565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112618260076000868152602001908152602001600020611ade90919063ffffffff16565b905092915050565b60006006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b6112e1816118ab565b81600f90816112f091906148c8565b505050565b60606001805461130490614365565b80601f016020809104026020016040519081016040528092919081815260200182805461133090614365565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b5050505050905090565b6000801b81565b6113988282611af8565b5050565b6113ad6113a76117f4565b836117fc565b6113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390614408565b60405180910390fd5b6113f884848484611b0f565b50505050565b606061140982611792565b6000611413611b6b565b90506000815111611433576040518060200160405280600081525061145e565b8061143d84611bfd565b60405160200161144e929190614bfb565b6040516020818303038152906040525b915050919050565b600061148360076000848152602001908152602001600020611ccb565b9050919050565b7f4d494e5445525f524f4c4500000000000000000000000000000000000000000081565b6114b7826108b4565b6114c0816118ab565b6114ca83836118f3565b505050565b600f80546114dc90614365565b80601f016020809104026020016040519081016040528092919081815260200182805461150890614365565b80156115555780601f1061152a57610100808354040283529160200191611555565b820191906000526020600020905b81548152906001019060200180831161153857829003601f168201915b505050505081565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6001816000016000828254019250508190555050565b6116118282611269565b6116e45760016006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116896117f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611710836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611ce0565b905092915050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061178b575061178a82611d50565b5b9050919050565b61179b81611dca565b6117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d1906149e6565b60405180910390fd5b50565b6117e682611e0b565b6117f08282611f64565b5050565b600033905090565b60008061180883610e88565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061184a5750611849818561155d565b5b8061188857508373ffffffffffffffffffffffffffffffffffffffff16611870846107f3565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b61189c83838361207b565b505050565b6000612710905090565b6118bc816118b76117f4565b612093565b50565b6118c98282611607565b6118ee81600760008581526020019081526020016000206116e890919063ffffffff16565b505050565b6118fd8282612118565b61192281600760008581526020019081526020016000206121fa90919063ffffffff16565b505050565b600080611934601161222a565b90506119408382612238565b61194a60116115f1565b80915050919050565b600061195e82610e88565b905061196e816000846001612455565b61197782610e88565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a9d816000846001612467565b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000611aed836000018361246d565b60001c905092915050565b611b0182611e0b565b611b0b8282612498565b5050565b611b1a848484611891565b611b26848484846124ae565b611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90614c91565b60405180910390fd5b50505050565b606060108054611b7a90614365565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba690614365565b8015611bf35780601f10611bc857610100808354040283529160200191611bf3565b820191906000526020600020905b815481529060010190602001808311611bd657829003601f168201915b5050505050905090565b606060006001611c0c84612635565b01905060008167ffffffffffffffff811115611c2b57611c2a613f38565b5b6040519080825280601f01601f191660200182016040528015611c5d5781602001600182028036833780820191505090505b509050600082602001820190505b600115611cc0578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611cb457611cb3614499565b5b04945060008503611c6b575b819350505050919050565b6000611cd982600001612788565b9050919050565b6000611cec8383612799565b611d45578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611d4a565b600090505b92915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dc35750611dc2826127bc565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611dec83611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f605760008173ffffffffffffffffffffffffffffffffffffffff163b1480611f1f5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305a3b809826040518263ffffffff1660e01b8152600401611edd9190613be7565b602060405180830381865afa158015611efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1e9190614a45565b5b611f6157806040517f8371ab02000000000000000000000000000000000000000000000000000000008152600401611f579190613be7565b60405180910390fd5b5b50565b6000611f6f82610e88565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690614d23565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611ffe6117f4565b73ffffffffffffffffffffffffffffffffffffffff16148061202d575061202c816120276117f4565b61155d565b5b61206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390614db5565b60405180910390fd5b61207683836127ce565b505050565b612083612887565b61208e8383836129f3565b505050565b61209d8282611269565b612114576120aa81612cec565b6120b88360001c6020612d19565b6040516020016120c9929190614e6d565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210b9190613b21565b60405180910390fd5b5050565b6121228282611269565b156121f65760006006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061219b6117f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000612222836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612f55565b905092915050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e90614ef3565b60405180910390fd5b6122b081611dca565b156122f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e790614f5f565b60405180910390fd5b6122fe600083836001612455565b61230781611dca565b15612347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233e90614f5f565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612451600083836001612467565b5050565b61246184848484613069565b50505050565b50505050565b60008260000182815481106124855761248461458b565b5b9060005260206000200154905092915050565b6124aa6124a36117f4565b83836131c7565b5050565b60006124cf8473ffffffffffffffffffffffffffffffffffffffff16613333565b15612628578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124f86117f4565b8786866040518563ffffffff1660e01b815260040161251a9493929190614fd4565b6020604051808303816000875af192505050801561255657506040513d601f19601f820116820180604052508101906125539190615035565b60015b6125d8573d8060008114612586576040519150601f19603f3d011682016040523d82523d6000602084013e61258b565b606091505b5060008151036125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c790614c91565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061262d565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612693577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161268957612688614499565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106126d0576d04ee2d6d415b85acef810000000083816126c6576126c5614499565b5b0492506020810190505b662386f26fc1000083106126ff57662386f26fc1000083816126f5576126f4614499565b5b0492506010810190505b6305f5e1008310612728576305f5e100838161271e5761271d614499565b5b0492506008810190505b612710831061274d57612710838161274357612742614499565b5b0492506004810190505b60648310612770576064838161276657612765614499565b5b0492506002810190505b600a831061277f576001810190505b80915050919050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b60006127c782613356565b9050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661284183610e88565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f0573273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806129af5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305a3b809336040518263ffffffff1660e01b815260040161296d9190613be7565b602060405180830381865afa15801561298a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ae9190614a45565b5b6129f157336040517f937db65f0000000000000000000000000000000000000000000000000000000081526004016129e79190613be7565b60405180910390fd5b5b565b8273ffffffffffffffffffffffffffffffffffffffff16612a1382610e88565b73ffffffffffffffffffffffffffffffffffffffff1614612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a60906150d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acf90615166565b60405180910390fd5b612ae58383836001612455565b8273ffffffffffffffffffffffffffffffffffffffff16612b0582610e88565b73ffffffffffffffffffffffffffffffffffffffff1614612b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b52906150d4565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612ce78383836001612467565b505050565b6060612d128273ffffffffffffffffffffffffffffffffffffffff16601460ff16612d19565b9050919050565b606060006002836002612d2c9190614457565b612d369190615186565b67ffffffffffffffff811115612d4f57612d4e613f38565b5b6040519080825280601f01601f191660200182016040528015612d815781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612db957612db861458b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612e1d57612e1c61458b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612e5d9190614457565b612e679190615186565b90505b6001811115612f07577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612ea957612ea861458b565b5b1a60f81b828281518110612ec057612ebf61458b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612f00906151ba565b9050612e6a565b5060008414612f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f429061522f565b60405180910390fd5b8091505092915050565b6000808360010160008481526020019081526020016000205490506000811461305d576000600182612f87919061524f565b9050600060018660000180549050612f9f919061524f565b905081811461300e576000866000018281548110612fc057612fbf61458b565b5b9060005260206000200154905080876000018481548110612fe457612fe361458b565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061302257613021615283565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613063565b60009150505b92915050565b613075848484846133d0565b60018111156130b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b090615324565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603613100576130fb816134f6565b61313f565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461313e5761313d858261353f565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036131815761317c816136ac565b6131c0565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146131bf576131be848261377d565b5b5b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322c90615390565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516133269190613a76565b60405180910390a3505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806133c957506133c8826137fc565b5b9050919050565b60018111156134f057600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146134645780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461345c919061524f565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146134ef5780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134e79190615186565b925050819055505b5b50505050565b600b80549050600c600083815260200190815260200160002081905550600b81908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161354c84611183565b613556919061524f565b90506000600a600084815260200190815260200160002054905081811461363b576000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000208190555081600a600083815260200190815260200160002081905550505b600a600084815260200190815260200160002060009055600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600b805490506136c0919061524f565b90506000600c60008481526020019081526020016000205490506000600b83815481106136f0576136ef61458b565b5b9060005260206000200154905080600b83815481106137125761371161458b565b5b906000526020600020018190555081600c600083815260200190815260200160002081905550600c600085815260200190815260200160002060009055600b80548061376157613760615283565b5b6001900381819060005260206000200160009055905550505050565b600061378883611183565b905081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080600a600084815260200190815260200160002081905550505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061386f575061386e82613876565b5b9050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061394157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613951575061395082613958565b5b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a0b816139d6565b8114613a1657600080fd5b50565b600081359050613a2881613a02565b92915050565b600060208284031215613a4457613a436139cc565b5b6000613a5284828501613a19565b91505092915050565b60008115159050919050565b613a7081613a5b565b82525050565b6000602082019050613a8b6000830184613a67565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613acb578082015181840152602081019050613ab0565b60008484015250505050565b6000601f19601f8301169050919050565b6000613af382613a91565b613afd8185613a9c565b9350613b0d818560208601613aad565b613b1681613ad7565b840191505092915050565b60006020820190508181036000830152613b3b8184613ae8565b905092915050565b6000819050919050565b613b5681613b43565b8114613b6157600080fd5b50565b600081359050613b7381613b4d565b92915050565b600060208284031215613b8f57613b8e6139cc565b5b6000613b9d84828501613b64565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bd182613ba6565b9050919050565b613be181613bc6565b82525050565b6000602082019050613bfc6000830184613bd8565b92915050565b613c0b81613bc6565b8114613c1657600080fd5b50565b600081359050613c2881613c02565b92915050565b60008060408385031215613c4557613c446139cc565b5b6000613c5385828601613c19565b9250506020613c6485828601613b64565b9150509250929050565b613c7781613b43565b82525050565b6000602082019050613c926000830184613c6e565b92915050565b600080600060608486031215613cb157613cb06139cc565b5b6000613cbf86828701613c19565b9350506020613cd086828701613c19565b9250506040613ce186828701613b64565b9150509250925092565b6000819050919050565b613cfe81613ceb565b8114613d0957600080fd5b50565b600081359050613d1b81613cf5565b92915050565b600060208284031215613d3757613d366139cc565b5b6000613d4584828501613d0c565b91505092915050565b613d5781613ceb565b82525050565b6000602082019050613d726000830184613d4e565b92915050565b60008060408385031215613d8f57613d8e6139cc565b5b6000613d9d85828601613b64565b9250506020613dae85828601613b64565b9150509250929050565b6000604082019050613dcd6000830185613bd8565b613dda6020830184613c6e565b9392505050565b60008060408385031215613df857613df76139cc565b5b6000613e0685828601613d0c565b9250506020613e1785828601613c19565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e5681613bc6565b82525050565b6000613e688383613e4d565b60208301905092915050565b6000602082019050919050565b6000613e8c82613e21565b613e968185613e2c565b9350613ea183613e3d565b8060005b83811015613ed2578151613eb98882613e5c565b9750613ec483613e74565b925050600181019050613ea5565b5085935050505092915050565b60006020820190508181036000830152613ef98184613e81565b905092915050565b600060208284031215613f1757613f166139cc565b5b6000613f2584828501613c19565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f7082613ad7565b810181811067ffffffffffffffff82111715613f8f57613f8e613f38565b5b80604052505050565b6000613fa26139c2565b9050613fae8282613f67565b919050565b600067ffffffffffffffff821115613fce57613fcd613f38565b5b613fd782613ad7565b9050602081019050919050565b82818337600083830152505050565b600061400661400184613fb3565b613f98565b90508281526020810184848401111561402257614021613f33565b5b61402d848285613fe4565b509392505050565b600082601f83011261404a57614049613f2e565b5b813561405a848260208601613ff3565b91505092915050565b600060208284031215614079576140786139cc565b5b600082013567ffffffffffffffff811115614097576140966139d1565b5b6140a384828501614035565b91505092915050565b6000819050919050565b60006140d16140cc6140c784613ba6565b6140ac565b613ba6565b9050919050565b60006140e3826140b6565b9050919050565b60006140f5826140d8565b9050919050565b614105816140ea565b82525050565b600060208201905061412060008301846140fc565b92915050565b6000806040838503121561413d5761413c6139cc565b5b600061414b85828601613d0c565b925050602061415c85828601613b64565b9150509250929050565b61416f81613a5b565b811461417a57600080fd5b50565b60008135905061418c81614166565b92915050565b600080604083850312156141a9576141a86139cc565b5b60006141b785828601613c19565b92505060206141c88582860161417d565b9150509250929050565b600067ffffffffffffffff8211156141ed576141ec613f38565b5b6141f682613ad7565b9050602081019050919050565b6000614216614211846141d2565b613f98565b90508281526020810184848401111561423257614231613f33565b5b61423d848285613fe4565b509392505050565b600082601f83011261425a57614259613f2e565b5b813561426a848260208601614203565b91505092915050565b6000806000806080858703121561428d5761428c6139cc565b5b600061429b87828801613c19565b94505060206142ac87828801613c19565b93505060406142bd87828801613b64565b925050606085013567ffffffffffffffff8111156142de576142dd6139d1565b5b6142ea87828801614245565b91505092959194509250565b6000806040838503121561430d5761430c6139cc565b5b600061431b85828601613c19565b925050602061432c85828601613c19565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061437d57607f821691505b6020821081036143905761438f614336565b5b50919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006143f2602d83613a9c565b91506143fd82614396565b604082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061446282613b43565b915061446d83613b43565b925082820261447b81613b43565b9150828204841483151761449257614491614428565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144d382613b43565b91506144de83613b43565b9250826144ee576144ed614499565b5b828204905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614555602b83613a9c565b9150614560826144f9565b604082019050919050565b6000602082019050818103600083015261458481614548565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006145c582613b43565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145f7576145f6614428565b5b600182019050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061465e602f83613a9c565b915061466982614602565b604082019050919050565b6000602082019050818103600083015261468d81614651565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006146f0602c83613a9c565b91506146fb82614694565b604082019050919050565b6000602082019050818103600083015261471f816146e3565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026147887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261474b565b614792868361474b565b95508019841693508086168417925050509392505050565b60006147c56147c06147bb84613b43565b6140ac565b613b43565b9050919050565b6000819050919050565b6147df836147aa565b6147f36147eb826147cc565b848454614758565b825550505050565b600090565b6148086147fb565b6148138184846147d6565b505050565b5b818110156148375761482c600082614800565b600181019050614819565b5050565b601f82111561487c5761484d81614726565b6148568461473b565b81016020851015614865578190505b6148796148718561473b565b830182614818565b50505b505050565b600082821c905092915050565b600061489f60001984600802614881565b1980831691505092915050565b60006148b8838361488e565b9150826002028217905092915050565b6148d182613a91565b67ffffffffffffffff8111156148ea576148e9613f38565b5b6148f48254614365565b6148ff82828561483b565b600060209050601f8311600181146149325760008415614920578287015190505b61492a85826148ac565b865550614992565b601f19841661494086614726565b60005b8281101561496857848901518255600182019150602085019450602081019050614943565b868310156149855784890151614981601f89168261488e565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006149d0601883613a9c565b91506149db8261499a565b602082019050919050565b600060208201905081810360008301526149ff816149c3565b9050919050565b614a0f816139d6565b82525050565b6000602082019050614a2a6000830184614a06565b92915050565b600081519050614a3f81614166565b92915050565b600060208284031215614a5b57614a5a6139cc565b5b6000614a6984828501614a30565b91505092915050565b7f636f6e747261637420646f6573206e6f7420696d706c656d656e742049526f7960008201527f616c7479416c6c6f776c69737400000000000000000000000000000000000000602082015250565b6000614ace602d83613a9c565b9150614ad982614a72565b604082019050919050565b60006020820190508181036000830152614afd81614ac1565b9050919050565b6000604082019050614b196000830185613bd8565b614b266020830184613bd8565b9392505050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614b89602983613a9c565b9150614b9482614b2d565b604082019050919050565b60006020820190508181036000830152614bb881614b7c565b9050919050565b600081905092915050565b6000614bd582613a91565b614bdf8185614bbf565b9350614bef818560208601613aad565b80840191505092915050565b6000614c078285614bca565b9150614c138284614bca565b91508190509392505050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614c7b603283613a9c565b9150614c8682614c1f565b604082019050919050565b60006020820190508181036000830152614caa81614c6e565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d0d602183613a9c565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000614d9f603d83613a9c565b9150614daa82614d43565b604082019050919050565b60006020820190508181036000830152614dce81614d92565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000614e0b601783614bbf565b9150614e1682614dd5565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000614e57601183614bbf565b9150614e6282614e21565b601182019050919050565b6000614e7882614dfe565b9150614e848285614bca565b9150614e8f82614e4a565b9150614e9b8284614bca565b91508190509392505050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614edd602083613a9c565b9150614ee882614ea7565b602082019050919050565b60006020820190508181036000830152614f0c81614ed0565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614f49601c83613a9c565b9150614f5482614f13565b602082019050919050565b60006020820190508181036000830152614f7881614f3c565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614fa682614f7f565b614fb08185614f8a565b9350614fc0818560208601613aad565b614fc981613ad7565b840191505092915050565b6000608082019050614fe96000830187613bd8565b614ff66020830186613bd8565b6150036040830185613c6e565b81810360608301526150158184614f9b565b905095945050505050565b60008151905061502f81613a02565b92915050565b60006020828403121561504b5761504a6139cc565b5b600061505984828501615020565b91505092915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006150be602583613a9c565b91506150c982615062565b604082019050919050565b600060208201905081810360008301526150ed816150b1565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615150602483613a9c565b915061515b826150f4565b604082019050919050565b6000602082019050818103600083015261517f81615143565b9050919050565b600061519182613b43565b915061519c83613b43565b92508282019050808211156151b4576151b3614428565b5b92915050565b60006151c582613b43565b9150600082036151d8576151d7614428565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615219602083613a9c565b9150615224826151e3565b602082019050919050565b600060208201905081810360008301526152488161520c565b9050919050565b600061525a82613b43565b915061526583613b43565b925082820390508181111561527d5761527c614428565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b600061530e603583613a9c565b9150615319826152b2565b604082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061537a601983613a9c565b915061538582615344565b602082019050919050565b600060208201905081810360008301526153a98161536d565b905091905056fea2646970667358221220f2de678fa1f1a3fc28d8056ba46769331f91c7536f9259f07a82f3f97942823964736f6c63430008110033";
8432
+ const isSuperArgs = (xs) => xs.length > 1;
8433
+ class ImmutableERC721PermissionedMintable__factory extends ethers.ContractFactory {
8434
+ constructor(...args) {
8435
+ if (isSuperArgs(args)) {
8436
+ super(...args);
8437
+ }
8438
+ else {
8439
+ super(_abi, _bytecode, args[0]);
8440
+ }
8441
+ }
8442
+ deploy(owner_, name_, symbol_, baseURI_, contractURI_, _receiver, _feeNumerator, overrides) {
8443
+ return super.deploy(owner_, name_, symbol_, baseURI_, contractURI_, _receiver, _feeNumerator, overrides || {});
8444
+ }
8445
+ getDeployTransaction(owner_, name_, symbol_, baseURI_, contractURI_, _receiver, _feeNumerator, overrides) {
8446
+ return super.getDeployTransaction(owner_, name_, symbol_, baseURI_, contractURI_, _receiver, _feeNumerator, overrides || {});
8447
+ }
8448
+ attach(address) {
8449
+ return super.attach(address);
8450
+ }
8451
+ connect(signer) {
8452
+ return super.connect(signer);
8453
+ }
8454
+ static bytecode = _bytecode;
8455
+ static abi = _abi;
8456
+ static createInterface() {
8457
+ return new ethers.utils.Interface(_abi);
8458
+ }
8459
+ static connect(address, signerOrProvider) {
8460
+ return new ethers.Contract(address, _abi, signerOrProvider);
8461
+ }
8462
+ }
8463
+
8464
+ class ERC20 {
8465
+ contract;
8466
+ constructor(contractAddress) {
8467
+ const factory = new ERC20__factory();
8468
+ this.contract = factory.attach(contractAddress);
8469
+ }
8470
+ /**
8471
+ * @returns a promise that resolves with a populated transaction
8472
+ */
8473
+ async totalSupply(overrides) {
8474
+ return this.contract.populateTransaction.totalSupply(overrides);
8475
+ }
8476
+ /**
8477
+ * @returns a promise that resolves with a populated transaction
8478
+ */
8479
+ async balanceOf(account, overrides) {
8480
+ return this.contract.populateTransaction.balanceOf(account, overrides);
8481
+ }
8482
+ /**
8483
+ * @returns a promise that resolves with a populated transaction
8484
+ */
8485
+ async transfer(to, amount, overrides) {
8486
+ return this.contract.populateTransaction.transfer(to, amount, overrides);
8487
+ }
8488
+ /**
8489
+ * @returns a promise that resolves with a populated transaction
8490
+ */
8491
+ async allowance(owner, spender, overrides) {
8492
+ return this.contract.populateTransaction.allowance(owner, spender, overrides);
8493
+ }
8494
+ /**
8495
+ * @returns a promise that resolves with a populated transaction
8496
+ */
8497
+ async approve(spender, amount, overrides) {
8498
+ return this.contract.populateTransaction.approve(spender, amount, overrides);
8499
+ }
8500
+ /**
8501
+ * @returns a promise that resolves with a populated transaction
8502
+ */
8503
+ async transferFrom(from, to, amount, overrides) {
8504
+ return this.contract.populateTransaction.transferFrom(from, to, amount, overrides);
8505
+ }
8506
+ }
8507
+
8508
+ class ERC721PermissionedMintable {
8509
+ contract;
8510
+ constructor(contractAddress) {
8511
+ const factory = new ImmutableERC721PermissionedMintable__factory();
8512
+ this.contract = factory.attach(contractAddress);
8513
+ }
8514
+ /**
8515
+ * @returns a promise that resolves with a populated transaction
8516
+ */
8517
+ async DEFAULT_ADMIN_ROLE(overrides) {
8518
+ return await this.contract.populateTransaction.DEFAULT_ADMIN_ROLE(overrides);
8519
+ }
8520
+ /**
8521
+ * @returns a promise that resolves with a populated transaction
8522
+ */
8523
+ async MINTER_ROLE(overrides) {
8524
+ return await this.contract.populateTransaction.MINTER_ROLE(overrides);
8525
+ }
8526
+ /**
8527
+ * @returns a promise that resolves with a populated transaction
8528
+ */
8529
+ async approve(to, tokenId, overrides) {
8530
+ return await this.contract.populateTransaction.approve(to, tokenId, overrides);
8531
+ }
8532
+ /**
8533
+ * @returns a promise that resolves with a populated transaction
8534
+ */
8535
+ async balanceOf(owner, overrides) {
8536
+ return await this.contract.populateTransaction.balanceOf(owner, overrides);
8537
+ }
8538
+ /**
8539
+ * @returns a promise that resolves with a populated transaction
8540
+ */
8541
+ async baseURI(overrides) {
8542
+ return await this.contract.populateTransaction.baseURI(overrides);
8543
+ }
8544
+ /**
8545
+ * @returns a promise that resolves with a populated transaction
8546
+ */
8547
+ async burn(tokenId, overrides) {
8548
+ return await this.contract.populateTransaction.burn(tokenId, overrides);
8549
+ }
8550
+ /**
8551
+ * @returns a promise that resolves with a populated transaction
8552
+ */
8553
+ async contractURI(overrides) {
8554
+ return await this.contract.populateTransaction.contractURI(overrides);
8555
+ }
8556
+ /**
8557
+ * @returns a promise that resolves with a populated transaction
8558
+ */
8559
+ async getAdmins(overrides) {
8560
+ return await this.contract.populateTransaction.getAdmins(overrides);
8561
+ }
8562
+ /**
8563
+ * @returns a promise that resolves with a populated transaction
8564
+ */
8565
+ async getApproved(tokenId, overrides) {
8566
+ return await this.contract.populateTransaction.getApproved(tokenId, overrides);
8567
+ }
8568
+ /**
8569
+ * @returns a promise that resolves with a populated transaction
8570
+ */
8571
+ async getRoleAdmin(role, overrides) {
8572
+ return await this.contract.populateTransaction.getRoleAdmin(role, overrides);
8573
+ }
8574
+ /**
8575
+ * @returns a promise that resolves with a populated transaction
8576
+ */
8577
+ async getRoleMember(role, index, overrides) {
8578
+ return await this.contract.populateTransaction.getRoleMember(role, index, overrides);
8579
+ }
8580
+ /**
8581
+ * @returns a promise that resolves with a populated transaction
8582
+ */
8583
+ async getRoleMemberCount(role, overrides) {
8584
+ return await this.contract.populateTransaction.getRoleMemberCount(role, overrides);
8585
+ }
8586
+ /**
8587
+ * @returns a promise that resolves with a populated transaction
8588
+ */
8589
+ async grantMinterRole(user, overrides) {
8590
+ return await this.contract.populateTransaction.grantMinterRole(user, overrides);
8591
+ }
8592
+ /**
8593
+ * @returns a promise that resolves with a populated transaction
8594
+ */
8595
+ async grantRole(role, account, overrides) {
8596
+ return await this.contract.populateTransaction.grantRole(role, account, overrides);
8597
+ }
8598
+ /**
8599
+ * @returns a promise that resolves with a populated transaction
8600
+ */
8601
+ async hasRole(role, account, overrides) {
8602
+ return await this.contract.populateTransaction.hasRole(role, account, overrides);
8603
+ }
8604
+ /**
8605
+ * @returns a promise that resolves with a populated transaction
8606
+ */
8607
+ async isApprovedForAll(owner, operator, overrides) {
8608
+ return await this.contract.populateTransaction.isApprovedForAll(owner, operator, overrides);
8609
+ }
8610
+ /**
8611
+ * @returns a promise that resolves with a populated transaction
8612
+ */
8613
+ async mint(to, amount, overrides) {
8614
+ return await this.contract.populateTransaction.mint(to, amount, overrides);
8615
+ }
8616
+ /**
8617
+ * @returns a promise that resolves with a populated transaction
8618
+ */
8619
+ async name(overrides) {
8620
+ return await this.contract.populateTransaction.name(overrides);
8621
+ }
8622
+ /**
8623
+ * @returns a promise that resolves with a populated transaction
8624
+ */
8625
+ async ownerOf(tokenId, overrides) {
8626
+ return await this.contract.populateTransaction.ownerOf(tokenId, overrides);
8627
+ }
8628
+ /**
8629
+ * @returns a promise that resolves with a populated transaction
8630
+ */
8631
+ async renounceRole(role, account, overrides) {
8632
+ return await this.contract.populateTransaction.renounceRole(role, account, overrides);
8633
+ }
8634
+ /**
8635
+ * @returns a promise that resolves with a populated transaction
8636
+ */
8637
+ async revokeMinterRole(user, overrides) {
8638
+ return await this.contract.populateTransaction.revokeMinterRole(user, overrides);
8639
+ }
8640
+ /**
8641
+ * @returns a promise that resolves with a populated transaction
8642
+ */
8643
+ async revokeRole(role, account, overrides) {
8644
+ return await this.contract.populateTransaction.revokeRole(role, account, overrides);
8645
+ }
8646
+ /**
8647
+ * @returns a promise that resolves with a populated transaction
8648
+ */
8649
+ async royaltyAllowlist(overrides) {
8650
+ return await this.contract.populateTransaction.royaltyAllowlist(overrides);
8651
+ }
8652
+ /**
8653
+ * @returns a promise that resolves with a populated transaction
8654
+ */
8655
+ async royaltyInfo(_tokenId, _salePrice, overrides) {
8656
+ return await this.contract.populateTransaction.royaltyInfo(_tokenId, _salePrice, overrides);
8657
+ }
8658
+ /**
8659
+ * @returns a promise that resolves with a populated transaction
8660
+ */
8661
+ async 'safeTransferFrom(address,address,uint256)'(from, to, tokenId, overrides) {
8662
+ return await this.contract.populateTransaction['safeTransferFrom(address,address,uint256)'](from, to, tokenId, overrides);
8663
+ }
8664
+ /**
8665
+ * @returns a promise that resolves with a populated transaction
8666
+ */
8667
+ async 'safeTransferFrom(address,address,uint256,bytes)'(from, to, tokenId, data, overrides) {
8668
+ return await this.contract.populateTransaction['safeTransferFrom(address,address,uint256,bytes)'](from, to, tokenId, data, overrides);
8669
+ }
8670
+ /**
8671
+ * @returns a promise that resolves with a populated transaction
8672
+ */
8673
+ async setApprovalForAll(operator, approved, overrides) {
8674
+ return await this.contract.populateTransaction.setApprovalForAll(operator, approved, overrides);
8675
+ }
8676
+ /**
8677
+ * @returns a promise that resolves with a populated transaction
8678
+ */
8679
+ async setBaseURI(baseURI_, overrides) {
8680
+ return await this.contract.populateTransaction.setBaseURI(baseURI_, overrides);
8681
+ }
8682
+ /**
8683
+ * @returns a promise that resolves with a populated transaction
8684
+ */
8685
+ async setContractURI(_contractURI, overrides) {
8686
+ return await this.contract.populateTransaction.setContractURI(_contractURI, overrides);
8687
+ }
8688
+ /**
8689
+ * @returns a promise that resolves with a populated transaction
8690
+ */
8691
+ async setRoyaltyAllowlistRegistry(_royaltyAllowlist, overrides) {
8692
+ return await this.contract.populateTransaction.setRoyaltyAllowlistRegistry(_royaltyAllowlist, overrides);
8693
+ }
8694
+ /**
8695
+ * @returns a promise that resolves with a populated transaction
8696
+ */
8697
+ async symbol(overrides) {
8698
+ return await this.contract.populateTransaction.symbol(overrides);
8699
+ }
8700
+ /**
8701
+ * @returns a promise that resolves with a populated transaction
8702
+ */
8703
+ async tokenByIndex(index, overrides) {
8704
+ return await this.contract.populateTransaction.tokenByIndex(index, overrides);
8705
+ }
8706
+ /**
8707
+ * @returns a promise that resolves with a populated transaction
8708
+ */
8709
+ async tokenOfOwnerByIndex(owner, index, overrides) {
8710
+ return await this.contract.populateTransaction.tokenOfOwnerByIndex(owner, index, overrides);
8711
+ }
8712
+ /**
8713
+ * @returns a promise that resolves with a populated transaction
8714
+ */
8715
+ async tokenURI(tokenId, overrides) {
8716
+ return await this.contract.populateTransaction.tokenURI(tokenId, overrides);
8717
+ }
8718
+ /**
8719
+ * @returns a promise that resolves with a populated transaction
8720
+ */
8721
+ async totalSupply(overrides) {
8722
+ return await this.contract.populateTransaction.totalSupply(overrides);
8723
+ }
8724
+ }
6660
8725
 
6661
8726
  Object.defineProperty(exports, 'imxClientCreateStarkSigner', {
6662
8727
  enumerable: true,
@@ -6673,6 +8738,8 @@ exports.BuyReact = $f22931ca9e2f35b6$export$d13582032b79b401;
6673
8738
  exports.Checkout = $a8cb37a3fc8eb863$export$1f60ba4ec72508a0;
6674
8739
  exports.CheckoutWidgets = $430e3eda76fa4d5f$export$af210a0808087845;
6675
8740
  exports.ConnectReact = $f2083cd30e2f5c56$export$49d62957f420a1e2;
8741
+ exports.ERC20 = ERC20;
8742
+ exports.ERC721PermissionedMintable = ERC721PermissionedMintable;
6676
8743
  exports.ExampleReact = $d087956fd1002f80$export$fa517eee6594d26c;
6677
8744
  exports.GenericIMXProvider = GenericIMXProvider;
6678
8745
  exports.ImmutableConfiguration = ImmutableConfiguration;
@@ -6686,6 +8753,4 @@ exports.SetProvider = $430e3eda76fa4d5f$export$931068bc678f0d73;
6686
8753
  exports.SwapReact = $a4fbb8e3a6aeff58$export$971e031379577f4;
6687
8754
  exports.UpdateConfig = $430e3eda76fa4d5f$export$bf1548ba7e61c17f;
6688
8755
  exports.WalletReact = $89d55ace0f8f1c07$export$ceaac94f34dba154;
6689
- exports.erc20 = erc20;
6690
- exports.erc721permissionedmintable = erc721permissionedmintable;
6691
8756
  exports.module = module$1;