@bosonprotocol/core-sdk 1.24.0 → 1.24.1-alpha.1

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 (159) hide show
  1. package/dist/cjs/accounts/handler.d.ts +0 -5
  2. package/dist/cjs/accounts/handler.d.ts.map +1 -1
  3. package/dist/cjs/accounts/handler.js +1 -10
  4. package/dist/cjs/accounts/handler.js.map +1 -1
  5. package/dist/cjs/accounts/interface.d.ts +0 -1
  6. package/dist/cjs/accounts/interface.d.ts.map +1 -1
  7. package/dist/cjs/accounts/interface.js +1 -5
  8. package/dist/cjs/accounts/interface.js.map +1 -1
  9. package/dist/cjs/accounts/mixin.d.ts +0 -7
  10. package/dist/cjs/accounts/mixin.d.ts.map +1 -1
  11. package/dist/cjs/accounts/mixin.js +0 -15
  12. package/dist/cjs/accounts/mixin.js.map +1 -1
  13. package/dist/cjs/core-sdk.d.ts +2 -1
  14. package/dist/cjs/core-sdk.d.ts.map +1 -1
  15. package/dist/cjs/core-sdk.js +3 -1
  16. package/dist/cjs/core-sdk.js.map +1 -1
  17. package/dist/cjs/erc721/handler.d.ts.map +1 -1
  18. package/dist/cjs/erc721/handler.js +2 -1
  19. package/dist/cjs/erc721/handler.js.map +1 -1
  20. package/dist/cjs/meta-tx/handler.d.ts +30 -0
  21. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  22. package/dist/cjs/meta-tx/handler.js +49 -1
  23. package/dist/cjs/meta-tx/handler.js.map +1 -1
  24. package/dist/cjs/meta-tx/mixin.d.ts +8 -0
  25. package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
  26. package/dist/cjs/meta-tx/mixin.js +12 -0
  27. package/dist/cjs/meta-tx/mixin.js.map +1 -1
  28. package/dist/cjs/offers/handler.d.ts +7 -0
  29. package/dist/cjs/offers/handler.d.ts.map +1 -1
  30. package/dist/cjs/offers/handler.js +22 -1
  31. package/dist/cjs/offers/handler.js.map +1 -1
  32. package/dist/cjs/offers/interface.d.ts +1 -0
  33. package/dist/cjs/offers/interface.d.ts.map +1 -1
  34. package/dist/cjs/offers/interface.js +8 -1
  35. package/dist/cjs/offers/interface.js.map +1 -1
  36. package/dist/cjs/offers/mixin.d.ts +9 -0
  37. package/dist/cjs/offers/mixin.d.ts.map +1 -1
  38. package/dist/cjs/offers/mixin.js +17 -0
  39. package/dist/cjs/offers/mixin.js.map +1 -1
  40. package/dist/cjs/orchestration/handler.d.ts +45 -0
  41. package/dist/cjs/orchestration/handler.d.ts.map +1 -1
  42. package/dist/cjs/orchestration/handler.js +78 -1
  43. package/dist/cjs/orchestration/handler.js.map +1 -1
  44. package/dist/cjs/orchestration/interface.d.ts +6 -0
  45. package/dist/cjs/orchestration/interface.d.ts.map +1 -1
  46. package/dist/cjs/orchestration/interface.js +64 -1
  47. package/dist/cjs/orchestration/interface.js.map +1 -1
  48. package/dist/cjs/orchestration/mixin.d.ts +57 -0
  49. package/dist/cjs/orchestration/mixin.d.ts.map +1 -1
  50. package/dist/cjs/orchestration/mixin.js +105 -0
  51. package/dist/cjs/orchestration/mixin.js.map +1 -1
  52. package/dist/cjs/utils/signature.d.ts.map +1 -1
  53. package/dist/cjs/utils/signature.js +5 -0
  54. package/dist/cjs/utils/signature.js.map +1 -1
  55. package/dist/cjs/voucher/handler.d.ts +32 -0
  56. package/dist/cjs/voucher/handler.d.ts.map +1 -0
  57. package/dist/cjs/voucher/handler.js +68 -0
  58. package/dist/cjs/voucher/handler.js.map +1 -0
  59. package/dist/cjs/voucher/index.d.ts +3 -0
  60. package/dist/cjs/voucher/index.d.ts.map +1 -0
  61. package/dist/cjs/voucher/index.js +29 -0
  62. package/dist/cjs/voucher/index.js.map +1 -0
  63. package/dist/cjs/voucher/interface.d.ts +11 -0
  64. package/dist/cjs/voucher/interface.d.ts.map +1 -0
  65. package/dist/cjs/voucher/interface.js +43 -0
  66. package/dist/cjs/voucher/interface.js.map +1 -0
  67. package/dist/cjs/voucher/mixin.d.ts +53 -0
  68. package/dist/cjs/voucher/mixin.d.ts.map +1 -0
  69. package/dist/cjs/voucher/mixin.js +107 -0
  70. package/dist/cjs/voucher/mixin.js.map +1 -0
  71. package/dist/esm/accounts/handler.d.ts +0 -5
  72. package/dist/esm/accounts/handler.d.ts.map +1 -1
  73. package/dist/esm/accounts/handler.js +1 -7
  74. package/dist/esm/accounts/handler.js.map +1 -1
  75. package/dist/esm/accounts/interface.d.ts +0 -1
  76. package/dist/esm/accounts/interface.d.ts.map +1 -1
  77. package/dist/esm/accounts/interface.js +0 -3
  78. package/dist/esm/accounts/interface.js.map +1 -1
  79. package/dist/esm/accounts/mixin.d.ts +0 -7
  80. package/dist/esm/accounts/mixin.d.ts.map +1 -1
  81. package/dist/esm/accounts/mixin.js +0 -13
  82. package/dist/esm/accounts/mixin.js.map +1 -1
  83. package/dist/esm/core-sdk.d.ts +2 -1
  84. package/dist/esm/core-sdk.d.ts.map +1 -1
  85. package/dist/esm/core-sdk.js +3 -1
  86. package/dist/esm/core-sdk.js.map +1 -1
  87. package/dist/esm/erc721/handler.d.ts.map +1 -1
  88. package/dist/esm/erc721/handler.js +2 -1
  89. package/dist/esm/erc721/handler.js.map +1 -1
  90. package/dist/esm/meta-tx/handler.d.ts +30 -0
  91. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  92. package/dist/esm/meta-tx/handler.js +58 -1
  93. package/dist/esm/meta-tx/handler.js.map +1 -1
  94. package/dist/esm/meta-tx/mixin.d.ts +8 -0
  95. package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
  96. package/dist/esm/meta-tx/mixin.js +18 -0
  97. package/dist/esm/meta-tx/mixin.js.map +1 -1
  98. package/dist/esm/offers/handler.d.ts +7 -0
  99. package/dist/esm/offers/handler.d.ts.map +1 -1
  100. package/dist/esm/offers/handler.js +19 -1
  101. package/dist/esm/offers/handler.js.map +1 -1
  102. package/dist/esm/offers/interface.d.ts +1 -0
  103. package/dist/esm/offers/interface.d.ts.map +1 -1
  104. package/dist/esm/offers/interface.js +6 -0
  105. package/dist/esm/offers/interface.js.map +1 -1
  106. package/dist/esm/offers/mixin.d.ts +9 -0
  107. package/dist/esm/offers/mixin.d.ts.map +1 -1
  108. package/dist/esm/offers/mixin.js +15 -0
  109. package/dist/esm/offers/mixin.js.map +1 -1
  110. package/dist/esm/orchestration/handler.d.ts +45 -0
  111. package/dist/esm/orchestration/handler.d.ts.map +1 -1
  112. package/dist/esm/orchestration/handler.js +63 -1
  113. package/dist/esm/orchestration/handler.js.map +1 -1
  114. package/dist/esm/orchestration/interface.d.ts +6 -0
  115. package/dist/esm/orchestration/interface.d.ts.map +1 -1
  116. package/dist/esm/orchestration/interface.js +58 -0
  117. package/dist/esm/orchestration/interface.js.map +1 -1
  118. package/dist/esm/orchestration/mixin.d.ts +57 -0
  119. package/dist/esm/orchestration/mixin.d.ts.map +1 -1
  120. package/dist/esm/orchestration/mixin.js +95 -0
  121. package/dist/esm/orchestration/mixin.js.map +1 -1
  122. package/dist/esm/utils/signature.d.ts.map +1 -1
  123. package/dist/esm/utils/signature.js +5 -0
  124. package/dist/esm/utils/signature.js.map +1 -1
  125. package/dist/esm/voucher/handler.d.ts +32 -0
  126. package/dist/esm/voucher/handler.d.ts.map +1 -0
  127. package/dist/esm/voucher/handler.js +41 -0
  128. package/dist/esm/voucher/handler.js.map +1 -0
  129. package/dist/esm/voucher/index.d.ts +3 -0
  130. package/dist/esm/voucher/index.d.ts.map +1 -0
  131. package/dist/esm/voucher/index.js +3 -0
  132. package/dist/esm/voucher/index.js.map +1 -0
  133. package/dist/esm/voucher/interface.d.ts +11 -0
  134. package/dist/esm/voucher/interface.d.ts.map +1 -0
  135. package/dist/esm/voucher/interface.js +33 -0
  136. package/dist/esm/voucher/interface.js.map +1 -0
  137. package/dist/esm/voucher/mixin.d.ts +53 -0
  138. package/dist/esm/voucher/mixin.d.ts.map +1 -0
  139. package/dist/esm/voucher/mixin.js +84 -0
  140. package/dist/esm/voucher/mixin.js.map +1 -0
  141. package/package.json +3 -3
  142. package/src/accounts/handler.ts +0 -12
  143. package/src/accounts/interface.ts +0 -7
  144. package/src/accounts/mixin.ts +0 -16
  145. package/src/core-sdk.ts +5 -2
  146. package/src/erc721/handler.ts +3 -1
  147. package/src/meta-tx/handler.ts +95 -1
  148. package/src/meta-tx/mixin.ts +33 -0
  149. package/src/offers/handler.ts +42 -1
  150. package/src/offers/interface.ts +10 -0
  151. package/src/offers/mixin.ts +22 -0
  152. package/src/orchestration/handler.ts +138 -1
  153. package/src/orchestration/interface.ts +97 -0
  154. package/src/orchestration/mixin.ts +135 -0
  155. package/src/utils/signature.ts +5 -0
  156. package/src/voucher/handler.ts +79 -0
  157. package/src/voucher/index.ts +2 -0
  158. package/src/voucher/interface.ts +45 -0
  159. package/src/voucher/mixin.ts +126 -0
