@bosonprotocol/core-sdk 1.23.0-alpha.9 → 1.23.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/dist/cjs/accounts/handler.d.ts +11 -1
  2. package/dist/cjs/accounts/handler.d.ts.map +1 -1
  3. package/dist/cjs/accounts/handler.js +19 -1
  4. package/dist/cjs/accounts/handler.js.map +1 -1
  5. package/dist/cjs/accounts/interface.d.ts +3 -2
  6. package/dist/cjs/accounts/interface.d.ts.map +1 -1
  7. package/dist/cjs/accounts/interface.js +27 -4
  8. package/dist/cjs/accounts/interface.js.map +1 -1
  9. package/dist/cjs/accounts/mixin.d.ts +230 -0
  10. package/dist/cjs/accounts/mixin.d.ts.map +1 -0
  11. package/dist/cjs/accounts/mixin.js +518 -0
  12. package/dist/cjs/accounts/mixin.js.map +1 -0
  13. package/dist/cjs/accounts/types.d.ts +1 -1
  14. package/dist/cjs/accounts/types.d.ts.map +1 -1
  15. package/dist/cjs/accounts/types.js +6 -0
  16. package/dist/cjs/accounts/types.js.map +1 -1
  17. package/dist/cjs/core-sdk.d.ts +16 -818
  18. package/dist/cjs/core-sdk.d.ts.map +1 -1
  19. package/dist/cjs/core-sdk.js +26 -1579
  20. package/dist/cjs/core-sdk.js.map +1 -1
  21. package/dist/cjs/disputes/mixin.d.ts +113 -0
  22. package/dist/cjs/disputes/mixin.d.ts.map +1 -0
  23. package/dist/cjs/disputes/mixin.js +203 -0
  24. package/dist/cjs/disputes/mixin.js.map +1 -0
  25. package/dist/cjs/erc1155/handler.d.ts +9 -0
  26. package/dist/cjs/erc1155/handler.d.ts.map +1 -0
  27. package/dist/cjs/erc1155/handler.js +28 -0
  28. package/dist/cjs/erc1155/handler.js.map +1 -0
  29. package/dist/cjs/erc1155/index.d.ts +3 -0
  30. package/dist/cjs/erc1155/index.d.ts.map +1 -0
  31. package/dist/cjs/erc1155/index.js +29 -0
  32. package/dist/cjs/erc1155/index.js.map +1 -0
  33. package/dist/cjs/erc1155/interface.d.ts +3 -0
  34. package/dist/cjs/erc1155/interface.d.ts.map +1 -0
  35. package/dist/cjs/erc1155/interface.js +7 -0
  36. package/dist/cjs/erc1155/interface.js.map +1 -0
  37. package/dist/cjs/erc20/handler.d.ts +5 -0
  38. package/dist/cjs/erc20/handler.d.ts.map +1 -1
  39. package/dist/cjs/erc20/handler.js +12 -1
  40. package/dist/cjs/erc20/handler.js.map +1 -1
  41. package/dist/cjs/erc721/handler.d.ts +5 -0
  42. package/dist/cjs/erc721/handler.d.ts.map +1 -1
  43. package/dist/cjs/erc721/handler.js +12 -1
  44. package/dist/cjs/erc721/handler.js.map +1 -1
  45. package/dist/cjs/event-logs/mixin.d.ts +11 -0
  46. package/dist/cjs/event-logs/mixin.d.ts.map +1 -0
  47. package/dist/cjs/event-logs/mixin.js +28 -0
  48. package/dist/cjs/event-logs/mixin.js.map +1 -0
  49. package/dist/cjs/exchanges/mixin.d.ts +77 -0
  50. package/dist/cjs/exchanges/mixin.d.ts.map +1 -0
  51. package/dist/cjs/exchanges/mixin.js +172 -0
  52. package/dist/cjs/exchanges/mixin.js.map +1 -0
  53. package/dist/cjs/funds/mixin.d.ts +42 -0
  54. package/dist/cjs/funds/mixin.d.ts.map +1 -0
  55. package/dist/cjs/funds/mixin.js +95 -0
  56. package/dist/cjs/funds/mixin.js.map +1 -0
  57. package/dist/cjs/groups/mixin.d.ts +14 -0
  58. package/dist/cjs/groups/mixin.d.ts.map +1 -0
  59. package/dist/cjs/groups/mixin.js +33 -0
  60. package/dist/cjs/groups/mixin.js.map +1 -0
  61. package/dist/cjs/meta-tx/mixin.d.ts +176 -0
  62. package/dist/cjs/meta-tx/mixin.d.ts.map +1 -0
  63. package/dist/cjs/meta-tx/mixin.js +296 -0
  64. package/dist/cjs/meta-tx/mixin.js.map +1 -0
  65. package/dist/cjs/metadata/mixin.d.ts +42 -0
  66. package/dist/cjs/metadata/mixin.d.ts.map +1 -0
  67. package/dist/cjs/metadata/mixin.js +89 -0
  68. package/dist/cjs/metadata/mixin.js.map +1 -0
  69. package/dist/cjs/metadata/subgraph.d.ts +3 -1
  70. package/dist/cjs/metadata/subgraph.d.ts.map +1 -1
  71. package/dist/cjs/metadata/subgraph.js +17 -1
  72. package/dist/cjs/metadata/subgraph.js.map +1 -1
  73. package/dist/cjs/mixins/base-core-sdk.d.ts +41 -0
  74. package/dist/cjs/mixins/base-core-sdk.d.ts.map +1 -0
  75. package/dist/cjs/mixins/base-core-sdk.js +51 -0
  76. package/dist/cjs/mixins/base-core-sdk.js.map +1 -0
  77. package/dist/cjs/native-meta-tx/mixin.d.ts +35 -0
  78. package/dist/cjs/native-meta-tx/mixin.d.ts.map +1 -0
  79. package/dist/cjs/native-meta-tx/mixin.js +68 -0
  80. package/dist/cjs/native-meta-tx/mixin.js.map +1 -0
  81. package/dist/cjs/offers/mixin.d.ts +133 -0
  82. package/dist/cjs/offers/mixin.d.ts.map +1 -0
  83. package/dist/cjs/offers/mixin.js +338 -0
  84. package/dist/cjs/offers/mixin.js.map +1 -0
  85. package/dist/cjs/orchestration/mixin.d.ts +28 -0
  86. package/dist/cjs/orchestration/mixin.d.ts.map +1 -0
  87. package/dist/cjs/orchestration/mixin.js +59 -0
  88. package/dist/cjs/orchestration/mixin.js.map +1 -0
  89. package/dist/cjs/subgraph.d.ts +4509 -2011
  90. package/dist/cjs/subgraph.d.ts.map +1 -1
  91. package/dist/cjs/subgraph.js +159 -4
  92. package/dist/cjs/subgraph.js.map +1 -1
  93. package/dist/cjs/utils/graphql.d.ts +14 -0
  94. package/dist/cjs/utils/graphql.d.ts.map +1 -1
  95. package/dist/cjs/utils/logs.d.ts +10 -4
  96. package/dist/cjs/utils/logs.d.ts.map +1 -1
  97. package/dist/cjs/utils/logs.js +25 -2
  98. package/dist/cjs/utils/logs.js.map +1 -1
  99. package/dist/cjs/utils/tokenInfoManager.d.ts +8 -3
  100. package/dist/cjs/utils/tokenInfoManager.d.ts.map +1 -1
  101. package/dist/cjs/utils/tokenInfoManager.js +58 -15
  102. package/dist/cjs/utils/tokenInfoManager.js.map +1 -1
  103. package/dist/esm/accounts/handler.d.ts +11 -1
  104. package/dist/esm/accounts/handler.d.ts.map +1 -1
  105. package/dist/esm/accounts/handler.js +13 -1
  106. package/dist/esm/accounts/handler.js.map +1 -1
  107. package/dist/esm/accounts/interface.d.ts +3 -2
  108. package/dist/esm/accounts/interface.d.ts.map +1 -1
  109. package/dist/esm/accounts/interface.js +22 -1
  110. package/dist/esm/accounts/interface.js.map +1 -1
  111. package/dist/esm/accounts/mixin.d.ts +230 -0
  112. package/dist/esm/accounts/mixin.d.ts.map +1 -0
  113. package/dist/esm/accounts/mixin.js +426 -0
  114. package/dist/esm/accounts/mixin.js.map +1 -0
  115. package/dist/esm/accounts/types.d.ts +1 -1
  116. package/dist/esm/accounts/types.d.ts.map +1 -1
  117. package/dist/esm/accounts/types.js +1 -1
  118. package/dist/esm/accounts/types.js.map +1 -1
  119. package/dist/esm/core-sdk.d.ts +16 -818
  120. package/dist/esm/core-sdk.d.ts.map +1 -1
  121. package/dist/esm/core-sdk.js +27 -1483
  122. package/dist/esm/core-sdk.js.map +1 -1
  123. package/dist/esm/disputes/mixin.d.ts +113 -0
  124. package/dist/esm/disputes/mixin.d.ts.map +1 -0
  125. package/dist/esm/disputes/mixin.js +173 -0
  126. package/dist/esm/disputes/mixin.js.map +1 -0
  127. package/dist/esm/erc1155/handler.d.ts +9 -0
  128. package/dist/esm/erc1155/handler.d.ts.map +1 -0
  129. package/dist/esm/erc1155/handler.js +13 -0
  130. package/dist/esm/erc1155/handler.js.map +1 -0
  131. package/dist/esm/erc1155/index.d.ts +3 -0
  132. package/dist/esm/erc1155/index.d.ts.map +1 -0
  133. package/dist/esm/erc1155/index.js +3 -0
  134. package/dist/esm/erc1155/index.js.map +1 -0
  135. package/dist/esm/erc1155/interface.d.ts +3 -0
  136. package/dist/esm/erc1155/interface.d.ts.map +1 -0
  137. package/dist/esm/erc1155/interface.js +4 -0
  138. package/dist/esm/erc1155/interface.js.map +1 -0
  139. package/dist/esm/erc20/handler.d.ts +5 -0
  140. package/dist/esm/erc20/handler.d.ts.map +1 -1
  141. package/dist/esm/erc20/handler.js +8 -0
  142. package/dist/esm/erc20/handler.js.map +1 -1
  143. package/dist/esm/erc721/handler.d.ts +5 -0
  144. package/dist/esm/erc721/handler.d.ts.map +1 -1
  145. package/dist/esm/erc721/handler.js +8 -0
  146. package/dist/esm/erc721/handler.js.map +1 -1
  147. package/dist/esm/event-logs/mixin.d.ts +11 -0
  148. package/dist/esm/event-logs/mixin.d.ts.map +1 -0
  149. package/dist/esm/event-logs/mixin.js +13 -0
  150. package/dist/esm/event-logs/mixin.js.map +1 -0
  151. package/dist/esm/exchanges/mixin.d.ts +77 -0
  152. package/dist/esm/exchanges/mixin.d.ts.map +1 -0
  153. package/dist/esm/exchanges/mixin.js +141 -0
  154. package/dist/esm/exchanges/mixin.js.map +1 -0
  155. package/dist/esm/funds/mixin.d.ts +42 -0
  156. package/dist/esm/funds/mixin.d.ts.map +1 -0
  157. package/dist/esm/funds/mixin.js +72 -0
  158. package/dist/esm/funds/mixin.js.map +1 -0
  159. package/dist/esm/groups/mixin.d.ts +14 -0
  160. package/dist/esm/groups/mixin.d.ts.map +1 -0
  161. package/dist/esm/groups/mixin.js +18 -0
  162. package/dist/esm/groups/mixin.js.map +1 -0
  163. package/dist/esm/meta-tx/mixin.d.ts +176 -0
  164. package/dist/esm/meta-tx/mixin.d.ts.map +1 -0
  165. package/dist/esm/meta-tx/mixin.js +351 -0
  166. package/dist/esm/meta-tx/mixin.js.map +1 -0
  167. package/dist/esm/metadata/mixin.d.ts +42 -0
  168. package/dist/esm/metadata/mixin.d.ts.map +1 -0
  169. package/dist/esm/metadata/mixin.js +60 -0
  170. package/dist/esm/metadata/mixin.js.map +1 -0
  171. package/dist/esm/metadata/subgraph.d.ts +3 -1
  172. package/dist/esm/metadata/subgraph.d.ts.map +1 -1
  173. package/dist/esm/metadata/subgraph.js +14 -0
  174. package/dist/esm/metadata/subgraph.js.map +1 -1
  175. package/dist/esm/mixins/base-core-sdk.d.ts +41 -0
  176. package/dist/esm/mixins/base-core-sdk.d.ts.map +1 -0
  177. package/dist/esm/mixins/base-core-sdk.js +54 -0
  178. package/dist/esm/mixins/base-core-sdk.js.map +1 -0
  179. package/dist/esm/native-meta-tx/mixin.d.ts +35 -0
  180. package/dist/esm/native-meta-tx/mixin.d.ts.map +1 -0
  181. package/dist/esm/native-meta-tx/mixin.js +51 -0
  182. package/dist/esm/native-meta-tx/mixin.js.map +1 -0
  183. package/dist/esm/offers/mixin.d.ts +133 -0
  184. package/dist/esm/offers/mixin.d.ts.map +1 -0
  185. package/dist/esm/offers/mixin.js +276 -0
  186. package/dist/esm/offers/mixin.js.map +1 -0
  187. package/dist/esm/orchestration/mixin.d.ts +28 -0
  188. package/dist/esm/orchestration/mixin.d.ts.map +1 -0
  189. package/dist/esm/orchestration/mixin.js +42 -0
  190. package/dist/esm/orchestration/mixin.js.map +1 -0
  191. package/dist/esm/subgraph.d.ts +4509 -2011
  192. package/dist/esm/subgraph.d.ts.map +1 -1
  193. package/dist/esm/subgraph.js +156 -1
  194. package/dist/esm/subgraph.js.map +1 -1
  195. package/dist/esm/utils/graphql.d.ts +14 -0
  196. package/dist/esm/utils/graphql.d.ts.map +1 -1
  197. package/dist/esm/utils/logs.d.ts +10 -4
  198. package/dist/esm/utils/logs.d.ts.map +1 -1
  199. package/dist/esm/utils/logs.js +23 -1
  200. package/dist/esm/utils/logs.js.map +1 -1
  201. package/dist/esm/utils/tokenInfoManager.d.ts +8 -3
  202. package/dist/esm/utils/tokenInfoManager.d.ts.map +1 -1
  203. package/dist/esm/utils/tokenInfoManager.js +58 -15
  204. package/dist/esm/utils/tokenInfoManager.js.map +1 -1
  205. package/package.json +3 -3
  206. package/src/accounts/handler.ts +28 -2
  207. package/src/accounts/interface.ts +42 -8
  208. package/src/accounts/mixin.ts +622 -0
  209. package/src/accounts/queries.graphql +20 -0
  210. package/src/accounts/types.ts +10 -1
  211. package/src/core-sdk.ts +42 -2102
  212. package/src/disputes/mixin.ts +240 -0
  213. package/src/erc1155/handler.ts +21 -0
  214. package/src/erc1155/index.ts +2 -0
  215. package/src/erc1155/interface.ts +4 -0
  216. package/src/erc20/handler.ts +14 -0
  217. package/src/erc721/handler.ts +14 -0
  218. package/src/event-logs/mixin.ts +16 -0
  219. package/src/exchanges/mixin.ts +184 -0
  220. package/src/funds/mixin.ts +99 -0
  221. package/src/groups/mixin.ts +24 -0
  222. package/src/meta-tx/mixin.ts +515 -0
  223. package/src/metadata/mixin.ts +97 -0
  224. package/src/metadata/product-v1.graphql +77 -1
  225. package/src/metadata/subgraph.ts +31 -1
  226. package/src/mixins/base-core-sdk.ts +96 -0
  227. package/src/native-meta-tx/mixin.ts +77 -0
  228. package/src/offers/mixin.ts +376 -0
  229. package/src/offers/queries.graphql +1 -1
  230. package/src/orchestration/mixin.ts +57 -0
  231. package/src/subgraph.ts +4178 -1516
  232. package/src/utils/logs.ts +42 -8
  233. package/src/utils/tokenInfoManager.ts +71 -16
