@bosonprotocol/core-sdk 1.23.0-alpha.2 → 1.23.0-alpha.21

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 (203) hide show
  1. package/dist/cjs/accounts/mixin.d.ts +194 -0
  2. package/dist/cjs/accounts/mixin.d.ts.map +1 -0
  3. package/dist/cjs/accounts/mixin.js +426 -0
  4. package/dist/cjs/accounts/mixin.js.map +1 -0
  5. package/dist/cjs/core-sdk.d.ts +16 -818
  6. package/dist/cjs/core-sdk.d.ts.map +1 -1
  7. package/dist/cjs/core-sdk.js +26 -1579
  8. package/dist/cjs/core-sdk.js.map +1 -1
  9. package/dist/cjs/disputes/mixin.d.ts +113 -0
  10. package/dist/cjs/disputes/mixin.d.ts.map +1 -0
  11. package/dist/cjs/disputes/mixin.js +203 -0
  12. package/dist/cjs/disputes/mixin.js.map +1 -0
  13. package/dist/cjs/erc1155/handler.d.ts +9 -0
  14. package/dist/cjs/erc1155/handler.d.ts.map +1 -0
  15. package/dist/cjs/erc1155/handler.js +28 -0
  16. package/dist/cjs/erc1155/handler.js.map +1 -0
  17. package/dist/cjs/erc1155/index.d.ts +3 -0
  18. package/dist/cjs/erc1155/index.d.ts.map +1 -0
  19. package/dist/cjs/erc1155/index.js +29 -0
  20. package/dist/cjs/erc1155/index.js.map +1 -0
  21. package/dist/cjs/erc1155/interface.d.ts +3 -0
  22. package/dist/cjs/erc1155/interface.d.ts.map +1 -0
  23. package/dist/cjs/erc1155/interface.js +7 -0
  24. package/dist/cjs/erc1155/interface.js.map +1 -0
  25. package/dist/cjs/erc20/handler.d.ts +5 -0
  26. package/dist/cjs/erc20/handler.d.ts.map +1 -1
  27. package/dist/cjs/erc20/handler.js +12 -1
  28. package/dist/cjs/erc20/handler.js.map +1 -1
  29. package/dist/cjs/erc721/handler.d.ts +5 -0
  30. package/dist/cjs/erc721/handler.d.ts.map +1 -1
  31. package/dist/cjs/erc721/handler.js +12 -1
  32. package/dist/cjs/erc721/handler.js.map +1 -1
  33. package/dist/cjs/event-logs/mixin.d.ts +11 -0
  34. package/dist/cjs/event-logs/mixin.d.ts.map +1 -0
  35. package/dist/cjs/event-logs/mixin.js +28 -0
  36. package/dist/cjs/event-logs/mixin.js.map +1 -0
  37. package/dist/cjs/exchanges/mixin.d.ts +77 -0
  38. package/dist/cjs/exchanges/mixin.d.ts.map +1 -0
  39. package/dist/cjs/exchanges/mixin.js +172 -0
  40. package/dist/cjs/exchanges/mixin.js.map +1 -0
  41. package/dist/cjs/funds/mixin.d.ts +42 -0
  42. package/dist/cjs/funds/mixin.d.ts.map +1 -0
  43. package/dist/cjs/funds/mixin.js +95 -0
  44. package/dist/cjs/funds/mixin.js.map +1 -0
  45. package/dist/cjs/groups/mixin.d.ts +14 -0
  46. package/dist/cjs/groups/mixin.d.ts.map +1 -0
  47. package/dist/cjs/groups/mixin.js +33 -0
  48. package/dist/cjs/groups/mixin.js.map +1 -0
  49. package/dist/cjs/meta-tx/mixin.d.ts +176 -0
  50. package/dist/cjs/meta-tx/mixin.d.ts.map +1 -0
  51. package/dist/cjs/meta-tx/mixin.js +296 -0
  52. package/dist/cjs/meta-tx/mixin.js.map +1 -0
  53. package/dist/cjs/metadata/mixin.d.ts +42 -0
  54. package/dist/cjs/metadata/mixin.d.ts.map +1 -0
  55. package/dist/cjs/metadata/mixin.js +89 -0
  56. package/dist/cjs/metadata/mixin.js.map +1 -0
  57. package/dist/cjs/metadata/subgraph.d.ts +3 -1
  58. package/dist/cjs/metadata/subgraph.d.ts.map +1 -1
  59. package/dist/cjs/metadata/subgraph.js +17 -1
  60. package/dist/cjs/metadata/subgraph.js.map +1 -1
  61. package/dist/cjs/mixins/base-core-sdk.d.ts +41 -0
  62. package/dist/cjs/mixins/base-core-sdk.d.ts.map +1 -0
  63. package/dist/cjs/mixins/base-core-sdk.js +51 -0
  64. package/dist/cjs/mixins/base-core-sdk.js.map +1 -0
  65. package/dist/cjs/native-meta-tx/mixin.d.ts +35 -0
  66. package/dist/cjs/native-meta-tx/mixin.d.ts.map +1 -0
  67. package/dist/cjs/native-meta-tx/mixin.js +68 -0
  68. package/dist/cjs/native-meta-tx/mixin.js.map +1 -0
  69. package/dist/cjs/offers/mixin.d.ts +133 -0
  70. package/dist/cjs/offers/mixin.d.ts.map +1 -0
  71. package/dist/cjs/offers/mixin.js +338 -0
  72. package/dist/cjs/offers/mixin.js.map +1 -0
  73. package/dist/cjs/orchestration/mixin.d.ts +28 -0
  74. package/dist/cjs/orchestration/mixin.d.ts.map +1 -0
  75. package/dist/cjs/orchestration/mixin.js +59 -0
  76. package/dist/cjs/orchestration/mixin.js.map +1 -0
  77. package/dist/cjs/subgraph.d.ts +3707 -1509
  78. package/dist/cjs/subgraph.d.ts.map +1 -1
  79. package/dist/cjs/subgraph.js +113 -4
  80. package/dist/cjs/subgraph.js.map +1 -1
  81. package/dist/cjs/utils/graphql.d.ts +14 -0
  82. package/dist/cjs/utils/graphql.d.ts.map +1 -1
  83. package/dist/cjs/utils/signature.d.ts.map +1 -1
  84. package/dist/cjs/utils/signature.js +5 -1
  85. package/dist/cjs/utils/signature.js.map +1 -1
  86. package/dist/cjs/utils/tokenInfoManager.d.ts +6 -2
  87. package/dist/cjs/utils/tokenInfoManager.d.ts.map +1 -1
  88. package/dist/cjs/utils/tokenInfoManager.js +39 -6
  89. package/dist/cjs/utils/tokenInfoManager.js.map +1 -1
  90. package/dist/esm/accounts/mixin.d.ts +194 -0
  91. package/dist/esm/accounts/mixin.d.ts.map +1 -0
  92. package/dist/esm/accounts/mixin.js +342 -0
  93. package/dist/esm/accounts/mixin.js.map +1 -0
  94. package/dist/esm/core-sdk.d.ts +16 -818
  95. package/dist/esm/core-sdk.d.ts.map +1 -1
  96. package/dist/esm/core-sdk.js +27 -1483
  97. package/dist/esm/core-sdk.js.map +1 -1
  98. package/dist/esm/disputes/mixin.d.ts +113 -0
  99. package/dist/esm/disputes/mixin.d.ts.map +1 -0
  100. package/dist/esm/disputes/mixin.js +173 -0
  101. package/dist/esm/disputes/mixin.js.map +1 -0
  102. package/dist/esm/erc1155/handler.d.ts +9 -0
  103. package/dist/esm/erc1155/handler.d.ts.map +1 -0
  104. package/dist/esm/erc1155/handler.js +13 -0
  105. package/dist/esm/erc1155/handler.js.map +1 -0
  106. package/dist/esm/erc1155/index.d.ts +3 -0
  107. package/dist/esm/erc1155/index.d.ts.map +1 -0
  108. package/dist/esm/erc1155/index.js +3 -0
  109. package/dist/esm/erc1155/index.js.map +1 -0
  110. package/dist/esm/erc1155/interface.d.ts +3 -0
  111. package/dist/esm/erc1155/interface.d.ts.map +1 -0
  112. package/dist/esm/erc1155/interface.js +4 -0
  113. package/dist/esm/erc1155/interface.js.map +1 -0
  114. package/dist/esm/erc20/handler.d.ts +5 -0
  115. package/dist/esm/erc20/handler.d.ts.map +1 -1
  116. package/dist/esm/erc20/handler.js +8 -0
  117. package/dist/esm/erc20/handler.js.map +1 -1
  118. package/dist/esm/erc721/handler.d.ts +5 -0
  119. package/dist/esm/erc721/handler.d.ts.map +1 -1
  120. package/dist/esm/erc721/handler.js +8 -0
  121. package/dist/esm/erc721/handler.js.map +1 -1
  122. package/dist/esm/event-logs/mixin.d.ts +11 -0
  123. package/dist/esm/event-logs/mixin.d.ts.map +1 -0
  124. package/dist/esm/event-logs/mixin.js +13 -0
  125. package/dist/esm/event-logs/mixin.js.map +1 -0
  126. package/dist/esm/exchanges/mixin.d.ts +77 -0
  127. package/dist/esm/exchanges/mixin.d.ts.map +1 -0
  128. package/dist/esm/exchanges/mixin.js +141 -0
  129. package/dist/esm/exchanges/mixin.js.map +1 -0
  130. package/dist/esm/funds/mixin.d.ts +42 -0
  131. package/dist/esm/funds/mixin.d.ts.map +1 -0
  132. package/dist/esm/funds/mixin.js +72 -0
  133. package/dist/esm/funds/mixin.js.map +1 -0
  134. package/dist/esm/groups/mixin.d.ts +14 -0
  135. package/dist/esm/groups/mixin.d.ts.map +1 -0
  136. package/dist/esm/groups/mixin.js +18 -0
  137. package/dist/esm/groups/mixin.js.map +1 -0
  138. package/dist/esm/meta-tx/mixin.d.ts +176 -0
  139. package/dist/esm/meta-tx/mixin.d.ts.map +1 -0
  140. package/dist/esm/meta-tx/mixin.js +351 -0
  141. package/dist/esm/meta-tx/mixin.js.map +1 -0
  142. package/dist/esm/metadata/mixin.d.ts +42 -0
  143. package/dist/esm/metadata/mixin.d.ts.map +1 -0
  144. package/dist/esm/metadata/mixin.js +60 -0
  145. package/dist/esm/metadata/mixin.js.map +1 -0
  146. package/dist/esm/metadata/subgraph.d.ts +3 -1
  147. package/dist/esm/metadata/subgraph.d.ts.map +1 -1
  148. package/dist/esm/metadata/subgraph.js +14 -0
  149. package/dist/esm/metadata/subgraph.js.map +1 -1
  150. package/dist/esm/mixins/base-core-sdk.d.ts +41 -0
  151. package/dist/esm/mixins/base-core-sdk.d.ts.map +1 -0
  152. package/dist/esm/mixins/base-core-sdk.js +54 -0
  153. package/dist/esm/mixins/base-core-sdk.js.map +1 -0
  154. package/dist/esm/native-meta-tx/mixin.d.ts +35 -0
  155. package/dist/esm/native-meta-tx/mixin.d.ts.map +1 -0
  156. package/dist/esm/native-meta-tx/mixin.js +51 -0
  157. package/dist/esm/native-meta-tx/mixin.js.map +1 -0
  158. package/dist/esm/offers/mixin.d.ts +133 -0
  159. package/dist/esm/offers/mixin.d.ts.map +1 -0
  160. package/dist/esm/offers/mixin.js +276 -0
  161. package/dist/esm/offers/mixin.js.map +1 -0
  162. package/dist/esm/orchestration/mixin.d.ts +28 -0
  163. package/dist/esm/orchestration/mixin.d.ts.map +1 -0
  164. package/dist/esm/orchestration/mixin.js +42 -0
  165. package/dist/esm/orchestration/mixin.js.map +1 -0
  166. package/dist/esm/subgraph.d.ts +3707 -1509
  167. package/dist/esm/subgraph.d.ts.map +1 -1
  168. package/dist/esm/subgraph.js +110 -1
  169. package/dist/esm/subgraph.js.map +1 -1
  170. package/dist/esm/utils/graphql.d.ts +14 -0
  171. package/dist/esm/utils/graphql.d.ts.map +1 -1
  172. package/dist/esm/utils/signature.d.ts.map +1 -1
  173. package/dist/esm/utils/signature.js +5 -1
  174. package/dist/esm/utils/signature.js.map +1 -1
  175. package/dist/esm/utils/tokenInfoManager.d.ts +6 -2
  176. package/dist/esm/utils/tokenInfoManager.d.ts.map +1 -1
  177. package/dist/esm/utils/tokenInfoManager.js +39 -6
  178. package/dist/esm/utils/tokenInfoManager.js.map +1 -1
  179. package/package.json +3 -3
  180. package/src/accounts/mixin.ts +484 -0
  181. package/src/core-sdk.ts +42 -2102
  182. package/src/disputes/mixin.ts +240 -0
  183. package/src/erc1155/handler.ts +21 -0
  184. package/src/erc1155/index.ts +2 -0
  185. package/src/erc1155/interface.ts +4 -0
  186. package/src/erc20/handler.ts +14 -0
  187. package/src/erc721/handler.ts +14 -0
  188. package/src/event-logs/mixin.ts +16 -0
  189. package/src/exchanges/mixin.ts +184 -0
  190. package/src/funds/mixin.ts +99 -0
  191. package/src/groups/mixin.ts +24 -0
  192. package/src/meta-tx/mixin.ts +515 -0
  193. package/src/metadata/mixin.ts +97 -0
  194. package/src/metadata/product-v1.graphql +77 -1
  195. package/src/metadata/subgraph.ts +31 -1
  196. package/src/mixins/base-core-sdk.ts +96 -0
  197. package/src/native-meta-tx/mixin.ts +77 -0
  198. package/src/offers/mixin.ts +376 -0
  199. package/src/offers/queries.graphql +1 -1
  200. package/src/orchestration/mixin.ts +57 -0
  201. package/src/subgraph.ts +3620 -1296
  202. package/src/utils/signature.ts +6 -1
  203. package/src/utils/tokenInfoManager.ts +44 -6