@@ -8,7 +8,8 @@ import {
8
8
  import {
9
9
  bosonOfferHandlerIface,
10
10
  encodeCreateOffer,
11
- encodeCreateOfferBatch
11
+ encodeCreateOfferBatch,
12
+ encodeReserveRange
12
13
  } from "./interface";
13
14
  import { getOfferById, getOffers } from "./subgraph";
14
15
  import { storeMetadataOnTheGraph } from "./storage";
@@ -67,6 +68,29 @@ export async function createOfferBatch(args: {
67
68
  });
68
69
  }
69
70
 
71
+ export async function reserveRange(args: {
72
+ contractAddress: string;
73
+ subgraphUrl: string;
74
+ offerId: BigNumberish;
75
+ length: BigNumberish;
76
+ web3Lib: Web3LibAdapter;
77
+ }): Promise<TransactionResponse> {
78
+ const offerFromSubgraph = await getOfferById(args.subgraphUrl, args.offerId);
79
+ const signerAddress = await args.web3Lib.getSignerAddress();
80
+
81
+ checkIfOfferReservable(
82
+ args.offerId,
83
+ args.length,
84
+ signerAddress,
85
+ offerFromSubgraph
86
+ );
87
+
88
+ return args.web3Lib.sendTransaction({
89
+ to: args.contractAddress,
90
+ data: encodeReserveRange(args.offerId, args.length)
91
+ });
92
+ }
93
+
70
94
  export async function voidOffer(args: {
71
95
  contractAddress: string;
72
96
  subgraphUrl: string;
@@ -143,3 +167,20 @@ function checkIfOfferVoidable(
143
167
  );
144
168
  }
145
169
  }
