@bosonprotocol/core-sdk 1.12.0-alpha.0 → 1.12.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/cjs/accounts/handler.d.ts +43 -1
  2. package/dist/cjs/accounts/handler.d.ts.map +1 -1
  3. package/dist/cjs/accounts/handler.js +79 -1
  4. package/dist/cjs/accounts/handler.js.map +1 -1
  5. package/dist/cjs/accounts/index.d.ts +2 -0
  6. package/dist/cjs/accounts/index.d.ts.map +1 -1
  7. package/dist/cjs/accounts/interface.d.ts +26 -3
  8. package/dist/cjs/accounts/interface.d.ts.map +1 -1
  9. package/dist/cjs/accounts/interface.js +72 -4
  10. package/dist/cjs/accounts/interface.js.map +1 -1
  11. package/dist/cjs/accounts/subgraph.d.ts +4 -1
  12. package/dist/cjs/accounts/subgraph.d.ts.map +1 -1
  13. package/dist/cjs/accounts/subgraph.js +17 -1
  14. package/dist/cjs/accounts/subgraph.js.map +1 -1
  15. package/dist/cjs/accounts/types.d.ts +28 -1
  16. package/dist/cjs/accounts/types.d.ts.map +1 -1
  17. package/dist/cjs/core-sdk.d.ts +130 -7
  18. package/dist/cjs/core-sdk.d.ts.map +1 -1
  19. package/dist/cjs/core-sdk.js +335 -13
  20. package/dist/cjs/core-sdk.js.map +1 -1
  21. package/dist/cjs/disputes/handler.d.ts +61 -0
  22. package/dist/cjs/disputes/handler.d.ts.map +1 -0
  23. package/dist/cjs/disputes/handler.js +104 -0
  24. package/dist/cjs/disputes/handler.js.map +1 -0
  25. package/dist/cjs/disputes/index.d.ts +4 -0
  26. package/dist/cjs/disputes/index.d.ts.map +1 -0
  27. package/dist/cjs/disputes/index.js +30 -0
  28. package/dist/cjs/disputes/index.js.map +1 -0
  29. package/dist/cjs/disputes/interface.d.ts +30 -0
  30. package/dist/cjs/disputes/interface.d.ts.map +1 -0
  31. package/dist/cjs/disputes/interface.js +74 -0
  32. package/dist/cjs/disputes/interface.js.map +1 -0
  33. package/dist/cjs/disputes/subgraph.d.ts +6 -0
  34. package/dist/cjs/disputes/subgraph.d.ts.map +1 -0
  35. package/dist/cjs/disputes/subgraph.js +30 -0
  36. package/dist/cjs/disputes/subgraph.js.map +1 -0
  37. package/dist/cjs/offers/index.d.ts +1 -2
  38. package/dist/cjs/offers/index.d.ts.map +1 -1
  39. package/dist/cjs/offers/index.js +1 -0
  40. package/dist/cjs/offers/index.js.map +1 -1
  41. package/dist/cjs/offers/interface.d.ts +1 -0
  42. package/dist/cjs/offers/interface.d.ts.map +1 -1
  43. package/dist/cjs/offers/interface.js +2 -1
  44. package/dist/cjs/offers/interface.js.map +1 -1
  45. package/dist/cjs/offers/renderContractualAgreement.d.ts +41 -0
  46. package/dist/cjs/offers/renderContractualAgreement.d.ts.map +1 -0
  47. package/dist/cjs/offers/renderContractualAgreement.js +156 -0
  48. package/dist/cjs/offers/renderContractualAgreement.js.map +1 -0
  49. package/dist/cjs/offers/subgraph.d.ts.map +1 -1
  50. package/dist/cjs/offers/subgraph.js.map +1 -1
  51. package/dist/cjs/orchestration/interface.d.ts.map +1 -1
  52. package/dist/cjs/orchestration/interface.js +9 -2
  53. package/dist/cjs/orchestration/interface.js.map +1 -1
  54. package/dist/cjs/subgraph.d.ts +5892 -322
  55. package/dist/cjs/subgraph.d.ts.map +1 -1
  56. package/dist/cjs/subgraph.js +431 -169
  57. package/dist/cjs/subgraph.js.map +1 -1
  58. package/dist/cjs/utils/graphql.d.ts +38 -0
  59. package/dist/cjs/utils/graphql.d.ts.map +1 -1
  60. package/dist/cjs/utils/tokenInfoManager.d.ts +16 -0
  61. package/dist/cjs/utils/tokenInfoManager.d.ts.map +1 -0
  62. package/dist/cjs/utils/tokenInfoManager.js +97 -0
  63. package/dist/cjs/utils/tokenInfoManager.js.map +1 -0
  64. package/dist/esm/accounts/handler.d.ts +43 -1
  65. package/dist/esm/accounts/handler.d.ts.map +1 -1
  66. package/dist/esm/accounts/handler.js +62 -1
  67. package/dist/esm/accounts/handler.js.map +1 -1
  68. package/dist/esm/accounts/index.d.ts +2 -0
  69. package/dist/esm/accounts/index.d.ts.map +1 -1
  70. package/dist/esm/accounts/interface.d.ts +26 -3
  71. package/dist/esm/accounts/interface.d.ts.map +1 -1
  72. package/dist/esm/accounts/interface.js +57 -4
  73. package/dist/esm/accounts/interface.js.map +1 -1
  74. package/dist/esm/accounts/subgraph.d.ts +4 -1
  75. package/dist/esm/accounts/subgraph.d.ts.map +1 -1
  76. package/dist/esm/accounts/subgraph.js +13 -0
  77. package/dist/esm/accounts/subgraph.js.map +1 -1
  78. package/dist/esm/accounts/types.d.ts +28 -1
  79. package/dist/esm/accounts/types.d.ts.map +1 -1
  80. package/dist/esm/core-sdk.d.ts +130 -7
  81. package/dist/esm/core-sdk.d.ts.map +1 -1
  82. package/dist/esm/core-sdk.js +289 -13
  83. package/dist/esm/core-sdk.js.map +1 -1
  84. package/dist/esm/disputes/handler.d.ts +61 -0
  85. package/dist/esm/disputes/handler.d.ts.map +1 -0
  86. package/dist/esm/disputes/handler.js +62 -0
  87. package/dist/esm/disputes/handler.js.map +1 -0
  88. package/dist/esm/disputes/index.d.ts +4 -0
  89. package/dist/esm/disputes/index.d.ts.map +1 -0
  90. package/dist/esm/disputes/index.js +4 -0
  91. package/dist/esm/disputes/index.js.map +1 -0
  92. package/dist/esm/disputes/interface.d.ts +30 -0
  93. package/dist/esm/disputes/interface.d.ts.map +1 -0
  94. package/dist/esm/disputes/interface.js +61 -0
  95. package/dist/esm/disputes/interface.js.map +1 -0
  96. package/dist/esm/disputes/subgraph.d.ts +6 -0
  97. package/dist/esm/disputes/subgraph.d.ts.map +1 -0
  98. package/dist/esm/disputes/subgraph.js +15 -0
  99. package/dist/esm/disputes/subgraph.js.map +1 -0
  100. package/dist/esm/offers/index.d.ts +1 -2
  101. package/dist/esm/offers/index.d.ts.map +1 -1
  102. package/dist/esm/offers/index.js +1 -0
  103. package/dist/esm/offers/index.js.map +1 -1
  104. package/dist/esm/offers/interface.d.ts +1 -0
  105. package/dist/esm/offers/interface.d.ts.map +1 -1
  106. package/dist/esm/offers/interface.js +2 -1
  107. package/dist/esm/offers/interface.js.map +1 -1
  108. package/dist/esm/offers/renderContractualAgreement.d.ts +41 -0
  109. package/dist/esm/offers/renderContractualAgreement.d.ts.map +1 -0
  110. package/dist/esm/offers/renderContractualAgreement.js +132 -0
  111. package/dist/esm/offers/renderContractualAgreement.js.map +1 -0
  112. package/dist/esm/offers/subgraph.d.ts.map +1 -1
  113. package/dist/esm/offers/subgraph.js.map +1 -1
  114. package/dist/esm/orchestration/interface.d.ts.map +1 -1
  115. package/dist/esm/orchestration/interface.js +9 -2
  116. package/dist/esm/orchestration/interface.js.map +1 -1
  117. package/dist/esm/subgraph.d.ts +5892 -322
  118. package/dist/esm/subgraph.d.ts.map +1 -1
  119. package/dist/esm/subgraph.js +429 -167
  120. package/dist/esm/subgraph.js.map +1 -1
  121. package/dist/esm/utils/graphql.d.ts +38 -0
  122. package/dist/esm/utils/graphql.d.ts.map +1 -1
  123. package/dist/esm/utils/tokenInfoManager.d.ts +16 -0
  124. package/dist/esm/utils/tokenInfoManager.d.ts.map +1 -0
  125. package/dist/esm/utils/tokenInfoManager.js +83 -0
  126. package/dist/esm/utils/tokenInfoManager.js.map +1 -0
  127. package/package.json +6 -4
  128. package/src/accounts/handler.ts +137 -4
  129. package/src/accounts/interface.ts +111 -8
  130. package/src/accounts/queries.graphql +87 -0
  131. package/src/accounts/subgraph.ts +34 -2
  132. package/src/accounts/types.ts +34 -1
  133. package/src/core-sdk.ts +420 -18
  134. package/src/disputes/handler.ts +132 -0
  135. package/src/disputes/index.ts +3 -0
  136. package/src/disputes/interface.ts +90 -0
  137. package/src/disputes/queries.graphql +56 -0
  138. package/src/disputes/subgraph.ts +34 -0
  139. package/src/metadata/product-v1.graphql +3 -0
  140. package/src/offers/index.ts +1 -0
  141. package/src/offers/interface.ts +3 -1
  142. package/src/offers/queries.graphql +37 -0
  143. package/src/offers/renderContractualAgreement.ts +203 -0
  144. package/src/offers/subgraph.ts +0 -1
  145. package/src/orchestration/interface.ts +9 -2
  146. package/src/subgraph.ts +6097 -293
  147. package/src/utils/tokenInfoManager.ts +97 -0
