@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.js CHANGED
@@ -2,12 +2,11 @@ import globalAxios from 'axios';
2
2
  import { ImmutableX, Config, generateLegacyStarkPrivateKey, createStarkSigner, TransfersApi, OrdersApi, UsersApi, Contracts, TradesApi, ExchangesApi, WithdrawalsApi, MintsApi, DepositsApi, EncodingApi, TokensApi } from '@imtbl/core-sdk';
3
3
  export { createStarkSigner as imxClientCreateStarkSigner, generateLegacyStarkPrivateKey as imxClientGenerateLegacyStarkPrivateKey } from '@imtbl/core-sdk';
4
4
  import { UserManager } from 'oidc-client-ts';
5
- import { ethers, utils, Contract, BigNumber, constants } from 'ethers';
5
+ import { ethers, utils, Contract, BigNumber, constants, ContractFactory } from 'ethers';
6
6
  import { Magic } from 'magic-sdk';
7
7
  import { OpenIdExtension } from '@magic-ext/oidc';
8
8
  import BN from 'bn.js';
9
9
  import * as encUtils from 'enc-utils';
10
- import { ItemType, SEAPORT_CONTRACT_NAME, SEAPORT_CONTRACT_VERSION_V1_4, EIP_712_ORDER_TYPE, OrderType } from '@opensea/seaport-js/lib/constants';
11
10
  import FormData from 'form-data';
12
11
  import { Seaport as Seaport$1 } from '@opensea/seaport-js';
13
12
  import { parseUnits } from '@ethersproject/units';