@@ -0,0 +1,622 @@
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, getValuesFromLogsExt } 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
+ /**
278
+ * Opt-in to a pending seller update by calling the `AccountHandlerFacet` contract. Only callable
279
+ * by admin.
280
+ * @param sellerUpdates - Values to update.
281
+ * @param overrides - Optional overrides.
282
+ * @returns Transaction response.
283
+ */
284
+ public async optInToSellerUpdate(
285
+ sellerUpdates: accounts.OptInToSellerUpdateArgs,
286
+ overrides: Partial<{
287
+ contractAddress: string;
288
+ }> = {}
289
+ ): Promise<TransactionResponse> {
290
+ return accounts.handler.optInToSellerUpdate({
291
+ sellerUpdates,
292
+ web3Lib: this._web3Lib,
293
+ contractAddress: overrides.contractAddress || this._protocolDiamond
294
+ });
295
+ }
296
+
297
+ /**
298
+ * Updates seller account by calling the `AccountHandlerFacet` contract,
299
+ * then optIn for all updates doable by the same account. Only callable
300
+ * by admin.
301
+ * @param sellerUpdates - Values to update.
302
+ * @param overrides - Optional overrides.
303
+ * @returns Transaction response.
304
+ */
305
+ public async updateSellerAndOptIn(
306
+ sellerUpdates: accounts.UpdateSellerArgs,
307
+ overrides: Partial<{
308
+ contractAddress: string;
309
+ }> = {}
310
+ ): Promise<TransactionResponse> {
311
+ const updateTx = await this.updateSeller(sellerUpdates, overrides);
312
+ const txReceipt = await updateTx.wait();
313
+ const pendingSellerUpdate = this.getPendingSellerUpdateFromLogs(
314
+ txReceipt.logs
315
+ );
316
+ // Find all updates that can be opted in by the current account
317
+ const currentAccount = (
318
+ await this._web3Lib.getSignerAddress()
319
+ ).toLowerCase();
320
+ const fieldsToUpdate = {
321
+ operator: currentAccount === pendingSellerUpdate.operator?.toLowerCase(),
322
+ clerk: currentAccount === pendingSellerUpdate.clerk?.toLowerCase(),
323
+ admin: currentAccount === pendingSellerUpdate.admin?.toLowerCase(),
324
+ authToken:
325
+ pendingSellerUpdate.tokenType !== undefined &&
326
+ pendingSellerUpdate.tokenType !== null &&
327
+ pendingSellerUpdate.tokenType !== AuthTokenType.NONE
328
+ };
329
+ if (
330
+ fieldsToUpdate.operator ||
331
+ fieldsToUpdate.clerk ||
332
+ fieldsToUpdate.admin ||
333
+ fieldsToUpdate.authToken
334
+ ) {
335
+ return this.optInToSellerUpdate({
336
+ id: sellerUpdates.id,
337
+ fieldsToUpdate: {
338
+ operator:
339
+ currentAccount === pendingSellerUpdate.operator.toLowerCase(),
340
+ clerk: currentAccount === pendingSellerUpdate.clerk.toLowerCase(),
341
+ admin: currentAccount === pendingSellerUpdate.admin.toLowerCase(),
342
+ authToken: pendingSellerUpdate.tokenType !== AuthTokenType.NONE
343
+ }
344
+ });
345
+ }
346
+ // If there is nothing to optIn from the current account, then return the response from updateSeller
347
+ return updateTx;
348
+ }
349
+
350
+ /* ---------------------------------- Buyer --------------------------------- */
351
+
352
+ /**
353
+ * Returns buyer entity from subgraph.
354
+ * @param buyerId - ID of buyer entity to query for.
355
+ * @param queryVars - Optional query variables to skip, order or filter.
356
+ * @returns Buyer entity from subgraph.
357
+ */
358
+ public async getBuyerById(
359
+ buyerId: BigNumberish,
360
+ queryVars?: accounts.subgraph.SingleBuyerQueryVariables
361
+ ): Promise<subgraph.BuyerFieldsFragment> {
362
+ return accounts.subgraph.getBuyerById(
363
+ this._subgraphUrl,
364
+ buyerId,
365
+ queryVars
366
+ );
367
+ }
368
+
369
+ /**
370
+ * Returns buyer entities from subgraph.
371
+ * @param queryVars - Optional query variables to skip, order or filter.
372
+ * @returns Buyer entities from subgraph.
373
+ */
374
+ public async getBuyers(
375
+ queryVars?: subgraph.GetBuyersQueryQueryVariables
376
+ ): Promise<subgraph.BuyerFieldsFragment[]> {
377
+ return accounts.subgraph.getBuyers(this._subgraphUrl, queryVars);
378
+ }
379
+
380
+ /* ---------------------------- Dispute Resolver ---------------------------- */
381
+
382
+ /**
383
+ * Creates a dispute resolver account by calling the `AccountHandlerFacet` contract.
384
+ * @param disputeResolverToCreate - Dispute resolver arguments.
385
+ * @returns Transaction response.
386
+ */
387
+ public async createDisputeResolver(
388
+ disputeResolverToCreate: accounts.CreateDisputeResolverArgs
389
+ ): Promise<TransactionResponse> {
390
+ return accounts.handler.createDisputeResolver({
391
+ disputeResolverToCreate,
392
+ contractAddress: this._protocolDiamond,
393
+ web3Lib: this._web3Lib
394
+ });
395
+ }
396
+
397
+ /**
398
+ * Utility method to retrieve the created `exchangeId` from logs after calling `commitToOffer`.
399
+ * @param logs - Logs to search in.
400
+ * @returns Created exchange id.
401
+ */
402
+ public getDisputeResolverIdFromLogs(logs: Log[]): string | null {
403
+ return getValueFromLogs({
404
+ iface: accounts.iface.bosonAccountHandlerIface,
405
+ logs,
406
+ eventArgsKey: "disputeResolverId",
407
+ eventName: "DisputeResolverCreated"
408
+ });
409
+ }
410
+
411
+ /**
412
+ * Utility method to retrieve the pending seller update fields from logs after calling `updateSeller`.
413
+ * @param logs - Logs to search in.
414
+ * @returns Created exchange id.
415
+ */
416
+ public getPendingSellerUpdateFromLogs(logs: Log[]): {
417
+ operator: string;
418
+ clerk: string;
419
+ admin: string;
420
+ tokenType: number;
421
+ tokenId: BigNumber;
422
+ } {
423
+ // Extract fields pendingSeller and pendingAuthToken from
424
+ // SellerUpdatePending or SellerUpdateApplied events
425
+ const valuesFromLogs = getValuesFromLogsExt<
426
+ | {
427
+ operator: string;
428
+ clerk: string;
429
+ admin: string;
430
+ }
431
+ | {
432
+ tokenType: number;
433
+ tokenId: BigNumber;
434
+ }
435
+ >({
436
+ iface: accounts.iface.bosonAccountHandlerIface,
437
+ logs,
438
+ eventArgsKeys: ["pendingSeller", "pendingAuthToken"],
439
+ eventNames: ["SellerUpdatePending", "SellerUpdateApplied"]
440
+ });
441
+ const pendingSellerStruct = (
442
+ valuesFromLogs["pendingSeller"] as {
443
+ operator: string;
444
+ clerk: string;
445
+ admin: string;
446
+ }[]
447
+ )?.[0];
448
+ const pendingAuthTokenStruct = (
449
+ valuesFromLogs["pendingAuthToken"] as {
450
+ tokenType: number;
451
+ tokenId: BigNumber;
452
+ }[]
453
+ )?.[0];
454
+ return {
455
+ operator: pendingSellerStruct?.operator,
456
+ admin: pendingSellerStruct?.admin,
457
+ clerk: pendingSellerStruct?.clerk,
458
+ tokenId: pendingAuthTokenStruct?.tokenId,
459
+ tokenType: pendingAuthTokenStruct?.tokenType
460
+ };
461
+ }
462
+
463
+ /**
464
+ * Updates a dispute resolver account by calling the `AccountHandlerFacet` contract.
465
+ * Note, that the caller must be the specified `admin` address of the dispute resolver account.
466
+ * @param disputeResolverId - Id of dispute resolver to update.
467
+ * @param updates - Values to update for the given dispute resolver.
468
+ * @returns Transaction response.
469
+ */
470
+ public async updateDisputeResolver(
471
+ disputeResolverId: BigNumberish,
472
+ updates: accounts.DisputeResolverUpdates
473
+ ): Promise<TransactionResponse> {
474
+ return accounts.handler.updateDisputeResolver({
475
+ disputeResolverId,
476
+ updates,
477
+ subgraphUrl: this._subgraphUrl,
478
+ contractAddress: this._protocolDiamond,
479
+ web3Lib: this._web3Lib
480
+ });
481
+ }
482
+
483
+ public async optInToDisputeResolverUpdate(
484
+ disputeResolverUpdates: accounts.OptInToDisputeResolverUpdateArgs,
485
+ overrides: Partial<{
486
+ contractAddress: string;
487
+ }> = {}
488
+ ): Promise<TransactionResponse> {
489
+ return accounts.handler.optInToDisputeResolverUpdate({
490
+ disputeResolverUpdates,
491
+ web3Lib: this._web3Lib,
492
+ contractAddress: overrides.contractAddress || this._protocolDiamond
493
+ });
494
+ }
495
+
496
+ /**
497
+ * Activates a dispute resolver account by calling the `AccountHandlerFacet` contract.
498
+ * Note, that the caller needs to have the ADMIN role.
499
+ * @param disputeResolverId - Id of dispute resolver to activate.
500
+ * @returns Transaction response.
501
+ */
502
+ public async activateDisputeResolver(
503
+ disputeResolverId: BigNumberish
504
+ ): Promise<TransactionResponse> {
505
+ return accounts.handler.activateDisputeResolver({
506
+ disputeResolverId,
507
+ contractAddress: this._protocolDiamond,
508
+ web3Lib: this._web3Lib
509
+ });
510
+ }
511
+
512
+ /**
513
+ * Adds fees to a dispute resolver account by calling the `AccountHandlerFacet`
514
+ * contract. Note, that the caller must be the specified `admin` address of the dispute
515
+ * resolver account.
516
+ * @param disputeResolverId - Id of dispute resolver.
517
+ * @param fees - Dispute resolution fees. Should only contain token addresses that are
518
+ * not already specified.
519
+ * @returns Transaction response.
520
+ */
521
+ public async addFeesToDisputeResolver(
522
+ disputeResolverId: BigNumberish,
523
+ fees: accounts.DisputeResolutionFee[]
524
+ ): Promise<TransactionResponse> {
525
+ return accounts.handler.addFeesToDisputeResolver({
526
+ disputeResolverId,
527
+ fees,
528
+ contractAddress: this._protocolDiamond,
529
+ web3Lib: this._web3Lib
530
+ });
531
+ }
532
+
533
+ /**
534
+ * Adds sellers to the allow list of a dispute resolver account by calling the
535
+ * `AccountHandlerFacet` contract. Note, that the caller must be the specified
536
+ * `admin` address of the dispute resolver account.
537
+ * @param disputeResolverId - Id of dispute resolver.
538
+ * @param sellerAllowList - List of seller ids that are allowed to use the dispute resolver.
539
+ * Should only contain seller ids that are not part of the current allow list.
540
+ * @returns Transaction response.
541
+ */
542
+ public async addSellersToDisputeResolverAllowList(
543
+ disputeResolverId: BigNumberish,
544
+ sellerAllowList: BigNumberish[]
545
+ ): Promise<TransactionResponse> {
546
+ return accounts.handler.addSellersToAllowList({
547
+ disputeResolverId,
548
+ sellerAllowList,
549
+ contractAddress: this._protocolDiamond,
550
+ web3Lib: this._web3Lib
551
+ });
552
+ }
553
+
554
+ /**
555
+ * Removes fees from a dispute resolver account by calling the `AccountHandlerFacet`
556
+ * contract. Note, that the caller must be the specified `admin` address of the dispute
557
+ * resolver account.
558
+ * @param disputeResolverId - Id of dispute resolver.
559
+ * @param feeTokenAddresses - Addresses of fee tokens to remove.
560
+ * @returns Transaction response.
561
+ */
562
+ public async removeFeesFromDisputeResolver(
563
+ disputeResolverId: BigNumberish,
564
+ feeTokenAddresses: string[]
565
+ ): Promise<TransactionResponse> {
566
+ return accounts.handler.removeFeesFromDisputeResolver({
567
+ disputeResolverId,
568
+ feeTokenAddresses,
569
+ contractAddress: this._protocolDiamond,
570
+ web3Lib: this._web3Lib
571
+ });
572
+ }
573
+
574
+ /**
575
+ * Removes sellers from the allow list of a dispute resolver account by calling the
576
+ * `AccountHandlerFacet` contract. Note, that the caller must be the specified
577
+ * `admin` address of the dispute resolver account.
578
+ * @param disputeResolverId - Id of dispute resolver.
579
+ * @param sellerAllowList - List of seller ids that should be removed from the allow
580
+ * list of a dispute resolver.
581
+ * @returns Transaction response.
582
+ */
583
+ public async removeSellersFromDisputeResolverAllowList(
584
+ disputeResolverId: BigNumberish,
585
+ sellerAllowList: string[]
586
+ ): Promise<TransactionResponse> {
587
+ return accounts.handler.removeSellersFromAllowList({
588
+ disputeResolverId,
589
+ sellerAllowList,
590
+ contractAddress: this._protocolDiamond,
591
+ web3Lib: this._web3Lib
592
+ });
593
+ }
594
+
595
+ /**
596
+ * Returns dispute resolver entity from subgraph.
597
+ * @param disputeResolverId - ID of dispute resolver entity to query for.
598
+ * @param queryVars - Optional query variables to skip, order or filter.
599
+ * @returns Dispute resolver entity from subgraph.
600
+ */
601
+ public async getDisputeResolverById(
602
+ disputeResolverId: BigNumberish,
603
+ queryVars?: accounts.subgraph.SingleDisputeResolverQueryVariables
604
+ ): Promise<subgraph.DisputeResolverFieldsFragment> {
605
+ return accounts.subgraph.getDisputeResolverById(
606
+ this._subgraphUrl,
607
+ disputeResolverId,
608
+ queryVars
609
+ );
610
+ }
611
+
612
+ /**
613
+ * Returns dispute resolver entities from subgraph.
614
+ * @param queryVars - Optional query variables to skip, order or filter.
615
+ * @returns Dispute resolver entities from subgraph.
616
+ */
617
+ public async getDisputeResolvers(
618
+ queryVars?: subgraph.GetDisputeResolversQueryQueryVariables
619
+ ): Promise<subgraph.DisputeResolverFieldsFragment[]> {
620
+ return accounts.subgraph.getDisputeResolvers(this._subgraphUrl, queryVars);
621
+ }
622
+ }
@@ -192,6 +192,9 @@ query getDisputeResolversQuery(
192
192
 
193
193
  fragment SellerFields on Seller {
194
194
  ...BaseSellerFields
195
+ pendingSeller {
196
+ ...PendingSellerFields
197
+ }
195
198
  funds(
196
199
  skip: $fundsSkip
197
200
  first: $fundsFirst
@@ -244,6 +247,14 @@ fragment BaseSellerFields on Seller {
244
247
  royaltyPercentage
245
248
  }
246
249
 
250
+ fragment PendingSellerFields on PendingSeller {
251
+ operator
252
+ admin
253
+ clerk
254
+ authTokenId
255
+ authTokenType
256
+ }
257
+
247
258
  fragment BuyerFields on Buyer {
248
259
  ...BaseBuyerFields
249
260
  funds(
@@ -283,6 +294,9 @@ fragment BaseBuyerFields on Buyer {
283
294
 
284
295
  fragment DisputeResolverFields on DisputeResolver {
285
296
  ...BaseDisputeResolverFields
297
+ pendingDisputeResolver {
298
+ ...PendingDisputeResolverFields
299
+ }
286
300
  offers(
287
301
  skip: $offersSkip
288
302
  first: $offersFirst
@@ -318,6 +332,12 @@ fragment BaseDisputeResolverFields on DisputeResolver {
318
332
  }
319
333
  }
320
334
 
335
+ fragment PendingDisputeResolverFields on PendingDisputeResolver {
336
+ operator
337
+ admin
338
+ clerk
339
+ }
340
+
321
341
  fragment BaseDisputeResolverFeeFields on DisputeResolverFee {
322
342
  id
323
343
  tokenAddress
@@ -4,7 +4,16 @@ import { DisputeResolverStruct } from "@bosonprotocol/common";
4
4
  export {
5
5
  CreateSellerArgs,
6
6
  UpdateSellerArgs,
7
- DisputeResolverStruct
7
+ SellerStruct,
8
+ AuthTokenStruct,
9
+ VoucherInitValuesStruct,
10
+ abis,
11
+ DisputeResolverStruct,
12
+ SellerUpdateFields,
13
+ OptInToSellerUpdateArgs,
14
+ DisputeResolverUpdateFields,
15
+ OptInToDisputeResolverUpdateArgs,
16
+ utils
8
17
  } from "@bosonprotocol/common";
9
18
 
10
19
  export type CreateDisputeResolverArgs = {