@@ -0,0 +1,484 @@
1
+ import { BaseCoreSDK } from "./../mixins/base-core-sdk";
2
+ import * as accounts from ".";
3
+ import * as subgraph from "../subgraph";
4
+ import * as erc721 from "../erc721";
5
+ import { AuthTokenType, TransactionResponse, Log } from "@bosonprotocol/common";
6
+ import { BigNumberish, BigNumber } from "@ethersproject/bignumber";
7
+ import { AddressZero } from "@ethersproject/constants";
8
+ import { offers, orchestration } from "..";
9
+ import { getValueFromLogs } from "../utils/logs";
10
+
11
+ export class AccountsMixin extends BaseCoreSDK {
12
+ /* -------------------------------------------------------------------------- */
13
+ /* Account related methods */
14
+ /* -------------------------------------------------------------------------- */
15
+
16
+ /* --------------------------------- Seller --------------------------------- */
17
+
18
+ /**
19
+ * Returns seller entity from subgraph.
20
+ * @param sellerId - ID of seller entity to query for.
21
+ * @param queryVars - Optional query variables to skip, order or filter.
22
+ * @returns Seller entity from subgraph.
23
+ */
24
+ public async getSellerById(
25
+ sellerId: BigNumberish,
26
+ queryVars?: accounts.subgraph.SingleSellerQueryVariables
27
+ ): Promise<subgraph.SellerFieldsFragment> {
28
+ return accounts.subgraph.getSellerById(
29
+ this._subgraphUrl,
30
+ sellerId,
31
+ queryVars
32
+ );
33
+ }
34
+
35
+ /**
36
+ * Returns seller entity from subgraph.
37
+ * @param operator - Operator address of seller entity to query for.
38
+ * @param queryVars - Optional query variables to skip, order or filter.
39
+ * @returns Seller entity from subgraph.
40
+ */
41
+ public async getSellerByOperator(
42
+ operator: string,
43
+ queryVars?: subgraph.GetSellersQueryQueryVariables
44
+ ): Promise<subgraph.SellerFieldsFragment> {
45
+ return accounts.subgraph.getSellerByOperator(
46
+ this._subgraphUrl,
47
+ operator,
48
+ queryVars
49
+ );
50
+ }
51
+
52
+ /**
53
+ * Returns seller entity from subgraph.
54
+ * @param clerk - Clerk address of seller entity to query for.
55
+ * @param queryVars - Optional query variables to skip, order or filter.
56
+ * @returns Seller entity from subgraph.
57
+ */
58
+ public async getSellerByClerk(
59
+ clerk: string,
60
+ queryVars?: subgraph.GetSellersQueryQueryVariables
61
+ ): Promise<subgraph.SellerFieldsFragment> {
62
+ return accounts.subgraph.getSellerByClerk(
63
+ this._subgraphUrl,
64
+ clerk,
65
+ queryVars
66
+ );
67
+ }
68
+
69
+ /**
70
+ * Returns seller entity from subgraph.
71
+ * @param admin - Admin address of seller entity to query for.
72
+ * @param queryVars - Optional query variables to skip, order or filter.
73
+ * @returns Seller entity from subgraph.
74
+ */
75
+ public async getSellerByAdmin(
76
+ admin: string,
77
+ queryVars?: subgraph.GetSellersQueryQueryVariables
78
+ ): Promise<subgraph.SellerFieldsFragment> {
79
+ return accounts.subgraph.getSellerByAdmin(
80
+ this._subgraphUrl,
81
+ admin,
82
+ queryVars
83
+ );
84
+ }
85
+
86
+ /**
87
+ * Returns seller entity from subgraph.
88
+ * @param treasury - Treasury address of seller entity to query for.
89
+ * @param queryVars - Optional query variables to skip, order or filter.
90
+ * @returns Seller entity from subgraph.
91
+ */
92
+ public async getSellerByTreasury(
93
+ treasury: string,
94
+ queryVars?: subgraph.GetSellersQueryQueryVariables
95
+ ): Promise<subgraph.SellerFieldsFragment> {
96
+ return accounts.subgraph.getSellerByTreasury(
97
+ this._subgraphUrl,
98
+ treasury,
99
+ queryVars
100
+ );
101
+ }
102
+
103
+ /**
104
+ * Returns seller entity from subgraph. Matches `operator`, `clerk`, `admin` or `treasury`.
105
+ * @param address - Address of seller entity to query for.
106
+ * @param queryVars - Optional query variables to skip, order or filter.
107
+ * @returns Seller entity from subgraph.
108
+ */
109
+ public async getSellersByAddress(
110
+ address: string,
111
+ queryVars?: subgraph.GetSellersQueryQueryVariables
112
+ ): Promise<subgraph.SellerFieldsFragment[]> {
113
+ if (address === AddressZero) {
114
+ throw new Error(`Unsupported search address '${AddressZero}'`);
115
+ }
116
+ const seller = await accounts.subgraph.getSellerByAddress(
117
+ this._subgraphUrl,
118
+ address,
119
+ queryVars
120
+ );
121
+ if (!seller && this._lensContracts?.LENS_HUB_CONTRACT) {
122
+ // If seller is not found per address, try to find per authToken
123
+ const tokenType = AuthTokenType.LENS; // only LENS for now
124
+ const tokenIds = await this.fetchUserAuthTokens(address, tokenType);
125
+ const promises: Promise<subgraph.SellerFieldsFragment>[] = [];
126
+ for (const tokenId of tokenIds) {
127
+ // Just in case the user owns several auth tokens
128
+ const sellerPromise = this.getSellerByAuthToken(
129
+ tokenId,
130
+ tokenType,
131
+ queryVars
132
+ );
133
+ promises.push(sellerPromise);
134
+ }
135
+ return (await Promise.all(promises)).filter((seller) => !!seller);
136
+ }
137
+ return [seller].filter((seller) => !!seller);
138
+ }
139
+
140
+ /**
141
+ * Returns the array of LENS tokenIds owned by a specified address
142
+ * @param address - Address of seller entity to query for.
143
+ * @param queryVars - Optional query variables to skip, order or filter.
144
+ * @returns Array of tokenIds
145
+ */
146
+ public async fetchUserAuthTokens(
147
+ address: string,
148
+ tokenType: number
149
+ ): Promise<Array<string>> {
150
+ if (tokenType !== AuthTokenType.LENS) {
151
+ // only LENS for now
152
+ throw new Error(`Unsupported authTokenType '${tokenType}'`);
153
+ }
154
+ if (!this._lensContracts || !this._lensContracts?.LENS_HUB_CONTRACT) {
155
+ throw new Error("LENS contract is not configured in Core-SDK");
156
+ }
157
+ const balance = await erc721.handler.balanceOf({
158
+ contractAddress: this._lensContracts?.LENS_HUB_CONTRACT,
159
+ owner: address,
160
+ web3Lib: this._web3Lib
161
+ });
162
+
163
+ const balanceBN = BigNumber.from(balance);
164
+ const promises: Promise<string>[] = [];
165
+ for (let index = 0; balanceBN.gt(index); index++) {
166
+ const tokenIdPromise = erc721.handler.tokenOfOwnerByIndex({
167
+ contractAddress: this._lensContracts?.LENS_HUB_CONTRACT,
168
+ owner: address,
169
+ index,
170
+ web3Lib: this._web3Lib
171
+ });
172
+ promises.push(tokenIdPromise);
173
+ }
174
+ const ret = await Promise.all(promises);
175
+ return ret;
176
+ }
177
+
178
+ /**
179
+ * Returns seller entity from subgraph that owns the given auth token (if any).
180
+ * @param tokenId - tokenId of the Auth Token.
181
+ * @param tokenType - Type of the Auth Token (1 for LENS, ...).
182
+ * @param queryVars - Optional query variables to skip, order or filter.
183
+ * @returns Seller entity from subgraph.
184
+ */
185
+ public async getSellerByAuthToken(
186
+ tokenId: string,
187
+ tokenType: number,
188
+ queryVars?: subgraph.GetSellersQueryQueryVariables
189
+ ): Promise<subgraph.SellerFieldsFragment> {
190
+ if (tokenType !== AuthTokenType.LENS) {
191
+ // only LENS for now
192
+ throw new Error(`Unsupported authTokenType '${tokenType}'`);
193
+ }
194
+ return accounts.subgraph.getSellerByAuthToken(
195
+ this._subgraphUrl,
196
+ tokenId,
197
+ tokenType,
198
+ queryVars
199
+ );
200
+ }
201
+
202
+ /**
203
+ * Returns seller entities from subgraph.
204
+ * @param queryVars - Optional query variables to skip, order or filter.
205
+ * @returns Seller entities from subgraph.
206
+ */
207
+ public async getSellers(
208
+ queryVars?: subgraph.GetSellersQueryQueryVariables
209
+ ): Promise<subgraph.SellerFieldsFragment[]> {
210
+ return accounts.subgraph.getSellers(this._subgraphUrl, queryVars);
211
+ }
212
+
213
+ /**
214
+ * Creates seller account by calling the `AccountHandlerFacet` contract.
215
+ * @param sellerToCreate - Addresses and contract URI to set in the seller account.
216
+ * @param overrides - Optional overrides.
217
+ * @returns Transaction response.
218
+ */
219
+ public async createSeller(
220
+ sellerToCreate: accounts.CreateSellerArgs,
221
+ overrides: Partial<{
222
+ contractAddress: string;
223
+ }> = {}
224
+ ): Promise<TransactionResponse> {
225
+ return accounts.handler.createSeller({
226
+ sellerToCreate,
227
+ web3Lib: this._web3Lib,
228
+ contractAddress: overrides.contractAddress || this._protocolDiamond
229
+ });
230
+ }
231
+
232
+ /**
233
+ * Creates seller account and offer by calling the `OrchestrationHandlerFacet` contract.
234
+ * This transaction only succeeds if there is no existing seller account for the connected signer.
235
+ * @param sellerToCreate - Addresses to set in the seller account.
236
+ * @param offerToCreate - Offer arguments.
237
+ * @param overrides - Optional overrides.
238
+ * @returns Transaction response.
239
+ */
240
+ public async createSellerAndOffer(
241
+ sellerToCreate: accounts.CreateSellerArgs,
242
+ offerToCreate: offers.CreateOfferArgs,
243
+ overrides: Partial<{
244
+ contractAddress: string;
245
+ }> = {}
246
+ ): Promise<TransactionResponse> {
247
+ return orchestration.handler.createOfferAndSeller({
248
+ sellerToCreate,
249
+ offerToCreate,
250
+ web3Lib: this._web3Lib,
251
+ theGraphStorage: this._theGraphStorage,
252
+ metadataStorage: this._metadataStorage,
253
+ contractAddress: overrides.contractAddress || this._protocolDiamond
254
+ });
255
+ }
256
+
257
+ /**
258
+ * Updates seller account by calling the `AccountHandlerFacet` contract. Only callable
259
+ * by admin.
260
+ * @param sellerUpdates - Values to update.
261
+ * @param overrides - Optional overrides.
262
+ * @returns Transaction response.
263
+ */
264
+ public async updateSeller(
265
+ sellerUpdates: accounts.UpdateSellerArgs,
266
+ overrides: Partial<{
267
+ contractAddress: string;
268
+ }> = {}
269
+ ): Promise<TransactionResponse> {
270
+ return accounts.handler.updateSeller({
271
+ sellerUpdates,
272
+ web3Lib: this._web3Lib,
273
+ contractAddress: overrides.contractAddress || this._protocolDiamond
274
+ });
275
+ }
276
+
277
+ /* ---------------------------------- Buyer --------------------------------- */
278
+
279
+ /**
280
+ * Returns buyer entity from subgraph.
281
+ * @param buyerId - ID of buyer entity to query for.
282
+ * @param queryVars - Optional query variables to skip, order or filter.
283
+ * @returns Buyer entity from subgraph.
284
+ */
285
+ public async getBuyerById(
286
+ buyerId: BigNumberish,
287
+ queryVars?: accounts.subgraph.SingleBuyerQueryVariables
288
+ ): Promise<subgraph.BuyerFieldsFragment> {
289
+ return accounts.subgraph.getBuyerById(
290
+ this._subgraphUrl,
291
+ buyerId,
292
+ queryVars
293
+ );
294
+ }
295
+
296
+ /**
297
+ * Returns buyer entities from subgraph.
298
+ * @param queryVars - Optional query variables to skip, order or filter.
299
+ * @returns Buyer entities from subgraph.
300
+ */
301
+ public async getBuyers(
302
+ queryVars?: subgraph.GetBuyersQueryQueryVariables
303
+ ): Promise<subgraph.BuyerFieldsFragment[]> {
304
+ return accounts.subgraph.getBuyers(this._subgraphUrl, queryVars);
305
+ }
306
+
307
+ /* ---------------------------- Dispute Resolver ---------------------------- */
308
+
309
+ /**
310
+ * Creates a dispute resolver account by calling the `AccountHandlerFacet` contract.
311
+ * @param disputeResolverToCreate - Dispute resolver arguments.
312
+ * @returns Transaction response.
313
+ */
314
+ public async createDisputeResolver(
315
+ disputeResolverToCreate: accounts.CreateDisputeResolverArgs
316
+ ): Promise<TransactionResponse> {
317
+ return accounts.handler.createDisputeResolver({
318
+ disputeResolverToCreate,
319
+ contractAddress: this._protocolDiamond,
320
+ web3Lib: this._web3Lib
321
+ });
322
+ }
323
+
324
+ /**
325
+ * Utility method to retrieve the created `exchangeId` from logs after calling `commitToOffer`.
326
+ * @param logs - Logs to search in.
327
+ * @returns Created exchange id.
328
+ */
329
+ public getDisputeResolverIdFromLogs(logs: Log[]): string | null {
330
+ return getValueFromLogs({
331
+ iface: accounts.iface.bosonAccountHandlerIface,
332
+ logs,
333
+ eventArgsKey: "disputeResolverId",
334
+ eventName: "DisputeResolverCreated"
335
+ });
336
+ }
337
+
338
+ /**
339
+ * Updates a dispute resolver account by calling the `AccountHandlerFacet` contract.
340
+ * Note, that the caller must be the specified `admin` address of the dispute resolver account.
341
+ * @param disputeResolverId - Id of dispute resolver to update.
342
+ * @param updates - Values to update for the given dispute resolver.
343
+ * @returns Transaction response.
344
+ */
345
+ public async updateDisputeResolver(
346
+ disputeResolverId: BigNumberish,
347
+ updates: accounts.DisputeResolverUpdates
348
+ ): Promise<TransactionResponse> {
349
+ return accounts.handler.updateDisputeResolver({
350
+ disputeResolverId,
351
+ updates,
352
+ subgraphUrl: this._subgraphUrl,
353
+ contractAddress: this._protocolDiamond,
354
+ web3Lib: this._web3Lib
355
+ });
356
+ }
357
+
358
+ /**
359
+ * Activates a dispute resolver account by calling the `AccountHandlerFacet` contract.
360
+ * Note, that the caller needs to have the ADMIN role.
361
+ * @param disputeResolverId - Id of dispute resolver to activate.
362
+ * @returns Transaction response.
363
+ */
364
+ public async activateDisputeResolver(
365
+ disputeResolverId: BigNumberish
366
+ ): Promise<TransactionResponse> {
367
+ return accounts.handler.activateDisputeResolver({
368
+ disputeResolverId,
369
+ contractAddress: this._protocolDiamond,
370
+ web3Lib: this._web3Lib
371
+ });
372
+ }
373
+
374
+ /**
375
+ * Adds fees to a dispute resolver account by calling the `AccountHandlerFacet`
376
+ * contract. Note, that the caller must be the specified `admin` address of the dispute
377
+ * resolver account.
378
+ * @param disputeResolverId - Id of dispute resolver.
379
+ * @param fees - Dispute resolution fees. Should only contain token addresses that are
380
+ * not already specified.
381
+ * @returns Transaction response.
382
+ */
383
+ public async addFeesToDisputeResolver(
384
+ disputeResolverId: BigNumberish,
385
+ fees: accounts.DisputeResolutionFee[]
386
+ ): Promise<TransactionResponse> {
387
+ return accounts.handler.addFeesToDisputeResolver({
388
+ disputeResolverId,
389
+ fees,
390
+ contractAddress: this._protocolDiamond,
391
+ web3Lib: this._web3Lib
392
+ });
393
+ }
394
+
395
+ /**
396
+ * Adds sellers to the allow list of a dispute resolver account by calling the
397
+ * `AccountHandlerFacet` contract. Note, that the caller must be the specified
398
+ * `admin` address of the dispute resolver account.
399
+ * @param disputeResolverId - Id of dispute resolver.
400
+ * @param sellerAllowList - List of seller ids that are allowed to use the dispute resolver.
401
+ * Should only contain seller ids that are not part of the current allow list.
402
+ * @returns Transaction response.
403
+ */
404
+ public async addSellersToDisputeResolverAllowList(
405
+ disputeResolverId: BigNumberish,
406
+ sellerAllowList: BigNumberish[]
407
+ ): Promise<TransactionResponse> {
408
+ return accounts.handler.addSellersToAllowList({
409
+ disputeResolverId,
410
+ sellerAllowList,
411
+ contractAddress: this._protocolDiamond,
412
+ web3Lib: this._web3Lib
413
+ });
414
+ }
415
+
416
+ /**
417
+ * Removes fees from a dispute resolver account by calling the `AccountHandlerFacet`
418
+ * contract. Note, that the caller must be the specified `admin` address of the dispute
419
+ * resolver account.
420
+ * @param disputeResolverId - Id of dispute resolver.
421
+ * @param feeTokenAddresses - Addresses of fee tokens to remove.
422
+ * @returns Transaction response.
423
+ */
424
+ public async removeFeesFromDisputeResolver(
425
+ disputeResolverId: BigNumberish,
426
+ feeTokenAddresses: string[]
427
+ ): Promise<TransactionResponse> {
428
+ return accounts.handler.removeFeesFromDisputeResolver({
429
+ disputeResolverId,
430
+ feeTokenAddresses,
431
+ contractAddress: this._protocolDiamond,
432
+ web3Lib: this._web3Lib
433
+ });
434
+ }
435
+
436
+ /**
437
+ * Removes sellers from 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 should be removed from the allow
442
+ * list of a dispute resolver.
443
+ * @returns Transaction response.
444
+ */
445
+ public async removeSellersFromDisputeResolverAllowList(
446
+ disputeResolverId: BigNumberish,
447
+ sellerAllowList: string[]
448
+ ): Promise<TransactionResponse> {
449
+ return accounts.handler.removeSellersFromAllowList({
450
+ disputeResolverId,
451
+ sellerAllowList,
452
+ contractAddress: this._protocolDiamond,
453
+ web3Lib: this._web3Lib
454
+ });
455
+ }
456
+
457
+ /**
458
+ * Returns dispute resolver entity from subgraph.
459
+ * @param disputeResolverId - ID of dispute resolver entity to query for.
460
+ * @param queryVars - Optional query variables to skip, order or filter.
461
+ * @returns Dispute resolver entity from subgraph.
462
+ */
463
+ public async getDisputeResolverById(
464
+ disputeResolverId: BigNumberish,
465
+ queryVars?: accounts.subgraph.SingleDisputeResolverQueryVariables
466
+ ): Promise<subgraph.DisputeResolverFieldsFragment> {
467
+ return accounts.subgraph.getDisputeResolverById(
468
+ this._subgraphUrl,
469
+ disputeResolverId,
470
+ queryVars
471
+ );
472
+ }
473
+
474
+ /**
475
+ * Returns dispute resolver entities from subgraph.
476
+ * @param queryVars - Optional query variables to skip, order or filter.
477
+ * @returns Dispute resolver entities from subgraph.
478
+ */
479
+ public async getDisputeResolvers(
480
+ queryVars?: subgraph.GetDisputeResolversQueryQueryVariables
481
+ ): Promise<subgraph.DisputeResolverFieldsFragment[]> {
482
+ return accounts.subgraph.getDisputeResolvers(this._subgraphUrl, queryVars);
483
+ }
484
+ }