@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.
- package/dist/cjs/accounts/handler.d.ts +0 -5
- package/dist/cjs/accounts/handler.d.ts.map +1 -1
- package/dist/cjs/accounts/handler.js +1 -10
- package/dist/cjs/accounts/handler.js.map +1 -1
- package/dist/cjs/accounts/interface.d.ts +0 -1
- package/dist/cjs/accounts/interface.d.ts.map +1 -1
- package/dist/cjs/accounts/interface.js +1 -5
- package/dist/cjs/accounts/interface.js.map +1 -1
- package/dist/cjs/accounts/mixin.d.ts +0 -7
- package/dist/cjs/accounts/mixin.d.ts.map +1 -1
- package/dist/cjs/accounts/mixin.js +0 -15
- package/dist/cjs/accounts/mixin.js.map +1 -1
- package/dist/cjs/core-sdk.d.ts +2 -1
- package/dist/cjs/core-sdk.d.ts.map +1 -1
- package/dist/cjs/core-sdk.js +3 -1
- package/dist/cjs/core-sdk.js.map +1 -1
- package/dist/cjs/erc721/handler.d.ts.map +1 -1
- package/dist/cjs/erc721/handler.js +2 -1
- package/dist/cjs/erc721/handler.js.map +1 -1
- package/dist/cjs/meta-tx/handler.d.ts +30 -0
- package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/meta-tx/handler.js +49 -1
- package/dist/cjs/meta-tx/handler.js.map +1 -1
- package/dist/cjs/meta-tx/mixin.d.ts +8 -0
- package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
- package/dist/cjs/meta-tx/mixin.js +12 -0
- package/dist/cjs/meta-tx/mixin.js.map +1 -1
- package/dist/cjs/offers/handler.d.ts +7 -0
- package/dist/cjs/offers/handler.d.ts.map +1 -1
- package/dist/cjs/offers/handler.js +22 -1
- package/dist/cjs/offers/handler.js.map +1 -1
- package/dist/cjs/offers/interface.d.ts +1 -0
- package/dist/cjs/offers/interface.d.ts.map +1 -1
- package/dist/cjs/offers/interface.js +8 -1
- package/dist/cjs/offers/interface.js.map +1 -1
- package/dist/cjs/offers/mixin.d.ts +9 -0
- package/dist/cjs/offers/mixin.d.ts.map +1 -1
- package/dist/cjs/offers/mixin.js +17 -0
- package/dist/cjs/offers/mixin.js.map +1 -1
- package/dist/cjs/orchestration/handler.d.ts +45 -0
- package/dist/cjs/orchestration/handler.d.ts.map +1 -1
- package/dist/cjs/orchestration/handler.js +78 -1
- package/dist/cjs/orchestration/handler.js.map +1 -1
- package/dist/cjs/orchestration/interface.d.ts +6 -0
- package/dist/cjs/orchestration/interface.d.ts.map +1 -1
- package/dist/cjs/orchestration/interface.js +64 -1
- package/dist/cjs/orchestration/interface.js.map +1 -1
- package/dist/cjs/orchestration/mixin.d.ts +57 -0
- package/dist/cjs/orchestration/mixin.d.ts.map +1 -1
- package/dist/cjs/orchestration/mixin.js +105 -0
- package/dist/cjs/orchestration/mixin.js.map +1 -1
- package/dist/cjs/utils/signature.d.ts.map +1 -1
- package/dist/cjs/utils/signature.js +5 -0
- package/dist/cjs/utils/signature.js.map +1 -1
- package/dist/cjs/voucher/handler.d.ts +32 -0
- package/dist/cjs/voucher/handler.d.ts.map +1 -0
- package/dist/cjs/voucher/handler.js +68 -0
- package/dist/cjs/voucher/handler.js.map +1 -0
- package/dist/cjs/voucher/index.d.ts +3 -0
- package/dist/cjs/voucher/index.d.ts.map +1 -0
- package/dist/cjs/voucher/index.js +29 -0
- package/dist/cjs/voucher/index.js.map +1 -0
- package/dist/cjs/voucher/interface.d.ts +11 -0
- package/dist/cjs/voucher/interface.d.ts.map +1 -0
- package/dist/cjs/voucher/interface.js +43 -0
- package/dist/cjs/voucher/interface.js.map +1 -0
- package/dist/cjs/voucher/mixin.d.ts +53 -0
- package/dist/cjs/voucher/mixin.d.ts.map +1 -0
- package/dist/cjs/voucher/mixin.js +107 -0
- package/dist/cjs/voucher/mixin.js.map +1 -0
- package/dist/esm/accounts/handler.d.ts +0 -5
- package/dist/esm/accounts/handler.d.ts.map +1 -1
- package/dist/esm/accounts/handler.js +1 -7
- package/dist/esm/accounts/handler.js.map +1 -1
- package/dist/esm/accounts/interface.d.ts +0 -1
- package/dist/esm/accounts/interface.d.ts.map +1 -1
- package/dist/esm/accounts/interface.js +0 -3
- package/dist/esm/accounts/interface.js.map +1 -1
- package/dist/esm/accounts/mixin.d.ts +0 -7
- package/dist/esm/accounts/mixin.d.ts.map +1 -1
- package/dist/esm/accounts/mixin.js +0 -13
- package/dist/esm/accounts/mixin.js.map +1 -1
- package/dist/esm/core-sdk.d.ts +2 -1
- package/dist/esm/core-sdk.d.ts.map +1 -1
- package/dist/esm/core-sdk.js +3 -1
- package/dist/esm/core-sdk.js.map +1 -1
- package/dist/esm/erc721/handler.d.ts.map +1 -1
- package/dist/esm/erc721/handler.js +2 -1
- package/dist/esm/erc721/handler.js.map +1 -1
- package/dist/esm/meta-tx/handler.d.ts +30 -0
- package/dist/esm/meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/meta-tx/handler.js +58 -1
- package/dist/esm/meta-tx/handler.js.map +1 -1
- package/dist/esm/meta-tx/mixin.d.ts +8 -0
- package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
- package/dist/esm/meta-tx/mixin.js +18 -0
- package/dist/esm/meta-tx/mixin.js.map +1 -1
- package/dist/esm/offers/handler.d.ts +7 -0
- package/dist/esm/offers/handler.d.ts.map +1 -1
- package/dist/esm/offers/handler.js +19 -1
- package/dist/esm/offers/handler.js.map +1 -1
- package/dist/esm/offers/interface.d.ts +1 -0
- package/dist/esm/offers/interface.d.ts.map +1 -1
- package/dist/esm/offers/interface.js +6 -0
- package/dist/esm/offers/interface.js.map +1 -1
- package/dist/esm/offers/mixin.d.ts +9 -0
- package/dist/esm/offers/mixin.d.ts.map +1 -1
- package/dist/esm/offers/mixin.js +15 -0
- package/dist/esm/offers/mixin.js.map +1 -1
- package/dist/esm/orchestration/handler.d.ts +45 -0
- package/dist/esm/orchestration/handler.d.ts.map +1 -1
- package/dist/esm/orchestration/handler.js +63 -1
- package/dist/esm/orchestration/handler.js.map +1 -1
- package/dist/esm/orchestration/interface.d.ts +6 -0
- package/dist/esm/orchestration/interface.d.ts.map +1 -1
- package/dist/esm/orchestration/interface.js +58 -0
- package/dist/esm/orchestration/interface.js.map +1 -1
- package/dist/esm/orchestration/mixin.d.ts +57 -0
- package/dist/esm/orchestration/mixin.d.ts.map +1 -1
- package/dist/esm/orchestration/mixin.js +95 -0
- package/dist/esm/orchestration/mixin.js.map +1 -1
- package/dist/esm/utils/signature.d.ts.map +1 -1
- package/dist/esm/utils/signature.js +5 -0
- package/dist/esm/utils/signature.js.map +1 -1
- package/dist/esm/voucher/handler.d.ts +32 -0
- package/dist/esm/voucher/handler.d.ts.map +1 -0
- package/dist/esm/voucher/handler.js +41 -0
- package/dist/esm/voucher/handler.js.map +1 -0
- package/dist/esm/voucher/index.d.ts +3 -0
- package/dist/esm/voucher/index.d.ts.map +1 -0
- package/dist/esm/voucher/index.js +3 -0
- package/dist/esm/voucher/index.js.map +1 -0
- package/dist/esm/voucher/interface.d.ts +11 -0
- package/dist/esm/voucher/interface.d.ts.map +1 -0
- package/dist/esm/voucher/interface.js +33 -0
- package/dist/esm/voucher/interface.js.map +1 -0
- package/dist/esm/voucher/mixin.d.ts +53 -0
- package/dist/esm/voucher/mixin.d.ts.map +1 -0
- package/dist/esm/voucher/mixin.js +84 -0
- package/dist/esm/voucher/mixin.js.map +1 -0
- package/package.json +3 -3
- package/src/accounts/handler.ts +0 -12
- package/src/accounts/interface.ts +0 -7
- package/src/accounts/mixin.ts +0 -16
- package/src/core-sdk.ts +5 -2
- package/src/erc721/handler.ts +3 -1
- package/src/meta-tx/handler.ts +95 -1
- package/src/meta-tx/mixin.ts +33 -0
- package/src/offers/handler.ts +42 -1
- package/src/offers/interface.ts +10 -0
- package/src/offers/mixin.ts +22 -0
- package/src/orchestration/handler.ts +138 -1
- package/src/orchestration/interface.ts +97 -0
- package/src/orchestration/mixin.ts +135 -0
- package/src/utils/signature.ts +5 -0
- package/src/voucher/handler.ts +79 -0
- package/src/voucher/index.ts +2 -0
- package/src/voucher/interface.ts +45 -0
- package/src/voucher/mixin.ts +126 -0
package/src/offers/handler.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/offers/interface.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/offers/mixin.ts
CHANGED
|
@@ -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
|
}
|
package/src/utils/signature.ts
CHANGED
|
@@ -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,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
|
+
}
|