170
+
171
+ function checkIfOfferReservable(
172
+ offerId: BigNumberish,
173
+ length: BigNumberish,
174
+ signerAddress: string,
175
+ offerFromSubgraph?: OfferFieldsFragment
176
+ ) {
177
+ checkIfOfferVoidable(offerId, signerAddress, offerFromSubgraph);
178
+
179
+ if (!length) {
180
+ throw new Error(`Range length is zero`);
181
+ }
182
+
183
+ if (offerFromSubgraph.quantityAvailable < length) {
184
+ throw new Error(`Range length is too large`);
185
+ }
186
+ }
@@ -129,3 +129,13 @@ export function argsToOfferDurationsStruct(
129
129
  resolutionPeriod: utils.timestamp.msToSec(resolutionPeriodDurationInMS)
130
130
  };
131
131
  }
132
+
133
+ export function encodeReserveRange(
134
+ offerId: BigNumberish,
135
+ length: BigNumberish
136
+ ) {
137
+ return bosonOfferHandlerIface.encodeFunctionData("reserveRange", [
138
+ offerId,
139
+ length
140
+ ]);
141
+ }
@@ -246,6 +246,28 @@ export class OfferMixin extends BaseCoreSDK {
246
246
  );
247
247
  }
248
248
 
249
+ /**
250
+ * Reserves a range of vouchers to be associated with an offer
251
+ * @param offerId - Offer ID
252
+ * @param overrides - Optional overrides.
253
+ * @returns Transaction response.
254
+ */
255
+ public async reserveRange(
256
+ offerId: BigNumberish,
257
+ length: BigNumberish,
258
+ overrides: Partial<{
259
+ contractAddress: string;
260
+ }> = {}
261
+ ): Promise<TransactionResponse> {
262
+ return offers.handler.reserveRange({
263
+ offerId,
264
+ length,
265
+ subgraphUrl: this._subgraphUrl,
266
+ contractAddress: overrides.contractAddress || this._protocolDiamond,
267
+ web3Lib: this._web3Lib
268
+ });
269
+ }
270
+
249
271
  /* -------------------------------------------------------------------------- */