@@ -2,10 +2,13 @@ import { getSubgraphSdk } from "../utils/graphql";
2
2
  import {
3
3
  BuyerFieldsFragment,
4
4
  GetBuyerByIdQueryQueryVariables,
5
+ GetBuyersQueryQueryVariables,
5
6
  SellerFieldsFragment,
6
7
  GetSellersQueryQueryVariables,
7
- GetBuyersQueryQueryVariables,
8
- GetSellerByIdQueryQueryVariables
8
+ GetSellerByIdQueryQueryVariables,
9
+ GetDisputeResolverByIdQueryQueryVariables,
10
+ GetDisputeResolversQueryQueryVariables,
11
+ DisputeResolverFieldsFragment
9
12
  } from "../subgraph";
10
13
  import { BigNumberish } from "@ethersproject/bignumber";
11
14
 
@@ -19,6 +22,11 @@ export type SingleBuyerQueryVariables = Omit<
19
22
  "buyerId"
20
23
  >;
21
24
 
25
+ export type SingleDisputeResolverQueryVariables = Omit<
26
+ GetDisputeResolverByIdQueryQueryVariables,
27
+ "disputeResolverId"
28
+ >;
29
+
22
30
  export async function getBuyerById(
23
31
  subgraphUrl: string,
24
32
  buyerId: BigNumberish,
@@ -137,3 +145,27 @@ export async function getSellerByAddress(
137
145
 
138
146
  return operator || admin || clerk || treasury;
139
147
  }
148
+
149
+ export async function getDisputeResolverById(
150
+ subgraphUrl: string,
151
+ disputeResolverId: BigNumberish,
152
+ queryVars: SingleDisputeResolverQueryVariables = {}
153
+ ): Promise<DisputeResolverFieldsFragment> {
154
+ const sdk = getSubgraphSdk(subgraphUrl);
155
+ const { disputeResolver } = await sdk.getDisputeResolverByIdQuery({
156
+ disputeResolverId: disputeResolverId.toString(),
157
+ ...queryVars
158
+ });
159
+ return disputeResolver;
160
+ }
161
+
162
+ export async function getDisputeResolvers(
163
+ subgraphUrl: string,
164
+ queryVars: GetDisputeResolversQueryQueryVariables = {}
165
+ ): Promise<DisputeResolverFieldsFragment[]> {
166
+ const sdk = getSubgraphSdk(subgraphUrl);
167
+ const { disputeResolvers = [] } = await sdk.getDisputeResolversQuery(
168
+ queryVars
169
+ );
170
+ return disputeResolvers;
171
+ }
@@ -1 +1,34 @@
1
- export { CreateSellerArgs } from "@bosonprotocol/common";
1
+ import { BigNumberish } from "@ethersproject/bignumber";
2
+ import { DisputeResolverStruct } from "@bosonprotocol/common";
3
+
4
+ export { CreateSellerArgs, DisputeResolverStruct } from "@bosonprotocol/common";
5
+
6
+ export type CreateDisputeResolverArgs = {
7
+ escalationResponsePeriodInMS: number;
8
+ operator: string;
9
+ admin: string;
10
+ clerk: string;
11
+ treasury: string;
12
+ metadataUri: string;
13
+ /**
14
+ * List of supported fees. Should contain at lest one element.
15
+ */
16
+ fees: DisputeResolutionFee[];
17
+ /**
18
+ * Ids of sellers that are allowed to use the dispute resolver.
19
+ * If empty or `undefined`, then any seller can use the dispute resolver.
20
+ */
21
+ sellerAllowList?: BigNumberish[];
22
+ };
23
+
24
+ export type DisputeResolutionFee = {
25
+ tokenAddress: string;
26
+ tokenName: string;
27
+ feeAmount: BigNumberish;
28
+ };
29
+
30
+ export type DisputeResolverUpdates = Partial<
31
+ Omit<DisputeResolverStruct, "id" | "active" | "escalationResponsePeriod"> & {
32
+ escalationResponsePeriodInMS: BigNumberish;
33
+ }
34
+ >;
package/src/core-sdk.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { ITokenInfo, TokenInfoManager } from "./utils/tokenInfoManager";
1
2
  import {
2
3
  Web3LibAdapter,
3
4
  TransactionResponse,
@@ -8,8 +9,10 @@ import {
8
9
  } from "@bosonprotocol/common";
9
10
  import { BigNumberish } from "@ethersproject/bignumber";
10
11
  import { AddressZero } from "@ethersproject/constants";
12
+ import { BytesLike } from "@ethersproject/bytes";
11
13
 
12
14
  import * as accounts from "./accounts";
15
+ import * as disputes from "./disputes";
13
16
  import * as exchanges from "./exchanges";
14
17
  import * as offers from "./offers";
15
18
  import * as orchestration from "./orchestration";
@@ -28,6 +31,8 @@ export class CoreSDK {
28
31
 
29
32
  private _subgraphUrl: string;
30
33
  private _protocolDiamond: string;
34
+ private _chainId: number;
35
+ private _tokenInfoManager: TokenInfoManager;
31
36
 
32
37
  /**
33
38
  * Creates an instance of `CoreSDK`
@@ -39,12 +44,14 @@ export class CoreSDK {
39
44
  protocolDiamond: string;
40
45
  metadataStorage?: MetadataStorage;
41
46
  theGraphStorage?: MetadataStorage;
47
+ chainId?: number;
42
48
  }) {
43
49
  this._web3Lib = opts.web3Lib;
44
50
  this._subgraphUrl = opts.subgraphUrl;
45
51
  this._protocolDiamond = opts.protocolDiamond;
46
52
  this._metadataStorage = opts.metadataStorage;
47
53
  this._theGraphStorage = opts.theGraphStorage;
54
+ this._chainId = opts.chainId;
48
55
  }
49
56
 
50
57
  /**
@@ -80,7 +87,8 @@ export class CoreSDK {
80
87
  metadataStorage: args.metadataStorage,
81
88
  theGraphStorage: args.theGraphStorage,
82
89
  subgraphUrl: defaultConfig.subgraphUrl,
83
- protocolDiamond: defaultConfig.contracts.protocolDiamond
90
+ protocolDiamond: defaultConfig.contracts.protocolDiamond,
91
+ chainId: args.chainId
84
92
  });
85
93
  }
86
94
 
@@ -201,6 +209,40 @@ export class CoreSDK {
201
209
  );
202
210
  }
203
211
 
212
+ /**
213
+ * Returns seller entity from subgraph.
214
+ * @param admin - Admin address of seller entity to query for.
215
+ * @param queryVars - Optional query variables to skip, order or filter.
216
+ * @returns Seller entity from subgraph.
217
+ */
218
+ public async getSellerByAdmin(
219
+ admin: string,
220
+ queryVars?: subgraph.GetSellersQueryQueryVariables
221
+ ): Promise<subgraph.SellerFieldsFragment> {
222
+ return accounts.subgraph.getSellerByAdmin(
223
+ this._subgraphUrl,
224
+ admin,
225
+ queryVars
226
+ );
227
+ }
228
+
229
+ /**
230
+ * Returns seller entity from subgraph.
231
+ * @param treasury - Treasury address of seller entity to query for.
232
+ * @param queryVars - Optional query variables to skip, order or filter.
233
+ * @returns Seller entity from subgraph.
234
+ */
235
+ public async getSellerByTreasury(
236
+ treasury: string,
237
+ queryVars?: subgraph.GetSellersQueryQueryVariables
238
+ ): Promise<subgraph.SellerFieldsFragment> {
239
+ return accounts.subgraph.getSellerByTreasury(
240
+ this._subgraphUrl,
241
+ treasury,
242
+ queryVars
243
+ );
244
+ }
245
+
204
246
  /**
205
247
  * Returns seller entity from subgraph. Matches `operator`, `clerk`, `admin` or `treasury`.
206
248
  * @param address - Address of seller entity to query for.
@@ -231,7 +273,7 @@ export class CoreSDK {
231
273
 
232
274
  /**
233
275
  * Creates seller account by calling the `AccountHandlerFacet` contract.
234
- * @param sellerToCreate - Addresses to set in the seller account.
276
+ * @param sellerToCreate - Addresses and contract URI to set in the seller account.
235
277
  * @param overrides - Optional overrides.
236
278
  * @returns Transaction response.
237
279
  */
@@ -295,7 +337,7 @@ export class CoreSDK {
295
337
  /**
296
338
  * Returns buyer entities from subgraph.
297
339
  * @param queryVars - Optional query variables to skip, order or filter.
298
- * @returns Seller entities from subgraph.
340
+ * @returns Buyer entities from subgraph.
299
341
  */
300
342
  public async getBuyers(
301
343
  queryVars?: subgraph.GetBuyersQueryQueryVariables
@@ -303,6 +345,184 @@ export class CoreSDK {
303
345
  return accounts.subgraph.getBuyers(this._subgraphUrl, queryVars);
304
346
  }
305
347
 
348
+ /* ---------------------------- Dispute Resolver ---------------------------- */
349
+
350
+ /**
351
+ * Creates a dispute resolver account by calling the `AccountHandlerFacet` contract.
352
+ * @param disputeResolverToCreate - Dispute resolver arguments.
353
+ * @returns Transaction response.
354
+ */
355
+ public async createDisputeResolver(
356
+ disputeResolverToCreate: accounts.CreateDisputeResolverArgs
357
+ ): Promise<TransactionResponse> {
358
+ return accounts.handler.createDisputeResolver({
359
+ disputeResolverToCreate,
360
+ contractAddress: this._protocolDiamond,
361
+ web3Lib: this._web3Lib
362
+ });
363
+ }
364
+
365
+ /**
366
+ * Utility method to retrieve the created `exchangeId` from logs after calling `commitToOffer`.
367
+ * @param logs - Logs to search in.
368
+ * @returns Created exchange id.
369
+ */
370
+ public getDisputeResolverIdFromLogs(logs: Log[]): string | null {
371
+ return getValueFromLogs({
372
+ iface: accounts.iface.bosonAccountHandlerIface,
373
+ logs,
374
+ eventArgsKey: "disputeResolverId",
375
+ eventName: "DisputeResolverCreated"
376
+ });
377
+ }
378
+
379
+ /**
380
+ * Updates a dispute resolver account by calling the `AccountHandlerFacet` contract.
381
+ * Note, that the caller must be the specified `admin` address of the dispute resolver account.
382
+ * @param disputeResolverId - Id of dispute resolver to update.
383
+ * @param updates - Values to update for the given dispute resolver.
384
+ * @returns Transaction response.
385
+ */
386
+ public async updateDisputeResolver(
387
+ disputeResolverId: BigNumberish,
388
+ updates: accounts.DisputeResolverUpdates
389
+ ): Promise<TransactionResponse> {
390
+ return accounts.handler.updateDisputeResolver({
391
+ disputeResolverId,
392
+ updates,
393
+ subgraphUrl: this._subgraphUrl,
394
+ contractAddress: this._protocolDiamond,
395
+ web3Lib: this._web3Lib
396
+ });
397
+ }
398
+
399
+ /**
400
+ * Activates a dispute resolver account by calling the `AccountHandlerFacet` contract.
401
+ * Note, that the caller needs to have the ADMIN role.
402
+ * @param disputeResolverId - Id of dispute resolver to activate.
403
+ * @returns Transaction response.
404
+ */
405
+ public async activateDisputeResolver(
406
+ disputeResolverId: BigNumberish
407
+ ): Promise<TransactionResponse> {
408
+ return accounts.handler.activateDisputeResolver({
409
+ disputeResolverId,
410
+ contractAddress: this._protocolDiamond,
411
+ web3Lib: this._web3Lib
412
+ });
413
+ }
414
+
415
+ /**
416
+ * Adds fees to a dispute resolver account by calling the `AccountHandlerFacet`
417
+ * contract. Note, that the caller must be the specified `admin` address of the dispute
418
+ * resolver account.
419
+ * @param disputeResolverId - Id of dispute resolver.
420
+ * @param fees - Dispute resolution fees. Should only contain token addresses that are
421
+ * not already specified.
422
+ * @returns Transaction response.
423
+ */
424
+ public async addFeesToDisputeResolver(
425
+ disputeResolverId: BigNumberish,
426
+ fees: accounts.DisputeResolutionFee[]
427
+ ): Promise<TransactionResponse> {
428
+ return accounts.handler.addFeesToDisputeResolver({
429
+ disputeResolverId,
430
+ fees,
431
+ contractAddress: this._protocolDiamond,
432
+ web3Lib: this._web3Lib
433
+ });
434
+ }
435
+
436
+ /**
437
+ * Adds sellers to the allow list of a dispute resolver account by calling the
438
+ * `AccountHandlerFacet` contract. Note, that the caller must be the specified
439
+ * `admin` address of the dispute resolver account.
440
+ * @param disputeResolverId - Id of dispute resolver.
441
+ * @param sellerAllowList - List of seller ids that are allowed to use the dispute resolver.
442
+ * Should only contain seller ids that are not part of the current allow list.
443
+ * @returns Transaction response.
444
+ */
445
+ public async addSellersToDisputeResolverAllowList(
446
+ disputeResolverId: BigNumberish,
447
+ sellerAllowList: BigNumberish[]
448
+ ): Promise<TransactionResponse> {
449
+ return accounts.handler.addSellersToAllowList({
450
+ disputeResolverId,
451
+ sellerAllowList,
452
+ contractAddress: this._protocolDiamond,
453
+ web3Lib: this._web3Lib
454
+ });
455
+ }
456
+
457
+ /**
458
+ * Removes fees from a dispute resolver account by calling the `AccountHandlerFacet`
459
+ * contract. Note, that the caller must be the specified `admin` address of the dispute
460
+ * resolver account.
461
+ * @param disputeResolverId - Id of dispute resolver.
462
+ * @param feeTokenAddresses - Addresses of fee tokens to remove.
463
+ * @returns Transaction response.
464
+ */
465
+ public async removeFeesFromDisputeResolver(
466
+ disputeResolverId: BigNumberish,
467
+ feeTokenAddresses: string[]
468
+ ): Promise<TransactionResponse> {
469
+ return accounts.handler.removeFeesFromDisputeResolver({
470
+ disputeResolverId,
471
+ feeTokenAddresses,
472
+ contractAddress: this._protocolDiamond,
473
+ web3Lib: this._web3Lib
474
+ });
475
+ }
476
+
477
+ /**
478
+ * Removes sellers from the allow list of a dispute resolver account by calling the
479
+ * `AccountHandlerFacet` contract. Note, that the caller must be the specified
480
+ * `admin` address of the dispute resolver account.
481
+ * @param disputeResolverId - Id of dispute resolver.
482
+ * @param sellerAllowList - List of seller ids that should be removed from the allow
483
+ * list of a dispute resolver.
484
+ * @returns Transaction response.
485
+ */
486
+ public async removeSellersFromDisputeResolverAllowList(
487
+ disputeResolverId: BigNumberish,
488
+ sellerAllowList: string[]
489
+ ): Promise<TransactionResponse> {
490
+ return accounts.handler.removeSellersFromAllowList({
491
+ disputeResolverId,
492
+ sellerAllowList,
493
+ contractAddress: this._protocolDiamond,
494
+ web3Lib: this._web3Lib
495
+ });
496
+ }
497
+
498
+ /**
499
+ * Returns dispute resolver entity from subgraph.
500
+ * @param disputeResolverId - ID of dispute resolver entity to query for.
501
+ * @param queryVars - Optional query variables to skip, order or filter.
502
+ * @returns Dispute resolver entity from subgraph.
503
+ */
504
+ public async getDisputeResolverById(
505
+ disputeResolverId: BigNumberish,
506
+ queryVars?: accounts.subgraph.SingleDisputeResolverQueryVariables
507
+ ): Promise<subgraph.DisputeResolverFieldsFragment> {
508
+ return accounts.subgraph.getDisputeResolverById(
509
+ this._subgraphUrl,
510
+ disputeResolverId,
511
+ queryVars
512
+ );
513
+ }
514
+
515
+ /**
516
+ * Returns dispute resolver entities from subgraph.
517
+ * @param queryVars - Optional query variables to skip, order or filter.
518
+ * @returns Dispute resolver entities from subgraph.
519
+ */
520
+ public async getDisputeResolvers(
521
+ queryVars?: subgraph.GetDisputeResolversQueryQueryVariables
522
+ ): Promise<subgraph.DisputeResolverFieldsFragment[]> {
523
+ return accounts.subgraph.getDisputeResolvers(this._subgraphUrl, queryVars);
524
+ }
525
+
306
526
  /* -------------------------------------------------------------------------- */
307
527
  /* Offer related methods */
308
528
  /* -------------------------------------------------------------------------- */
@@ -429,22 +649,21 @@ export class CoreSDK {
429
649
  * @param exchangeToken - Address exchange token.
430
650
  * @returns Decimals, name and symbol.
431
651
  */
432
- public async getExchangeTokenInfo(exchangeToken: string): Promise<{
433
- name: string;
434
- decimals: number;
435
- symbol: string;
436
- }> {
437
- const args = {
438
- web3Lib: this._web3Lib,
439
- contractAddress: exchangeToken
440
- };
441
- const [decimals, name, symbol] = await Promise.all([
442
- erc20.handler.getDecimals(args),
443
- erc20.handler.getName(args),
444
- erc20.handler.getSymbol(args)
445
- ]);
652
+ public async getExchangeTokenInfo(
653
+ exchangeToken: string
654
+ ): Promise<ITokenInfo> {
655
+ if (this._chainId === undefined) {
656
+ this._chainId = await this._web3Lib.getChainId();
657
+ }
446
658
 
447
- return { decimals, name, symbol };
659
+ if (this._tokenInfoManager === undefined) {
660
+ this._tokenInfoManager = new TokenInfoManager(
661
+ this._chainId,
662
+ this._web3Lib
663
+ );
664
+ }
665
+
666
+ return this._tokenInfoManager.getExchangeTokenInfo(exchangeToken);
448
667
  }
449
668
 
450
669
  /**
@@ -707,6 +926,171 @@ export class CoreSDK {
707
926
  });
708
927
  }
709
928
 
929
+ /* -------------------------------------------------------------------------- */
930
+ /* Dispute related methods */
931
+ /* -------------------------------------------------------------------------- */
932
+
933
+ public async getDisputeById(
934
+ disputeId: BigNumberish,
935
+ queryVars?: disputes.subgraph.SingleDisputeQueryVariables
936
+ ) {
937
+ return disputes.subgraph.getDisputeById(
938
+ this._subgraphUrl,
939
+ disputeId,
940
+ queryVars
941
+ );
942
+ }
943
+
944
+ public async getDisputes(
945
+ queryVars?: subgraph.GetDisputesQueryQueryVariables
946
+ ) {
947
+ return disputes.subgraph.getDisputes(this._subgraphUrl, queryVars);
948
+ }
949
+
950
+ public async raiseDispute(
951
+ exchangeId: BigNumberish,
952
+ complaint: string
953
+ ): Promise<TransactionResponse> {
954
+ return disputes.handler.raiseDispute({
955
+ exchangeId,
956
+ complaint,
957
+ contractAddress: this._protocolDiamond,
958
+ web3Lib: this._web3Lib
959
+ });
960
+ }
961
+
962
+ public async retractDispute(
963
+ exchangeId: BigNumberish
964
+ ): Promise<TransactionResponse> {
965
+ return disputes.handler.retractDispute({
966
+ exchangeId,
967
+ contractAddress: this._protocolDiamond,
968
+ web3Lib: this._web3Lib
969
+ });
970
+ }
971
+
972
+ public async extendDisputeTimeout(
973
+ exchangeId: BigNumberish,
974
+ newDisputeTimeout: BigNumberish
975
+ ): Promise<TransactionResponse> {
976
+ return disputes.handler.extendDisputeTimeout({
977
+ exchangeId,
978
+ newDisputeTimeout,
979
+ contractAddress: this._protocolDiamond,
980
+ web3Lib: this._web3Lib
981
+ });
982
+ }
983
+
984
+ public async expireDispute(
985
+ exchangeId: BigNumberish
986
+ ): Promise<TransactionResponse> {
987
+ return disputes.handler.expireDispute({
988
+ exchangeId,
989
+ contractAddress: this._protocolDiamond,
990
+ web3Lib: this._web3Lib
991
+ });
992
+ }
993
+
994
+ public async expireDisputeBatch(
995
+ exchangeIds: BigNumberish[]
996
+ ): Promise<TransactionResponse> {
997
+ return disputes.handler.expireDisputeBatch({
998
+ exchangeIds,
999
+ contractAddress: this._protocolDiamond,
1000
+ web3Lib: this._web3Lib
1001
+ });
1002
+ }
1003
+
1004
+ public async resolveDispute(args: {
1005
+ exchangeId: BigNumberish;
1006
+ buyerPercent: BigNumberish;
1007
+ sigR: BytesLike;
1008
+ sigS: BytesLike;
1009
+ sigV: BigNumberish;
1010
+ }): Promise<TransactionResponse> {
1011
+ return disputes.handler.resolveDispute({
1012
+ ...args,
1013
+ contractAddress: this._protocolDiamond,
1014
+ web3Lib: this._web3Lib
1015
+ });
1016
+ }
1017
+
1018
+ public async escalateDispute(
1019
+ exchangeId: BigNumberish
1020
+ ): Promise<TransactionResponse> {
1021
+ return disputes.handler.escalateDispute({
1022
+ exchangeId,
1023
+ contractAddress: this._protocolDiamond,
1024
+ web3Lib: this._web3Lib
1025
+ });
1026
+ }
1027
+
1028
+ public async decideDispute(
1029
+ exchangeId: BigNumberish,
1030
+ buyerPercent: BigNumberish
1031
+ ): Promise<TransactionResponse> {
1032
+ return disputes.handler.decideDispute({
1033
+ exchangeId,
1034
+ buyerPercent,
1035
+ contractAddress: this._protocolDiamond,
1036
+ web3Lib: this._web3Lib
1037
+ });
1038
+ }
1039
+
1040
+ public async refuseEscalatedDispute(
1041
+ exchangeId: BigNumberish
1042
+ ): Promise<TransactionResponse> {
1043
+ return disputes.handler.refuseEscalatedDispute({
1044
+ exchangeId,
1045
+ contractAddress: this._protocolDiamond,
1046
+ web3Lib: this._web3Lib
1047
+ });
1048
+ }
1049
+
1050
+ public async expireEscalatedDispute(
1051
+ exchangeId: BigNumberish
1052
+ ): Promise<TransactionResponse> {
1053
+ return disputes.handler.expireEscalatedDispute({
1054
+ exchangeId,
1055
+ contractAddress: this._protocolDiamond,
1056
+ web3Lib: this._web3Lib
1057
+ });
1058
+ }
1059
+
1060
+ public async signMutualAgreement(args: {
1061
+ exchangeId: string;
1062
+ buyerPercent: string;
1063
+ }) {
1064
+ // Set the message Type, needed for signature
1065
+ const resolutionType = [
1066
+ { name: "exchangeId", type: "uint256" },
1067
+ { name: "buyerPercent", type: "uint256" }
1068
+ ];
1069
+
1070
+ const customSignatureType = {
1071
+ Resolution: resolutionType
1072
+ };
1073
+
1074
+ const message = {
1075
+ exchangeId: args.exchangeId,
1076
+ buyerPercent: args.buyerPercent
1077
+ };
1078
+
1079
+ if (this._chainId === undefined) {
1080
+ this._chainId = await this._web3Lib.getChainId();
1081
+ }
1082
+
1083
+ return metaTx.handler.prepareDataSignatureParameters({
1084
+ web3Lib: this._web3Lib,
1085
+ metaTxHandlerAddress: this._protocolDiamond,
1086
+ chainId: this._chainId,
1087
+ customTransactionType: customSignatureType,
1088
+ primaryType: "Resolution",
1089
+ message,
1090
+ nonce: "" // not used in this case
1091
+ });
1092
+ }
1093
+
710
1094
  /* -------------------------------------------------------------------------- */
711
1095
  /* Meta Tx related methods */
712
1096
  /* -------------------------------------------------------------------------- */
@@ -767,4 +1151,22 @@ export class CoreSDK {
767
1151
  ...args
768
1152
  });
769
1153
  }
1154
+
1155
+ public async renderContractualAgreementForOffer(
1156
+ offerId: BigNumberish
1157
+ ): Promise<string> {
1158
+ const offerData = await offers.subgraph.getOfferById(
1159
+ this._subgraphUrl,
1160
+ offerId
1161
+ );
1162
+ return offers.renderContractualAgreementForOffer(offerData);
1163
+ }
1164
+
1165
+ public async renderContractualAgreement(
1166
+ template: string,
1167
+ offerData: offers.CreateOfferArgs
1168
+ ): Promise<string> {
1169
+ const tokenInfo = await this.getExchangeTokenInfo(offerData.exchangeToken);
1170
+ return offers.renderContractualAgreement(template, offerData, tokenInfo);
1171
+ }
770
1172
  }