@@ -46,17 +45,17 @@ class ImmutableConfiguration {
46
45
  */
47
46
  // Some imports not used depending on template conditions
48
47
  // @ts-ignore
49
- const BASE_PATH = "https://indexer-mr.dev.imtbl.com".replace(/\/+$/, "");
48
+ const BASE_PATH$1 = "https://indexer-mr.dev.imtbl.com".replace(/\/+$/, "");
50
49
  /**
51
50
  *
52
51
  * @export
53
52
  * @class BaseAPI
54
53
  */
55
- class BaseAPI {
54
+ let BaseAPI$1 = class BaseAPI {
56
55
  basePath;
57
56
  axios;
58
57
  configuration;
59
- constructor(configuration, basePath = BASE_PATH, axios = globalAxios) {
58
+ constructor(configuration, basePath = BASE_PATH$1, axios = globalAxios) {
60
59
  this.basePath = basePath;
61
60
  this.axios = axios;
62
61
  if (configuration) {
@@ -64,21 +63,21 @@ class BaseAPI {
64
63
  this.basePath = configuration.basePath || this.basePath;
65
64
  }
66
65
  }
67
- }
66
+ };
68
67
  /**
69
68
  *
70
69
  * @export
71
70
  * @class RequiredError
72
71
  * @extends {Error}
73
72
  */
74
- class RequiredError extends Error {
73
+ let RequiredError$1 = class RequiredError extends Error {
75
74
  field;
76
75
  name = "RequiredError";
77
76
  constructor(field, msg) {
78
77
  super(msg);
79
78
  this.field = field;
80
79
  }
81
- }
80
+ };
82
81
 
83
82
  /* tslint:disable */
84
83
  /* eslint-disable */
@@ -97,24 +96,24 @@ class RequiredError extends Error {
97
96
  *
98
97
  * @export
99
98
  */
100
- const DUMMY_BASE_URL = 'https://example.com';
99
+ const DUMMY_BASE_URL$1 = 'https://example.com';
101
100
  /**
102
101
  *
103
102
  * @throws {RequiredError}
104
103
  * @export
105
104
  */
106
- const assertParamExists = function (functionName, paramName, paramValue) {
105
+ const assertParamExists$1 = function (functionName, paramName, paramValue) {
107
106
  if (paramValue === null || paramValue === undefined) {
108
- throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
107
+ throw new RequiredError$1(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
109
108
  }
110
109
  };
111
- function setFlattenedQueryParams(urlSearchParams, parameter, key = "") {
110
+ function setFlattenedQueryParams$1(urlSearchParams, parameter, key = "") {
112
111
  if (typeof parameter === "object") {
113
112
  if (Array.isArray(parameter)) {
114
- parameter.forEach(item => setFlattenedQueryParams(urlSearchParams, item, key));
113
+ parameter.forEach(item => setFlattenedQueryParams$1(urlSearchParams, item, key));
115
114
  }
116
115
  else {
117
- Object.keys(parameter).forEach(currentKey => setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`));
116
+ Object.keys(parameter).forEach(currentKey => setFlattenedQueryParams$1(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`));
118
117
  }
119
118
  }
120
119
  else {
@@ -130,23 +129,23 @@ function setFlattenedQueryParams(urlSearchParams, parameter, key = "") {
130
129
  *
131
130
  * @export
132
131
  */
133
- const setSearchParams = function (url, ...objects) {
132
+ const setSearchParams$1 = function (url, ...objects) {
134
133
  const searchParams = new URLSearchParams(url.search);
135
- setFlattenedQueryParams(searchParams, objects);
134
+ setFlattenedQueryParams$1(searchParams, objects);
136
135
  url.search = searchParams.toString();
137
136
  };
138
137
  /**
139
138
  *
140
139
  * @export
141
140
  */
142
- const toPathString = function (url) {
141
+ const toPathString$1 = function (url) {
143
142
  return url.pathname + url.search + url.hash;
144
143
  };
145
144
  /**
146
145
  *
147
146
  * @export
148
147
  */
149
- const createRequestFunction = function (axiosArgs, globalAxios, BASE_PATH, configuration) {
148
+ const createRequestFunction$1 = function (axiosArgs, globalAxios, BASE_PATH, configuration) {
150
149
  return (axios = globalAxios, basePath = BASE_PATH) => {
151
150
  const axiosRequestArgs = { ...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url };
152
151
  return axios.request(axiosRequestArgs);
@@ -182,14 +181,14 @@ const ActivitiesApiAxiosParamCreator = function (configuration) {
182
181
  */
183
182
  getActivity: async (chainName, activityId, options = {}) => {
184
183
  // verify required parameter 'chainName' is not null or undefined
185
- assertParamExists('getActivity', 'chainName', chainName);
184
+ assertParamExists$1('getActivity', 'chainName', chainName);
186
185
  // verify required parameter 'activityId' is not null or undefined
187
- assertParamExists('getActivity', 'activityId', activityId);
186
+ assertParamExists$1('getActivity', 'activityId', activityId);
188
187
  const localVarPath = `/v1/chains/{chain_name}/activities/{activity_id}`
189
188
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)))
190
189
  .replace(`{${"activity_id"}}`, encodeURIComponent(String(activityId)));
191
190
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
192
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
191
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
193
192
  let baseOptions;
194
193
  if (configuration) {
195
194
  baseOptions = configuration.baseOptions;
@@ -197,11 +196,11 @@ const ActivitiesApiAxiosParamCreator = function (configuration) {
197
196
  const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
198
197
  const localVarHeaderParameter = {};
199
198
  const localVarQueryParameter = {};
200
- setSearchParams(localVarUrlObj, localVarQueryParameter);
199
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
201
200
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
202
201
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
203
202
  return {
204
- url: toPathString(localVarUrlObj),
203
+ url: toPathString$1(localVarUrlObj),
205
204
  options: localVarRequestOptions,
206
205
  };
207
206
  },
@@ -223,11 +222,11 @@ const ActivitiesApiAxiosParamCreator = function (configuration) {
223
222
  */
224
223
  listActivities: async (chainName, contractAddress, tokenId, accountAddress, activityType, fromIndexedAt, toIndexedAt, transactionHash, pageCursor, pageSize, options = {}) => {
225
224
  // verify required parameter 'chainName' is not null or undefined
226
- assertParamExists('listActivities', 'chainName', chainName);
225
+ assertParamExists$1('listActivities', 'chainName', chainName);
227
226
  const localVarPath = `/v1/chains/{chain_name}/activities`
228
227
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
229
228
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
230
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
229
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
231
230
  let baseOptions;
232
231
  if (configuration) {
233
232
  baseOptions = configuration.baseOptions;
@@ -266,11 +265,11 @@ const ActivitiesApiAxiosParamCreator = function (configuration) {
266
265
  if (pageSize !== undefined) {
267
266
  localVarQueryParameter['page_size'] = pageSize;
268
267
  }
269
- setSearchParams(localVarUrlObj, localVarQueryParameter);
268
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
270
269
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
271
270
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
272
271
  return {
273
- url: toPathString(localVarUrlObj),
272
+ url: toPathString$1(localVarUrlObj),
274
273
  options: localVarRequestOptions,
275
274
  };
276
275
  },
@@ -293,7 +292,7 @@ const ActivitiesApiFp = function (configuration) {
293
292
  */
294
293
  async getActivity(chainName, activityId, options) {
295
294
  const localVarAxiosArgs = await localVarAxiosParamCreator.getActivity(chainName, activityId, options);
296
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
295
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
297
296
  },
298
297
  /**
299
298
  * List all activities
@@ -313,7 +312,7 @@ const ActivitiesApiFp = function (configuration) {
313
312
  */
314
313
  async listActivities(chainName, contractAddress, tokenId, accountAddress, activityType, fromIndexedAt, toIndexedAt, transactionHash, pageCursor, pageSize, options) {
315
314
  const localVarAxiosArgs = await localVarAxiosParamCreator.listActivities(chainName, contractAddress, tokenId, accountAddress, activityType, fromIndexedAt, toIndexedAt, transactionHash, pageCursor, pageSize, 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
  };
@@ -323,7 +322,7 @@ const ActivitiesApiFp = function (configuration) {
323
322
  * @class ActivitiesApi
324
323
  * @extends {BaseAPI}
325
324
  */
326
- class ActivitiesApi extends BaseAPI {
325
+ class ActivitiesApi extends BaseAPI$1 {
327
326
  /**
328
327
  * Get a single activity by ID
329
328
  * @summary Get a single activity by ID
@@ -378,7 +377,7 @@ const ChainsApiAxiosParamCreator = function (configuration) {
378
377
  listChains: async (pageCursor, pageSize, options = {}) => {
379
378
  const localVarPath = `/v1/chains`;
380
379
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
381
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
380
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
382
381
  let baseOptions;
383
382
  if (configuration) {
384
383
  baseOptions = configuration.baseOptions;
@@ -392,11 +391,11 @@ const ChainsApiAxiosParamCreator = function (configuration) {
392
391
  if (pageSize !== undefined) {
393
392
  localVarQueryParameter['page_size'] = pageSize;
394
393
  }
395
- setSearchParams(localVarUrlObj, localVarQueryParameter);
394
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
396
395
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
397
396
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
398
397
  return {
399
- url: toPathString(localVarUrlObj),
398
+ url: toPathString$1(localVarUrlObj),
400
399
  options: localVarRequestOptions,
401
400
  };
402
401
  },
@@ -419,7 +418,7 @@ const ChainsApiFp = function (configuration) {
419
418
  */
420
419
  async listChains(pageCursor, pageSize, options) {
421
420
  const localVarAxiosArgs = await localVarAxiosParamCreator.listChains(pageCursor, pageSize, options);
422
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
421
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
423
422
  },
424
423
  };
425
424
  };
@@ -429,7 +428,7 @@ const ChainsApiFp = function (configuration) {
429
428
  * @class ChainsApi
430
429
  * @extends {BaseAPI}
431
430
  */
432
- class ChainsApi extends BaseAPI {
431
+ class ChainsApi extends BaseAPI$1 {
433
432
  /**
434
433
  * List supported chains
435
434
  * @summary List supported chains
@@ -472,14 +471,14 @@ const CollectionsApiAxiosParamCreator = function (configuration) {
472
471
  */
473
472
  getCollection: async (contractAddress, chainName, options = {}) => {
474
473
  // verify required parameter 'contractAddress' is not null or undefined
475
- assertParamExists('getCollection', 'contractAddress', contractAddress);
474
+ assertParamExists$1('getCollection', 'contractAddress', contractAddress);
476
475
  // verify required parameter 'chainName' is not null or undefined
477
- assertParamExists('getCollection', 'chainName', chainName);
476
+ assertParamExists$1('getCollection', 'chainName', chainName);
478
477
  const localVarPath = `/v1/chains/{chain_name}/collections/{contract_address}`
479
478
  .replace(`{${"contract_address"}}`, encodeURIComponent(String(contractAddress)))
480
479
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
481
480
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
482
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
481
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
483
482
  let baseOptions;
484
483
  if (configuration) {
485
484
  baseOptions = configuration.baseOptions;
@@ -487,11 +486,11 @@ const CollectionsApiAxiosParamCreator = function (configuration) {
487
486
  const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
488
487
  const localVarHeaderParameter = {};
489
488
  const localVarQueryParameter = {};
490
- setSearchParams(localVarUrlObj, localVarQueryParameter);
489
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
491
490
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
492
491
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
493
492
  return {
494
- url: toPathString(localVarUrlObj),
493
+ url: toPathString$1(localVarUrlObj),
495
494
  options: localVarRequestOptions,
496
495
  };
497
496
  },
@@ -506,11 +505,11 @@ const CollectionsApiAxiosParamCreator = function (configuration) {
506
505
  */
507
506
  listCollections: async (chainName, pageCursor, pageSize, options = {}) => {
508
507
  // verify required parameter 'chainName' is not null or undefined
509
- assertParamExists('listCollections', 'chainName', chainName);
508
+ assertParamExists$1('listCollections', 'chainName', chainName);
510
509
  const localVarPath = `/v1/chains/{chain_name}/collections`
511
510
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
512
511
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
513
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
512
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
514
513
  let baseOptions;
515
514
  if (configuration) {
516
515
  baseOptions = configuration.baseOptions;
@@ -524,11 +523,11 @@ const CollectionsApiAxiosParamCreator = function (configuration) {
524
523
  if (pageSize !== undefined) {
525
524
  localVarQueryParameter['page_size'] = pageSize;
526
525
  }
527
- setSearchParams(localVarUrlObj, localVarQueryParameter);
526
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
528
527
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
529
528
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
530
529
  return {
531
- url: toPathString(localVarUrlObj),
530
+ url: toPathString$1(localVarUrlObj),
532
531
  options: localVarRequestOptions,
533
532
  };
534
533
  },
@@ -551,7 +550,7 @@ const CollectionsApiFp = function (configuration) {
551
550
  */
552
551
  async getCollection(contractAddress, chainName, options) {
553
552
  const localVarAxiosArgs = await localVarAxiosParamCreator.getCollection(contractAddress, chainName, options);
554
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
553
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
555
554
  },
556
555
  /**
557
556
  * List all collections
@@ -564,7 +563,7 @@ const CollectionsApiFp = function (configuration) {
564
563
  */
565
564
  async listCollections(chainName, pageCursor, pageSize, options) {
566
565
  const localVarAxiosArgs = await localVarAxiosParamCreator.listCollections(chainName, pageCursor, pageSize, options);
567
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
566
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
568
567
  },
569
568
  };
570
569
  };
@@ -574,7 +573,7 @@ const CollectionsApiFp = function (configuration) {
574
573
  * @class CollectionsApi
575
574
  * @extends {BaseAPI}
576
575
  */
577
- class CollectionsApi extends BaseAPI {
576
+ class CollectionsApi extends BaseAPI$1 {
578
577
  /**
579
578
  * Get collection by contract address
580
579
  * @summary Get collection by contract address
@@ -631,17 +630,17 @@ const NftOwnersApiAxiosParamCreator = function (configuration) {
631
630
  */
632
631
  listNFTOwners: async (contractAddress, tokenId, chainName, pageCursor, pageSize, options = {}) => {
633
632
  // verify required parameter 'contractAddress' is not null or undefined
634
- assertParamExists('listNFTOwners', 'contractAddress', contractAddress);
633
+ assertParamExists$1('listNFTOwners', 'contractAddress', contractAddress);
635
634
  // verify required parameter 'tokenId' is not null or undefined
636
- assertParamExists('listNFTOwners', 'tokenId', tokenId);
635
+ assertParamExists$1('listNFTOwners', 'tokenId', tokenId);
637
636
  // verify required parameter 'chainName' is not null or undefined
638
- assertParamExists('listNFTOwners', 'chainName', chainName);
637
+ assertParamExists$1('listNFTOwners', 'chainName', chainName);
639
638
  const localVarPath = `/v1/chains/{chain_name}/collections/{contract_address}/nfts/{token_id}/owners`
640
639
  .replace(`{${"contract_address"}}`, encodeURIComponent(String(contractAddress)))
641
640
  .replace(`{${"token_id"}}`, encodeURIComponent(String(tokenId)))
642
641
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
643
642
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
644
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
643
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
645
644
  let baseOptions;
646
645
  if (configuration) {
647
646
  baseOptions = configuration.baseOptions;
@@ -655,11 +654,11 @@ const NftOwnersApiAxiosParamCreator = function (configuration) {
655
654
  if (pageSize !== undefined) {
656
655
  localVarQueryParameter['page_size'] = pageSize;
657
656
  }
658
- setSearchParams(localVarUrlObj, localVarQueryParameter);
657
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
659
658
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
660
659
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
661
660
  return {
662
- url: toPathString(localVarUrlObj),
661
+ url: toPathString$1(localVarUrlObj),
663
662
  options: localVarRequestOptions,
664
663
  };
665
664
  },
@@ -685,7 +684,7 @@ const NftOwnersApiFp = function (configuration) {
685
684
  */
686
685
  async listNFTOwners(contractAddress, tokenId, chainName, pageCursor, pageSize, options) {
687
686
  const localVarAxiosArgs = await localVarAxiosParamCreator.listNFTOwners(contractAddress, tokenId, chainName, pageCursor, pageSize, options);
688
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
687
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
689
688
  },
690
689
  };
691
690
  };
@@ -695,7 +694,7 @@ const NftOwnersApiFp = function (configuration) {
695
694
  * @class NftOwnersApi
696
695
  * @extends {BaseAPI}
697
696
  */
698
- class NftOwnersApi extends BaseAPI {
697
+ class NftOwnersApi extends BaseAPI$1 {
699
698
  /**
700
699
  * List NFT owners by token ID
701
700
  * @summary List NFT owners by token ID
@@ -739,17 +738,17 @@ const NftsApiAxiosParamCreator = function (configuration) {
739
738
  */
740
739
  getNFT: async (contractAddress, tokenId, chainName, options = {}) => {
741
740
  // verify required parameter 'contractAddress' is not null or undefined
742
- assertParamExists('getNFT', 'contractAddress', contractAddress);
741
+ assertParamExists$1('getNFT', 'contractAddress', contractAddress);
743
742
  // verify required parameter 'tokenId' is not null or undefined
744
- assertParamExists('getNFT', 'tokenId', tokenId);
743
+ assertParamExists$1('getNFT', 'tokenId', tokenId);
745
744
  // verify required parameter 'chainName' is not null or undefined
746
- assertParamExists('getNFT', 'chainName', chainName);
745
+ assertParamExists$1('getNFT', 'chainName', chainName);
747
746
  const localVarPath = `/v1/chains/{chain_name}/collections/{contract_address}/nfts/{token_id}`
748
747
  .replace(`{${"contract_address"}}`, encodeURIComponent(String(contractAddress)))
749
748
  .replace(`{${"token_id"}}`, encodeURIComponent(String(tokenId)))
750
749
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
751
750
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
752
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
751
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
753
752
  let baseOptions;
754
753
  if (configuration) {
755
754
  baseOptions = configuration.baseOptions;
@@ -757,11 +756,11 @@ const NftsApiAxiosParamCreator = function (configuration) {
757
756
  const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
758
757
  const localVarHeaderParameter = {};
759
758
  const localVarQueryParameter = {};
760
- setSearchParams(localVarUrlObj, localVarQueryParameter);
759
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
761
760
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
762
761
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
763
762
  return {
764
- url: toPathString(localVarUrlObj),
763
+ url: toPathString$1(localVarUrlObj),
765
764
  options: localVarRequestOptions,
766
765
  };
767
766
  },
@@ -777,14 +776,14 @@ const NftsApiAxiosParamCreator = function (configuration) {
777
776
  */
778
777
  listNFTs: async (contractAddress, chainName, pageCursor, pageSize, options = {}) => {
779
778
  // verify required parameter 'contractAddress' is not null or undefined
780
- assertParamExists('listNFTs', 'contractAddress', contractAddress);
779
+ assertParamExists$1('listNFTs', 'contractAddress', contractAddress);
781
780
  // verify required parameter 'chainName' is not null or undefined
782
- assertParamExists('listNFTs', 'chainName', chainName);
781
+ assertParamExists$1('listNFTs', 'chainName', chainName);
783
782
  const localVarPath = `/v1/chains/{chain_name}/collections/{contract_address}/nfts`
784
783
  .replace(`{${"contract_address"}}`, encodeURIComponent(String(contractAddress)))
785
784
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
786
785
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
787
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
786
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
788
787
  let baseOptions;
789
788
  if (configuration) {
790
789
  baseOptions = configuration.baseOptions;
@@ -798,11 +797,11 @@ const NftsApiAxiosParamCreator = function (configuration) {
798
797
  if (pageSize !== undefined) {
799
798
  localVarQueryParameter['page_size'] = pageSize;
800
799
  }
801
- setSearchParams(localVarUrlObj, localVarQueryParameter);
800
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
802
801
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
803
802
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
804
803
  return {
805
- url: toPathString(localVarUrlObj),
804
+ url: toPathString$1(localVarUrlObj),
806
805
  options: localVarRequestOptions,
807
806
  };
808
807
  },
@@ -819,14 +818,14 @@ const NftsApiAxiosParamCreator = function (configuration) {
819
818
  */
820
819
  listNFTsByAccountAddress: async (accountAddress, chainName, contractAddress, pageCursor, pageSize, options = {}) => {
821
820
  // verify required parameter 'accountAddress' is not null or undefined
822
- assertParamExists('listNFTsByAccountAddress', 'accountAddress', accountAddress);
821
+ assertParamExists$1('listNFTsByAccountAddress', 'accountAddress', accountAddress);
823
822
  // verify required parameter 'chainName' is not null or undefined
824
- assertParamExists('listNFTsByAccountAddress', 'chainName', chainName);
823
+ assertParamExists$1('listNFTsByAccountAddress', 'chainName', chainName);
825
824
  const localVarPath = `/v1/chains/{chain_name}/accounts/{account_address}/nfts`
826
825
  .replace(`{${"account_address"}}`, encodeURIComponent(String(accountAddress)))
827
826
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
828
827
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
829
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
828
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
830
829
  let baseOptions;
831
830
  if (configuration) {
832
831
  baseOptions = configuration.baseOptions;
@@ -843,11 +842,11 @@ const NftsApiAxiosParamCreator = function (configuration) {
843
842
  if (pageSize !== undefined) {
844
843
  localVarQueryParameter['page_size'] = pageSize;
845
844
  }
846
- setSearchParams(localVarUrlObj, localVarQueryParameter);
845
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
847
846
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
848
847
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
849
848
  return {
850
- url: toPathString(localVarUrlObj),
849
+ url: toPathString$1(localVarUrlObj),
851
850
  options: localVarRequestOptions,
852
851
  };
853
852
  },
@@ -871,7 +870,7 @@ const NftsApiFp = function (configuration) {
871
870
  */
872
871
  async getNFT(contractAddress, tokenId, chainName, options) {
873
872
  const localVarAxiosArgs = await localVarAxiosParamCreator.getNFT(contractAddress, tokenId, chainName, options);
874
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
873
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
875
874
  },
876
875
  /**
877
876
  * List NFTs by contract address
@@ -885,7 +884,7 @@ const NftsApiFp = function (configuration) {
885
884
  */
886
885
  async listNFTs(contractAddress, chainName, pageCursor, pageSize, options) {
887
886
  const localVarAxiosArgs = await localVarAxiosParamCreator.listNFTs(contractAddress, chainName, pageCursor, pageSize, options);
888
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
887
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
889
888
  },
890
889
  /**
891
890
  * List NFTs by account address
@@ -900,7 +899,7 @@ const NftsApiFp = function (configuration) {
900
899
  */
901
900
  async listNFTsByAccountAddress(accountAddress, chainName, contractAddress, pageCursor, pageSize, options) {
902
901
  const localVarAxiosArgs = await localVarAxiosParamCreator.listNFTsByAccountAddress(accountAddress, chainName, contractAddress, pageCursor, pageSize, options);
903
- return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
902
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios, BASE_PATH$1, configuration);
904
903
  },
905
904
  };
906
905
  };
@@ -910,7 +909,7 @@ const NftsApiFp = function (configuration) {
910
909
  * @class NftsApi
911
910
  * @extends {BaseAPI}
912
911
  */
913
- class NftsApi extends BaseAPI {
912
+ class NftsApi extends BaseAPI$1 {
914
913
  /**
915
914
  * Get NFT by token ID
916
915
  * @summary Get NFT by token ID
@@ -959,7 +958,7 @@ class NftsApi extends BaseAPI {
959
958
  * https://openapi-generator.tech
960
959
  * Do not edit the class manually.
961
960
  */
962
- class Configuration {
961
+ let Configuration$1 = class Configuration {
963
962
  /**
964
963
  * parameter for apiKey security
965
964
  * @param name security name
@@ -1032,7 +1031,7 @@ class Configuration {
1032
1031
  const jsonMime = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
1033
1032
  return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
1034
1033
  }
1035
- }
1034
+ };
1036
1035
 
1037
1036
  /**
1038
1037
  * Custom Error class that is returned from the API when a request fails
@@ -1053,7 +1052,7 @@ class APIError extends Error {
1053
1052
 
1054
1053
  /* eslint-disable implicit-arrow-linebreak */
1055
1054
  const defaultHeaders = {
1056
- sdkVersion: 'ts-immutable-sdk-multi-rollup-api-client-0.1.8-alpha',
1055
+ sdkVersion: 'ts-immutable-sdk-multi-rollup-api-client-0.1.8-alpha.2',
1057
1056
  };
1058
1057
  /**
1059
1058
  * createAPIConfiguration to create a custom APIConfiguration
@@ -1068,7 +1067,7 @@ const createAPIConfiguration = ({ basePath, headers: baseHeaders, }) => {
1068
1067
  basePath,
1069
1068
  baseOptions: { headers },
1070
1069
  };
1071
- return new Configuration(configParams);
1070
+ return new Configuration$1(configParams);
1072
1071
  };
1073
1072
  const production$1 = () => createAPIConfiguration({
1074
1073
  basePath: 'https://indexer-mr.dev.imtbl.com/v1', // TODO update before mainnet release
@@ -1289,7 +1288,7 @@ const createImmutableXConfiguration = ({ basePath, chainID, coreContractAddress,
1289
1288
  chainID,
1290
1289
  coreContractAddress,
1291
1290
  registrationContractAddress,
1292
- sdkVersion: 'ts-immutable-sdk-0.1.8-alpha',
1291
+ sdkVersion: 'ts-immutable-sdk-0.1.8-alpha.2',
1293
1292
  });
1294
1293
  /**
1295
1294
  * Sets `sdkVersion` at the time of build
@@ -1864,186 +1863,606 @@ function convertToSignableToken(token) {
1864
1863
  }
1865
1864
  }
1866
1865
 
1867
- var PassportErrorType;
1868
- (function (PassportErrorType) {
1869
- PassportErrorType["AUTHENTICATION_ERROR"] = "AUTHENTICATION_ERROR";
1870
- PassportErrorType["INVALID_CONFIGURATION"] = "INVALID_CONFIGURATION";
1871
- PassportErrorType["WALLET_CONNECTION_ERROR"] = "WALLET_CONNECTION_ERROR";
1872
- PassportErrorType["NOT_LOGGED_IN_ERROR"] = "NOT_LOGGED_IN_ERROR";
1873
- PassportErrorType["SILENT_LOGIN_ERROR"] = "SILENT_LOGIN_ERROR";
1874
- PassportErrorType["REFRESH_TOKEN_ERROR"] = "REFRESH_TOKEN_ERROR";
1875
- PassportErrorType["USER_REGISTRATION_ERROR"] = "USER_REGISTRATION_ERROR";
1876
- PassportErrorType["LOGOUT_ERROR"] = "LOGOUT_ERROR";
1877
- PassportErrorType["TRANSFER_ERROR"] = "TRANSFER_ERROR";
1878
- PassportErrorType["CREATE_ORDER_ERROR"] = "CREATE_ORDER_ERROR";
1879
- PassportErrorType["CANCEL_ORDER_ERROR"] = "CANCEL_ORDER_ERROR";
1880
- PassportErrorType["EXCHANGE_TRANSFER_ERROR"] = "EXCHANGE_TRANSFER_ERROR";
1881
- PassportErrorType["CREATE_TRADE_ERROR"] = "CREATE_TRADE_ERROR";
1882
- PassportErrorType["OPERATION_NOT_SUPPORTED_ERROR"] = "OPERATION_NOT_SUPPORTED_ERROR";
1883
- })(PassportErrorType || (PassportErrorType = {}));
1884
- class PassportError extends Error {
1885
- type;
1886
- constructor(message, type) {
1887
- super(message);
1888
- this.type = type;
1866
+ /* tslint:disable */
1867
+ /* eslint-disable */
1868
+ /**
1869
+ * Swagger Guardian
1870
+ * Guardian API
1871
+ *
1872
+ * The version of the OpenAPI document: 1.0.0
1873
+ * Contact: support@immutable.com
1874
+ *
1875
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1876
+ * https://openapi-generator.tech
1877
+ * Do not edit the class manually.
1878
+ */
1879
+ const BASE_PATH = "http://guardian.sandbox.imtbl.com".replace(/\/+$/, "");
1880
+ /**
1881
+ *
1882
+ * @export
1883
+ * @class BaseAPI
1884
+ */
1885
+ class BaseAPI {
1886
+ basePath;
1887
+ axios;
1888
+ configuration;
1889
+ constructor(configuration, basePath = BASE_PATH, axios = globalAxios) {
1890
+ this.basePath = basePath;
1891
+ this.axios = axios;
1892
+ if (configuration) {
1893
+ this.configuration = configuration;
1894
+ this.basePath = configuration.basePath || this.basePath;
1895
+ }
1889
1896
  }
1890
1897
  }
1891
- const withPassportError = async (fn, customErrorType) => {
1892
- try {
1893
- return await fn();
1898
+ /**
1899
+ *
1900
+ * @export
1901
+ * @class RequiredError
1902
+ * @extends {Error}
1903
+ */
1904
+ class RequiredError extends Error {
1905
+ field;
1906
+ constructor(field, msg) {
1907
+ super(msg);
1908
+ this.field = field;
1909
+ this.name = "RequiredError";
1894
1910
  }
1895
- catch (error) {
1896
- const errorMessage = `${customErrorType}: ${error.message}` || 'UnknownError';
1897
- throw new PassportError(errorMessage, customErrorType);
1911
+ }
1912
+
1913
+ /* tslint:disable */
1914
+ /* eslint-disable */
1915
+ /**
1916
+ * Swagger Guardian
1917
+ * Guardian API
1918
+ *
1919
+ * The version of the OpenAPI document: 1.0.0
1920
+ * Contact: support@immutable.com
1921
+ *
1922
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1923
+ * https://openapi-generator.tech
1924
+ * Do not edit the class manually.
1925
+ */
1926
+ /**
1927
+ *
1928
+ * @export
1929
+ */
1930
+ const DUMMY_BASE_URL = 'https://example.com';
1931
+ /**
1932
+ *
1933
+ * @throws {RequiredError}
1934
+ * @export
1935
+ */
1936
+ const assertParamExists = function (functionName, paramName, paramValue) {
1937
+ if (paramValue === null || paramValue === undefined) {
1938
+ throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
1898
1939
  }
1899
1940
  };
1900
-
1901
- const POLL_INTERVAL = 1 * 1000; // every 1 second
1902
- const MAX_RETRIES = 3;
1903
- const wait = (ms) => new Promise((resolve) => {
1904
- setTimeout(() => resolve(), ms);
1905
- });
1906
- const retryWithDelay = async (fn, options) => {
1907
- const { retries = MAX_RETRIES, interval = POLL_INTERVAL, finalErr = Error('Retry failed'), } = options || {};
1908
- try {
1909
- return await fn();
1941
+ /**
1942
+ *
1943
+ * @export
1944
+ */
1945
+ const setBearerAuthToObject = async function (object, configuration) {
1946
+ if (configuration && configuration.accessToken) {
1947
+ const accessToken = typeof configuration.accessToken === 'function'
1948
+ ? await configuration.accessToken()
1949
+ : await configuration.accessToken;
1950
+ object["Authorization"] = "Bearer " + accessToken;
1910
1951
  }
1911
- catch (err) {
1912
- if (retries <= 0) {
1913
- return Promise.reject(finalErr);
1952
+ };
1953
+ function setFlattenedQueryParams(urlSearchParams, parameter, key = "") {
1954
+ if (parameter == null)
1955
+ return;
1956
+ if (typeof parameter === "object") {
1957
+ if (Array.isArray(parameter)) {
1958
+ parameter.forEach(item => setFlattenedQueryParams(urlSearchParams, item, key));
1959
+ }
1960
+ else {
1961
+ Object.keys(parameter).forEach(currentKey => setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`));
1914
1962
  }
1915
- await wait(interval);
1916
- return retryWithDelay(fn, { retries: retries - 1, finalErr });
1917
1963
  }
1918
- };
1919
-
1920
- const getAuthConfiguration = ({ oidcConfiguration, authenticationDomain, }) => {
1921
- const baseConfiguration = {
1922
- authority: authenticationDomain,
1923
- redirect_uri: oidcConfiguration.redirectUri,
1924
- popup_redirect_uri: oidcConfiguration.redirectUri,
1925
- client_id: oidcConfiguration.clientId,
1926
- metadata: {
1927
- authorization_endpoint: `${authenticationDomain}/authorize`,
1928
- token_endpoint: `${authenticationDomain}/oauth/token`,
1929
- userinfo_endpoint: `${authenticationDomain}/userinfo`,
1930
- end_session_endpoint: `${authenticationDomain}/v2/logout`
1931
- + `?returnTo=${encodeURIComponent(oidcConfiguration.logoutRedirectUri)}`
1932
- + `&client_id=${oidcConfiguration.clientId}`,
1933
- },
1934
- mergeClaims: true,
1935
- loadUserInfo: true,
1936
- scope: oidcConfiguration.scope,
1937
- };
1938
- if (oidcConfiguration.audience) {
1939
- baseConfiguration.extraQueryParams = {
1940
- audience: oidcConfiguration.audience,
1941
- };
1964
+ else {
1965
+ if (urlSearchParams.has(key)) {
1966
+ urlSearchParams.append(key, parameter);
1967
+ }
1968
+ else {
1969
+ urlSearchParams.set(key, parameter);
1970
+ }
1942
1971
  }
1943
- return baseConfiguration;
1972
+ }
1973
+ /**
1974
+ *
1975
+ * @export
1976
+ */
1977
+ const setSearchParams = function (url, ...objects) {
1978
+ const searchParams = new URLSearchParams(url.search);
1979
+ setFlattenedQueryParams(searchParams, objects);
1980
+ url.search = searchParams.toString();
1944
1981
  };
1945
- class AuthManager {
1946
- userManager;
1947
- config;
1948
- constructor(config) {
1949
- this.config = config;
1950
- this.userManager = new UserManager(getAuthConfiguration(config));
1951
- }
1952
- static mapOidcUserToDomainModel = (oidcUser) => {
1953
- const passport = oidcUser.profile?.passport;
1954
- return {
1955
- expired: oidcUser.expired,
1956
- idToken: oidcUser.id_token,
1957
- accessToken: oidcUser.access_token,
1958
- refreshToken: oidcUser.refresh_token,
1959
- profile: {
1960
- sub: oidcUser.profile.sub,
1961
- email: oidcUser.profile.email,
1962
- nickname: oidcUser.profile.nickname,
1963
- },
1964
- etherKey: passport?.ether_key || '',
1965
- };
1982
+ /**
1983
+ *
1984
+ * @export
1985
+ */
1986
+ const toPathString = function (url) {
1987
+ return url.pathname + url.search + url.hash;
1988
+ };
1989
+ /**
1990
+ *
1991
+ * @export
1992
+ */
1993
+ const createRequestFunction = function (axiosArgs, globalAxios, BASE_PATH, configuration) {
1994
+ return (axios = globalAxios, basePath = BASE_PATH) => {
1995
+ const axiosRequestArgs = { ...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url };
1996
+ return axios.request(axiosRequestArgs);
1966
1997
  };
1967
- async login() {
1968
- return withPassportError(async () => {
1969
- const popupWindowFeatures = { width: 410, height: 450 };
1970
- const oidcUser = await this.userManager.signinPopup({
1971
- popupWindowFeatures,
1972
- });
1973
- return AuthManager.mapOidcUserToDomainModel(oidcUser);
1974
- }, PassportErrorType.AUTHENTICATION_ERROR);
1975
- }
1976
- async loginCallback() {
1977
- return withPassportError(async () => this.userManager.signinPopupCallback(), PassportErrorType.AUTHENTICATION_ERROR);
1978
- }
1979
- async logout() {
1980
- return withPassportError(async () => this.userManager.signoutRedirect(), PassportErrorType.LOGOUT_ERROR);
1981
- }
1982
- async loginSilent() {
1983
- return withPassportError(async () => {
1984
- const existedUser = await this.getUser();
1985
- if (!existedUser) {
1986
- return null;
1987
- }
1988
- const oidcUser = await this.userManager.signinSilent();
1989
- if (!oidcUser) {
1990
- return null;
1998
+ };
1999
+
2000
+ /* tslint:disable */
2001
+ /* eslint-disable */
2002
+ /**
2003
+ * Swagger Guardian
2004
+ * Guardian API
2005
+ *
2006
+ * The version of the OpenAPI document: 1.0.0
2007
+ * Contact: support@immutable.com
2008
+ *
2009
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2010
+ * https://openapi-generator.tech
2011
+ * Do not edit the class manually.
2012
+ */
2013
+ /**
2014
+ * StarkexTransactionsApi - axios parameter creator
2015
+ * @export
2016
+ */
2017
+ const StarkexTransactionsApiAxiosParamCreator = function (configuration) {
2018
+ return {
2019
+ /**
2020
+ * Check if it is a valid transaction by payload hash
2021
+ * @summary Evaluate if it is an valid transaction
2022
+ * @param {string} payloadHash Hash for the payload
2023
+ * @param {*} [options] Override http request option.
2024
+ * @throws {RequiredError}
2025
+ */
2026
+ evaluateStarkexTransaction: async (payloadHash, options = {}) => {
2027
+ // verify required parameter 'payloadHash' is not null or undefined
2028
+ assertParamExists('evaluateStarkexTransaction', 'payloadHash', payloadHash);
2029
+ const localVarPath = `/guardian/v1/starkex/evaluate/{payloadHash}`
2030
+ .replace(`{${"payloadHash"}}`, encodeURIComponent(String(payloadHash)));
2031
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2032
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2033
+ let baseOptions;
2034
+ if (configuration) {
2035
+ baseOptions = configuration.baseOptions;
1991
2036
  }
1992
- return AuthManager.mapOidcUserToDomainModel(oidcUser);
1993
- }, PassportErrorType.SILENT_LOGIN_ERROR);
2037
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
2038
+ const localVarHeaderParameter = {};
2039
+ const localVarQueryParameter = {};
2040
+ // authentication BearerAuth required
2041
+ // http bearer authentication required
2042
+ await setBearerAuthToObject(localVarHeaderParameter, configuration);
2043
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2044
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2045
+ localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
2046
+ return {
2047
+ url: toPathString(localVarUrlObj),
2048
+ options: localVarRequestOptions,
2049
+ };
2050
+ },
2051
+ };
2052
+ };
2053
+ /**
2054
+ * StarkexTransactionsApi - functional programming interface
2055
+ * @export
2056
+ */
2057
+ const StarkexTransactionsApiFp = function (configuration) {
2058
+ const localVarAxiosParamCreator = StarkexTransactionsApiAxiosParamCreator(configuration);
2059
+ return {
2060
+ /**
2061
+ * Check if it is a valid transaction by payload hash
2062
+ * @summary Evaluate if it is an valid transaction
2063
+ * @param {string} payloadHash Hash for the payload
2064
+ * @param {*} [options] Override http request option.
2065
+ * @throws {RequiredError}
2066
+ */
2067
+ async evaluateStarkexTransaction(payloadHash, options) {
2068
+ const localVarAxiosArgs = await localVarAxiosParamCreator.evaluateStarkexTransaction(payloadHash, options);
2069
+ return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
2070
+ },
2071
+ };
2072
+ };
2073
+ /**
2074
+ * StarkexTransactionsApi - object-oriented interface
2075
+ * @export
2076
+ * @class StarkexTransactionsApi
2077
+ * @extends {BaseAPI}
2078
+ */
2079
+ class StarkexTransactionsApi extends BaseAPI {
2080
+ /**
2081
+ * Check if it is a valid transaction by payload hash
2082
+ * @summary Evaluate if it is an valid transaction
2083
+ * @param {StarkexTransactionsApiEvaluateStarkexTransactionRequest} requestParameters Request parameters.
2084
+ * @param {*} [options] Override http request option.
2085
+ * @throws {RequiredError}
2086
+ * @memberof StarkexTransactionsApi
2087
+ */
2088
+ evaluateStarkexTransaction(requestParameters, options) {
2089
+ return StarkexTransactionsApiFp(this.configuration).evaluateStarkexTransaction(requestParameters.payloadHash, options).then((request) => request(this.axios, this.basePath));
1994
2090
  }
1995
- async getUser() {
1996
- return withPassportError(async () => {
1997
- const oidcUser = await this.userManager.getUser();
1998
- if (!oidcUser) {
1999
- return null;
2091
+ }
2092
+
2093
+ /* tslint:disable */
2094
+ /* eslint-disable */
2095
+ /**
2096
+ * Swagger Guardian
2097
+ * Guardian API
2098
+ *
2099
+ * The version of the OpenAPI document: 1.0.0
2100
+ * Contact: support@immutable.com
2101
+ *
2102
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2103
+ * https://openapi-generator.tech
2104
+ * Do not edit the class manually.
2105
+ */
2106
+ /**
2107
+ * TransactionsApi - axios parameter creator
2108
+ * @export
2109
+ */
2110
+ const TransactionsApiAxiosParamCreator = function (configuration) {
2111
+ return {
2112
+ /**
2113
+ * Get a transaction by payload hash
2114
+ * @summary Info for a specific transaction
2115
+ * @param {string} transactionID The id of the starkex transaction to retrieve
2116
+ * @param {string} chainType roll up type
2117
+ * @param {number} [chainID] ID of evm chain
2118
+ * @param {*} [options] Override http request option.
2119
+ * @throws {RequiredError}
2120
+ */
2121
+ getTransactionByID: async (transactionID, chainType, chainID, options = {}) => {
2122
+ // verify required parameter 'transactionID' is not null or undefined
2123
+ assertParamExists('getTransactionByID', 'transactionID', transactionID);
2124
+ // verify required parameter 'chainType' is not null or undefined
2125
+ assertParamExists('getTransactionByID', 'chainType', chainType);
2126
+ const localVarPath = `/guardian/v1/transactions/{transactionID}`
2127
+ .replace(`{${"transactionID"}}`, encodeURIComponent(String(transactionID)));
2128
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2129
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2130
+ let baseOptions;
2131
+ if (configuration) {
2132
+ baseOptions = configuration.baseOptions;
2000
2133
  }
2001
- return AuthManager.mapOidcUserToDomainModel(oidcUser);
2002
- }, PassportErrorType.NOT_LOGGED_IN_ERROR);
2003
- }
2004
- async requestRefreshTokenAfterRegistration() {
2005
- return withPassportError(async () => {
2006
- const updatedUser = await retryWithDelay(async () => {
2007
- const user = await this.userManager.signinSilent();
2008
- const passportMetadata = user?.profile?.passport;
2009
- const metadataExists = !!passportMetadata?.ether_key
2010
- && !!passportMetadata?.stark_key
2011
- && !!passportMetadata?.user_admin_key;
2012
- if (metadataExists) {
2013
- return user;
2014
- }
2015
- return Promise.reject(new Error('user wallet addresses not exist'));
2016
- });
2017
- if (!updatedUser) {
2018
- return null;
2134
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
2135
+ const localVarHeaderParameter = {};
2136
+ const localVarQueryParameter = {};
2137
+ // authentication BearerAuth required
2138
+ // http bearer authentication required
2139
+ await setBearerAuthToObject(localVarHeaderParameter, configuration);
2140
+ if (chainType !== undefined) {
2141
+ localVarQueryParameter['chainType'] = chainType;
2019
2142
  }
2020
- return AuthManager.mapOidcUserToDomainModel(updatedUser);
2021
- }, PassportErrorType.REFRESH_TOKEN_ERROR);
2143
+ if (chainID !== undefined) {
2144
+ localVarQueryParameter['chainID'] = chainID;
2145
+ }
2146
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2147
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2148
+ localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
2149
+ return {
2150
+ url: toPathString(localVarUrlObj),
2151
+ options: localVarRequestOptions,
2152
+ };
2153
+ },
2154
+ };
2155
+ };
2156
+ /**
2157
+ * TransactionsApi - functional programming interface
2158
+ * @export
2159
+ */
2160
+ const TransactionsApiFp = function (configuration) {
2161
+ const localVarAxiosParamCreator = TransactionsApiAxiosParamCreator(configuration);
2162
+ return {
2163
+ /**
2164
+ * Get a transaction by payload hash
2165
+ * @summary Info for a specific transaction
2166
+ * @param {string} transactionID The id of the starkex transaction to retrieve
2167
+ * @param {string} chainType roll up type
2168
+ * @param {number} [chainID] ID of evm chain
2169
+ * @param {*} [options] Override http request option.
2170
+ * @throws {RequiredError}
2171
+ */
2172
+ async getTransactionByID(transactionID, chainType, chainID, options) {
2173
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getTransactionByID(transactionID, chainType, chainID, options);
2174
+ return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
2175
+ },
2176
+ };
2177
+ };
2178
+ /**
2179
+ * TransactionsApi - object-oriented interface
2180
+ * @export
2181
+ * @class TransactionsApi
2182
+ * @extends {BaseAPI}
2183
+ */
2184
+ class TransactionsApi extends BaseAPI {
2185
+ /**
2186
+ * Get a transaction by payload hash
2187
+ * @summary Info for a specific transaction
2188
+ * @param {TransactionsApiGetTransactionByIDRequest} requestParameters Request parameters.
2189
+ * @param {*} [options] Override http request option.
2190
+ * @throws {RequiredError}
2191
+ * @memberof TransactionsApi
2192
+ */
2193
+ getTransactionByID(requestParameters, options) {
2194
+ return TransactionsApiFp(this.configuration).getTransactionByID(requestParameters.transactionID, requestParameters.chainType, requestParameters.chainID, options).then((request) => request(this.axios, this.basePath));
2022
2195
  }
2023
2196
  }
2024
2197
 
2025
- class MagicAdapter {
2026
- magicClient;
2027
- config;
2028
- constructor(config) {
2029
- this.config = config;
2030
- this.magicClient = new Magic(config.magicPublishableApiKey, {
2031
- network: config.network,
2032
- extensions: [new OpenIdExtension()],
2033
- });
2034
- }
2035
- async login(idToken) {
2036
- return withPassportError(async () => {
2037
- await this.magicClient.openid.loginWithOIDC({
2038
- jwt: idToken,
2039
- providerId: this.config.magicProviderId,
2040
- });
2041
- return new ethers.providers.Web3Provider(this.magicClient
2042
- .rpcProvider);
2043
- }, PassportErrorType.WALLET_CONNECTION_ERROR);
2198
+ /* tslint:disable */
2199
+ /* eslint-disable */
2200
+ /**
2201
+ * Swagger Guardian
2202
+ * Guardian API
2203
+ *
2204
+ * The version of the OpenAPI document: 1.0.0
2205
+ * Contact: support@immutable.com
2206
+ *
2207
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2208
+ * https://openapi-generator.tech
2209
+ * Do not edit the class manually.
2210
+ */
2211
+ class Configuration {
2212
+ /**
2213
+ * parameter for apiKey security
2214
+ * @param name security name
2215
+ * @memberof Configuration
2216
+ */
2217
+ apiKey;
2218
+ /**
2219
+ * parameter for basic security
2220
+ *
2221
+ * @type {string}
2222
+ * @memberof Configuration
2223
+ */
2224
+ username;
2225
+ /**
2226
+ * parameter for basic security
2227
+ *
2228
+ * @type {string}
2229
+ * @memberof Configuration
2230
+ */
2231
+ password;
2232
+ /**
2233
+ * parameter for oauth2 security
2234
+ * @param name security name
2235
+ * @param scopes oauth2 scope
2236
+ * @memberof Configuration
2237
+ */
2238
+ accessToken;
2239
+ /**
2240
+ * override base path
2241
+ *
2242
+ * @type {string}
2243
+ * @memberof Configuration
2244
+ */
2245
+ basePath;
2246
+ /**
2247
+ * base options for axios calls
2248
+ *
2249
+ * @type {any}
2250
+ * @memberof Configuration
2251
+ */
2252
+ baseOptions;
2253
+ /**
2254
+ * The FormData constructor that will be used to create multipart form data
2255
+ * requests. You can inject this here so that execution environments that
2256
+ * do not support the FormData class can still run the generated client.
2257
+ *
2258
+ * @type {new () => FormData}
2259
+ */
2260
+ formDataCtor;
2261
+ constructor(param = {}) {
2262
+ this.apiKey = param.apiKey;
2263
+ this.username = param.username;
2264
+ this.password = param.password;
2265
+ this.accessToken = param.accessToken;
2266
+ this.basePath = param.basePath;
2267
+ this.baseOptions = param.baseOptions;
2268
+ this.formDataCtor = param.formDataCtor;
2044
2269
  }
2045
- }
2046
-
2270
+ /**
2271
+ * Check if the given MIME is a JSON MIME.
2272
+ * JSON MIME examples:
2273
+ * application/json
2274
+ * application/json; charset=UTF8
2275
+ * APPLICATION/JSON
2276
+ * application/vnd.company+json
2277
+ * @param mime - MIME (Multipurpose Internet Mail Extensions)
2278
+ * @return True if the given MIME is JSON, false otherwise.
2279
+ */
2280
+ isJsonMime(mime) {
2281
+ const jsonMime = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
2282
+ return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
2283
+ }
2284
+ }
2285
+
2286
+ var PassportErrorType;
2287
+ (function (PassportErrorType) {
2288
+ PassportErrorType["AUTHENTICATION_ERROR"] = "AUTHENTICATION_ERROR";
2289
+ PassportErrorType["INVALID_CONFIGURATION"] = "INVALID_CONFIGURATION";
2290
+ PassportErrorType["WALLET_CONNECTION_ERROR"] = "WALLET_CONNECTION_ERROR";
2291
+ PassportErrorType["NOT_LOGGED_IN_ERROR"] = "NOT_LOGGED_IN_ERROR";
2292
+ PassportErrorType["SILENT_LOGIN_ERROR"] = "SILENT_LOGIN_ERROR";
2293
+ PassportErrorType["REFRESH_TOKEN_ERROR"] = "REFRESH_TOKEN_ERROR";
2294
+ PassportErrorType["USER_REGISTRATION_ERROR"] = "USER_REGISTRATION_ERROR";
2295
+ PassportErrorType["LOGOUT_ERROR"] = "LOGOUT_ERROR";
2296
+ PassportErrorType["TRANSFER_ERROR"] = "TRANSFER_ERROR";
2297
+ PassportErrorType["CREATE_ORDER_ERROR"] = "CREATE_ORDER_ERROR";
2298
+ PassportErrorType["CANCEL_ORDER_ERROR"] = "CANCEL_ORDER_ERROR";
2299
+ PassportErrorType["EXCHANGE_TRANSFER_ERROR"] = "EXCHANGE_TRANSFER_ERROR";
2300
+ PassportErrorType["CREATE_TRADE_ERROR"] = "CREATE_TRADE_ERROR";
2301
+ PassportErrorType["OPERATION_NOT_SUPPORTED_ERROR"] = "OPERATION_NOT_SUPPORTED_ERROR";
2302
+ })(PassportErrorType || (PassportErrorType = {}));
2303
+ class PassportError extends Error {
2304
+ type;
2305
+ constructor(message, type) {
2306
+ super(message);
2307
+ this.type = type;
2308
+ }
2309
+ }
2310
+ const withPassportError = async (fn, customErrorType) => {
2311
+ try {
2312
+ return await fn();
2313
+ }
2314
+ catch (error) {
2315
+ const errorMessage = `${customErrorType}: ${error.message}` || 'UnknownError';
2316
+ throw new PassportError(errorMessage, customErrorType);
2317
+ }
2318
+ };
2319
+
2320
+ const POLL_INTERVAL = 1 * 1000; // every 1 second
2321
+ const MAX_RETRIES = 3;
2322
+ const wait = (ms) => new Promise((resolve) => {
2323
+ setTimeout(() => resolve(), ms);
2324
+ });
2325
+ const retryWithDelay = async (fn, options) => {
2326
+ const { retries = MAX_RETRIES, interval = POLL_INTERVAL, finalErr = Error('Retry failed'), } = options || {};
2327
+ try {
2328
+ return await fn();
2329
+ }
2330
+ catch (err) {
2331
+ if (retries <= 0) {
2332
+ return Promise.reject(finalErr);
2333
+ }
2334
+ await wait(interval);
2335
+ return retryWithDelay(fn, { retries: retries - 1, finalErr });
2336
+ }
2337
+ };
2338
+
2339
+ const getAuthConfiguration = ({ oidcConfiguration, authenticationDomain, }) => {
2340
+ const baseConfiguration = {
2341
+ authority: authenticationDomain,
2342
+ redirect_uri: oidcConfiguration.redirectUri,
2343
+ popup_redirect_uri: oidcConfiguration.redirectUri,
2344
+ client_id: oidcConfiguration.clientId,
2345
+ metadata: {
2346
+ authorization_endpoint: `${authenticationDomain}/authorize`,
2347
+ token_endpoint: `${authenticationDomain}/oauth/token`,
2348
+ userinfo_endpoint: `${authenticationDomain}/userinfo`,
2349
+ end_session_endpoint: `${authenticationDomain}/v2/logout`
2350
+ + `?returnTo=${encodeURIComponent(oidcConfiguration.logoutRedirectUri)}`
2351
+ + `&client_id=${oidcConfiguration.clientId}`,
2352
+ },
2353
+ mergeClaims: true,
2354
+ loadUserInfo: true,
2355
+ scope: oidcConfiguration.scope,
2356
+ };
2357
+ if (oidcConfiguration.audience) {
2358
+ baseConfiguration.extraQueryParams = {
2359
+ audience: oidcConfiguration.audience,
2360
+ };
2361
+ }
2362
+ return baseConfiguration;
2363
+ };
2364
+ class AuthManager {
2365
+ userManager;
2366
+ config;
2367
+ constructor(config) {
2368
+ this.config = config;
2369
+ this.userManager = new UserManager(getAuthConfiguration(config));
2370
+ }
2371
+ static mapOidcUserToDomainModel = (oidcUser) => {
2372
+ const passport = oidcUser.profile?.passport;
2373
+ return {
2374
+ expired: oidcUser.expired,
2375
+ idToken: oidcUser.id_token,
2376
+ accessToken: oidcUser.access_token,
2377
+ refreshToken: oidcUser.refresh_token,
2378
+ profile: {
2379
+ sub: oidcUser.profile.sub,
2380
+ email: oidcUser.profile.email,
2381
+ nickname: oidcUser.profile.nickname,
2382
+ },
2383
+ etherKey: passport?.ether_key || '',
2384
+ };
2385
+ };
2386
+ async login() {
2387
+ return withPassportError(async () => {
2388
+ const popupWindowFeatures = { width: 410, height: 450 };
2389
+ const oidcUser = await this.userManager.signinPopup({
2390
+ popupWindowFeatures,
2391
+ });
2392
+ return AuthManager.mapOidcUserToDomainModel(oidcUser);
2393
+ }, PassportErrorType.AUTHENTICATION_ERROR);
2394
+ }
2395
+ async loginCallback() {
2396
+ return withPassportError(async () => this.userManager.signinPopupCallback(), PassportErrorType.AUTHENTICATION_ERROR);
2397
+ }
2398
+ async logout() {
2399
+ return withPassportError(async () => this.userManager.signoutRedirect(), PassportErrorType.LOGOUT_ERROR);
2400
+ }
2401
+ async loginSilent() {
2402
+ return withPassportError(async () => {
2403
+ const existedUser = await this.getUser();
2404
+ if (!existedUser) {
2405
+ return null;
2406
+ }
2407
+ const oidcUser = await this.userManager.signinSilent();
2408
+ if (!oidcUser) {
2409
+ return null;
2410
+ }
2411
+ return AuthManager.mapOidcUserToDomainModel(oidcUser);
2412
+ }, PassportErrorType.SILENT_LOGIN_ERROR);
2413
+ }
2414
+ async getUser() {
2415
+ return withPassportError(async () => {
2416
+ const oidcUser = await this.userManager.getUser();
2417
+ if (!oidcUser) {
2418
+ return null;
2419
+ }
2420
+ return AuthManager.mapOidcUserToDomainModel(oidcUser);
2421
+ }, PassportErrorType.NOT_LOGGED_IN_ERROR);
2422
+ }
2423
+ async requestRefreshTokenAfterRegistration() {
2424
+ return withPassportError(async () => {
2425
+ const updatedUser = await retryWithDelay(async () => {
2426
+ const user = await this.userManager.signinSilent();
2427
+ const passportMetadata = user?.profile?.passport;
2428
+ const metadataExists = !!passportMetadata?.ether_key
2429
+ && !!passportMetadata?.stark_key
2430
+ && !!passportMetadata?.user_admin_key;
2431
+ if (metadataExists) {
2432
+ return user;
2433
+ }
2434
+ return Promise.reject(new Error('user wallet addresses not exist'));
2435
+ });
2436
+ if (!updatedUser) {
2437
+ return null;
2438
+ }
2439
+ return AuthManager.mapOidcUserToDomainModel(updatedUser);
2440
+ }, PassportErrorType.REFRESH_TOKEN_ERROR);
2441
+ }
2442
+ }
2443
+
2444
+ class MagicAdapter {
2445
+ magicClient;
2446
+ config;
2447
+ constructor(config) {
2448
+ this.config = config;
2449
+ this.magicClient = new Magic(config.magicPublishableApiKey, {
2450
+ network: config.network,
2451
+ extensions: [new OpenIdExtension()],
2452
+ });
2453
+ }
2454
+ async login(idToken) {
2455
+ return withPassportError(async () => {
2456
+ await this.magicClient.openid.loginWithOIDC({
2457
+ jwt: idToken,
2458
+ providerId: this.config.magicProviderId,
2459
+ });
2460
+ return new ethers.providers.Web3Provider(this.magicClient
2461
+ .rpcProvider);
2462
+ }, PassportErrorType.WALLET_CONNECTION_ERROR);
2463
+ }
2464
+ }
2465
+
2047
2466
  var ReceiveMessage;
2048
2467
  (function (ReceiveMessage) {
2049
2468
  ReceiveMessage["CONFIRMATION_WINDOW_READY"] = "confirmation_window_ready";
@@ -2143,10 +2562,78 @@ class ConfirmationScreen {
2143
2562
  }, CONFIRMATION_WINDOW_CLOSED_POLLING_DURATION);
2144
2563
  });
2145
2564
  }
2565
+ startGuardianTransaction(transactionId, popupOptions) {
2566
+ return new Promise((resolve, reject) => {
2567
+ const messageHandler = ({ data, origin }) => {
2568
+ if (origin !== this.config.passportDomain
2569
+ || data.eventType !== PASSPORT_EVENT_TYPE) {
2570
+ return;
2571
+ }
2572
+ switch (data.messageType) {
2573
+ case ReceiveMessage.CONFIRMATION_WINDOW_READY: {
2574
+ break;
2575
+ }
2576
+ case ReceiveMessage.TRANSACTION_CONFIRMED: {
2577
+ resolve({ confirmed: true });
2578
+ break;
2579
+ }
2580
+ case ReceiveMessage.TRANSACTION_ERROR: {
2581
+ reject(new Error('Transaction error'));
2582
+ break;
2583
+ }
2584
+ default:
2585
+ reject(new Error('Unsupported message type'));
2586
+ }
2587
+ };
2588
+ window.addEventListener('message', messageHandler);
2589
+ const confirmationWindow = openPopupCenter({
2590
+ // eslint-disable-next-line max-len
2591
+ url: `${this.config.passportDomain}/transaction-confirmation/transaction.html?transactionId=${transactionId}&chainType=starkex`,
2592
+ title: CONFIRMATION_WINDOW_TITLE,
2593
+ width: popupOptions?.width || CONFIRMATION_WINDOW_WIDTH,
2594
+ height: popupOptions?.height || CONFIRMATION_WINDOW_HEIGHT,
2595
+ });
2596
+ // https://stackoverflow.com/questions/9388380/capture-the-close-event-of-popup-window-in-javascript/48240128#48240128
2597
+ const timer = setInterval(() => {
2598
+ if (confirmationWindow.closed) {
2599
+ clearInterval(timer);
2600
+ window.removeEventListener('message', messageHandler);
2601
+ resolve({ confirmed: false });
2602
+ }
2603
+ }, CONFIRMATION_WINDOW_CLOSED_POLLING_DURATION);
2604
+ });
2605
+ }
2146
2606
  }
2147
2607
 
2148
2608
  const ERC721$1 = 'ERC721';
2149
- async function transfer$1({ request, transfersApi, starkSigner, user, confirmationScreen, }) {
2609
+ const transferWithGuardian = async ({ accessToken, imxPublicApiDomain, payloadHash, confirmationScreen, }) => {
2610
+ const transactionAPI = new TransactionsApi(new Configuration({
2611
+ accessToken,
2612
+ basePath: imxPublicApiDomain,
2613
+ }));
2614
+ const starkExTransactionApi = new StarkexTransactionsApi(new Configuration({
2615
+ accessToken,
2616
+ basePath: imxPublicApiDomain,
2617
+ }));
2618
+ const transactionRes = await retryWithDelay(async () => transactionAPI.getTransactionByID({
2619
+ transactionID: payloadHash,
2620
+ chainType: 'starkex',
2621
+ }));
2622
+ if (!transactionRes.data.id) {
2623
+ throw new Error("Transaction doesn't exists");
2624
+ }
2625
+ const evaluateStarkexRes = await starkExTransactionApi.evaluateStarkexTransaction({
2626
+ payloadHash,
2627
+ });
2628
+ const { confirmationRequired } = evaluateStarkexRes.data;
2629
+ if (confirmationRequired) {
2630
+ const confirmationResult = await confirmationScreen.startGuardianTransaction(payloadHash);
2631
+ if (!confirmationResult.confirmed) {
2632
+ throw new Error('Transaction rejected by user');
2633
+ }
2634
+ }
2635
+ };
2636
+ async function transfer$1({ request, transfersApi, starkSigner, user, imxPublicApiDomain, confirmationScreen, }) {
2150
2637
  return withPassportError(async () => {
2151
2638
  const transferAmount = request.type === ERC721$1 ? '1' : request.amount;
2152
2639
  const getSignableTransferRequest = {
@@ -2155,16 +2642,18 @@ async function transfer$1({ request, transfersApi, starkSigner, user, confirmati
2155
2642
  amount: transferAmount,
2156
2643
  receiver: request.receiver,
2157
2644
  };
2645
+ const headers = {
2646
+ Authorization: `Bearer ${user.accessToken}`,
2647
+ };
2158
2648
  const signableResult = await transfersApi.getSignableTransferV1({
2159
2649
  getSignableTransferRequest,
2650
+ }, { headers });
2651
+ await transferWithGuardian({
2652
+ imxPublicApiDomain,
2653
+ accessToken: user.accessToken,
2654
+ payloadHash: signableResult.data.payload_hash,
2655
+ confirmationScreen,
2160
2656
  });
2161
- const confirmationResult = await confirmationScreen.startTransaction(user.accessToken, {
2162
- transactionType: TransactionTypes.createTransfer,
2163
- transactionData: getSignableTransferRequest,
2164
- });
2165
- if (!confirmationResult.confirmed) {
2166
- throw new Error('Transaction rejected by user');
2167
- }
2168
2657
  const signableResultData = signableResult.data;
2169
2658
  const { payload_hash: payloadHash } = signableResultData;
2170
2659
  const starkSignature = await starkSigner.signMessage(payloadHash);
@@ -2183,10 +2672,6 @@ async function transfer$1({ request, transfersApi, starkSigner, user, confirmati
2183
2672
  const createTransferRequest = {
2184
2673
  createTransferRequest: transferSigningParams,
2185
2674
  };
2186
- const headers = {
2187
- // eslint-disable-next-line @typescript-eslint/naming-convention
2188
- Authorization: `Bearer ${user.accessToken}`,
2189
- };
2190
2675
  const { data: responseData } = await transfersApi.createTransferV1(createTransferRequest, { headers });
2191
2676
  return {
2192
2677
  sent_signature: responseData.sent_signature,
@@ -2442,10 +2927,12 @@ class PassportImxProvider {
2442
2927
  starkSigner;
2443
2928
  immutableXClient;
2444
2929
  confirmationScreen;
2445
- constructor({ user, starkSigner, immutableXClient, confirmationScreen, }) {
2930
+ imxPublicApiDomain;
2931
+ constructor({ user, starkSigner, immutableXClient, imxPublicApiDomain, confirmationScreen, }) {
2446
2932
  this.user = user;
2447
2933
  this.starkSigner = starkSigner;
2448
2934
  this.immutableXClient = immutableXClient;
2935
+ this.imxPublicApiDomain = imxPublicApiDomain;
2449
2936
  this.confirmationScreen = confirmationScreen;
2450
2937
  }
2451
2938
  async transfer(request) {
@@ -2455,6 +2942,7 @@ class PassportImxProvider {
2455
2942
  starkSigner: this.starkSigner,
2456
2943
  transfersApi: this.immutableXClient.transfersApi,
2457
2944
  confirmationScreen: this.confirmationScreen,
2945
+ imxPublicApiDomain: this.imxPublicApiDomain,
2458
2946
  });
2459
2947
  }
2460
2948
  // TODO: Remove once implemented
@@ -2557,6 +3045,7 @@ class PassportConfiguration {
2557
3045
  network;
2558
3046
  authenticationDomain;
2559
3047
  passportDomain;
3048
+ imxPublicApiDomain;
2560
3049
  magicPublishableApiKey;
2561
3050
  magicProviderId;
2562
3051
  oidcConfiguration;
@@ -2576,10 +3065,12 @@ class PassportConfiguration {
2576
3065
  'magicPublishableApiKey',
2577
3066
  'magicProviderId',
2578
3067
  'passportDomain',
3068
+ 'imxPublicApiDomain',
2579
3069
  ], 'overrides');
2580
3070
  this.network = overrides.network;
2581
3071
  this.authenticationDomain = overrides.authenticationDomain;
2582
3072
  this.passportDomain = overrides.passportDomain;
3073
+ this.imxPublicApiDomain = overrides.imxPublicApiDomain;
2583
3074
  this.magicPublishableApiKey = overrides.magicPublishableApiKey;
2584
3075
  this.magicProviderId = overrides.magicProviderId;
2585
3076
  }
@@ -2591,6 +3082,7 @@ class PassportConfiguration {
2591
3082
  this.magicPublishableApiKey = 'pk_live_10F423798A540ED7';
2592
3083
  this.magicProviderId = 'fSMzaRQ4O7p4fttl7pCyGVtJS_G70P8SNsLXtPPGHo0=';
2593
3084
  this.passportDomain = 'https://passport.immutable.com';
3085
+ this.imxPublicApiDomain = 'https://api.immutable.com';
2594
3086
  break;
2595
3087
  }
2596
3088
  case Environment.SANDBOX:
@@ -2600,6 +3092,7 @@ class PassportConfiguration {
2600
3092
  this.magicPublishableApiKey = 'pk_live_10F423798A540ED7';
2601
3093
  this.magicProviderId = 'fSMzaRQ4O7p4fttl7pCyGVtJS_G70P8SNsLXtPPGHo0=';
2602
3094
  this.passportDomain = 'https://passport.sandbox.immutable.com';
3095
+ this.imxPublicApiDomain = 'https://api.sandbox.immutable.com';
2603
3096
  break;
2604
3097
  }
2605
3098
  }
@@ -2669,6 +3162,7 @@ class Passport {
2669
3162
  user: updatedUser,
2670
3163
  starkSigner,
2671
3164
  immutableXClient: this.immutableXClient,
3165
+ imxPublicApiDomain: this.config.imxPublicApiDomain,
2672
3166
  confirmationScreen: this.confirmationScreen,
2673
3167
  });
2674
3168
  }
@@ -2677,6 +3171,7 @@ class Passport {
2677
3171
  user: userWithEtherKey,
2678
3172
  starkSigner,
2679
3173
  immutableXClient: this.immutableXClient,
3174
+ imxPublicApiDomain: this.config.imxPublicApiDomain,
2680
3175
  confirmationScreen: this.confirmationScreen,
2681
3176
  });
2682
3177
  }
@@ -3262,6 +3757,265 @@ var SellItem;
3262
3757
  })(SellItem.item_type || (SellItem.item_type = {}));
3263
3758
  })(SellItem || (SellItem = {}));
3264
3759
 
3760
+ /* eslint-disable */
3761
+ // TODO: Resolve these from seaport-js.
3762
+ // There is some bundling issue that is preventing this from working
3763
+ const SEAPORT_CONTRACT_NAME = 'Seaport';
3764
+ const SEAPORT_CONTRACT_VERSION_V1_4 = '1.4';
3765
+ const EIP_712_ORDER_TYPE = {
3766
+ OrderComponents: [
3767
+ { name: 'offerer', type: 'address' },
3768
+ { name: 'zone', type: 'address' },
3769
+ { name: 'offer', type: 'OfferItem[]' },
3770
+ { name: 'consideration', type: 'ConsiderationItem[]' },
3771
+ { name: 'orderType', type: 'uint8' },
3772
+ { name: 'startTime', type: 'uint256' },
3773
+ { name: 'endTime', type: 'uint256' },
3774
+ { name: 'zoneHash', type: 'bytes32' },
3775
+ { name: 'salt', type: 'uint256' },
3776
+ { name: 'conduitKey', type: 'bytes32' },
3777
+ { name: 'counter', type: 'uint256' },
3778
+ ],
3779
+ OfferItem: [
3780
+ { name: 'itemType', type: 'uint8' },
3781
+ { name: 'token', type: 'address' },
3782
+ { name: 'identifierOrCriteria', type: 'uint256' },
3783
+ { name: 'startAmount', type: 'uint256' },
3784
+ { name: 'endAmount', type: 'uint256' },
3785
+ ],
3786
+ ConsiderationItem: [
3787
+ { name: 'itemType', type: 'uint8' },
3788
+ { name: 'token', type: 'address' },
3789
+ { name: 'identifierOrCriteria', type: 'uint256' },
3790
+ { name: 'startAmount', type: 'uint256' },
3791
+ { name: 'endAmount', type: 'uint256' },
3792
+ { name: 'recipient', type: 'address' },
3793
+ ],
3794
+ };
3795
+ var OrderType;
3796
+ (function (OrderType) {
3797
+ OrderType[OrderType["FULL_OPEN"] = 0] = "FULL_OPEN";
3798
+ OrderType[OrderType["PARTIAL_OPEN"] = 1] = "PARTIAL_OPEN";
3799
+ OrderType[OrderType["FULL_RESTRICTED"] = 2] = "FULL_RESTRICTED";
3800
+ OrderType[OrderType["PARTIAL_RESTRICTED"] = 3] = "PARTIAL_RESTRICTED";
3801
+ })(OrderType || (OrderType = {}));
3802
+ var ItemType;
3803
+ (function (ItemType) {
3804
+ ItemType[ItemType["NATIVE"] = 0] = "NATIVE";
3805
+ ItemType[ItemType["ERC20"] = 1] = "ERC20";
3806
+ ItemType[ItemType["ERC721"] = 2] = "ERC721";
3807
+ ItemType[ItemType["ERC1155"] = 3] = "ERC1155";
3808
+ ItemType[ItemType["ERC721_WITH_CRITERIA"] = 4] = "ERC721_WITH_CRITERIA";
3809
+ ItemType[ItemType["ERC1155_WITH_CRITERIA"] = 5] = "ERC1155_WITH_CRITERIA";
3810
+ })(ItemType || (ItemType = {}));
3811
+ var Side;
3812
+ (function (Side) {
3813
+ Side[Side["OFFER"] = 0] = "OFFER";
3814
+ Side[Side["CONSIDERATION"] = 1] = "CONSIDERATION";
3815
+ })(Side || (Side = {}));
3816
+ var BasicOrderRouteType;
3817
+ (function (BasicOrderRouteType) {
3818
+ BasicOrderRouteType[BasicOrderRouteType["ETH_TO_ERC721"] = 0] = "ETH_TO_ERC721";
3819
+ BasicOrderRouteType[BasicOrderRouteType["ETH_TO_ERC1155"] = 1] = "ETH_TO_ERC1155";
3820
+ BasicOrderRouteType[BasicOrderRouteType["ERC20_TO_ERC721"] = 2] = "ERC20_TO_ERC721";
3821
+ BasicOrderRouteType[BasicOrderRouteType["ERC20_TO_ERC1155"] = 3] = "ERC20_TO_ERC1155";
3822
+ BasicOrderRouteType[BasicOrderRouteType["ERC721_TO_ERC20"] = 4] = "ERC721_TO_ERC20";
3823
+ BasicOrderRouteType[BasicOrderRouteType["ERC1155_TO_ERC20"] = 5] = "ERC1155_TO_ERC20";
3824
+ })(BasicOrderRouteType || (BasicOrderRouteType = {}));
3825
+
3826
+ function getOrderComponentsFromMessage(orderMessage) {
3827
+ const data = JSON.parse(orderMessage);
3828
+ const orderComponents = data.message;
3829
+ orderComponents.salt = BigNumber.from(orderComponents.salt).toHexString();
3830
+ return orderComponents;
3831
+ }
3832
+
3833
+ // Add 20% more gas than estimate to prevent out of gas errors
3834
+ // This can always be overwritten by the user signing the transaction
3835
+ async function prepareTransaction(transactionMethods) {
3836
+ const transaction = await transactionMethods.buildTransaction();
3837
+ transaction.gasLimit = await transactionMethods.estimateGas();
3838
+ transaction.gasLimit = transaction.gasLimit
3839
+ .add(transaction.gasLimit.div(5));
3840
+ return transaction;
3841
+ }
3842
+
3843
+ function mapImmutableOrderToSeaportOrderComponents(order, counter, zoneAddress) {
3844
+ const considerationItems = order.buy.map((buyItem) => ({
3845
+ startAmount: buyItem.start_amount,
3846
+ endAmount: buyItem.start_amount,
3847
+ itemType: buyItem.item_type === 'ERC20' ? ItemType.ERC20 : ItemType.NATIVE,
3848
+ recipient: order.account_address,
3849
+ token: buyItem.contract_address || constants.AddressZero,
3850
+ identifierOrCriteria: '0',
3851
+ }));
3852
+ const fees = order.buy_fees.map((fee) => ({
3853
+ startAmount: fee.amount,
3854
+ endAmount: fee.amount,
3855
+ itemType: order.buy[0].item_type === 'ERC20' ? ItemType.ERC20 : ItemType.NATIVE,
3856
+ recipient: fee.recipient,
3857
+ token: order.buy[0].contract_address || constants.AddressZero,
3858
+ identifierOrCriteria: '0',
3859
+ }));
3860
+ return {
3861
+ conduitKey: constants.HashZero,
3862
+ consideration: [...considerationItems, ...fees],
3863
+ offer: order.sell.map((sellItem) => ({
3864
+ startAmount: '1',
3865
+ endAmount: '1',
3866
+ itemType: ItemType.ERC721,
3867
+ token: sellItem.contract_address,
3868
+ identifierOrCriteria: sellItem.token_id,
3869
+ })),
3870
+ counter,
3871
+ endTime: Math.round(new Date(order.end_time).getTime() / 1000).toString(),
3872
+ startTime: Math.round(new Date(order.start_time).getTime() / 1000).toString(),
3873
+ salt: order.salt,
3874
+ offerer: order.account_address,
3875
+ zone: zoneAddress,
3876
+ totalOriginalConsiderationItems: 2,
3877
+ orderType: OrderType.FULL_RESTRICTED,
3878
+ zoneHash: constants.HashZero,
3879
+ };
3880
+ }
3881
+
3882
+ class Seaport {
3883
+ seaport;
3884
+ provider;
3885
+ seaportContractAddress;
3886
+ zoneContractAddress;
3887
+ constructor(seaport, provider, seaportContractAddress, zoneContractAddress) {
3888
+ this.seaport = seaport;
3889
+ this.provider = provider;
3890
+ this.seaportContractAddress = seaportContractAddress;
3891
+ this.zoneContractAddress = zoneContractAddress;
3892
+ }
3893
+ async prepareSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry) {
3894
+ const { actions } = await this.createSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry);
3895
+ let approvalTransaction;
3896
+ const approvalAction = actions
3897
+ .find((action) => action.type === 'approval');
3898
+ if (approvalAction) {
3899
+ approvalTransaction = await prepareTransaction(approvalAction.transactionMethods);
3900
+ }
3901
+ const createAction = actions
3902
+ .find((action) => action.type === 'create');
3903
+ if (!createAction) {
3904
+ throw new Error('No create order action found');
3905
+ }
3906
+ const orderMessageToSign = await createAction.getMessageToSign();
3907
+ const orderComponents = getOrderComponentsFromMessage(orderMessageToSign);
3908
+ return {
3909
+ unsignedApprovalTransaction: approvalTransaction,
3910
+ typedOrderMessageForSigning: await this.getTypedDataFromOrderComponents(orderComponents),
3911
+ orderComponents,
3912
+ orderHash: await this.seaport.getOrderHash(orderComponents),
3913
+ };
3914
+ }
3915
+ async fulfilOrder(order, account) {
3916
+ const orderComponents = await this.mapImmutableOrderToSeaportOrderComponents(order);
3917
+ const { actions } = await this.seaport.fulfillOrders({
3918
+ accountAddress: account,
3919
+ fulfillOrderDetails: [{
3920
+ order: {
3921
+ parameters: orderComponents,
3922
+ signature: order.signature,
3923
+ },
3924
+ extraData: order.protocol_data.operator_signature,
3925
+ }],
3926
+ });
3927
+ let approvalTransaction;
3928
+ const approvalAction = actions
3929
+ .find((action) => action.type === 'approval');
3930
+ if (approvalAction) {
3931
+ approvalTransaction = await prepareTransaction(approvalAction.transactionMethods);
3932
+ }
3933
+ const fulfillmentAction = actions
3934
+ .find((action) => action.type === 'exchange');
3935
+ if (!fulfillmentAction) {
3936
+ throw new Error('No exchange action found');
3937
+ }
3938
+ const fulfillmentTransaction = await prepareTransaction(fulfillmentAction.transactionMethods);
3939
+ return {
3940
+ unsignedApprovalTransaction: approvalTransaction,
3941
+ unsignedFulfillmentTransaction: fulfillmentTransaction,
3942
+ };
3943
+ }
3944
+ async cancelOrder(order, account) {
3945
+ const orderComponents = await this.mapImmutableOrderToSeaportOrderComponents(order);
3946
+ const cancellationTransaction = await this.seaport.cancelOrders([orderComponents], account);
3947
+ return prepareTransaction(cancellationTransaction);
3948
+ }
3949
+ async mapImmutableOrderToSeaportOrderComponents(order) {
3950
+ const counterForOfferer = await this.seaport.getCounter(order.account_address);
3951
+ return mapImmutableOrderToSeaportOrderComponents(order, counterForOfferer.toString(), this.zoneContractAddress);
3952
+ }
3953
+ createSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry) {
3954
+ return this.seaport.createOrder({
3955
+ allowPartialFills: false,
3956
+ offer: [
3957
+ {
3958
+ itemType: ItemType.ERC721,
3959
+ token: listingItem.contractAddress,
3960
+ identifier: listingItem.tokenId,
3961
+ },
3962
+ ],
3963
+ consideration: [
3964
+ {
3965
+ token: considerationItem.type === 'ERC20' ? considerationItem.contractAddress : undefined,
3966
+ amount: considerationItem.amount,
3967
+ recipient: offerer,
3968
+ },
3969
+ {
3970
+ token: considerationItem.type === 'ERC20' ? considerationItem.contractAddress : undefined,
3971
+ amount: royaltyInfo.amountRequired,
3972
+ recipient: royaltyInfo.recipient,
3973
+ },
3974
+ ],
3975
+ startTime: (orderStart.getTime() / 1000).toFixed(0),
3976
+ endTime: (orderExpiry.getTime() / 1000).toFixed(0),
3977
+ zone: this.zoneContractAddress,
3978
+ restrictedByZone: true,
3979
+ }, offerer);
3980
+ }
3981
+ async getTypedDataFromOrderComponents(orderComponents) {
3982
+ const { chainId } = await this.provider.getNetwork();
3983
+ const domainData = {
3984
+ name: SEAPORT_CONTRACT_NAME,
3985
+ version: SEAPORT_CONTRACT_VERSION_V1_4,
3986
+ chainId,
3987
+ verifyingContract: this.seaportContractAddress,
3988
+ };
3989
+ return {
3990
+ domain: domainData,
3991
+ types: EIP_712_ORDER_TYPE,
3992
+ value: orderComponents,
3993
+ };
3994
+ }
3995
+ }
3996
+
3997
+ class SeaportFactory {
3998
+ seaportContractAddress;
3999
+ zoneContractAddress;
4000
+ provider;
4001
+ seaport;
4002
+ constructor(seaportContractAddress, zoneContractAddress, provider) {
4003
+ this.seaportContractAddress = seaportContractAddress;
4004
+ this.zoneContractAddress = zoneContractAddress;
4005
+ this.provider = provider;
4006
+ this.seaport = new Seaport$1(provider, {
4007
+ seaportVersion: '1.4',
4008
+ balanceAndApprovalChecksOnOrderCreation: true,
4009
+ overrides: {
4010
+ contractAddress: seaportContractAddress,
4011
+ },
4012
+ });
4013
+ }
4014
+ create() {
4015
+ return new Seaport(this.seaport, this.provider, this.seaportContractAddress, this.zoneContractAddress);
4016
+ }
4017
+ }
4018
+
3265
4019
  class ImmutableApiClient {
3266
4020
  orderbookService;
3267
4021
  chainId;
@@ -3358,7 +4112,7 @@ class ERC721 {
3358
4112
  /* Autogenerated file. Do not edit manually. */
3359
4113
  /* tslint:disable */
3360
4114
  /* eslint-disable */
3361
- const _abi = [
4115
+ const _abi$2 = [
3362
4116
  {
3363
4117
  inputs: [
3364
4118
  {
@@ -4247,12 +5001,12 @@ const _abi = [
4247
5001
  },
4248
5002
  ];
4249
5003
  class ImmutableERC721Base__factory {
4250
- static abi = _abi;
5004
+ static abi = _abi$2;
4251
5005
  static createInterface() {
4252
- return new utils.Interface(_abi);
5006
+ return new utils.Interface(_abi$2);
4253
5007
  }
4254
5008
  static connect(address, signerOrProvider) {
4255
- return new Contract(address, _abi, signerOrProvider);
5009
+ return new Contract(address, _abi$2, signerOrProvider);
4256
5010
  }
4257
5011
  }
4258
5012
 
@@ -4266,199 +5020,6 @@ class ERC721Factory {
4266
5020
  }
4267
5021
  }
4268
5022
 
4269
- function getOrderComponentsFromMessage(orderMessage) {
4270
- const data = JSON.parse(orderMessage);
4271
- const orderComponents = data.message;
4272
- orderComponents.salt = BigNumber.from(orderComponents.salt).toHexString();
4273
- return orderComponents;
4274
- }
4275
-
4276
- // Add 20% more gas than estimate to prevent out of gas errors
4277
- // This can always be overwritten by the user signing the transaction
4278
- async function prepareTransaction(transactionMethods) {
4279
- const transaction = await transactionMethods.buildTransaction();
4280
- transaction.gasLimit = await transactionMethods.estimateGas();
4281
- transaction.gasLimit = transaction.gasLimit
4282
- .add(transaction.gasLimit.div(5));
4283
- return transaction;
4284
- }
4285
-
4286
- function mapImmutableOrderToSeaportOrderComponents(order, counter, zoneAddress) {
4287
- const considerationItems = order.buy.map((buyItem) => ({
4288
- startAmount: buyItem.start_amount,
4289
- endAmount: buyItem.start_amount,
4290
- itemType: buyItem.item_type === 'ERC20' ? ItemType.ERC20 : ItemType.NATIVE,
4291
- recipient: order.account_address,
4292
- token: buyItem.contract_address || constants.AddressZero,
4293
- identifierOrCriteria: '0',
4294
- }));
4295
- const fees = order.buy_fees.map((fee) => ({
4296
- startAmount: fee.amount,
4297
- endAmount: fee.amount,
4298
- itemType: order.buy[0].item_type === 'ERC20' ? ItemType.ERC20 : ItemType.NATIVE,
4299
- recipient: fee.recipient,
4300
- token: order.buy[0].contract_address || constants.AddressZero,
4301
- identifierOrCriteria: '0',
4302
- }));
4303
- return {
4304
- conduitKey: constants.HashZero,
4305
- consideration: [...considerationItems, ...fees],
4306
- offer: order.sell.map((sellItem) => ({
4307
- startAmount: '1',
4308
- endAmount: '1',
4309
- itemType: ItemType.ERC721,
4310
- token: sellItem.contract_address,
4311
- identifierOrCriteria: sellItem.token_id,
4312
- })),
4313
- counter,
4314
- endTime: Math.round(new Date(order.end_time).getTime() / 1000).toString(),
4315
- startTime: Math.round(new Date(order.start_time).getTime() / 1000).toString(),
4316
- salt: order.salt,
4317
- offerer: order.account_address,
4318
- zone: zoneAddress,
4319
- totalOriginalConsiderationItems: 2,
4320
- orderType: OrderType.FULL_RESTRICTED,
4321
- zoneHash: constants.HashZero,
4322
- };
4323
- }
4324
-
4325
- class Seaport {
4326
- seaport;
4327
- provider;
4328
- seaportContractAddress;
4329
- zoneContractAddress;
4330
- constructor(seaport, provider, seaportContractAddress, zoneContractAddress) {
4331
- this.seaport = seaport;
4332
- this.provider = provider;
4333
- this.seaportContractAddress = seaportContractAddress;
4334
- this.zoneContractAddress = zoneContractAddress;
4335
- }
4336
- async prepareSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry) {
4337
- const { actions } = await this.createSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry);
4338
- let approvalTransaction;
4339
- const approvalAction = actions
4340
- .find((action) => action.type === 'approval');
4341
- if (approvalAction) {
4342
- approvalTransaction = await prepareTransaction(approvalAction.transactionMethods);
4343
- }
4344
- const createAction = actions
4345
- .find((action) => action.type === 'create');
4346
- if (!createAction) {
4347
- throw new Error('No create order action found');
4348
- }
4349
- const orderMessageToSign = await createAction.getMessageToSign();
4350
- const orderComponents = getOrderComponentsFromMessage(orderMessageToSign);
4351
- return {
4352
- unsignedApprovalTransaction: approvalTransaction,
4353
- typedOrderMessageForSigning: await this.getTypedDataFromOrderComponents(orderComponents),
4354
- orderComponents,
4355
- orderHash: await this.seaport.getOrderHash(orderComponents),
4356
- };
4357
- }
4358
- async fulfilOrder(order, account) {
4359
- const orderComponents = await this.mapImmutableOrderToSeaportOrderComponents(order);
4360
- const { actions } = await this.seaport.fulfillOrders({
4361
- accountAddress: account,
4362
- fulfillOrderDetails: [{
4363
- order: {
4364
- parameters: orderComponents,
4365
- signature: order.signature,
4366
- },
4367
- extraData: order.protocol_data.operator_signature,
4368
- }],
4369
- });
4370
- let approvalTransaction;
4371
- const approvalAction = actions
4372
- .find((action) => action.type === 'approval');
4373
- if (approvalAction) {
4374
- approvalTransaction = await prepareTransaction(approvalAction.transactionMethods);
4375
- }
4376
- const fulfillmentAction = actions
4377
- .find((action) => action.type === 'exchange');
4378
- if (!fulfillmentAction) {
4379
- throw new Error('No exchange action found');
4380
- }
4381
- const fulfillmentTransaction = await prepareTransaction(fulfillmentAction.transactionMethods);
4382
- return {
4383
- unsignedApprovalTransaction: approvalTransaction,
4384
- unsignedFulfillmentTransaction: fulfillmentTransaction,
4385
- };
4386
- }
4387
- async cancelOrder(order, account) {
4388
- const orderComponents = await this.mapImmutableOrderToSeaportOrderComponents(order);
4389
- const cancellationTransaction = await this.seaport.cancelOrders([orderComponents], account);
4390
- return prepareTransaction(cancellationTransaction);
4391
- }
4392
- async mapImmutableOrderToSeaportOrderComponents(order) {
4393
- const counterForOfferer = await this.seaport.getCounter(order.account_address);
4394
- return mapImmutableOrderToSeaportOrderComponents(order, counterForOfferer.toString(), this.zoneContractAddress);
4395
- }
4396
- createSeaportOrder(offerer, listingItem, considerationItem, royaltyInfo, orderStart, orderExpiry) {
4397
- return this.seaport.createOrder({
4398
- allowPartialFills: false,
4399
- offer: [
4400
- {
4401
- itemType: ItemType.ERC721,
4402
- token: listingItem.contractAddress,
4403
- identifier: listingItem.tokenId,
4404
- },
4405
- ],
4406
- consideration: [
4407
- {
4408
- token: considerationItem.type === 'ERC20' ? considerationItem.contractAddress : undefined,
4409
- amount: considerationItem.amount,
4410
- recipient: offerer,
4411
- },
4412
- {
4413
- token: considerationItem.type === 'ERC20' ? considerationItem.contractAddress : undefined,
4414
- amount: royaltyInfo.amountRequired,
4415
- recipient: royaltyInfo.recipient,
4416
- },
4417
- ],
4418
- startTime: (orderStart.getTime() / 1000).toFixed(0),
4419
- endTime: (orderExpiry.getTime() / 1000).toFixed(0),
4420
- zone: this.zoneContractAddress,
4421
- restrictedByZone: true,
4422
- }, offerer);
4423
- }
4424
- async getTypedDataFromOrderComponents(orderComponents) {
4425
- const { chainId } = await this.provider.getNetwork();
4426
- const domainData = {
4427
- name: SEAPORT_CONTRACT_NAME,
4428
- version: SEAPORT_CONTRACT_VERSION_V1_4,
4429
- chainId,
4430
- verifyingContract: this.seaportContractAddress,
4431
- };
4432
- return {
4433
- domain: domainData,
4434
- types: EIP_712_ORDER_TYPE,
4435
- value: orderComponents,
4436
- };
4437
- }
4438
- }
4439
-
4440
- class SeaportFactory {
4441
- seaportContractAddress;
4442
- zoneContractAddress;
4443
- provider;
4444
- seaport;
4445
- constructor(seaportContractAddress, zoneContractAddress, provider) {
4446
- this.seaportContractAddress = seaportContractAddress;
4447
- this.zoneContractAddress = zoneContractAddress;
4448
- this.provider = provider;
4449
- this.seaport = new Seaport$1(provider, {
4450
- seaportVersion: '1.4',
4451
- balanceAndApprovalChecksOnOrderCreation: true,
4452
- overrides: {
4453
- contractAddress: seaportContractAddress,
4454
- },
4455
- });
4456
- }
4457
- create() {
4458
- return new Seaport(this.seaport, this.provider, this.seaportContractAddress, this.zoneContractAddress);
4459
- }
4460
- }
4461
-
4462
5023
  /**
4463
5024
  * zkEVM orderbook SDK
4464
5025
  * @constructor
@@ -6632,10 +7193,1514 @@ function $430e3eda76fa4d5f$export$931068bc678f0d73(tagName, provider) {
6632
7193
  attemptToSetProvider();
6633
7194
  }
6634
7195
 
6635
- // only for infrastructure. will be removed once wrapped functions are created
6636
- const erc20 = 1;
6637
-
6638
- // only for infrastructure. will be removed once wrapped functions are created
6639
- const erc721permissionedmintable = 1;
7196
+ /* Autogenerated file. Do not edit manually. */
7197
+ /* tslint:disable */
7198
+ /* eslint-disable */
7199
+ const _abi$1 = [
7200
+ {
7201
+ inputs: [
7202
+ {
7203
+ internalType: "string",
7204
+ name: "name_",
7205
+ type: "string",
7206
+ },
7207
+ {
7208
+ internalType: "string",
7209
+ name: "symbol_",
7210
+ type: "string",
7211
+ },
7212
+ ],
7213
+ stateMutability: "nonpayable",
7214
+ type: "constructor",
7215
+ },
7216
+ {
7217
+ anonymous: false,
7218
+ inputs: [
7219
+ {
7220
+ indexed: true,
7221
+ internalType: "address",
7222
+ name: "owner",
7223
+ type: "address",
7224
+ },
7225
+ {
7226
+ indexed: true,
7227
+ internalType: "address",
7228
+ name: "spender",
7229
+ type: "address",
7230
+ },
7231
+ {
7232
+ indexed: false,
7233
+ internalType: "uint256",
7234
+ name: "value",
7235
+ type: "uint256",
7236
+ },
7237
+ ],
7238
+ name: "Approval",
7239
+ type: "event",
7240
+ },
7241
+ {
7242
+ anonymous: false,
7243
+ inputs: [
7244
+ {
7245
+ indexed: true,
7246
+ internalType: "address",
7247
+ name: "from",
7248
+ type: "address",
7249
+ },
7250
+ {
7251
+ indexed: true,
7252
+ internalType: "address",
7253
+ name: "to",
7254
+ type: "address",
7255
+ },
7256
+ {
7257
+ indexed: false,
7258
+ internalType: "uint256",
7259
+ name: "value",
7260
+ type: "uint256",
7261
+ },
7262
+ ],
7263
+ name: "Transfer",
7264
+ type: "event",
7265
+ },
7266
+ {
7267
+ inputs: [
7268
+ {
7269
+ internalType: "address",
7270
+ name: "owner",
7271
+ type: "address",
7272
+ },
7273
+ {
7274
+ internalType: "address",
7275
+ name: "spender",
7276
+ type: "address",
7277
+ },
7278
+ ],
7279
+ name: "allowance",
7280
+ outputs: [
7281
+ {
7282
+ internalType: "uint256",
7283
+ name: "",
7284
+ type: "uint256",
7285
+ },
7286
+ ],
7287
+ stateMutability: "view",
7288
+ type: "function",
7289
+ },
7290
+ {
7291
+ inputs: [
7292
+ {
7293
+ internalType: "address",
7294
+ name: "spender",
7295
+ type: "address",
7296
+ },
7297
+ {
7298
+ internalType: "uint256",
7299
+ name: "amount",
7300
+ type: "uint256",
7301
+ },
7302
+ ],
7303
+ name: "approve",
7304
+ outputs: [
7305
+ {
7306
+ internalType: "bool",
7307
+ name: "",
7308
+ type: "bool",
7309
+ },
7310
+ ],
7311
+ stateMutability: "nonpayable",
7312
+ type: "function",
7313
+ },
7314
+ {
7315
+ inputs: [
7316
+ {
7317
+ internalType: "address",
7318
+ name: "account",
7319
+ type: "address",
7320
+ },
7321
+ ],
7322
+ name: "balanceOf",
7323
+ outputs: [
7324
+ {
7325
+ internalType: "uint256",
7326
+ name: "",
7327
+ type: "uint256",
7328
+ },
7329
+ ],
7330
+ stateMutability: "view",
7331
+ type: "function",
7332
+ },
7333
+ {
7334
+ inputs: [],
7335
+ name: "decimals",
7336
+ outputs: [
7337
+ {
7338
+ internalType: "uint8",
7339
+ name: "",
7340
+ type: "uint8",
7341
+ },
7342
+ ],
7343
+ stateMutability: "view",
7344
+ type: "function",
7345
+ },
7346
+ {
7347
+ inputs: [
7348
+ {
7349
+ internalType: "address",
7350
+ name: "spender",
7351
+ type: "address",
7352
+ },
7353
+ {
7354
+ internalType: "uint256",
7355
+ name: "subtractedValue",
7356
+ type: "uint256",
7357
+ },
7358
+ ],
7359
+ name: "decreaseAllowance",
7360
+ outputs: [
7361
+ {
7362
+ internalType: "bool",
7363
+ name: "",
7364
+ type: "bool",
7365
+ },
7366
+ ],
7367
+ stateMutability: "nonpayable",
7368
+ type: "function",
7369
+ },
7370
+ {
7371
+ inputs: [
7372
+ {
7373
+ internalType: "address",
7374
+ name: "spender",
7375
+ type: "address",
7376
+ },
7377
+ {
7378
+ internalType: "uint256",
7379
+ name: "addedValue",
7380
+ type: "uint256",
7381
+ },
7382
+ ],
7383
+ name: "increaseAllowance",
7384
+ outputs: [
7385
+ {
7386
+ internalType: "bool",
7387
+ name: "",
7388
+ type: "bool",
7389
+ },
7390
+ ],
7391
+ stateMutability: "nonpayable",
7392
+ type: "function",
7393
+ },
7394
+ {
7395
+ inputs: [],
7396
+ name: "name",
7397
+ outputs: [
7398
+ {
7399
+ internalType: "string",
7400
+ name: "",
7401
+ type: "string",
7402
+ },
7403
+ ],
7404
+ stateMutability: "view",
7405
+ type: "function",
7406
+ },
7407
+ {
7408
+ inputs: [],
7409
+ name: "symbol",
7410
+ outputs: [
7411
+ {
7412
+ internalType: "string",
7413
+ name: "",
7414
+ type: "string",
7415
+ },
7416
+ ],
7417
+ stateMutability: "view",
7418
+ type: "function",
7419
+ },
7420
+ {
7421
+ inputs: [],
7422
+ name: "totalSupply",
7423
+ outputs: [
7424
+ {
7425
+ internalType: "uint256",
7426
+ name: "",
7427
+ type: "uint256",
7428
+ },
7429
+ ],
7430
+ stateMutability: "view",
7431
+ type: "function",
7432
+ },
7433
+ {
7434
+ inputs: [
7435
+ {
7436
+ internalType: "address",
7437
+ name: "to",
7438
+ type: "address",
7439
+ },
7440
+ {
7441
+ internalType: "uint256",
7442
+ name: "amount",
7443
+ type: "uint256",
7444
+ },
7445
+ ],
7446
+ name: "transfer",
7447
+ outputs: [
7448
+ {
7449
+ internalType: "bool",
7450
+ name: "",
7451
+ type: "bool",
7452
+ },
7453
+ ],
7454
+ stateMutability: "nonpayable",
7455
+ type: "function",
7456
+ },
7457
+ {
7458
+ inputs: [
7459
+ {
7460
+ internalType: "address",
7461
+ name: "from",
7462
+ type: "address",
7463
+ },
7464
+ {
7465
+ internalType: "address",
7466
+ name: "to",
7467
+ type: "address",
7468
+ },
7469
+ {
7470
+ internalType: "uint256",
7471
+ name: "amount",
7472
+ type: "uint256",
7473
+ },
7474
+ ],
7475
+ name: "transferFrom",
7476
+ outputs: [
7477
+ {
7478
+ internalType: "bool",
7479
+ name: "",
7480
+ type: "bool",
7481
+ },
7482
+ ],
7483
+ stateMutability: "nonpayable",
7484
+ type: "function",
7485
+ },
7486
+ ];
7487
+ const _bytecode$1 = "0x60806040523480156200001157600080fd5b50604051620017ec380380620017ec8339818101604052810190620000379190620001f6565b8160039081620000489190620004c6565b5080600490816200005a9190620004c6565b505050620005ad565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620000cc8262000081565b810181811067ffffffffffffffff82111715620000ee57620000ed62000092565b5b80604052505050565b60006200010362000063565b9050620001118282620000c1565b919050565b600067ffffffffffffffff82111562000134576200013362000092565b5b6200013f8262000081565b9050602081019050919050565b60005b838110156200016c5780820151818401526020810190506200014f565b60008484015250505050565b60006200018f620001898462000116565b620000f7565b905082815260208101848484011115620001ae57620001ad6200007c565b5b620001bb8482856200014c565b509392505050565b600082601f830112620001db57620001da62000077565b5b8151620001ed84826020860162000178565b91505092915050565b6000806040838503121562000210576200020f6200006d565b5b600083015167ffffffffffffffff81111562000231576200023062000072565b5b6200023f85828601620001c3565b925050602083015167ffffffffffffffff81111562000263576200026262000072565b5b6200027185828601620001c3565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ce57607f821691505b602082108103620002e457620002e362000286565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200034e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200030f565b6200035a86836200030f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003a7620003a16200039b8462000372565b6200037c565b62000372565b9050919050565b6000819050919050565b620003c38362000386565b620003db620003d282620003ae565b8484546200031c565b825550505050565b600090565b620003f2620003e3565b620003ff818484620003b8565b505050565b5b8181101562000427576200041b600082620003e8565b60018101905062000405565b5050565b601f82111562000476576200044081620002ea565b6200044b84620002ff565b810160208510156200045b578190505b620004736200046a85620002ff565b83018262000404565b50505b505050565b600082821c905092915050565b60006200049b600019846008026200047b565b1980831691505092915050565b6000620004b6838362000488565b9150826002028217905092915050565b620004d1826200027b565b67ffffffffffffffff811115620004ed57620004ec62000092565b5b620004f98254620002b5565b620005068282856200042b565b600060209050601f8311600181146200053e576000841562000529578287015190505b620005358582620004a8565b865550620005a5565b601f1984166200054e86620002ea565b60005b82811015620005785784890151825560018201915060208501945060208101905062000551565b8683101562000598578489015162000594601f89168262000488565b8355505b6001600288020188555050505b505050505050565b61122f80620005bd6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b0c565b60405180910390f35b6100e660048036038101906100e19190610bc7565b610308565b6040516100f39190610c22565b60405180910390f35b61010461032b565b6040516101119190610c4c565b60405180910390f35b610134600480360381019061012f9190610c67565b610335565b6040516101419190610c22565b60405180910390f35b610152610364565b60405161015f9190610cd6565b60405180910390f35b610182600480360381019061017d9190610bc7565b61036d565b60405161018f9190610c22565b60405180910390f35b6101b260048036038101906101ad9190610cf1565b6103a4565b6040516101bf9190610c4c565b60405180910390f35b6101d06103ec565b6040516101dd9190610b0c565b60405180910390f35b61020060048036038101906101fb9190610bc7565b61047e565b60405161020d9190610c22565b60405180910390f35b610230600480360381019061022b9190610bc7565b6104f5565b60405161023d9190610c22565b60405180910390f35b610260600480360381019061025b9190610d1e565b610518565b60405161026d9190610c4c565b60405180910390f35b60606003805461028590610d8d565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d8d565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610ded565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d8d565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d8d565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e93565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fb7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c4c565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90611023565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611147565b60405180910390fd5b6108e5838383610a72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111d9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a599190610c4c565b60405180910390a3610a6c848484610a77565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ab6578082015181840152602081019050610a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ade82610a7c565b610ae88185610a87565b9350610af8818560208601610a98565b610b0181610ac2565b840191505092915050565b60006020820190508181036000830152610b268184610ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5e82610b33565b9050919050565b610b6e81610b53565b8114610b7957600080fd5b50565b600081359050610b8b81610b65565b92915050565b6000819050919050565b610ba481610b91565b8114610baf57600080fd5b50565b600081359050610bc181610b9b565b92915050565b60008060408385031215610bde57610bdd610b2e565b5b6000610bec85828601610b7c565b9250506020610bfd85828601610bb2565b9150509250929050565b60008115159050919050565b610c1c81610c07565b82525050565b6000602082019050610c376000830184610c13565b92915050565b610c4681610b91565b82525050565b6000602082019050610c616000830184610c3d565b92915050565b600080600060608486031215610c8057610c7f610b2e565b5b6000610c8e86828701610b7c565b9350506020610c9f86828701610b7c565b9250506040610cb086828701610bb2565b9150509250925092565b600060ff82169050919050565b610cd081610cba565b82525050565b6000602082019050610ceb6000830184610cc7565b92915050565b600060208284031215610d0757610d06610b2e565b5b6000610d1584828501610b7c565b91505092915050565b60008060408385031215610d3557610d34610b2e565b5b6000610d4385828601610b7c565b9250506020610d5485828601610b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610da557607f821691505b602082108103610db857610db7610d5e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df882610b91565b9150610e0383610b91565b9250828201905080821115610e1b57610e1a610dbe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e7d602583610a87565b9150610e8882610e21565b604082019050919050565b60006020820190508181036000830152610eac81610e70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f0f602483610a87565b9150610f1a82610eb3565b604082019050919050565b60006020820190508181036000830152610f3e81610f02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602283610a87565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061100d601d83610a87565b915061101882610fd7565b602082019050919050565b6000602082019050818103600083015261103c81611000565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061109f602583610a87565b91506110aa82611043565b604082019050919050565b600060208201905081810360008301526110ce81611092565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611131602383610a87565b915061113c826110d5565b604082019050919050565b6000602082019050818103600083015261116081611124565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111c3602683610a87565b91506111ce82611167565b604082019050919050565b600060208201905081810360008301526111f2816111b6565b905091905056fea26469706673582212204188b273199f085e1921ec1a1fa55abdee2e425960bda675a51fac85acd9972064736f6c63430008110033";
7488
+ const isSuperArgs$1 = (xs) => xs.length > 1;
7489
+ class ERC20__factory extends ContractFactory {
7490
+ constructor(...args) {
7491
+ if (isSuperArgs$1(args)) {
7492
+ super(...args);
7493
+ }
7494
+ else {
7495
+ super(_abi$1, _bytecode$1, args[0]);
7496
+ }
7497
+ }
7498
+ deploy(name_, symbol_, overrides) {
7499
+ return super.deploy(name_, symbol_, overrides || {});
7500
+ }
7501
+ getDeployTransaction(name_, symbol_, overrides) {
7502
+ return super.getDeployTransaction(name_, symbol_, overrides || {});
7503
+ }
7504
+ attach(address) {
7505
+ return super.attach(address);
7506
+ }
7507
+ connect(signer) {
7508
+ return super.connect(signer);
7509
+ }
7510
+ static bytecode = _bytecode$1;
7511
+ static abi = _abi$1;
7512
+ static createInterface() {
7513
+ return new utils.Interface(_abi$1);
7514
+ }
7515
+ static connect(address, signerOrProvider) {
7516
+ return new Contract(address, _abi$1, signerOrProvider);
7517
+ }
7518
+ }
7519
+
7520
+ /* Autogenerated file. Do not edit manually. */
7521
+ /* tslint:disable */
7522
+ /* eslint-disable */
7523
+ const _abi = [
7524
+ {
7525
+ inputs: [
7526
+ {
7527
+ internalType: "address",
7528
+ name: "owner_",
7529
+ type: "address",
7530
+ },
7531
+ {
7532
+ internalType: "string",
7533
+ name: "name_",
7534
+ type: "string",
7535
+ },
7536
+ {
7537
+ internalType: "string",
7538
+ name: "symbol_",
7539
+ type: "string",
7540
+ },
7541
+ {
7542
+ internalType: "string",
7543
+ name: "baseURI_",
7544
+ type: "string",
7545
+ },
7546
+ {
7547
+ internalType: "string",
7548
+ name: "contractURI_",
7549
+ type: "string",
7550
+ },
7551
+ {
7552
+ internalType: "address",
7553
+ name: "_receiver",
7554
+ type: "address",
7555
+ },
7556
+ {
7557
+ internalType: "uint96",
7558
+ name: "_feeNumerator",
7559
+ type: "uint96",
7560
+ },
7561
+ ],
7562
+ stateMutability: "nonpayable",
7563
+ type: "constructor",
7564
+ },
7565
+ {
7566
+ inputs: [
7567
+ {
7568
+ internalType: "address",
7569
+ name: "target",
7570
+ type: "address",
7571
+ },
7572
+ ],
7573
+ name: "ApproveTargetNotInAllowlist",
7574
+ type: "error",
7575
+ },
7576
+ {
7577
+ inputs: [
7578
+ {
7579
+ internalType: "address",
7580
+ name: "caller",
7581
+ type: "address",
7582
+ },
7583
+ ],
7584
+ name: "CallerNotInAllowlist",
7585
+ type: "error",
7586
+ },
7587
+ {
7588
+ anonymous: false,
7589
+ inputs: [
7590
+ {
7591
+ indexed: true,
7592
+ internalType: "address",
7593
+ name: "owner",
7594
+ type: "address",
7595
+ },
7596
+ {
7597
+ indexed: true,
7598
+ internalType: "address",
7599
+ name: "approved",
7600
+ type: "address",
7601
+ },
7602
+ {
7603
+ indexed: true,
7604
+ internalType: "uint256",
7605
+ name: "tokenId",
7606
+ type: "uint256",
7607
+ },
7608
+ ],
7609
+ name: "Approval",
7610
+ type: "event",
7611
+ },
7612
+ {
7613
+ anonymous: false,
7614
+ inputs: [
7615
+ {
7616
+ indexed: true,
7617
+ internalType: "address",
7618
+ name: "owner",
7619
+ type: "address",
7620
+ },
7621
+ {
7622
+ indexed: true,
7623
+ internalType: "address",
7624
+ name: "operator",
7625
+ type: "address",
7626
+ },
7627
+ {
7628
+ indexed: false,
7629
+ internalType: "bool",
7630
+ name: "approved",
7631
+ type: "bool",
7632
+ },
7633
+ ],
7634
+ name: "ApprovalForAll",
7635
+ type: "event",
7636
+ },
7637
+ {
7638
+ anonymous: false,
7639
+ inputs: [
7640
+ {
7641
+ indexed: true,
7642
+ internalType: "bytes32",
7643
+ name: "role",
7644
+ type: "bytes32",
7645
+ },
7646
+ {
7647
+ indexed: true,
7648
+ internalType: "bytes32",
7649
+ name: "previousAdminRole",
7650
+ type: "bytes32",
7651
+ },
7652
+ {
7653
+ indexed: true,
7654
+ internalType: "bytes32",
7655
+ name: "newAdminRole",
7656
+ type: "bytes32",
7657
+ },
7658
+ ],
7659
+ name: "RoleAdminChanged",
7660
+ type: "event",
7661
+ },
7662
+ {
7663
+ anonymous: false,
7664
+ inputs: [
7665
+ {
7666
+ indexed: true,
7667
+ internalType: "bytes32",
7668
+ name: "role",
7669
+ type: "bytes32",
7670
+ },
7671
+ {
7672
+ indexed: true,
7673
+ internalType: "address",
7674
+ name: "account",
7675
+ type: "address",
7676
+ },
7677
+ {
7678
+ indexed: true,
7679
+ internalType: "address",
7680
+ name: "sender",
7681
+ type: "address",
7682
+ },
7683
+ ],
7684
+ name: "RoleGranted",
7685
+ type: "event",
7686
+ },
7687
+ {
7688
+ anonymous: false,
7689
+ inputs: [
7690
+ {
7691
+ indexed: true,
7692
+ internalType: "bytes32",
7693
+ name: "role",
7694
+ type: "bytes32",
7695
+ },
7696
+ {
7697
+ indexed: true,
7698
+ internalType: "address",
7699
+ name: "account",
7700
+ type: "address",
7701
+ },
7702
+ {
7703
+ indexed: true,
7704
+ internalType: "address",
7705
+ name: "sender",
7706
+ type: "address",
7707
+ },
7708
+ ],
7709
+ name: "RoleRevoked",
7710
+ type: "event",
7711
+ },
7712
+ {
7713
+ anonymous: false,
7714
+ inputs: [
7715
+ {
7716
+ indexed: false,
7717
+ internalType: "address",
7718
+ name: "oldRegistry",
7719
+ type: "address",
7720
+ },
7721
+ {
7722
+ indexed: false,
7723
+ internalType: "address",
7724
+ name: "newRegistry",
7725
+ type: "address",
7726
+ },
7727
+ ],
7728
+ name: "RoyaltytAllowlistRegistryUpdated",
7729
+ type: "event",
7730
+ },
7731
+ {
7732
+ anonymous: false,
7733
+ inputs: [
7734
+ {
7735
+ indexed: true,
7736
+ internalType: "address",
7737
+ name: "from",
7738
+ type: "address",
7739
+ },
7740
+ {
7741
+ indexed: true,
7742
+ internalType: "address",
7743
+ name: "to",
7744
+ type: "address",
7745
+ },
7746
+ {
7747
+ indexed: true,
7748
+ internalType: "uint256",
7749
+ name: "tokenId",
7750
+ type: "uint256",
7751
+ },
7752
+ ],
7753
+ name: "Transfer",
7754
+ type: "event",
7755
+ },
7756
+ {
7757
+ inputs: [],
7758
+ name: "DEFAULT_ADMIN_ROLE",
7759
+ outputs: [
7760
+ {
7761
+ internalType: "bytes32",
7762
+ name: "",
7763
+ type: "bytes32",
7764
+ },
7765
+ ],
7766
+ stateMutability: "view",
7767
+ type: "function",
7768
+ },
7769
+ {
7770
+ inputs: [],
7771
+ name: "MINTER_ROLE",
7772
+ outputs: [
7773
+ {
7774
+ internalType: "bytes32",
7775
+ name: "",
7776
+ type: "bytes32",
7777
+ },
7778
+ ],
7779
+ stateMutability: "view",
7780
+ type: "function",
7781
+ },
7782
+ {
7783
+ inputs: [
7784
+ {
7785
+ internalType: "address",
7786
+ name: "to",
7787
+ type: "address",
7788
+ },
7789
+ {
7790
+ internalType: "uint256",
7791
+ name: "tokenId",
7792
+ type: "uint256",
7793
+ },
7794
+ ],
7795
+ name: "approve",
7796
+ outputs: [],
7797
+ stateMutability: "nonpayable",
7798
+ type: "function",
7799
+ },
7800
+ {
7801
+ inputs: [
7802
+ {
7803
+ internalType: "address",
7804
+ name: "owner",
7805
+ type: "address",
7806
+ },
7807
+ ],
7808
+ name: "balanceOf",
7809
+ outputs: [
7810
+ {
7811
+ internalType: "uint256",
7812
+ name: "",
7813
+ type: "uint256",
7814
+ },
7815
+ ],
7816
+ stateMutability: "view",
7817
+ type: "function",
7818
+ },
7819
+ {
7820
+ inputs: [],
7821
+ name: "baseURI",
7822
+ outputs: [
7823
+ {
7824
+ internalType: "string",
7825
+ name: "",
7826
+ type: "string",
7827
+ },
7828
+ ],
7829
+ stateMutability: "view",
7830
+ type: "function",
7831
+ },
7832
+ {
7833
+ inputs: [
7834
+ {
7835
+ internalType: "uint256",
7836
+ name: "tokenId",
7837
+ type: "uint256",
7838
+ },
7839
+ ],
7840
+ name: "burn",
7841
+ outputs: [],
7842
+ stateMutability: "nonpayable",
7843
+ type: "function",
7844
+ },
7845
+ {
7846
+ inputs: [],
7847
+ name: "contractURI",
7848
+ outputs: [
7849
+ {
7850
+ internalType: "string",
7851
+ name: "",
7852
+ type: "string",
7853
+ },
7854
+ ],
7855
+ stateMutability: "view",
7856
+ type: "function",
7857
+ },
7858
+ {
7859
+ inputs: [],
7860
+ name: "getAdmins",
7861
+ outputs: [
7862
+ {
7863
+ internalType: "address[]",
7864
+ name: "",
7865
+ type: "address[]",
7866
+ },
7867
+ ],
7868
+ stateMutability: "view",
7869
+ type: "function",
7870
+ },
7871
+ {
7872
+ inputs: [
7873
+ {
7874
+ internalType: "uint256",
7875
+ name: "tokenId",
7876
+ type: "uint256",
7877
+ },
7878
+ ],
7879
+ name: "getApproved",
7880
+ outputs: [
7881
+ {
7882
+ internalType: "address",
7883
+ name: "",
7884
+ type: "address",
7885
+ },
7886
+ ],
7887
+ stateMutability: "view",
7888
+ type: "function",
7889
+ },
7890
+ {
7891
+ inputs: [
7892
+ {
7893
+ internalType: "bytes32",
7894
+ name: "role",
7895
+ type: "bytes32",
7896
+ },
7897
+ ],
7898
+ name: "getRoleAdmin",
7899
+ outputs: [
7900
+ {
7901
+ internalType: "bytes32",
7902
+ name: "",
7903
+ type: "bytes32",
7904
+ },
7905
+ ],
7906
+ stateMutability: "view",
7907
+ type: "function",
7908
+ },
7909
+ {
7910
+ inputs: [
7911
+ {
7912
+ internalType: "bytes32",
7913
+ name: "role",
7914
+ type: "bytes32",
7915
+ },
7916
+ {
7917
+ internalType: "uint256",
7918
+ name: "index",
7919
+ type: "uint256",
7920
+ },
7921
+ ],
7922
+ name: "getRoleMember",
7923
+ outputs: [
7924
+ {
7925
+ internalType: "address",
7926
+ name: "",
7927
+ type: "address",
7928
+ },
7929
+ ],
7930
+ stateMutability: "view",
7931
+ type: "function",
7932
+ },
7933
+ {
7934
+ inputs: [
7935
+ {
7936
+ internalType: "bytes32",
7937
+ name: "role",
7938
+ type: "bytes32",
7939
+ },
7940
+ ],
7941
+ name: "getRoleMemberCount",
7942
+ outputs: [
7943
+ {
7944
+ internalType: "uint256",
7945
+ name: "",
7946
+ type: "uint256",
7947
+ },
7948
+ ],
7949
+ stateMutability: "view",
7950
+ type: "function",
7951
+ },
7952
+ {
7953
+ inputs: [
7954
+ {
7955
+ internalType: "address",
7956
+ name: "user",
7957
+ type: "address",
7958
+ },
7959
+ ],
7960
+ name: "grantMinterRole",
7961
+ outputs: [],
7962
+ stateMutability: "nonpayable",
7963
+ type: "function",
7964
+ },
7965
+ {
7966
+ inputs: [
7967
+ {
7968
+ internalType: "bytes32",
7969
+ name: "role",
7970
+ type: "bytes32",
7971
+ },
7972
+ {
7973
+ internalType: "address",
7974
+ name: "account",
7975
+ type: "address",
7976
+ },
7977
+ ],
7978
+ name: "grantRole",
7979
+ outputs: [],
7980
+ stateMutability: "nonpayable",
7981
+ type: "function",
7982
+ },
7983
+ {
7984
+ inputs: [
7985
+ {
7986
+ internalType: "bytes32",
7987
+ name: "role",
7988
+ type: "bytes32",
7989
+ },
7990
+ {
7991
+ internalType: "address",
7992
+ name: "account",
7993
+ type: "address",
7994
+ },
7995
+ ],
7996
+ name: "hasRole",
7997
+ outputs: [
7998
+ {
7999
+ internalType: "bool",
8000
+ name: "",
8001
+ type: "bool",
8002
+ },
8003
+ ],
8004
+ stateMutability: "view",
8005
+ type: "function",
8006
+ },
8007
+ {
8008
+ inputs: [
8009
+ {
8010
+ internalType: "address",
8011
+ name: "owner",
8012
+ type: "address",
8013
+ },
8014
+ {
8015
+ internalType: "address",
8016
+ name: "operator",
8017
+ type: "address",
8018
+ },
8019
+ ],
8020
+ name: "isApprovedForAll",
8021
+ outputs: [
8022
+ {
8023
+ internalType: "bool",
8024
+ name: "",
8025
+ type: "bool",
8026
+ },
8027
+ ],
8028
+ stateMutability: "view",
8029
+ type: "function",
8030
+ },
8031
+ {
8032
+ inputs: [
8033
+ {
8034
+ internalType: "address",
8035
+ name: "to",
8036
+ type: "address",
8037
+ },
8038
+ {
8039
+ internalType: "uint256",
8040
+ name: "amount",
8041
+ type: "uint256",
8042
+ },
8043
+ ],
8044
+ name: "mint",
8045
+ outputs: [],
8046
+ stateMutability: "nonpayable",
8047
+ type: "function",
8048
+ },
8049
+ {
8050
+ inputs: [],
8051
+ name: "name",
8052
+ outputs: [
8053
+ {
8054
+ internalType: "string",
8055
+ name: "",
8056
+ type: "string",
8057
+ },
8058
+ ],
8059
+ stateMutability: "view",
8060
+ type: "function",
8061
+ },
8062
+ {
8063
+ inputs: [
8064
+ {
8065
+ internalType: "uint256",
8066
+ name: "tokenId",
8067
+ type: "uint256",
8068
+ },
8069
+ ],
8070
+ name: "ownerOf",
8071
+ outputs: [
8072
+ {
8073
+ internalType: "address",
8074
+ name: "",
8075
+ type: "address",
8076
+ },
8077
+ ],
8078
+ stateMutability: "view",
8079
+ type: "function",
8080
+ },
8081
+ {
8082
+ inputs: [
8083
+ {
8084
+ internalType: "bytes32",
8085
+ name: "role",
8086
+ type: "bytes32",
8087
+ },
8088
+ {
8089
+ internalType: "address",
8090
+ name: "account",
8091
+ type: "address",
8092
+ },
8093
+ ],
8094
+ name: "renounceRole",
8095
+ outputs: [],
8096
+ stateMutability: "nonpayable",
8097
+ type: "function",
8098
+ },
8099
+ {
8100
+ inputs: [
8101
+ {
8102
+ internalType: "address",
8103
+ name: "user",
8104
+ type: "address",
8105
+ },
8106
+ ],
8107
+ name: "revokeMinterRole",
8108
+ outputs: [],
8109
+ stateMutability: "nonpayable",
8110
+ type: "function",
8111
+ },
8112
+ {
8113
+ inputs: [
8114
+ {
8115
+ internalType: "bytes32",
8116
+ name: "role",
8117
+ type: "bytes32",
8118
+ },
8119
+ {
8120
+ internalType: "address",
8121
+ name: "account",
8122
+ type: "address",
8123
+ },
8124
+ ],
8125
+ name: "revokeRole",
8126
+ outputs: [],
8127
+ stateMutability: "nonpayable",
8128
+ type: "function",
8129
+ },
8130
+ {
8131
+ inputs: [],
8132
+ name: "royaltyAllowlist",
8133
+ outputs: [
8134
+ {
8135
+ internalType: "contract IRoyaltyAllowlist",
8136
+ name: "",
8137
+ type: "address",
8138
+ },
8139
+ ],
8140
+ stateMutability: "view",
8141
+ type: "function",
8142
+ },
8143
+ {
8144
+ inputs: [
8145
+ {
8146
+ internalType: "uint256",
8147
+ name: "_tokenId",
8148
+ type: "uint256",
8149
+ },
8150
+ {
8151
+ internalType: "uint256",
8152
+ name: "_salePrice",
8153
+ type: "uint256",
8154
+ },
8155
+ ],
8156
+ name: "royaltyInfo",
8157
+ outputs: [
8158
+ {
8159
+ internalType: "address",
8160
+ name: "",
8161
+ type: "address",
8162
+ },
8163
+ {
8164
+ internalType: "uint256",
8165
+ name: "",
8166
+ type: "uint256",
8167
+ },
8168
+ ],
8169
+ stateMutability: "view",
8170
+ type: "function",
8171
+ },
8172
+ {
8173
+ inputs: [
8174
+ {
8175
+ internalType: "address",
8176
+ name: "from",
8177
+ type: "address",
8178
+ },
8179
+ {
8180
+ internalType: "address",
8181
+ name: "to",
8182
+ type: "address",
8183
+ },
8184
+ {
8185
+ internalType: "uint256",
8186
+ name: "tokenId",
8187
+ type: "uint256",
8188
+ },
8189
+ ],
8190
+ name: "safeTransferFrom",
8191
+ outputs: [],
8192
+ stateMutability: "nonpayable",
8193
+ type: "function",
8194
+ },
8195
+ {
8196
+ inputs: [
8197
+ {
8198
+ internalType: "address",
8199
+ name: "from",
8200
+ type: "address",
8201
+ },
8202
+ {
8203
+ internalType: "address",
8204
+ name: "to",
8205
+ type: "address",
8206
+ },
8207
+ {
8208
+ internalType: "uint256",
8209
+ name: "tokenId",
8210
+ type: "uint256",
8211
+ },
8212
+ {
8213
+ internalType: "bytes",
8214
+ name: "data",
8215
+ type: "bytes",
8216
+ },
8217
+ ],
8218
+ name: "safeTransferFrom",
8219
+ outputs: [],
8220
+ stateMutability: "nonpayable",
8221
+ type: "function",
8222
+ },
8223
+ {
8224
+ inputs: [
8225
+ {
8226
+ internalType: "address",
8227
+ name: "operator",
8228
+ type: "address",
8229
+ },
8230
+ {
8231
+ internalType: "bool",
8232
+ name: "approved",
8233
+ type: "bool",
8234
+ },
8235
+ ],
8236
+ name: "setApprovalForAll",
8237
+ outputs: [],
8238
+ stateMutability: "nonpayable",
8239
+ type: "function",
8240
+ },
8241
+ {
8242
+ inputs: [
8243
+ {
8244
+ internalType: "string",
8245
+ name: "baseURI_",
8246
+ type: "string",
8247
+ },
8248
+ ],
8249
+ name: "setBaseURI",
8250
+ outputs: [],
8251
+ stateMutability: "nonpayable",
8252
+ type: "function",
8253
+ },
8254
+ {
8255
+ inputs: [
8256
+ {
8257
+ internalType: "string",
8258
+ name: "_contractURI",
8259
+ type: "string",
8260
+ },
8261
+ ],
8262
+ name: "setContractURI",
8263
+ outputs: [],
8264
+ stateMutability: "nonpayable",
8265
+ type: "function",
8266
+ },
8267
+ {
8268
+ inputs: [
8269
+ {
8270
+ internalType: "address",
8271
+ name: "_royaltyAllowlist",
8272
+ type: "address",
8273
+ },
8274
+ ],
8275
+ name: "setRoyaltyAllowlistRegistry",
8276
+ outputs: [],
8277
+ stateMutability: "nonpayable",
8278
+ type: "function",
8279
+ },
8280
+ {
8281
+ inputs: [
8282
+ {
8283
+ internalType: "bytes4",
8284
+ name: "interfaceId",
8285
+ type: "bytes4",
8286
+ },
8287
+ ],
8288
+ name: "supportsInterface",
8289
+ outputs: [
8290
+ {
8291
+ internalType: "bool",
8292
+ name: "",
8293
+ type: "bool",
8294
+ },
8295
+ ],
8296
+ stateMutability: "view",
8297
+ type: "function",
8298
+ },
8299
+ {
8300
+ inputs: [],
8301
+ name: "symbol",
8302
+ outputs: [
8303
+ {
8304
+ internalType: "string",
8305
+ name: "",
8306
+ type: "string",
8307
+ },
8308
+ ],
8309
+ stateMutability: "view",
8310
+ type: "function",
8311
+ },
8312
+ {
8313
+ inputs: [
8314
+ {
8315
+ internalType: "uint256",
8316
+ name: "index",
8317
+ type: "uint256",
8318
+ },
8319
+ ],
8320
+ name: "tokenByIndex",
8321
+ outputs: [
8322
+ {
8323
+ internalType: "uint256",
8324
+ name: "",
8325
+ type: "uint256",
8326
+ },
8327
+ ],
8328
+ stateMutability: "view",
8329
+ type: "function",
8330
+ },
8331
+ {
8332
+ inputs: [
8333
+ {
8334
+ internalType: "address",
8335
+ name: "owner",
8336
+ type: "address",
8337
+ },
8338
+ {
8339
+ internalType: "uint256",
8340
+ name: "index",
8341
+ type: "uint256",
8342
+ },
8343
+ ],
8344
+ name: "tokenOfOwnerByIndex",
8345
+ outputs: [
8346
+ {
8347
+ internalType: "uint256",
8348
+ name: "",
8349
+ type: "uint256",
8350
+ },
8351
+ ],
8352
+ stateMutability: "view",
8353
+ type: "function",
8354
+ },
8355
+ {
8356
+ inputs: [
8357
+ {
8358
+ internalType: "uint256",
8359
+ name: "tokenId",
8360
+ type: "uint256",
8361
+ },
8362
+ ],
8363
+ name: "tokenURI",
8364
+ outputs: [
8365
+ {
8366
+ internalType: "string",
8367
+ name: "",
8368
+ type: "string",
8369
+ },
8370
+ ],
8371
+ stateMutability: "view",
8372
+ type: "function",
8373
+ },
8374
+ {
8375
+ inputs: [],
8376
+ name: "totalSupply",
8377
+ outputs: [
8378
+ {
8379
+ internalType: "uint256",
8380
+ name: "",
8381
+ type: "uint256",
8382
+ },
8383
+ ],
8384
+ stateMutability: "view",
8385
+ type: "function",
8386
+ },
8387
+ {
8388
+ inputs: [
8389
+ {
8390
+ internalType: "address",
8391
+ name: "from",
8392
+ type: "address",
8393
+ },
8394
+ {
8395
+ internalType: "address",
8396
+ name: "to",
8397
+ type: "address",
8398
+ },
8399
+ {
8400
+ internalType: "uint256",
8401
+ name: "tokenId",
8402
+ type: "uint256",
8403
+ },
8404
+ ],
8405
+ name: "transferFrom",
8406
+ outputs: [],
8407
+ stateMutability: "nonpayable",
8408
+ type: "function",
8409
+ },
8410
+ ];
8411
+ const _bytecode = "0x60806040523480156200001157600080fd5b50604051620060d4380380620060d4833981810160405281019062000037919062000762565b868686868686868585816000908162000051919062000adc565b50806001908162000063919062000adc565b505050620000788282620000dc60201b60201c565b6200008d6000801b886200027f60201b60201c565b83601090816200009e919062000adc565b5082600f9081620000b0919062000adc565b50620000c86011620002c760201b620015f11760201c565b505050505050505050505050505062000cde565b620000ec620002dd60201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156200014d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001449062000c4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b69062000cbc565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b620002968282620002e760201b620016071760201c565b620002c28160076000858152602001908152602001600020620003d960201b620016e81790919060201c565b505050565b6001816000016000828254019250508190555050565b6000612710905090565b620002f982826200041160201b60201c565b620003d55760016006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200037a6200047c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000409836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200048460201b60201c565b905092915050565b60006006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000620004988383620004fe60201b60201c565b620004f3578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620004f8565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005628262000535565b9050919050565b620005748162000555565b81146200058057600080fd5b50565b600081519050620005948162000569565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620005ef82620005a4565b810181811067ffffffffffffffff82111715620006115762000610620005b5565b5b80604052505050565b60006200062662000521565b9050620006348282620005e4565b919050565b600067ffffffffffffffff821115620006575762000656620005b5565b5b6200066282620005a4565b9050602081019050919050565b60005b838110156200068f57808201518184015260208101905062000672565b60008484015250505050565b6000620006b2620006ac8462000639565b6200061a565b905082815260208101848484011115620006d157620006d06200059f565b5b620006de8482856200066f565b509392505050565b600082601f830112620006fe57620006fd6200059a565b5b8151620007108482602086016200069b565b91505092915050565b60006bffffffffffffffffffffffff82169050919050565b6200073c8162000719565b81146200074857600080fd5b50565b6000815190506200075c8162000731565b92915050565b600080600080600080600060e0888a0312156200078457620007836200052b565b5b6000620007948a828b0162000583565b975050602088015167ffffffffffffffff811115620007b857620007b762000530565b5b620007c68a828b01620006e6565b965050604088015167ffffffffffffffff811115620007ea57620007e962000530565b5b620007f88a828b01620006e6565b955050606088015167ffffffffffffffff8111156200081c576200081b62000530565b5b6200082a8a828b01620006e6565b945050608088015167ffffffffffffffff8111156200084e576200084d62000530565b5b6200085c8a828b01620006e6565b93505060a06200086f8a828b0162000583565b92505060c0620008828a828b016200074b565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008e457607f821691505b602082108103620008fa57620008f96200089c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000925565b62000970868362000925565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009bd620009b7620009b18462000988565b62000992565b62000988565b9050919050565b6000819050919050565b620009d9836200099c565b620009f1620009e882620009c4565b84845462000932565b825550505050565b600090565b62000a08620009f9565b62000a15818484620009ce565b505050565b5b8181101562000a3d5762000a31600082620009fe565b60018101905062000a1b565b5050565b601f82111562000a8c5762000a568162000900565b62000a618462000915565b8101602085101562000a71578190505b62000a8962000a808562000915565b83018262000a1a565b50505b505050565b600082821c905092915050565b600062000ab16000198460080262000a91565b1980831691505092915050565b600062000acc838362000a9e565b9150826002028217905092915050565b62000ae78262000891565b67ffffffffffffffff81111562000b035762000b02620005b5565b5b62000b0f8254620008cb565b62000b1c82828562000a41565b600060209050601f83116001811462000b54576000841562000b3f578287015190505b62000b4b858262000abe565b86555062000bbb565b601f19841662000b648662000900565b60005b8281101562000b8e5784890151825560018201915060208501945060208101905062000b67565b8683101562000bae578489015162000baa601f89168262000a9e565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600062000c32602a8362000bc3565b915062000c3f8262000bd4565b604082019050919050565b6000602082019050818103600083015262000c658162000c23565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000ca460198362000bc3565b915062000cb18262000c6c565b602082019050919050565b6000602082019050818103600083015262000cd78162000c95565b9050919050565b6153e68062000cee6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80636352211e1161013057806395d89b41116100b8578063ca15c8731161007c578063ca15c87314610697578063d5391393146106c7578063d547741f146106e5578063e8a3d48514610701578063e985e9c51461071f57610227565b806395d89b41146105f3578063a217fddf14610611578063a22cb4651461062f578063b88d4fde1461064b578063c87b56dd1461066757610227565b80636c0360eb116100ff5780636c0360eb1461052957806370a08231146105475780639010d07c1461057757806391d14854146105a7578063938e3d7b146105d757610227565b80636352211e146104a35780636588962a146104d357806369e2f0fb146104ef5780636b3a06321461050b57610227565b80632f745c59116101b357806340c10f191161018257806340c10f191461040357806342842e0e1461041f57806342966c681461043b5780634f6ccce71461045757806355f804b31461048757610227565b80632f745c591461037d57806331ae450b146103ad57806336568abe146103cb5780633dd1eb61146103e757610227565b806318160ddd116101fa57806318160ddd146102c657806323b872dd146102e4578063248a9ca3146103005780632a55205a146103305780632f2ff15d1461036157610227565b806301ffc9a71461022c57806306fdde031461025c578063081812fc1461027a578063095ea7b3146102aa575b600080fd5b61024660048036038101906102419190613a2e565b61074f565b6040516102539190613a76565b60405180910390f35b610264610761565b6040516102719190613b21565b60405180910390f35b610294600480360381019061028f9190613b79565b6107f3565b6040516102a19190613be7565b60405180910390f35b6102c460048036038101906102bf9190613c2e565b610839565b005b6102ce610847565b6040516102db9190613c7d565b60405180910390f35b6102fe60048036038101906102f99190613c98565b610854565b005b61031a60048036038101906103159190613d21565b6108b4565b6040516103279190613d5d565b60405180910390f35b61034a60048036038101906103459190613d78565b6108d4565b604051610358929190613db8565b60405180910390f35b61037b60048036038101906103769190613de1565b610abe565b005b61039760048036038101906103929190613c2e565b610adf565b6040516103a49190613c7d565b60405180910390f35b6103b5610b84565b6040516103c29190613edf565b60405180910390f35b6103e560048036038101906103e09190613de1565b610c64565b005b61040160048036038101906103fc9190613f01565b610ce7565b005b61041d60048036038101906104189190613c2e565b610d22565b005b61043960048036038101906104349190613c98565b610d7a565b005b61045560048036038101906104509190613b79565b610d9a565b005b610471600480360381019061046c9190613b79565b610df6565b60405161047e9190613c7d565b60405180910390f35b6104a1600480360381019061049c9190614063565b610e67565b005b6104bd60048036038101906104b89190613b79565b610e88565b6040516104ca9190613be7565b60405180910390f35b6104ed60048036038101906104e89190613f01565b610f0e565b005b61050960048036038101906105049190613f01565b611094565b005b6105136110cf565b604051610520919061410b565b60405180910390f35b6105316110f5565b60405161053e9190613b21565b60405180910390f35b610561600480360381019061055c9190613f01565b611183565b60405161056e9190613c7d565b60405180910390f35b610591600480360381019061058c9190614126565b61123a565b60405161059e9190613be7565b60405180910390f35b6105c160048036038101906105bc9190613de1565b611269565b6040516105ce9190613a76565b60405180910390f35b6105f160048036038101906105ec9190614063565b6112d4565b005b6105fb6112f5565b6040516106089190613b21565b60405180910390f35b610619611387565b6040516106269190613d5d565b60405180910390f35b61064960048036038101906106449190614192565b61138e565b005b61066560048036038101906106609190614273565b61139c565b005b610681600480360381019061067c9190613b79565b6113fe565b60405161068e9190613b21565b60405180910390f35b6106b160048036038101906106ac9190613d21565b611466565b6040516106be9190613c7d565b60405180910390f35b6106cf61148a565b6040516106dc9190613d5d565b60405180910390f35b6106ff60048036038101906106fa9190613de1565b6114ae565b005b6107096114cf565b6040516107169190613b21565b60405180910390f35b610739600480360381019061073491906142f6565b61155d565b6040516107469190613a76565b60405180910390f35b600061075a82611718565b9050919050565b60606000805461077090614365565b80601f016020809104026020016040519081016040528092919081815260200182805461079c90614365565b80156107e95780601f106107be576101008083540402835291602001916107e9565b820191906000526020600020905b8154815290600101906020018083116107cc57829003601f168201915b5050505050905090565b60006107fe82611792565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61084382826117dd565b5050565b6000600b80549050905090565b61086561085f6117f4565b826117fc565b6108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90614408565b60405180910390fd5b6108af838383611891565b505050565b600060066000838152602001908152602001600020600101549050919050565b6000806000600e60008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610a6957600d6040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610a736118a1565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610a9f9190614457565b610aa991906144c8565b90508160000151819350935050509250929050565b610ac7826108b4565b610ad0816118ab565b610ada83836118bf565b505050565b6000610aea83611183565b8210610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b229061456b565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b60606000610b946000801b611466565b905060008167ffffffffffffffff811115610bb257610bb1613f38565b5b604051908082528060200260200182016040528015610be05781602001602082028036833780820191505090505b50905060005b82811015610c5b57610bfb6000801b8261123a565b828281518110610c0e57610c0d61458b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080610c53906145ba565b915050610be6565b50809250505090565b610c6c6117f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd090614674565b60405180910390fd5b610ce382826118f3565b5050565b6000801b610cf4816118ab565b610d1e7f4d494e5445525f524f4c4500000000000000000000000000000000000000000083610abe565b5050565b7f4d494e5445525f524f4c45000000000000000000000000000000000000000000610d4c816118ab565b60005b82811015610d7457610d6084611927565b508080610d6c906145ba565b915050610d4f565b50505050565b610d958383836040518060200160405280600081525061139c565b505050565b610dab610da56117f4565b826117fc565b610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190614408565b60405180910390fd5b610df381611953565b50565b6000610e00610847565b8210610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890614706565b60405180910390fd5b600b8281548110610e5557610e5461458b565b5b90600052602060002001549050919050565b6000801b610e74816118ab565b8160109081610e8391906148c8565b505050565b600080610e9483611aa1565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc906149e6565b60405180910390fd5b80915050919050565b6000801b610f1b816118ab565b8173ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f05a3b809000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610f749190614a15565b602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190614a45565b610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90614ae4565b60405180910390fd5b7f4a1d010d926ae0d4294a4afe61ae81bb378335fbf671e099a7138b5afeefdf84600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051611047929190614b04565b60405180910390a181600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000801b6110a1816118ab565b6110cb7f4d494e5445525f524f4c45000000000000000000000000000000000000000000836114ae565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010805461110290614365565b80601f016020809104026020016040519081016040528092919081815260200182805461112e90614365565b801561117b5780601f106111505761010080835404028352916020019161117b565b820191906000526020600020905b81548152906001019060200180831161115e57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90614b9f565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006112618260076000868152602001908152602001600020611ade90919063ffffffff16565b905092915050565b60006006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b6112e1816118ab565b81600f90816112f091906148c8565b505050565b60606001805461130490614365565b80601f016020809104026020016040519081016040528092919081815260200182805461133090614365565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b5050505050905090565b6000801b81565b6113988282611af8565b5050565b6113ad6113a76117f4565b836117fc565b6113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390614408565b60405180910390fd5b6113f884848484611b0f565b50505050565b606061140982611792565b6000611413611b6b565b90506000815111611433576040518060200160405280600081525061145e565b8061143d84611bfd565b60405160200161144e929190614bfb565b6040516020818303038152906040525b915050919050565b600061148360076000848152602001908152602001600020611ccb565b9050919050565b7f4d494e5445525f524f4c4500000000000000000000000000000000000000000081565b6114b7826108b4565b6114c0816118ab565b6114ca83836118f3565b505050565b600f80546114dc90614365565b80601f016020809104026020016040519081016040528092919081815260200182805461150890614365565b80156115555780601f1061152a57610100808354040283529160200191611555565b820191906000526020600020905b81548152906001019060200180831161153857829003601f168201915b505050505081565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6001816000016000828254019250508190555050565b6116118282611269565b6116e45760016006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116896117f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611710836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611ce0565b905092915050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061178b575061178a82611d50565b5b9050919050565b61179b81611dca565b6117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d1906149e6565b60405180910390fd5b50565b6117e682611e0b565b6117f08282611f64565b5050565b600033905090565b60008061180883610e88565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061184a5750611849818561155d565b5b8061188857508373ffffffffffffffffffffffffffffffffffffffff16611870846107f3565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b61189c83838361207b565b505050565b6000612710905090565b6118bc816118b76117f4565b612093565b50565b6118c98282611607565b6118ee81600760008581526020019081526020016000206116e890919063ffffffff16565b505050565b6118fd8282612118565b61192281600760008581526020019081526020016000206121fa90919063ffffffff16565b505050565b600080611934601161222a565b90506119408382612238565b61194a60116115f1565b80915050919050565b600061195e82610e88565b905061196e816000846001612455565b61197782610e88565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a9d816000846001612467565b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000611aed836000018361246d565b60001c905092915050565b611b0182611e0b565b611b0b8282612498565b5050565b611b1a848484611891565b611b26848484846124ae565b611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90614c91565b60405180910390fd5b50505050565b606060108054611b7a90614365565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba690614365565b8015611bf35780601f10611bc857610100808354040283529160200191611bf3565b820191906000526020600020905b815481529060010190602001808311611bd657829003601f168201915b5050505050905090565b606060006001611c0c84612635565b01905060008167ffffffffffffffff811115611c2b57611c2a613f38565b5b6040519080825280601f01601f191660200182016040528015611c5d5781602001600182028036833780820191505090505b509050600082602001820190505b600115611cc0578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611cb457611cb3614499565b5b04945060008503611c6b575b819350505050919050565b6000611cd982600001612788565b9050919050565b6000611cec8383612799565b611d45578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611d4a565b600090505b92915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dc35750611dc2826127bc565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611dec83611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f605760008173ffffffffffffffffffffffffffffffffffffffff163b1480611f1f5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305a3b809826040518263ffffffff1660e01b8152600401611edd9190613be7565b602060405180830381865afa158015611efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1e9190614a45565b5b611f6157806040517f8371ab02000000000000000000000000000000000000000000000000000000008152600401611f579190613be7565b60405180910390fd5b5b50565b6000611f6f82610e88565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690614d23565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611ffe6117f4565b73ffffffffffffffffffffffffffffffffffffffff16148061202d575061202c816120276117f4565b61155d565b5b61206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390614db5565b60405180910390fd5b61207683836127ce565b505050565b612083612887565b61208e8383836129f3565b505050565b61209d8282611269565b612114576120aa81612cec565b6120b88360001c6020612d19565b6040516020016120c9929190614e6d565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210b9190613b21565b60405180910390fd5b5050565b6121228282611269565b156121f65760006006600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061219b6117f4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000612222836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612f55565b905092915050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e90614ef3565b60405180910390fd5b6122b081611dca565b156122f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e790614f5f565b60405180910390fd5b6122fe600083836001612455565b61230781611dca565b15612347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233e90614f5f565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612451600083836001612467565b5050565b61246184848484613069565b50505050565b50505050565b60008260000182815481106124855761248461458b565b5b9060005260206000200154905092915050565b6124aa6124a36117f4565b83836131c7565b5050565b60006124cf8473ffffffffffffffffffffffffffffffffffffffff16613333565b15612628578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124f86117f4565b8786866040518563ffffffff1660e01b815260040161251a9493929190614fd4565b6020604051808303816000875af192505050801561255657506040513d601f19601f820116820180604052508101906125539190615035565b60015b6125d8573d8060008114612586576040519150601f19603f3d011682016040523d82523d6000602084013e61258b565b606091505b5060008151036125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c790614c91565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061262d565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612693577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161268957612688614499565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106126d0576d04ee2d6d415b85acef810000000083816126c6576126c5614499565b5b0492506020810190505b662386f26fc1000083106126ff57662386f26fc1000083816126f5576126f4614499565b5b0492506010810190505b6305f5e1008310612728576305f5e100838161271e5761271d614499565b5b0492506008810190505b612710831061274d57612710838161274357612742614499565b5b0492506004810190505b60648310612770576064838161276657612765614499565b5b0492506002810190505b600a831061277f576001810190505b80915050919050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b60006127c782613356565b9050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661284183610e88565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f0573273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806129af5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305a3b809336040518263ffffffff1660e01b815260040161296d9190613be7565b602060405180830381865afa15801561298a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ae9190614a45565b5b6129f157336040517f937db65f0000000000000000000000000000000000000000000000000000000081526004016129e79190613be7565b60405180910390fd5b5b565b8273ffffffffffffffffffffffffffffffffffffffff16612a1382610e88565b73ffffffffffffffffffffffffffffffffffffffff1614612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a60906150d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acf90615166565b60405180910390fd5b612ae58383836001612455565b8273ffffffffffffffffffffffffffffffffffffffff16612b0582610e88565b73ffffffffffffffffffffffffffffffffffffffff1614612b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b52906150d4565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612ce78383836001612467565b505050565b6060612d128273ffffffffffffffffffffffffffffffffffffffff16601460ff16612d19565b9050919050565b606060006002836002612d2c9190614457565b612d369190615186565b67ffffffffffffffff811115612d4f57612d4e613f38565b5b6040519080825280601f01601f191660200182016040528015612d815781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612db957612db861458b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612e1d57612e1c61458b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612e5d9190614457565b612e679190615186565b90505b6001811115612f07577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612ea957612ea861458b565b5b1a60f81b828281518110612ec057612ebf61458b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612f00906151ba565b9050612e6a565b5060008414612f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f429061522f565b60405180910390fd5b8091505092915050565b6000808360010160008481526020019081526020016000205490506000811461305d576000600182612f87919061524f565b9050600060018660000180549050612f9f919061524f565b905081811461300e576000866000018281548110612fc057612fbf61458b565b5b9060005260206000200154905080876000018481548110612fe457612fe361458b565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061302257613021615283565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613063565b60009150505b92915050565b613075848484846133d0565b60018111156130b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b090615324565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603613100576130fb816134f6565b61313f565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461313e5761313d858261353f565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036131815761317c816136ac565b6131c0565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146131bf576131be848261377d565b5b5b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322c90615390565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516133269190613a76565b60405180910390a3505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806133c957506133c8826137fc565b5b9050919050565b60018111156134f057600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146134645780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461345c919061524f565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146134ef5780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134e79190615186565b925050819055505b5b50505050565b600b80549050600c600083815260200190815260200160002081905550600b81908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161354c84611183565b613556919061524f565b90506000600a600084815260200190815260200160002054905081811461363b576000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000208190555081600a600083815260200190815260200160002081905550505b600a600084815260200190815260200160002060009055600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600b805490506136c0919061524f565b90506000600c60008481526020019081526020016000205490506000600b83815481106136f0576136ef61458b565b5b9060005260206000200154905080600b83815481106137125761371161458b565b5b906000526020600020018190555081600c600083815260200190815260200160002081905550600c600085815260200190815260200160002060009055600b80548061376157613760615283565b5b6001900381819060005260206000200160009055905550505050565b600061378883611183565b905081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080600a600084815260200190815260200160002081905550505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061386f575061386e82613876565b5b9050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061394157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613951575061395082613958565b5b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a0b816139d6565b8114613a1657600080fd5b50565b600081359050613a2881613a02565b92915050565b600060208284031215613a4457613a436139cc565b5b6000613a5284828501613a19565b91505092915050565b60008115159050919050565b613a7081613a5b565b82525050565b6000602082019050613a8b6000830184613a67565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613acb578082015181840152602081019050613ab0565b60008484015250505050565b6000601f19601f8301169050919050565b6000613af382613a91565b613afd8185613a9c565b9350613b0d818560208601613aad565b613b1681613ad7565b840191505092915050565b60006020820190508181036000830152613b3b8184613ae8565b905092915050565b6000819050919050565b613b5681613b43565b8114613b6157600080fd5b50565b600081359050613b7381613b4d565b92915050565b600060208284031215613b8f57613b8e6139cc565b5b6000613b9d84828501613b64565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bd182613ba6565b9050919050565b613be181613bc6565b82525050565b6000602082019050613bfc6000830184613bd8565b92915050565b613c0b81613bc6565b8114613c1657600080fd5b50565b600081359050613c2881613c02565b92915050565b60008060408385031215613c4557613c446139cc565b5b6000613c5385828601613c19565b9250506020613c6485828601613b64565b9150509250929050565b613c7781613b43565b82525050565b6000602082019050613c926000830184613c6e565b92915050565b600080600060608486031215613cb157613cb06139cc565b5b6000613cbf86828701613c19565b9350506020613cd086828701613c19565b9250506040613ce186828701613b64565b9150509250925092565b6000819050919050565b613cfe81613ceb565b8114613d0957600080fd5b50565b600081359050613d1b81613cf5565b92915050565b600060208284031215613d3757613d366139cc565b5b6000613d4584828501613d0c565b91505092915050565b613d5781613ceb565b82525050565b6000602082019050613d726000830184613d4e565b92915050565b60008060408385031215613d8f57613d8e6139cc565b5b6000613d9d85828601613b64565b9250506020613dae85828601613b64565b9150509250929050565b6000604082019050613dcd6000830185613bd8565b613dda6020830184613c6e565b9392505050565b60008060408385031215613df857613df76139cc565b5b6000613e0685828601613d0c565b9250506020613e1785828601613c19565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e5681613bc6565b82525050565b6000613e688383613e4d565b60208301905092915050565b6000602082019050919050565b6000613e8c82613e21565b613e968185613e2c565b9350613ea183613e3d565b8060005b83811015613ed2578151613eb98882613e5c565b9750613ec483613e74565b925050600181019050613ea5565b5085935050505092915050565b60006020820190508181036000830152613ef98184613e81565b905092915050565b600060208284031215613f1757613f166139cc565b5b6000613f2584828501613c19565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f7082613ad7565b810181811067ffffffffffffffff82111715613f8f57613f8e613f38565b5b80604052505050565b6000613fa26139c2565b9050613fae8282613f67565b919050565b600067ffffffffffffffff821115613fce57613fcd613f38565b5b613fd782613ad7565b9050602081019050919050565b82818337600083830152505050565b600061400661400184613fb3565b613f98565b90508281526020810184848401111561402257614021613f33565b5b61402d848285613fe4565b509392505050565b600082601f83011261404a57614049613f2e565b5b813561405a848260208601613ff3565b91505092915050565b600060208284031215614079576140786139cc565b5b600082013567ffffffffffffffff811115614097576140966139d1565b5b6140a384828501614035565b91505092915050565b6000819050919050565b60006140d16140cc6140c784613ba6565b6140ac565b613ba6565b9050919050565b60006140e3826140b6565b9050919050565b60006140f5826140d8565b9050919050565b614105816140ea565b82525050565b600060208201905061412060008301846140fc565b92915050565b6000806040838503121561413d5761413c6139cc565b5b600061414b85828601613d0c565b925050602061415c85828601613b64565b9150509250929050565b61416f81613a5b565b811461417a57600080fd5b50565b60008135905061418c81614166565b92915050565b600080604083850312156141a9576141a86139cc565b5b60006141b785828601613c19565b92505060206141c88582860161417d565b9150509250929050565b600067ffffffffffffffff8211156141ed576141ec613f38565b5b6141f682613ad7565b9050602081019050919050565b6000614216614211846141d2565b613f98565b90508281526020810184848401111561423257614231613f33565b5b61423d848285613fe4565b509392505050565b600082601f83011261425a57614259613f2e565b5b813561426a848260208601614203565b91505092915050565b6000806000806080858703121561428d5761428c6139cc565b5b600061429b87828801613c19565b94505060206142ac87828801613c19565b93505060406142bd87828801613b64565b925050606085013567ffffffffffffffff8111156142de576142dd6139d1565b5b6142ea87828801614245565b91505092959194509250565b6000806040838503121561430d5761430c6139cc565b5b600061431b85828601613c19565b925050602061432c85828601613c19565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061437d57607f821691505b6020821081036143905761438f614336565b5b50919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006143f2602d83613a9c565b91506143fd82614396565b604082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061446282613b43565b915061446d83613b43565b925082820261447b81613b43565b9150828204841483151761449257614491614428565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144d382613b43565b91506144de83613b43565b9250826144ee576144ed614499565b5b828204905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614555602b83613a9c565b9150614560826144f9565b604082019050919050565b6000602082019050818103600083015261458481614548565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006145c582613b43565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145f7576145f6614428565b5b600182019050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061465e602f83613a9c565b915061466982614602565b604082019050919050565b6000602082019050818103600083015261468d81614651565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006146f0602c83613a9c565b91506146fb82614694565b604082019050919050565b6000602082019050818103600083015261471f816146e3565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026147887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261474b565b614792868361474b565b95508019841693508086168417925050509392505050565b60006147c56147c06147bb84613b43565b6140ac565b613b43565b9050919050565b6000819050919050565b6147df836147aa565b6147f36147eb826147cc565b848454614758565b825550505050565b600090565b6148086147fb565b6148138184846147d6565b505050565b5b818110156148375761482c600082614800565b600181019050614819565b5050565b601f82111561487c5761484d81614726565b6148568461473b565b81016020851015614865578190505b6148796148718561473b565b830182614818565b50505b505050565b600082821c905092915050565b600061489f60001984600802614881565b1980831691505092915050565b60006148b8838361488e565b9150826002028217905092915050565b6148d182613a91565b67ffffffffffffffff8111156148ea576148e9613f38565b5b6148f48254614365565b6148ff82828561483b565b600060209050601f8311600181146149325760008415614920578287015190505b61492a85826148ac565b865550614992565b601f19841661494086614726565b60005b8281101561496857848901518255600182019150602085019450602081019050614943565b868310156149855784890151614981601f89168261488e565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006149d0601883613a9c565b91506149db8261499a565b602082019050919050565b600060208201905081810360008301526149ff816149c3565b9050919050565b614a0f816139d6565b82525050565b6000602082019050614a2a6000830184614a06565b92915050565b600081519050614a3f81614166565b92915050565b600060208284031215614a5b57614a5a6139cc565b5b6000614a6984828501614a30565b91505092915050565b7f636f6e747261637420646f6573206e6f7420696d706c656d656e742049526f7960008201527f616c7479416c6c6f776c69737400000000000000000000000000000000000000602082015250565b6000614ace602d83613a9c565b9150614ad982614a72565b604082019050919050565b60006020820190508181036000830152614afd81614ac1565b9050919050565b6000604082019050614b196000830185613bd8565b614b266020830184613bd8565b9392505050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614b89602983613a9c565b9150614b9482614b2d565b604082019050919050565b60006020820190508181036000830152614bb881614b7c565b9050919050565b600081905092915050565b6000614bd582613a91565b614bdf8185614bbf565b9350614bef818560208601613aad565b80840191505092915050565b6000614c078285614bca565b9150614c138284614bca565b91508190509392505050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614c7b603283613a9c565b9150614c8682614c1f565b604082019050919050565b60006020820190508181036000830152614caa81614c6e565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d0d602183613a9c565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000614d9f603d83613a9c565b9150614daa82614d43565b604082019050919050565b60006020820190508181036000830152614dce81614d92565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000614e0b601783614bbf565b9150614e1682614dd5565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000614e57601183614bbf565b9150614e6282614e21565b601182019050919050565b6000614e7882614dfe565b9150614e848285614bca565b9150614e8f82614e4a565b9150614e9b8284614bca565b91508190509392505050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614edd602083613a9c565b9150614ee882614ea7565b602082019050919050565b60006020820190508181036000830152614f0c81614ed0565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614f49601c83613a9c565b9150614f5482614f13565b602082019050919050565b60006020820190508181036000830152614f7881614f3c565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614fa682614f7f565b614fb08185614f8a565b9350614fc0818560208601613aad565b614fc981613ad7565b840191505092915050565b6000608082019050614fe96000830187613bd8565b614ff66020830186613bd8565b6150036040830185613c6e565b81810360608301526150158184614f9b565b905095945050505050565b60008151905061502f81613a02565b92915050565b60006020828403121561504b5761504a6139cc565b5b600061505984828501615020565b91505092915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006150be602583613a9c565b91506150c982615062565b604082019050919050565b600060208201905081810360008301526150ed816150b1565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615150602483613a9c565b915061515b826150f4565b604082019050919050565b6000602082019050818103600083015261517f81615143565b9050919050565b600061519182613b43565b915061519c83613b43565b92508282019050808211156151b4576151b3614428565b5b92915050565b60006151c582613b43565b9150600082036151d8576151d7614428565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615219602083613a9c565b9150615224826151e3565b602082019050919050565b600060208201905081810360008301526152488161520c565b9050919050565b600061525a82613b43565b915061526583613b43565b925082820390508181111561527d5761527c614428565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b600061530e603583613a9c565b9150615319826152b2565b604082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061537a601983613a9c565b915061538582615344565b602082019050919050565b600060208201905081810360008301526153a98161536d565b905091905056fea2646970667358221220f2de678fa1f1a3fc28d8056ba46769331f91c7536f9259f07a82f3f97942823964736f6c63430008110033";
8412
+ const isSuperArgs = (xs) => xs.length > 1;
8413
+ class ImmutableERC721PermissionedMintable__factory extends ContractFactory {
8414
+ constructor(...args) {
8415
+ if (isSuperArgs(args)) {
8416
+ super(...args);
8417
+ }
8418
+ else {
8419
+ super(_abi, _bytecode, args[0]);
8420
+ }
8421
+ }
8422
+ deploy(owner_, name_, symbol_, baseURI_, contractURI_, _receiver, _feeNumerator, overrides) {
8423
+ return super.deploy(owner_, name_, symbol_, baseURI_, contractURI_, _receiver, _feeNumerator, overrides || {});
8424
+ }
8425
+ getDeployTransaction(owner_, name_, symbol_, baseURI_, contractURI_, _receiver, _feeNumerator, overrides) {
8426
+ return super.getDeployTransaction(owner_, name_, symbol_, baseURI_, contractURI_, _receiver, _feeNumerator, overrides || {});
8427
+ }
8428
+ attach(address) {
8429
+ return super.attach(address);
8430
+ }
8431
+ connect(signer) {
8432
+ return super.connect(signer);
8433
+ }
8434
+ static bytecode = _bytecode;
8435
+ static abi = _abi;
8436
+ static createInterface() {
8437
+ return new utils.Interface(_abi);
8438
+ }
8439
+ static connect(address, signerOrProvider) {
8440
+ return new Contract(address, _abi, signerOrProvider);
8441
+ }
8442
+ }
8443
+
8444
+ class ERC20 {
8445
+ contract;
8446
+ constructor(contractAddress) {
8447
+ const factory = new ERC20__factory();
8448
+ this.contract = factory.attach(contractAddress);
8449
+ }
8450
+ /**
8451
+ * @returns a promise that resolves with a populated transaction
8452
+ */
8453
+ async totalSupply(overrides) {
8454
+ return this.contract.populateTransaction.totalSupply(overrides);
8455
+ }
8456
+ /**
8457
+ * @returns a promise that resolves with a populated transaction
8458
+ */
8459
+ async balanceOf(account, overrides) {
8460
+ return this.contract.populateTransaction.balanceOf(account, overrides);
8461
+ }
8462
+ /**
8463
+ * @returns a promise that resolves with a populated transaction
8464
+ */
8465
+ async transfer(to, amount, overrides) {
8466
+ return this.contract.populateTransaction.transfer(to, amount, overrides);
8467
+ }
8468
+ /**
8469
+ * @returns a promise that resolves with a populated transaction
8470
+ */
8471
+ async allowance(owner, spender, overrides) {
8472
+ return this.contract.populateTransaction.allowance(owner, spender, overrides);
8473
+ }
8474
+ /**
8475
+ * @returns a promise that resolves with a populated transaction
8476
+ */
8477
+ async approve(spender, amount, overrides) {
8478
+ return this.contract.populateTransaction.approve(spender, amount, overrides);
8479
+ }
8480
+ /**
8481
+ * @returns a promise that resolves with a populated transaction
8482
+ */
8483
+ async transferFrom(from, to, amount, overrides) {
8484
+ return this.contract.populateTransaction.transferFrom(from, to, amount, overrides);
8485
+ }
8486
+ }
8487
+
8488
+ class ERC721PermissionedMintable {
8489
+ contract;
8490
+ constructor(contractAddress) {
8491
+ const factory = new ImmutableERC721PermissionedMintable__factory();
8492
+ this.contract = factory.attach(contractAddress);
8493
+ }
8494
+ /**
8495
+ * @returns a promise that resolves with a populated transaction
8496
+ */
8497
+ async DEFAULT_ADMIN_ROLE(overrides) {
8498
+ return await this.contract.populateTransaction.DEFAULT_ADMIN_ROLE(overrides);
8499
+ }
8500
+ /**
8501
+ * @returns a promise that resolves with a populated transaction
8502
+ */
8503
+ async MINTER_ROLE(overrides) {
8504
+ return await this.contract.populateTransaction.MINTER_ROLE(overrides);
8505
+ }
8506
+ /**
8507
+ * @returns a promise that resolves with a populated transaction
8508
+ */
8509
+ async approve(to, tokenId, overrides) {
8510
+ return await this.contract.populateTransaction.approve(to, tokenId, overrides);
8511
+ }
8512
+ /**
8513
+ * @returns a promise that resolves with a populated transaction
8514
+ */
8515
+ async balanceOf(owner, overrides) {
8516
+ return await this.contract.populateTransaction.balanceOf(owner, overrides);
8517
+ }
8518
+ /**
8519
+ * @returns a promise that resolves with a populated transaction
8520
+ */
8521
+ async baseURI(overrides) {
8522
+ return await this.contract.populateTransaction.baseURI(overrides);
8523
+ }
8524
+ /**
8525
+ * @returns a promise that resolves with a populated transaction
8526
+ */
8527
+ async burn(tokenId, overrides) {
8528
+ return await this.contract.populateTransaction.burn(tokenId, overrides);
8529
+ }
8530
+ /**
8531
+ * @returns a promise that resolves with a populated transaction
8532
+ */
8533
+ async contractURI(overrides) {
8534
+ return await this.contract.populateTransaction.contractURI(overrides);
8535
+ }
8536
+ /**
8537
+ * @returns a promise that resolves with a populated transaction
8538
+ */
8539
+ async getAdmins(overrides) {
8540
+ return await this.contract.populateTransaction.getAdmins(overrides);
8541
+ }
8542
+ /**
8543
+ * @returns a promise that resolves with a populated transaction
8544
+ */
8545
+ async getApproved(tokenId, overrides) {
8546
+ return await this.contract.populateTransaction.getApproved(tokenId, overrides);
8547
+ }
8548
+ /**
8549
+ * @returns a promise that resolves with a populated transaction
8550
+ */
8551
+ async getRoleAdmin(role, overrides) {
8552
+ return await this.contract.populateTransaction.getRoleAdmin(role, overrides);
8553
+ }
8554
+ /**
8555
+ * @returns a promise that resolves with a populated transaction
8556
+ */
8557
+ async getRoleMember(role, index, overrides) {
8558
+ return await this.contract.populateTransaction.getRoleMember(role, index, overrides);
8559
+ }
8560
+ /**
8561
+ * @returns a promise that resolves with a populated transaction
8562
+ */
8563
+ async getRoleMemberCount(role, overrides) {
8564
+ return await this.contract.populateTransaction.getRoleMemberCount(role, overrides);
8565
+ }
8566
+ /**
8567
+ * @returns a promise that resolves with a populated transaction
8568
+ */
8569
+ async grantMinterRole(user, overrides) {
8570
+ return await this.contract.populateTransaction.grantMinterRole(user, overrides);
8571
+ }
8572
+ /**
8573
+ * @returns a promise that resolves with a populated transaction
8574
+ */
8575
+ async grantRole(role, account, overrides) {
8576
+ return await this.contract.populateTransaction.grantRole(role, account, overrides);
8577
+ }
8578
+ /**
8579
+ * @returns a promise that resolves with a populated transaction
8580
+ */
8581
+ async hasRole(role, account, overrides) {
8582
+ return await this.contract.populateTransaction.hasRole(role, account, overrides);
8583
+ }
8584
+ /**
8585
+ * @returns a promise that resolves with a populated transaction
8586
+ */
8587
+ async isApprovedForAll(owner, operator, overrides) {
8588
+ return await this.contract.populateTransaction.isApprovedForAll(owner, operator, overrides);
8589
+ }
8590
+ /**
8591
+ * @returns a promise that resolves with a populated transaction
8592
+ */
8593
+ async mint(to, amount, overrides) {
8594
+ return await this.contract.populateTransaction.mint(to, amount, overrides);
8595
+ }
8596
+ /**
8597
+ * @returns a promise that resolves with a populated transaction
8598
+ */
8599
+ async name(overrides) {
8600
+ return await this.contract.populateTransaction.name(overrides);
8601
+ }
8602
+ /**
8603
+ * @returns a promise that resolves with a populated transaction
8604
+ */
8605
+ async ownerOf(tokenId, overrides) {
8606
+ return await this.contract.populateTransaction.ownerOf(tokenId, overrides);
8607
+ }
8608
+ /**
8609
+ * @returns a promise that resolves with a populated transaction
8610
+ */
8611
+ async renounceRole(role, account, overrides) {
8612
+ return await this.contract.populateTransaction.renounceRole(role, account, overrides);
8613
+ }
8614
+ /**
8615
+ * @returns a promise that resolves with a populated transaction
8616
+ */
8617
+ async revokeMinterRole(user, overrides) {
8618
+ return await this.contract.populateTransaction.revokeMinterRole(user, overrides);
8619
+ }
8620
+ /**
8621
+ * @returns a promise that resolves with a populated transaction
8622
+ */
8623
+ async revokeRole(role, account, overrides) {
8624
+ return await this.contract.populateTransaction.revokeRole(role, account, overrides);
8625
+ }
8626
+ /**
8627
+ * @returns a promise that resolves with a populated transaction
8628
+ */
8629
+ async royaltyAllowlist(overrides) {
8630
+ return await this.contract.populateTransaction.royaltyAllowlist(overrides);
8631
+ }
8632
+ /**
8633
+ * @returns a promise that resolves with a populated transaction
8634
+ */
8635
+ async royaltyInfo(_tokenId, _salePrice, overrides) {
8636
+ return await this.contract.populateTransaction.royaltyInfo(_tokenId, _salePrice, overrides);
8637
+ }
8638
+ /**
8639
+ * @returns a promise that resolves with a populated transaction
8640
+ */
8641
+ async 'safeTransferFrom(address,address,uint256)'(from, to, tokenId, overrides) {
8642
+ return await this.contract.populateTransaction['safeTransferFrom(address,address,uint256)'](from, to, tokenId, overrides);
8643
+ }
8644
+ /**
8645
+ * @returns a promise that resolves with a populated transaction
8646
+ */
8647
+ async 'safeTransferFrom(address,address,uint256,bytes)'(from, to, tokenId, data, overrides) {
8648
+ return await this.contract.populateTransaction['safeTransferFrom(address,address,uint256,bytes)'](from, to, tokenId, data, overrides);
8649
+ }
8650
+ /**
8651
+ * @returns a promise that resolves with a populated transaction
8652
+ */
8653
+ async setApprovalForAll(operator, approved, overrides) {
8654
+ return await this.contract.populateTransaction.setApprovalForAll(operator, approved, overrides);
8655
+ }
8656
+ /**
8657
+ * @returns a promise that resolves with a populated transaction
8658
+ */
8659
+ async setBaseURI(baseURI_, overrides) {
8660
+ return await this.contract.populateTransaction.setBaseURI(baseURI_, overrides);
8661
+ }
8662
+ /**
8663
+ * @returns a promise that resolves with a populated transaction
8664
+ */
8665
+ async setContractURI(_contractURI, overrides) {
8666
+ return await this.contract.populateTransaction.setContractURI(_contractURI, overrides);
8667
+ }
8668
+ /**
8669
+ * @returns a promise that resolves with a populated transaction
8670
+ */
8671
+ async setRoyaltyAllowlistRegistry(_royaltyAllowlist, overrides) {
8672
+ return await this.contract.populateTransaction.setRoyaltyAllowlistRegistry(_royaltyAllowlist, overrides);
8673
+ }
8674
+ /**
8675
+ * @returns a promise that resolves with a populated transaction
8676
+ */
8677
+ async symbol(overrides) {
8678
+ return await this.contract.populateTransaction.symbol(overrides);
8679
+ }
8680
+ /**
8681
+ * @returns a promise that resolves with a populated transaction
8682
+ */
8683
+ async tokenByIndex(index, overrides) {
8684
+ return await this.contract.populateTransaction.tokenByIndex(index, overrides);
8685
+ }
8686
+ /**
8687
+ * @returns a promise that resolves with a populated transaction
8688
+ */
8689
+ async tokenOfOwnerByIndex(owner, index, overrides) {
8690
+ return await this.contract.populateTransaction.tokenOfOwnerByIndex(owner, index, overrides);
8691
+ }
8692
+ /**
8693
+ * @returns a promise that resolves with a populated transaction
8694
+ */
8695
+ async tokenURI(tokenId, overrides) {
8696
+ return await this.contract.populateTransaction.tokenURI(tokenId, overrides);
8697
+ }
8698
+ /**
8699
+ * @returns a promise that resolves with a populated transaction
8700
+ */
8701
+ async totalSupply(overrides) {
8702
+ return await this.contract.populateTransaction.totalSupply(overrides);
8703
+ }
8704
+ }
6640
8705
 
6641
- export { APIError, BlockchainData, $15cc9e120aa6f3bf$export$d1bfa21f7c76447a as BridgeEventType, $1f969328e5988c99$export$30f61ebf204c69f6 as BridgeReact, $98cbcca465beec95$export$90db5fe1be5993c1 as BuyEventType, $f22931ca9e2f35b6$export$d13582032b79b401 as BuyReact, $baec09ddc3013323$export$c06e1e7429de6283 as ChainId, $a8cb37a3fc8eb863$export$1f60ba4ec72508a0 as Checkout, $a8bc256d81a5e2c1$export$e3dc0620abde7f5a as CheckoutErrorType, $045213b18e9f1f94$export$75be0f6af9650f2c as CheckoutWidgetTagNames, $430e3eda76fa4d5f$export$af210a0808087845 as CheckoutWidgets, $a85ecdbd885c58ad$export$e72e7f9969a47dd3 as ConnectEventType, $f2083cd30e2f5c56$export$49d62957f420a1e2 as ConnectReact, $d176a05e966364ba$export$3bfad4d03ada24c4 as ConnectionProviders, Environment, $d087956fd1002f80$export$fa517eee6594d26c as ExampleReact, GenericIMXProvider, $207ed853f11d19d5$export$5a0ace85cae72d45 as IMTBLWidgetEvents, ImmutableConfiguration, ImmutableXClient, MetaMaskIMXProvider, $045213b18e9f1f94$export$95be4ae94445245a as Network, $a47e48dd2c04791b$export$1f05a55fe0680cc7 as NetworkFilterTypes, $ad06b030b1a3ba34$export$b80d2daf830437b9 as OrchestrationEventType, Orderbook, Passport, PassportError, ProviderConfiguration, $430e3eda76fa4d5f$export$931068bc678f0d73 as SetProvider, $53d219e7f6bf0cd6$export$140a49745ab55563 as SwapEventType, $a4fbb8e3a6aeff58$export$971e031379577f4 as SwapReact, $08d5ddc39acd6833$export$fd9b17d87f4121d2 as TokenFilterTypes, $430e3eda76fa4d5f$export$bf1548ba7e61c17f as UpdateConfig, $77b6aac5c353d4a9$export$d9be06b70b28c742 as WalletEventType, $4f91c5f280efe242$export$a75605c67ea83a5a as WalletFilterTypes, $89d55ace0f8f1c07$export$ceaac94f34dba154 as WalletReact, $045213b18e9f1f94$export$c88931fdc51854eb as WidgetTheme, erc20, erc721permissionedmintable, module };
8706
+ export { APIError, BlockchainData, $15cc9e120aa6f3bf$export$d1bfa21f7c76447a as BridgeEventType, $1f969328e5988c99$export$30f61ebf204c69f6 as BridgeReact, $98cbcca465beec95$export$90db5fe1be5993c1 as BuyEventType, $f22931ca9e2f35b6$export$d13582032b79b401 as BuyReact, $baec09ddc3013323$export$c06e1e7429de6283 as ChainId, $a8cb37a3fc8eb863$export$1f60ba4ec72508a0 as Checkout, $a8bc256d81a5e2c1$export$e3dc0620abde7f5a as CheckoutErrorType, $045213b18e9f1f94$export$75be0f6af9650f2c as CheckoutWidgetTagNames, $430e3eda76fa4d5f$export$af210a0808087845 as CheckoutWidgets, $a85ecdbd885c58ad$export$e72e7f9969a47dd3 as ConnectEventType, $f2083cd30e2f5c56$export$49d62957f420a1e2 as ConnectReact, $d176a05e966364ba$export$3bfad4d03ada24c4 as ConnectionProviders, ERC20, ERC721PermissionedMintable, Environment, $d087956fd1002f80$export$fa517eee6594d26c as ExampleReact, GenericIMXProvider, $207ed853f11d19d5$export$5a0ace85cae72d45 as IMTBLWidgetEvents, ImmutableConfiguration, ImmutableXClient, MetaMaskIMXProvider, $045213b18e9f1f94$export$95be4ae94445245a as Network, $a47e48dd2c04791b$export$1f05a55fe0680cc7 as NetworkFilterTypes, $ad06b030b1a3ba34$export$b80d2daf830437b9 as OrchestrationEventType, Orderbook, Passport, PassportError, ProviderConfiguration, $430e3eda76fa4d5f$export$931068bc678f0d73 as SetProvider, $53d219e7f6bf0cd6$export$140a49745ab55563 as SwapEventType, $a4fbb8e3a6aeff58$export$971e031379577f4 as SwapReact, $08d5ddc39acd6833$export$fd9b17d87f4121d2 as TokenFilterTypes, $430e3eda76fa4d5f$export$bf1548ba7e61c17f as UpdateConfig, $77b6aac5c353d4a9$export$d9be06b70b28c742 as WalletEventType, $4f91c5f280efe242$export$a75605c67ea83a5a as WalletFilterTypes, $89d55ace0f8f1c07$export$ceaac94f34dba154 as WalletReact, $045213b18e9f1f94$export$c88931fdc51854eb as WidgetTheme, module };