250
272
  /* ERC20 / Exchange Token related methods */
251
273
  /* -------------------------------------------------------------------------- */
@@ -7,13 +7,19 @@ import {
7
7
  } from "@bosonprotocol/common";
8
8
  import {
9
9
  encodeCreateOfferWithCondition,
10
+ encodeCreatePremintedOfferAddToGroup,
11
+ encodeCreatePremintedOfferWithCondition,
10
12
  encodeCreateSellerAndOffer,
11
- encodeCreateSellerAndOfferWithCondition
13
+ encodeCreateSellerAndOfferWithCondition,
14
+ encodeCreateSellerAndPremintedOffer,
15
+ encodeCreateSellerAndPremintedOfferWithCondition,
16
+ encodeRaiseAndEscalateDispute
12
17
  } from "./interface";
13
18
  import { storeMetadataOnTheGraph } from "../offers/storage";
14
19
 
15
20
  import { CreateOfferArgs } from "../offers/types";
16
21
  import { CreateSellerArgs } from "../accounts/types";
22
+ import { BigNumberish } from "@ethersproject/bignumber";
17
23
 
18
24
  export async function createOfferAndSeller(args: {
19
25
  offerToCreate: CreateOfferArgs;
@@ -95,3 +101,134 @@ export async function createSellerAndOfferWithCondition(args: {
95
101
  )
96
102
  });
97
103
  }
104
+
105
+ export async function createPremintedOfferAddToGroup(args: {
106
+ offerToCreate: CreateOfferArgs;
107
+ reservedRangeLength: BigNumberish;
108
+ groupId: BigNumberish;
109
+ contractAddress: string;
110
+ web3Lib: Web3LibAdapter;
111
+ metadataStorage?: MetadataStorage;
112
+ theGraphStorage?: MetadataStorage;
113
+ }): Promise<TransactionResponse> {
114
+ utils.validation.createOfferArgsSchema.validateSync(args.offerToCreate, {
115
+ abortEarly: false
116
+ });
117
+
118
+ await storeMetadataOnTheGraph({
119
+ metadataUriOrHash: args.offerToCreate.metadataUri,
120
+ metadataStorage: args.metadataStorage,
121
+ theGraphStorage: args.theGraphStorage
122
+ });
123
+
124
+ return args.web3Lib.sendTransaction({
125
+ to: args.contractAddress,
126
+ data: encodeCreatePremintedOfferAddToGroup(
127
+ args.offerToCreate,
128
+ args.reservedRangeLength,
129
+ args.groupId
130
+ )
131
+ });
132
+ }
133
+
134
+ export async function createPremintedOfferWithCondition(args: {
135
+ offerToCreate: CreateOfferArgs;
136
+ reservedRangeLength: BigNumberish;
137
+ contractAddress: string;
138
+ web3Lib: Web3LibAdapter;
139
+ metadataStorage?: MetadataStorage;
140
+ theGraphStorage?: MetadataStorage;
141
+ condition: ConditionStruct;
142
+ }): Promise<TransactionResponse> {
143
+ utils.validation.createOfferArgsSchema.validateSync(args.offerToCreate, {
144
+ abortEarly: false
145
+ });
146
+
147
+ await storeMetadataOnTheGraph({
148
+ metadataUriOrHash: args.offerToCreate.metadataUri,
149
+ metadataStorage: args.metadataStorage,
150
+ theGraphStorage: args.theGraphStorage
151
+ });
152
+
153
+ return args.web3Lib.sendTransaction({
154
+ to: args.contractAddress,
155
+ data: encodeCreatePremintedOfferWithCondition(
156
+ args.offerToCreate,
157
+ args.reservedRangeLength,
158
+ args.condition
159
+ )
160
+ });
161
+ }
162
+
163
+ export async function createSellerAndPremintedOffer(args: {
164
+ sellerToCreate: CreateSellerArgs;
165
+ offerToCreate: CreateOfferArgs;
166
+ reservedRangeLength: BigNumberish;
167
+ contractAddress: string;
168
+ web3Lib: Web3LibAdapter;
169
+ metadataStorage?: MetadataStorage;
170
+ theGraphStorage?: MetadataStorage;
171
+ }): Promise<TransactionResponse> {
172
+ utils.validation.createOfferArgsSchema.validateSync(args.offerToCreate, {
173
+ abortEarly: false
174
+ });
175
+
176
+ await storeMetadataOnTheGraph({
177
+ metadataUriOrHash: args.offerToCreate.metadataUri,
178
+ metadataStorage: args.metadataStorage,
179
+ theGraphStorage: args.theGraphStorage
180
+ });
181
+
182
+ return args.web3Lib.sendTransaction({
183
+ to: args.contractAddress,
184
+ data: encodeCreateSellerAndPremintedOffer(
185
+ args.sellerToCreate,
186
+ args.offerToCreate,
187
+ args.reservedRangeLength
188
+ )
189
+ });
190
+ }
191
+
192
+ export async function createSellerAndPremintedOfferWithCondition(args: {
193
+ sellerToCreate: CreateSellerArgs;
194
+ offerToCreate: CreateOfferArgs;
195
+ reservedRangeLength: BigNumberish;
196
+ contractAddress: string;
197
+ web3Lib: Web3LibAdapter;
198
+ metadataStorage?: MetadataStorage;
199
+ theGraphStorage?: MetadataStorage;
200
+ condition: ConditionStruct;
201
+ }): Promise<TransactionResponse> {
202
+ utils.validation.createOfferArgsSchema.validateSync(args.offerToCreate, {
203
+ abortEarly: false
204
+ });
205
+
206
+ await storeMetadataOnTheGraph({
207
+ metadataUriOrHash: args.offerToCreate.metadataUri,
208
+ metadataStorage: args.metadataStorage,
209
+ theGraphStorage: args.theGraphStorage
210
+ });
211
+
212
+ return args.web3Lib.sendTransaction({
213
+ to: args.contractAddress,
214
+ data: encodeCreateSellerAndPremintedOfferWithCondition(
215
+ args.sellerToCreate,
216
+ args.offerToCreate,
217
+ args.reservedRangeLength,
218
+ args.condition
219
+ )
220
+ });
221
+ }
222
+
223
+ export async function raiseAndEscalateDispute(args: {
224
+ exchangeId: BigNumberish;
225
+ contractAddress: string;
226
+ web3Lib: Web3LibAdapter;
227
+ metadataStorage?: MetadataStorage;
228
+ theGraphStorage?: MetadataStorage;
229
+ }): Promise<TransactionResponse> {
230
+ return args.web3Lib.sendTransaction({
231
+ to: args.contractAddress,
232
+ data: encodeRaiseAndEscalateDispute(args.exchangeId)
233
+ });
234
+ }
@@ -5,6 +5,7 @@ import { createOfferArgsToStructs } from "../offers/interface";
5
5
 
6
6
  import { CreateSellerArgs } from "../accounts/types";
7
7
  import { CreateOfferArgs } from "../offers/types";
8
+ import { BigNumberish } from "@ethersproject/bignumber";
8
9
 
9
10
  export const bosonOrchestrationHandlerIface = new Interface(
10
11
  abis.IBosonOrchestrationHandlerABI
@@ -71,3 +72,99 @@ export function encodeCreateSellerAndOfferWithCondition(
71
72
  ]
72
73
  );
73
74
  }
75
+
76
+ export function encodeCreatePremintedOfferAddToGroup(
77
+ offer: CreateOfferArgs,
78
+ reservedRangeLength: BigNumberish,
79
+ groupId: BigNumberish
80
+ ) {
81
+ const offerArgs = createOfferArgsToStructs(offer);
82
+
83
+ return bosonOrchestrationHandlerIface.encodeFunctionData(
84
+ "createPremintedOfferAddToGroup",
85
+ [
86
+ offerArgs[0], // offer
87
+ offerArgs[1], // offerDates
88
+ offerArgs[2], // offerDurations
89
+ offerArgs[3], // disputeResolverId
90
+ reservedRangeLength,
91
+ groupId,
92
+ offerArgs[4] // agentId
93
+ ]
94
+ );
95
+ }
96
+
97
+ export function encodeCreatePremintedOfferWithCondition(
98
+ offer: CreateOfferArgs,
99
+ reservedRangeLength: BigNumberish,
100
+ condition: ConditionStruct
101
+ ) {
102
+ const offerArgs = createOfferArgsToStructs(offer);
103
+ return bosonOrchestrationHandlerIface.encodeFunctionData(
104
+ "createPremintedOfferWithCondition",
105
+ [
106
+ offerArgs[0], // offer
107
+ offerArgs[1], // offerDates
108
+ offerArgs[2], // offerDurations
109
+ offerArgs[3], // disputeResolverId
110
+ reservedRangeLength,
111
+ condition,
112
+ offerArgs[4] // agentId
113
+ ]
114
+ );
115
+ }
116
+
117
+ export function encodeCreateSellerAndPremintedOffer(
118
+ seller: CreateSellerArgs,
119
+ offer: CreateOfferArgs,
120
+ reservedRangeLength: BigNumberish
121
+ ) {
122
+ const sellerArgs = createSellerArgsToStruct(seller);
123
+ const offerArgs = createOfferArgsToStructs(offer);
124
+ return bosonOrchestrationHandlerIface.encodeFunctionData(
125
+ "createSellerAndPremintedOffer",
126
+ [
127
+ sellerArgs.sellerStruct,
128
+ offerArgs[0], // offer
129
+ offerArgs[1], // offerDates
130
+ offerArgs[2], // offerDurations
131
+ offerArgs[3], // disputeResolverId
132
+ reservedRangeLength,
133
+ sellerArgs.authTokenStruct,
134
+ sellerArgs.voucherInitValues,
135
+ offerArgs[4] // agentId
136
+ ]
137
+ );
138
+ }
139
+
140
+ export function encodeCreateSellerAndPremintedOfferWithCondition(
141
+ seller: CreateSellerArgs,
142
+ offer: CreateOfferArgs,
143
+ reservedRangeLength: BigNumberish,
144
+ condition: ConditionStruct
145
+ ) {
146
+ const sellerArgs = createSellerArgsToStruct(seller);
147
+ const offerArgs = createOfferArgsToStructs(offer);
148
+ return bosonOrchestrationHandlerIface.encodeFunctionData(
149
+ "createSellerAndPremintedOfferWithCondition",
150
+ [
151
+ sellerArgs.sellerStruct,
152
+ offerArgs[0], // offer
153
+ offerArgs[1], // offerDates
154
+ offerArgs[2], // offerDurations
155
+ offerArgs[3], // disputeResolverId
156
+ reservedRangeLength,
157
+ condition,
158
+ sellerArgs.authTokenStruct,
159
+ sellerArgs.voucherInitValues,
160
+ offerArgs[4] // agentId
161
+ ]
162
+ );
163
+ }
164
+
165
+ export function encodeRaiseAndEscalateDispute(exchangeId: BigNumberish) {
166
+ return bosonOrchestrationHandlerIface.encodeFunctionData(
167
+ "raiseAndEscalateDispute",
168
+ [exchangeId]
169
+ );
170
+ }
@@ -1,4 +1,5 @@
1
1
  import { ConditionStruct, TransactionResponse } from "@bosonprotocol/common";
2
+ import { BigNumberish } from "@ethersproject/bignumber";
2
3
  import { handler } from ".";
3
4
  import { offers, accounts } from "..";
4
5
  import { BaseCoreSDK } from "./../mixins/base-core-sdk";
@@ -54,4 +55,138 @@ export class OrchestrationMixin extends BaseCoreSDK {
54
55
  condition
55
56
  });
56
57
  }
58
+
59
+ /**
60
+ * Creates a preminted offer and adds it to an existing group
61
+ * @param offerToCreate - Offer arguments.
62
+ * @param reservedRangeLength - Already reserved range length.
63
+ * @param groupId - Group ID the offer will be added to
64
+ * @param overrides - Optional overrides.
65
+ * @returns Transaction response.
66
+ */
67
+ public async createPremintedOfferAddToGroup(
68
+ offerToCreate: offers.CreateOfferArgs,
69
+ reservedRangeLength: BigNumberish,
70
+ groupId: BigNumberish,
71
+ overrides: Partial<{
72
+ contractAddress: string;
73
+ }> = {}
74
+ ): Promise<TransactionResponse> {
75
+ return handler.createPremintedOfferAddToGroup({
76
+ offerToCreate,
77
+ reservedRangeLength,
78
+ groupId,
79
+ contractAddress: overrides.contractAddress || this._protocolDiamond,
80
+ web3Lib: this._web3Lib,
81
+ metadataStorage: this._metadataStorage,
82
+ theGraphStorage: this._theGraphStorage
83
+ });
84
+ }
85
+
86
+ /**
87
+ * Creates a seller account and preminted offer
88
+ * This transaction only succeeds if there is no existing seller account for the connected signer.
89
+ * @param sellerToCreate - Addresses to set in the seller account.
90
+ * @param offerToCreate - Offer arguments.
91
+ * @param condition - contract condition applied to the offer
92
+ * @param overrides - Optional overrides.
93
+ * @returns Transaction response.
94
+ */
95
+ public async createSellerAndPremintedOffer(
96
+ sellerToCreate: accounts.CreateSellerArgs,
97
+ offerToCreate: offers.CreateOfferArgs,
98
+ reservedRangeLength: BigNumberish,
99
+ overrides: Partial<{
100
+ contractAddress: string;
101
+ }> = {}
102
+ ): Promise<TransactionResponse> {
103
+ return handler.createSellerAndPremintedOffer({
104
+ sellerToCreate,
105
+ offerToCreate,
106
+ reservedRangeLength,
107
+ contractAddress: overrides.contractAddress || this._protocolDiamond,
108
+ web3Lib: this._web3Lib,
109
+ metadataStorage: this._metadataStorage,
110
+ theGraphStorage: this._theGraphStorage
111
+ });
112
+ }
113
+
114
+ /**
115
+ * Creates a preminted offer and adds it to an existing group
116
+ * @param offerToCreate - Offer arguments.
117
+ * @param reservedRangeLength - Already reserved range length.
118
+ * @param groupId - Group ID the offer will be added to
119
+ * @param overrides - Optional overrides.
120
+ * @returns Transaction response.
121
+ */
122
+ public async createPremintedOfferWithCondition(
123
+ offerToCreate: offers.CreateOfferArgs,
124
+ reservedRangeLength: BigNumberish,
125
+ condition: ConditionStruct,
126
+ overrides: Partial<{
127
+ contractAddress: string;
128
+ }> = {}
129
+ ): Promise<TransactionResponse> {
130
+ return handler.createPremintedOfferWithCondition({
131
+ offerToCreate,
132
+ reservedRangeLength,
133
+ condition,
134
+ contractAddress: overrides.contractAddress || this._protocolDiamond,
135
+ web3Lib: this._web3Lib,
136
+ metadataStorage: this._metadataStorage,
137
+ theGraphStorage: this._theGraphStorage
138
+ });
139
+ }
140
+
141
+ /**
142
+ * Creates a seller account and preminted offer with a specific conditions
143
+ * This transaction only succeeds if there is no existing seller account for the connected signer.
144
+ * @param sellerToCreate - Addresses to set in the seller account.
145
+ * @param offerToCreate - Offer arguments.
146
+ * @param reservedRangeLength - Already reserved range length.
147
+ * @param condition - contract condition applied to the offer
148
+ * @param overrides - Optional overrides.
149
+ * @returns Transaction response.
150
+ */
151
+ public async createSellerAndPremintedOfferWithCondition(
152
+ sellerToCreate: accounts.CreateSellerArgs,
153
+ offerToCreate: offers.CreateOfferArgs,
154
+ reservedRangeLength: BigNumberish,
155
+ condition: ConditionStruct,
156
+ overrides: Partial<{
157
+ contractAddress: string;
158
+ }> = {}
159
+ ): Promise<TransactionResponse> {
160
+ return handler.createSellerAndPremintedOfferWithCondition({
161
+ sellerToCreate,
162
+ offerToCreate,
163
+ reservedRangeLength,
164
+ contractAddress: overrides.contractAddress || this._protocolDiamond,
165
+ web3Lib: this._web3Lib,
166
+ metadataStorage: this._metadataStorage,
167
+ theGraphStorage: this._theGraphStorage,
168
+ condition
169
+ });
170
+ }
171
+
172
+ /**
173
+ * Raises a dispute and immediately escalates it
174
+ * @param exchangeId - Exchange ID
175
+ * @param overrides - Optional overrides.
176
+ * @returns Transaction response.
177
+ */
178
+ public async raiseAndEscalateDispute(
179
+ exchangeId: BigNumberish,
180
+ overrides: Partial<{
181
+ contractAddress: string;
182
+ }> = {}
183
+ ): Promise<TransactionResponse> {
184
+ return handler.raiseAndEscalateDispute({
185
+ exchangeId,
186
+ contractAddress: overrides.contractAddress || this._protocolDiamond,
187
+ web3Lib: this._web3Lib,
188
+ metadataStorage: this._metadataStorage,
189
+ theGraphStorage: this._theGraphStorage
190
+ });
191
+ }
57
192
  }
@@ -27,6 +27,11 @@ export async function prepareDataSignatureParameters(args: SignatureArgs) {
27
27
  salt: hexZeroPad(BigNumber.from(args.chainId).toHexString(), 32),
28
28
  ...args.customDomainData
29
29
  };
30
+ Object.keys(domainData).forEach((key) => {
31
+ if (domainData[key] === undefined) {
32
+ delete domainData[key];
33
+ }
34
+ });
30
35
 
31
36
  const signatureTypes = {
32
37
  EIP712Domain: domainType,
@@ -0,0 +1,79 @@
1
+ import { TransactionResponse, Web3LibAdapter } from "@bosonprotocol/common";
2
+ import { Range } from "@bosonprotocol/common/src/types";
3
+ import { BigNumberish } from "@ethersproject/bignumber";
4
+ import {
5
+ decodeGetAvailablePreMints,
6
+ decodeGetRangeByOfferId,
7
+ encodeBurnPremintedVouchers,
8
+ encodeGetAvailablePreMints,
9
+ encodeGetRangeByOfferId,
10
+ encodePreMint,
11
+ encodeTransferFrom
12
+ } from "./interface";
13
+
14
+ export async function burnPremintedVouchers(args: {
15
+ offerId: BigNumberish;
16
+ contractAddress: string;
17
+ web3Lib: Web3LibAdapter;
18
+ }): Promise<TransactionResponse> {
19
+ return args.web3Lib.sendTransaction({
20
+ to: args.contractAddress,
21
+ data: encodeBurnPremintedVouchers(args.offerId)
22
+ });
23
+ }
24
+
25
+ export async function getAvailablePreMints(args: {
26
+ offerId: BigNumberish;
27
+ contractAddress: string;
28
+ web3Lib: Web3LibAdapter;
29
+ }): Promise<string> {
30
+ const result = await args.web3Lib.call({
31
+ to: args.contractAddress,
32
+ data: encodeGetAvailablePreMints(args.offerId)
33
+ });
34
+ const [count] = decodeGetAvailablePreMints(result);
35
+ return String(count);
36
+ }
37
+
38
+ export async function getRangeByOfferId(args: {
39
+ offerId: BigNumberish;
40
+ contractAddress: string;
41
+ web3Lib: Web3LibAdapter;
42
+ }): Promise<Range> {
43
+ const result = await args.web3Lib.call({
44
+ to: args.contractAddress,
45
+ data: encodeGetRangeByOfferId(args.offerId)
46
+ });
47
+ const [range] = decodeGetRangeByOfferId(result);
48
+ return {
49
+ start: range.start,
50
+ length: range._length,
51
+ minted: range.minted,
52
+ lastBurnedTokenId: range.lastBurnedTokenId
53
+ };
54
+ }
55
+
56
+ export async function preMint(args: {
57
+ offerId: BigNumberish;
58
+ amount: BigNumberish;
59
+ contractAddress: string;
60
+ web3Lib: Web3LibAdapter;
61
+ }): Promise<TransactionResponse> {
62
+ return args.web3Lib.sendTransaction({
63
+ to: args.contractAddress,
64
+ data: encodePreMint(args.offerId, args.amount)
65
+ });
66
+ }
67
+
68
+ export async function transferFrom(args: {
69
+ from: BigNumberish;
70
+ to: BigNumberish;
71
+ tokenId: BigNumberish;
72
+ contractAddress: string;
73
+ web3Lib: Web3LibAdapter;
74
+ }): Promise<TransactionResponse> {
75
+ return args.web3Lib.sendTransaction({
76
+ to: args.contractAddress,
77
+ data: encodeTransferFrom(args.from, args.to, args.tokenId)
78
+ });
79
+ }
@@ -0,0 +1,2 @@
1
+ export * as iface from "./interface";
2
+ export * as handler from "./handler";
@@ -0,0 +1,45 @@
1
+ import { abis } from "@bosonprotocol/common";
2
+ import { Interface } from "@ethersproject/abi";
3
+ import { BigNumberish } from "@ethersproject/bignumber";
4
+
5
+ export const bosonVoucherIface = new Interface(abis.IBosonVoucherABI);
6
+
7
+ export function encodeBurnPremintedVouchers(offerId: BigNumberish) {
8
+ return bosonVoucherIface.encodeFunctionData("burnPremintedVouchers", [
9
+ offerId
10
+ ]);
11
+ }
12
+
13
+ export function encodeGetAvailablePreMints(offerId: BigNumberish) {
14
+ return bosonVoucherIface.encodeFunctionData("getAvailablePreMints", [
15
+ offerId
16
+ ]);
17
+ }
18
+
19
+ export function decodeGetAvailablePreMints(result: string) {
20
+ return bosonVoucherIface.decodeFunctionResult("getAvailablePreMints", result);
21
+ }
22
+
23
+ export function encodeGetRangeByOfferId(offerId: BigNumberish) {
24
+ return bosonVoucherIface.encodeFunctionData("getRangeByOfferId", [offerId]);
25
+ }
26
+
27
+ export function decodeGetRangeByOfferId(result: string) {
28
+ return bosonVoucherIface.decodeFunctionResult("getRangeByOfferId", result);
29
+ }
30
+
31
+ export function encodePreMint(offerId: BigNumberish, amount: BigNumberish) {
32
+ return bosonVoucherIface.encodeFunctionData("preMint", [offerId, amount]);
33
+ }
34
+
35
+ export function encodeTransferFrom(
36
+ from: BigNumberish,
37
+ to: BigNumberish,
38
+ tokenId: BigNumberish
39
+ ) {
40
+ return bosonVoucherIface.encodeFunctionData("transferFrom", [
41
+ from,
42
+ to,
43
+ tokenId
44
+ ]);
45
+ }