@bosonprotocol/core-sdk 1.25.0-alpha.2 → 1.25.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/accounts/mixin.d.ts +4 -4
- package/dist/cjs/accounts/mixin.d.ts.map +1 -1
- package/dist/cjs/accounts/mixin.js +8 -8
- package/dist/cjs/accounts/mixin.js.map +1 -1
- package/dist/cjs/accounts/subgraph.d.ts +1 -1
- package/dist/cjs/accounts/subgraph.d.ts.map +1 -1
- package/dist/cjs/accounts/subgraph.js +7 -7
- package/dist/cjs/accounts/subgraph.js.map +1 -1
- package/dist/cjs/accounts/types.d.ts +1 -1
- package/dist/cjs/accounts/types.d.ts.map +1 -1
- package/dist/cjs/core-sdk.d.ts +1 -0
- package/dist/cjs/core-sdk.d.ts.map +1 -1
- package/dist/cjs/core-sdk.js +3 -0
- package/dist/cjs/core-sdk.js.map +1 -1
- package/dist/cjs/erc1155/mixin.d.ts +1 -1
- package/dist/cjs/erc1155/mixin.d.ts.map +1 -1
- package/dist/cjs/erc1155/mixin.js +2 -2
- package/dist/cjs/erc1155/mixin.js.map +1 -1
- package/dist/cjs/erc20/mixin.d.ts +7 -7
- package/dist/cjs/erc20/mixin.d.ts.map +1 -1
- package/dist/cjs/erc20/mixin.js +14 -14
- package/dist/cjs/erc20/mixin.js.map +1 -1
- package/dist/cjs/erc721/mixin.d.ts +3 -3
- package/dist/cjs/erc721/mixin.d.ts.map +1 -1
- package/dist/cjs/erc721/mixin.js +6 -6
- package/dist/cjs/erc721/mixin.js.map +1 -1
- package/dist/cjs/exchanges/handler.js +12 -12
- package/dist/cjs/exchanges/handler.js.map +1 -1
- package/dist/cjs/exchanges/mixin.d.ts +3 -3
- package/dist/cjs/exchanges/mixin.js +3 -3
- package/dist/cjs/forwarder/handler.d.ts +1 -1
- package/dist/cjs/forwarder/handler.d.ts.map +1 -1
- package/dist/cjs/forwarder/handler.js +2 -4
- package/dist/cjs/forwarder/handler.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/meta-tx/biconomy.d.ts +17 -3
- package/dist/cjs/meta-tx/biconomy.d.ts.map +1 -1
- package/dist/cjs/meta-tx/biconomy.js +19 -0
- package/dist/cjs/meta-tx/biconomy.js.map +1 -1
- package/dist/cjs/meta-tx/handler.d.ts +38 -4
- package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/meta-tx/handler.js +92 -23
- package/dist/cjs/meta-tx/handler.js.map +1 -1
- package/dist/cjs/meta-tx/mixin.d.ts +25 -3
- package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
- package/dist/cjs/meta-tx/mixin.js +51 -22
- package/dist/cjs/meta-tx/mixin.js.map +1 -1
- package/dist/cjs/offers/handler.d.ts +15 -0
- package/dist/cjs/offers/handler.d.ts.map +1 -1
- package/dist/cjs/offers/handler.js +28 -4
- package/dist/cjs/offers/handler.js.map +1 -1
- package/dist/cjs/offers/interface.d.ts +1 -1
- package/dist/cjs/offers/interface.d.ts.map +1 -1
- package/dist/cjs/offers/interface.js +3 -2
- package/dist/cjs/offers/interface.js.map +1 -1
- package/dist/cjs/offers/mixin.d.ts +26 -3
- package/dist/cjs/offers/mixin.d.ts.map +1 -1
- package/dist/cjs/offers/mixin.js +46 -3
- package/dist/cjs/offers/mixin.js.map +1 -1
- package/dist/cjs/offers/renderContractualAgreement.d.ts.map +1 -1
- package/dist/cjs/offers/renderContractualAgreement.js +5 -4
- package/dist/cjs/offers/renderContractualAgreement.js.map +1 -1
- package/dist/cjs/seaport/abi.d.ts +41 -0
- package/dist/cjs/seaport/abi.d.ts.map +1 -0
- package/dist/cjs/seaport/abi.js +153 -0
- package/dist/cjs/seaport/abi.js.map +1 -0
- package/dist/cjs/seaport/handler.d.ts +46 -0
- package/dist/cjs/seaport/handler.d.ts.map +1 -0
- package/dist/cjs/seaport/handler.js +28 -0
- package/dist/cjs/seaport/handler.js.map +1 -0
- package/dist/cjs/seaport/index.d.ts +2 -0
- package/dist/cjs/seaport/index.d.ts.map +1 -0
- package/dist/cjs/seaport/index.js +28 -0
- package/dist/cjs/seaport/index.js.map +1 -0
- package/dist/cjs/subgraph.d.ts +1451 -212
- package/dist/cjs/subgraph.d.ts.map +1 -1
- package/dist/cjs/subgraph.js +67 -11
- package/dist/cjs/subgraph.js.map +1 -1
- package/dist/cjs/voucher/handler.d.ts +31 -0
- package/dist/cjs/voucher/handler.d.ts.map +1 -1
- package/dist/cjs/voucher/handler.js +57 -1
- package/dist/cjs/voucher/handler.js.map +1 -1
- package/dist/cjs/voucher/interface.d.ts +8 -0
- package/dist/cjs/voucher/interface.d.ts.map +1 -1
- package/dist/cjs/voucher/interface.js +81 -1
- package/dist/cjs/voucher/interface.js.map +1 -1
- package/dist/cjs/voucher/mixin.d.ts +11 -0
- package/dist/cjs/voucher/mixin.d.ts.map +1 -1
- package/dist/cjs/voucher/mixin.js +47 -0
- package/dist/cjs/voucher/mixin.js.map +1 -1
- package/dist/esm/accounts/mixin.d.ts +4 -4
- package/dist/esm/accounts/mixin.d.ts.map +1 -1
- package/dist/esm/accounts/mixin.js +8 -8
- package/dist/esm/accounts/mixin.js.map +1 -1
- package/dist/esm/accounts/subgraph.d.ts +1 -1
- package/dist/esm/accounts/subgraph.d.ts.map +1 -1
- package/dist/esm/accounts/subgraph.js +5 -5
- package/dist/esm/accounts/subgraph.js.map +1 -1
- package/dist/esm/accounts/types.d.ts +1 -1
- package/dist/esm/accounts/types.d.ts.map +1 -1
- package/dist/esm/core-sdk.d.ts +1 -0
- package/dist/esm/core-sdk.d.ts.map +1 -1
- package/dist/esm/core-sdk.js +3 -0
- package/dist/esm/core-sdk.js.map +1 -1
- package/dist/esm/erc1155/mixin.d.ts +1 -1
- package/dist/esm/erc1155/mixin.d.ts.map +1 -1
- package/dist/esm/erc1155/mixin.js +2 -2
- package/dist/esm/erc1155/mixin.js.map +1 -1
- package/dist/esm/erc20/mixin.d.ts +7 -7
- package/dist/esm/erc20/mixin.d.ts.map +1 -1
- package/dist/esm/erc20/mixin.js +14 -14
- package/dist/esm/erc20/mixin.js.map +1 -1
- package/dist/esm/erc721/mixin.d.ts +3 -3
- package/dist/esm/erc721/mixin.d.ts.map +1 -1
- package/dist/esm/erc721/mixin.js +6 -6
- package/dist/esm/erc721/mixin.js.map +1 -1
- package/dist/esm/exchanges/handler.js +12 -12
- package/dist/esm/exchanges/handler.js.map +1 -1
- package/dist/esm/exchanges/mixin.d.ts +3 -3
- package/dist/esm/exchanges/mixin.js +3 -3
- package/dist/esm/forwarder/handler.d.ts +1 -1
- package/dist/esm/forwarder/handler.d.ts.map +1 -1
- package/dist/esm/forwarder/handler.js +2 -4
- package/dist/esm/forwarder/handler.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/meta-tx/biconomy.d.ts +17 -3
- package/dist/esm/meta-tx/biconomy.d.ts.map +1 -1
- package/dist/esm/meta-tx/biconomy.js +17 -0
- package/dist/esm/meta-tx/biconomy.js.map +1 -1
- package/dist/esm/meta-tx/handler.d.ts +38 -4
- package/dist/esm/meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/meta-tx/handler.js +118 -21
- package/dist/esm/meta-tx/handler.js.map +1 -1
- package/dist/esm/meta-tx/mixin.d.ts +25 -3
- package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
- package/dist/esm/meta-tx/mixin.js +67 -17
- package/dist/esm/meta-tx/mixin.js.map +1 -1
- package/dist/esm/offers/handler.d.ts +15 -0
- package/dist/esm/offers/handler.d.ts.map +1 -1
- package/dist/esm/offers/handler.js +21 -3
- package/dist/esm/offers/handler.js.map +1 -1
- package/dist/esm/offers/interface.d.ts +1 -1
- package/dist/esm/offers/interface.d.ts.map +1 -1
- package/dist/esm/offers/interface.js +3 -2
- package/dist/esm/offers/interface.js.map +1 -1
- package/dist/esm/offers/mixin.d.ts +26 -3
- package/dist/esm/offers/mixin.d.ts.map +1 -1
- package/dist/esm/offers/mixin.js +42 -3
- package/dist/esm/offers/mixin.js.map +1 -1
- package/dist/esm/offers/renderContractualAgreement.d.ts.map +1 -1
- package/dist/esm/offers/renderContractualAgreement.js +5 -4
- package/dist/esm/offers/renderContractualAgreement.js.map +1 -1
- package/dist/esm/seaport/abi.d.ts +41 -0
- package/dist/esm/seaport/abi.d.ts.map +1 -0
- package/dist/esm/seaport/abi.js +150 -0
- package/dist/esm/seaport/abi.js.map +1 -0
- package/dist/esm/seaport/handler.d.ts +46 -0
- package/dist/esm/seaport/handler.d.ts.map +1 -0
- package/dist/esm/seaport/handler.js +24 -0
- package/dist/esm/seaport/handler.js.map +1 -0
- package/dist/esm/seaport/index.d.ts +2 -0
- package/dist/esm/seaport/index.d.ts.map +1 -0
- package/dist/esm/seaport/index.js +2 -0
- package/dist/esm/seaport/index.js.map +1 -0
- package/dist/esm/subgraph.d.ts +1451 -212
- package/dist/esm/subgraph.d.ts.map +1 -1
- package/dist/esm/subgraph.js +64 -8
- package/dist/esm/subgraph.js.map +1 -1
- package/dist/esm/voucher/handler.d.ts +31 -0
- package/dist/esm/voucher/handler.d.ts.map +1 -1
- package/dist/esm/voucher/handler.js +39 -1
- package/dist/esm/voucher/handler.js.map +1 -1
- package/dist/esm/voucher/interface.d.ts +8 -0
- package/dist/esm/voucher/interface.d.ts.map +1 -1
- package/dist/esm/voucher/interface.js +72 -0
- package/dist/esm/voucher/interface.js.map +1 -1
- package/dist/esm/voucher/mixin.d.ts +11 -0
- package/dist/esm/voucher/mixin.d.ts.map +1 -1
- package/dist/esm/voucher/mixin.js +41 -0
- package/dist/esm/voucher/mixin.js.map +1 -1
- package/package.json +3 -3
- package/src/accounts/interface.ts +1 -1
- package/src/accounts/mixin.ts +15 -14
- package/src/accounts/queries.graphql +4 -4
- package/src/accounts/subgraph.ts +6 -6
- package/src/accounts/types.ts +1 -1
- package/src/core-sdk.ts +4 -0
- package/src/erc1155/mixin.ts +2 -2
- package/src/erc20/mixin.ts +14 -14
- package/src/erc721/mixin.ts +6 -6
- package/src/exchanges/handler.ts +13 -13
- package/src/exchanges/mixin.ts +3 -3
- package/src/forwarder/handler.ts +3 -5
- package/src/index.ts +1 -0
- package/src/meta-tx/biconomy.ts +35 -2
- package/src/meta-tx/handler.ts +202 -31
- package/src/meta-tx/mixin.ts +135 -21
- package/src/metadata/base.graphql +3 -0
- package/src/metadata/product-v1.graphql +12 -0
- package/src/offers/handler.ts +36 -3
- package/src/offers/interface.ts +4 -2
- package/src/offers/mixin.ts +57 -2
- package/src/offers/queries.graphql +13 -0
- package/src/offers/renderContractualAgreement.ts +6 -9
- package/src/seaport/abi.ts +149 -0
- package/src/seaport/handler.ts +57 -0
- package/src/seaport/index.ts +1 -0
- package/src/subgraph.ts +1501 -216
- package/src/voucher/handler.ts +78 -1
- package/src/voucher/interface.ts +88 -0
- package/src/voucher/mixin.ts +76 -0
package/src/meta-tx/handler.ts
CHANGED
|
@@ -30,18 +30,31 @@ import {
|
|
|
30
30
|
encodeReserveRange
|
|
31
31
|
} from "../offers/interface";
|
|
32
32
|
import { prepareDataSignatureParameters } from "../utils/signature";
|
|
33
|
-
import {
|
|
33
|
+
import {
|
|
34
|
+
Biconomy,
|
|
35
|
+
ForwarderDomainData,
|
|
36
|
+
GetRetriedHashesData
|
|
37
|
+
} from "./biconomy";
|
|
34
38
|
import { isAddress } from "@ethersproject/address";
|
|
35
39
|
import { AddressZero } from "@ethersproject/constants";
|
|
36
40
|
import { encodeDepositFunds, encodeWithdrawFunds } from "../funds/interface";
|
|
37
41
|
import { bosonDisputeHandlerIface } from "../disputes/interface";
|
|
38
42
|
import { encodeCreateGroup } from "../groups/interface";
|
|
39
43
|
import { encodeCreateOfferWithCondition } from "../orchestration/interface";
|
|
40
|
-
import {
|
|
41
|
-
|
|
44
|
+
import {
|
|
45
|
+
encodeCallExternalContract,
|
|
46
|
+
encodePreMint,
|
|
47
|
+
encodeSetApprovalForAll,
|
|
48
|
+
encodeSetApprovalForAllToContract
|
|
49
|
+
} from "../voucher/interface";
|
|
50
|
+
import { hexZeroPad } from "@ethersproject/bytes";
|
|
51
|
+
import { keccak256 } from "@ethersproject/keccak256";
|
|
52
|
+
import { id } from "@ethersproject/hash";
|
|
53
|
+
import { defaultAbiCoder } from "@ethersproject/abi";
|
|
42
54
|
import { ERC20ForwardRequest } from "../forwarder/biconomy-interface";
|
|
43
|
-
import { verifyEIP712 } from "../forwarder/handler";
|
|
55
|
+
import { getNonce, verifyEIP712 } from "../forwarder/handler";
|
|
44
56
|
import { MockForwardRequest } from "../forwarder/mock-interface";
|
|
57
|
+
import { isTrustedForwarder, owner } from "../voucher/handler";
|
|
45
58
|
|
|
46
59
|
export type BaseMetaTxArgs = {
|
|
47
60
|
web3Lib: Web3LibAdapter;
|
|
@@ -52,9 +65,7 @@ export type BaseMetaTxArgs = {
|
|
|
52
65
|
|
|
53
66
|
export type BaseVoucherMetaTxArgs = {
|
|
54
67
|
web3Lib: Web3LibAdapter;
|
|
55
|
-
nonce: BigNumberish;
|
|
56
68
|
bosonVoucherAddress: string;
|
|
57
|
-
forwarderAddress: string;
|
|
58
69
|
chainId: number;
|
|
59
70
|
};
|
|
60
71
|
|
|
@@ -118,7 +129,9 @@ export async function signMetaTx(
|
|
|
118
129
|
|
|
119
130
|
export async function signVoucherMetaTx(
|
|
120
131
|
args: BaseVoucherMetaTxArgs & {
|
|
132
|
+
forwarderAbi: typeof abis.MockForwarderABI;
|
|
121
133
|
functionSignature: string;
|
|
134
|
+
forwarderAddress: string;
|
|
122
135
|
}
|
|
123
136
|
): Promise<SignedVoucherMetaTx> {
|
|
124
137
|
const forwardType = [
|
|
@@ -140,11 +153,17 @@ export async function signVoucherMetaTx(
|
|
|
140
153
|
|
|
141
154
|
const signerAddress = await args.web3Lib.getSignerAddress();
|
|
142
155
|
const chainId = await args.web3Lib.getChainId();
|
|
156
|
+
const nonce = await getNonce({
|
|
157
|
+
contractAddress: args.forwarderAddress,
|
|
158
|
+
user: signerAddress,
|
|
159
|
+
web3Lib: args.web3Lib,
|
|
160
|
+
forwarderAbi: args.forwarderAbi
|
|
161
|
+
});
|
|
143
162
|
|
|
144
163
|
const message = {
|
|
145
164
|
from: signerAddress,
|
|
146
165
|
to: args.bosonVoucherAddress,
|
|
147
|
-
nonce
|
|
166
|
+
nonce,
|
|
148
167
|
data: args.functionSignature
|
|
149
168
|
};
|
|
150
169
|
|
|
@@ -178,6 +197,7 @@ export async function signBiconomyVoucherMetaTx(
|
|
|
178
197
|
| typeof abis.MockForwarderABI
|
|
179
198
|
| typeof abis.BiconomyForwarderABI;
|
|
180
199
|
txGas: BigNumberish;
|
|
200
|
+
relayerUrl: string;
|
|
181
201
|
}
|
|
182
202
|
): Promise<SignedVoucherMetaTx> {
|
|
183
203
|
const customSignatureType = {
|
|
@@ -205,6 +225,43 @@ export async function signBiconomyVoucherMetaTx(
|
|
|
205
225
|
const signerAddress = await args.web3Lib.getSignerAddress();
|
|
206
226
|
const chainId = await args.web3Lib.getChainId();
|
|
207
227
|
|
|
228
|
+
// Check which forwarder needs to be used for the contract
|
|
229
|
+
const biconomyForwarderDomainDetails = await new Biconomy(
|
|
230
|
+
args.relayerUrl
|
|
231
|
+
).getForwarderDomainDetails({ chainId });
|
|
232
|
+
|
|
233
|
+
const biconomyForwarderDomainData = await new Promise<
|
|
234
|
+
ForwarderDomainData | undefined
|
|
235
|
+
// eslint-disable-next-line no-async-promise-executor
|
|
236
|
+
>(async (resolve, reject) => {
|
|
237
|
+
try {
|
|
238
|
+
for (const bFDD of Object.values(biconomyForwarderDomainDetails)) {
|
|
239
|
+
const ret = await isTrustedForwarder({
|
|
240
|
+
forwarder: bFDD.verifyingContract,
|
|
241
|
+
contractAddress: args.bosonVoucherAddress,
|
|
242
|
+
web3Lib: args.web3Lib
|
|
243
|
+
});
|
|
244
|
+
if (ret) {
|
|
245
|
+
resolve(bFDD);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
resolve(undefined);
|
|
249
|
+
} catch (e) {
|
|
250
|
+
reject(e);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
if (!biconomyForwarderDomainData) {
|
|
254
|
+
throw `Unable to find the trusted forwarder for BosonVoucher contract ${args.bosonVoucherAddress}`;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const nonce = await getNonce({
|
|
258
|
+
contractAddress: biconomyForwarderDomainData.verifyingContract,
|
|
259
|
+
user: signerAddress,
|
|
260
|
+
web3Lib: args.web3Lib,
|
|
261
|
+
batchId: args.batchId,
|
|
262
|
+
forwarderAbi: args.forwarderAbi
|
|
263
|
+
});
|
|
264
|
+
|
|
208
265
|
const message = {
|
|
209
266
|
from: signerAddress,
|
|
210
267
|
to: args.bosonVoucherAddress,
|
|
@@ -212,25 +269,15 @@ export async function signBiconomyVoucherMetaTx(
|
|
|
212
269
|
txGas: args.txGas,
|
|
213
270
|
tokenGasPrice: "0",
|
|
214
271
|
batchId: args.batchId,
|
|
215
|
-
batchNonce:
|
|
272
|
+
batchNonce: nonce,
|
|
216
273
|
deadline: Math.floor(Date.now() / 1000 + 3600),
|
|
217
274
|
data: args.functionSignature
|
|
218
275
|
};
|
|
219
276
|
|
|
220
|
-
const biconomyForwarderDomainData = {
|
|
221
|
-
name: "Biconomy Forwarder",
|
|
222
|
-
version: "1",
|
|
223
|
-
verifyingContract: args.forwarderAddress,
|
|
224
|
-
salt: ethers.utils.hexZeroPad(
|
|
225
|
-
ethers.BigNumber.from(chainId).toHexString(),
|
|
226
|
-
32
|
|
227
|
-
)
|
|
228
|
-
};
|
|
229
|
-
|
|
230
277
|
const signatureParams = await prepareDataSignatureParameters({
|
|
231
278
|
...args,
|
|
232
279
|
chainId,
|
|
233
|
-
verifyingContractAddress:
|
|
280
|
+
verifyingContractAddress: biconomyForwarderDomainData.verifyingContract,
|
|
234
281
|
customSignatureType,
|
|
235
282
|
primaryType: "ERC20ForwardRequest",
|
|
236
283
|
message,
|
|
@@ -243,15 +290,15 @@ export async function signBiconomyVoucherMetaTx(
|
|
|
243
290
|
const signature = signatureParams.signature;
|
|
244
291
|
const getDomainSeparator = async () => {
|
|
245
292
|
const domainData = biconomyForwarderDomainData;
|
|
246
|
-
const domainSeparator =
|
|
247
|
-
|
|
293
|
+
const domainSeparator = keccak256(
|
|
294
|
+
defaultAbiCoder.encode(
|
|
248
295
|
["bytes32", "bytes32", "bytes32", "address", "bytes32"],
|
|
249
296
|
[
|
|
250
|
-
|
|
297
|
+
id(
|
|
251
298
|
"EIP712Domain(string name,string version,address verifyingContract,bytes32 salt)"
|
|
252
299
|
),
|
|
253
|
-
|
|
254
|
-
|
|
300
|
+
id(domainData.name),
|
|
301
|
+
id(domainData.version),
|
|
255
302
|
domainData.verifyingContract,
|
|
256
303
|
domainData.salt
|
|
257
304
|
]
|
|
@@ -263,7 +310,7 @@ export async function signBiconomyVoucherMetaTx(
|
|
|
263
310
|
// verify signature
|
|
264
311
|
const signatureVerified = await verifyEIP712({
|
|
265
312
|
request: message,
|
|
266
|
-
contractAddress:
|
|
313
|
+
contractAddress: biconomyForwarderDomainData.verifyingContract,
|
|
267
314
|
web3Lib: args.web3Lib,
|
|
268
315
|
domainSeparator,
|
|
269
316
|
forwarderAbi: args.forwarderAbi,
|
|
@@ -460,6 +507,38 @@ export async function signMetaTxVoidOfferBatch(
|
|
|
460
507
|
});
|
|
461
508
|
}
|
|
462
509
|
|
|
510
|
+
export async function signMetaTxExtendOffer(
|
|
511
|
+
args: BaseMetaTxArgs & {
|
|
512
|
+
offerId: BigNumberish;
|
|
513
|
+
validUntil: BigNumberish;
|
|
514
|
+
}
|
|
515
|
+
) {
|
|
516
|
+
return signMetaTx({
|
|
517
|
+
...args,
|
|
518
|
+
functionName: "extendOffer(uint256,uint256)",
|
|
519
|
+
functionSignature: bosonOfferHandlerIface.encodeFunctionData(
|
|
520
|
+
"extendOffer",
|
|
521
|
+
[args.offerId, args.validUntil]
|
|
522
|
+
)
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
export async function signMetaTxExtendOfferBatch(
|
|
527
|
+
args: BaseMetaTxArgs & {
|
|
528
|
+
offerIds: BigNumberish[];
|
|
529
|
+
validUntil: BigNumberish;
|
|
530
|
+
}
|
|
531
|
+
) {
|
|
532
|
+
return signMetaTx({
|
|
533
|
+
...args,
|
|
534
|
+
functionName: "extendOfferBatch(uint256[],uint256)",
|
|
535
|
+
functionSignature: bosonOfferHandlerIface.encodeFunctionData(
|
|
536
|
+
"extendOfferBatch",
|
|
537
|
+
[args.offerIds, args.validUntil]
|
|
538
|
+
)
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
|
|
463
542
|
export async function signMetaTxCompleteExchangeBatch(
|
|
464
543
|
args: BaseMetaTxArgs & {
|
|
465
544
|
exchangeIds: BigNumberish[];
|
|
@@ -522,12 +601,13 @@ export async function signMetaTxReserveRange(
|
|
|
522
601
|
args: BaseMetaTxArgs & {
|
|
523
602
|
offerId: BigNumberish;
|
|
524
603
|
length: BigNumberish;
|
|
604
|
+
to: string;
|
|
525
605
|
}
|
|
526
606
|
) {
|
|
527
607
|
return signMetaTx({
|
|
528
608
|
...args,
|
|
529
|
-
functionName: "reserveRange(uint256,uint256)",
|
|
530
|
-
functionSignature: encodeReserveRange(args.offerId, args.length)
|
|
609
|
+
functionName: "reserveRange(uint256,uint256,address)",
|
|
610
|
+
functionSignature: encodeReserveRange(args.offerId, args.length, args.to)
|
|
531
611
|
});
|
|
532
612
|
}
|
|
533
613
|
|
|
@@ -535,10 +615,12 @@ export async function signMetaTxPreMint(
|
|
|
535
615
|
args: BaseVoucherMetaTxArgs & {
|
|
536
616
|
offerId: BigNumberish;
|
|
537
617
|
amount: BigNumberish;
|
|
538
|
-
batchId
|
|
618
|
+
batchId?: BigNumberish;
|
|
619
|
+
forwarderAddress?: string;
|
|
539
620
|
forwarderAbi:
|
|
540
621
|
| typeof abis.MockForwarderABI
|
|
541
622
|
| typeof abis.BiconomyForwarderABI;
|
|
623
|
+
relayerUrl: string;
|
|
542
624
|
}
|
|
543
625
|
): Promise<SignedVoucherMetaTx> {
|
|
544
626
|
const localConfig = defaultConfigs.find(
|
|
@@ -549,13 +631,17 @@ export async function signMetaTxPreMint(
|
|
|
549
631
|
if (isLocal) {
|
|
550
632
|
return signVoucherMetaTx({
|
|
551
633
|
...args,
|
|
552
|
-
|
|
634
|
+
forwarderAddress: args.forwarderAddress,
|
|
635
|
+
functionSignature,
|
|
636
|
+
forwarderAbi: args.forwarderAbi as typeof abis.MockForwarderABI
|
|
553
637
|
});
|
|
554
638
|
}
|
|
555
639
|
const txGas = 200000 + BigNumber.from(args.amount).mul(2500).toNumber(); // ~(180000 + 2250*N) estimation on 2023/02/03
|
|
556
640
|
return signBiconomyVoucherMetaTx({
|
|
557
641
|
...args,
|
|
558
642
|
functionSignature,
|
|
643
|
+
forwarderAbi: args.forwarderAbi as typeof abis.BiconomyForwarderABI,
|
|
644
|
+
batchId: args.batchId || "0",
|
|
559
645
|
txGas
|
|
560
646
|
});
|
|
561
647
|
}
|
|
@@ -564,10 +650,12 @@ export async function signMetaTxSetApprovalForAll(
|
|
|
564
650
|
args: BaseVoucherMetaTxArgs & {
|
|
565
651
|
operator: string;
|
|
566
652
|
approved: boolean;
|
|
567
|
-
batchId
|
|
653
|
+
batchId?: BigNumberish;
|
|
654
|
+
forwarderAddress?: string;
|
|
568
655
|
forwarderAbi:
|
|
569
656
|
| typeof abis.MockForwarderABI
|
|
570
657
|
| typeof abis.BiconomyForwarderABI;
|
|
658
|
+
relayerUrl: string;
|
|
571
659
|
}
|
|
572
660
|
): Promise<SignedVoucherMetaTx> {
|
|
573
661
|
const localConfig = defaultConfigs.find(
|
|
@@ -581,13 +669,96 @@ export async function signMetaTxSetApprovalForAll(
|
|
|
581
669
|
if (isLocal) {
|
|
582
670
|
return signVoucherMetaTx({
|
|
583
671
|
...args,
|
|
584
|
-
|
|
672
|
+
forwarderAddress: args.forwarderAddress,
|
|
673
|
+
functionSignature,
|
|
674
|
+
forwarderAbi: args.forwarderAbi as typeof abis.MockForwarderABI
|
|
585
675
|
});
|
|
586
676
|
}
|
|
587
677
|
const txGas = 100000; // ~70000 estimation on 2023/02/03
|
|
588
678
|
return signBiconomyVoucherMetaTx({
|
|
589
679
|
...args,
|
|
590
680
|
functionSignature,
|
|
681
|
+
forwarderAbi: args.forwarderAbi as typeof abis.BiconomyForwarderABI,
|
|
682
|
+
batchId: args.batchId || "0",
|
|
683
|
+
txGas
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
export async function signMetaTxSetApprovalForAllToContract(
|
|
688
|
+
args: BaseVoucherMetaTxArgs & {
|
|
689
|
+
operator: string;
|
|
690
|
+
approved: boolean;
|
|
691
|
+
batchId?: BigNumberish;
|
|
692
|
+
forwarderAddress?: string;
|
|
693
|
+
forwarderAbi:
|
|
694
|
+
| typeof abis.MockForwarderABI
|
|
695
|
+
| typeof abis.BiconomyForwarderABI;
|
|
696
|
+
relayerUrl: string;
|
|
697
|
+
},
|
|
698
|
+
overrides: {
|
|
699
|
+
txGas?: number;
|
|
700
|
+
} = {}
|
|
701
|
+
): Promise<SignedVoucherMetaTx> {
|
|
702
|
+
const localConfig = defaultConfigs.find(
|
|
703
|
+
(config) => config.envName === "local"
|
|
704
|
+
);
|
|
705
|
+
const isLocal = localConfig.chainId === args.chainId;
|
|
706
|
+
const functionSignature = encodeSetApprovalForAllToContract(
|
|
707
|
+
args.operator,
|
|
708
|
+
args.approved
|
|
709
|
+
);
|
|
710
|
+
if (isLocal) {
|
|
711
|
+
return signVoucherMetaTx({
|
|
712
|
+
...args,
|
|
713
|
+
forwarderAddress: args.forwarderAddress,
|
|
714
|
+
functionSignature,
|
|
715
|
+
forwarderAbi: args.forwarderAbi as typeof abis.MockForwarderABI
|
|
716
|
+
});
|
|
717
|
+
}
|
|
718
|
+
const txGas = overrides.txGas || 100000; // TODO: estimate the gas needed
|
|
719
|
+
return signBiconomyVoucherMetaTx({
|
|
720
|
+
...args,
|
|
721
|
+
functionSignature,
|
|
722
|
+
forwarderAbi: args.forwarderAbi as typeof abis.BiconomyForwarderABI,
|
|
723
|
+
batchId: args.batchId || "0",
|
|
724
|
+
txGas
|
|
725
|
+
});
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
export async function signMetaTxCallExternalContract(
|
|
729
|
+
args: BaseVoucherMetaTxArgs & {
|
|
730
|
+
to: string;
|
|
731
|
+
data: string;
|
|
732
|
+
batchId?: BigNumberish;
|
|
733
|
+
forwarderAddress?: string;
|
|
734
|
+
forwarderAbi:
|
|
735
|
+
| typeof abis.MockForwarderABI
|
|
736
|
+
| typeof abis.BiconomyForwarderABI;
|
|
737
|
+
relayerUrl: string;
|
|
738
|
+
},
|
|
739
|
+
overrides: {
|
|
740
|
+
txGas?: number;
|
|
741
|
+
} = {}
|
|
742
|
+
): Promise<SignedVoucherMetaTx> {
|
|
743
|
+
const localConfig = defaultConfigs.find(
|
|
744
|
+
(config) => config.envName === "local"
|
|
745
|
+
);
|
|
746
|
+
const isLocal = localConfig.chainId === args.chainId;
|
|
747
|
+
const functionSignature = encodeCallExternalContract(args.to, args.data);
|
|
748
|
+
if (isLocal) {
|
|
749
|
+
return signVoucherMetaTx({
|
|
750
|
+
...args,
|
|
751
|
+
forwarderAddress: args.forwarderAddress,
|
|
752
|
+
functionSignature,
|
|
753
|
+
forwarderAbi: args.forwarderAbi as typeof abis.MockForwarderABI
|
|
754
|
+
});
|
|
755
|
+
}
|
|
756
|
+
const txGas = overrides.txGas || 500000; // TODO: estimate the gas needed
|
|
757
|
+
return signBiconomyVoucherMetaTx({
|
|
758
|
+
...args,
|
|
759
|
+
functionSignature,
|
|
760
|
+
forwarderAbi: args.forwarderAbi as typeof abis.BiconomyForwarderABI,
|
|
761
|
+
batchId: args.batchId || "0",
|
|
591
762
|
txGas
|
|
592
763
|
});
|
|
593
764
|
}
|
package/src/meta-tx/mixin.ts
CHANGED
|
@@ -142,14 +142,20 @@ export class MetaTxMixin extends BaseCoreSDK {
|
|
|
142
142
|
public async signMetaTxReserveRange(
|
|
143
143
|
args: Omit<
|
|
144
144
|
Parameters<typeof handler.signMetaTxReserveRange>[0],
|
|
145
|
-
"web3Lib" | "metaTxHandlerAddress" | "chainId"
|
|
146
|
-
>
|
|
145
|
+
"web3Lib" | "metaTxHandlerAddress" | "chainId" | "to"
|
|
146
|
+
> & { to: "seller" | "contract" }
|
|
147
147
|
) {
|
|
148
|
+
const offer = await getOfferById(this._subgraphUrl, args.offerId);
|
|
149
|
+
|
|
148
150
|
return handler.signMetaTxReserveRange({
|
|
149
151
|
web3Lib: this._web3Lib,
|
|
150
152
|
metaTxHandlerAddress: this._protocolDiamond,
|
|
151
153
|
chainId: this._chainId,
|
|
152
|
-
...args
|
|
154
|
+
...args,
|
|
155
|
+
to:
|
|
156
|
+
args.to === "contract"
|
|
157
|
+
? offer.seller.voucherCloneAddress
|
|
158
|
+
: offer.seller.assistant
|
|
153
159
|
});
|
|
154
160
|
}
|
|
155
161
|
|
|
@@ -159,25 +165,17 @@ export class MetaTxMixin extends BaseCoreSDK {
|
|
|
159
165
|
| "web3Lib"
|
|
160
166
|
| "bosonVoucherAddress"
|
|
161
167
|
| "chainId"
|
|
162
|
-
| "nonce"
|
|
163
168
|
| "forwarderAddress"
|
|
164
169
|
| "batchId"
|
|
165
170
|
| "forwarderAbi"
|
|
171
|
+
| "relayerUrl"
|
|
166
172
|
>,
|
|
167
173
|
overrides: Partial<{
|
|
168
174
|
batchId: BigNumberish;
|
|
169
175
|
}> = {}
|
|
170
176
|
) {
|
|
171
|
-
const signerAddress = await this._web3Lib.getSignerAddress();
|
|
172
177
|
const forwarderAddress = this._contracts.forwarder;
|
|
173
178
|
const batchId = overrides.batchId || 0;
|
|
174
|
-
const nonce = await getNonce({
|
|
175
|
-
contractAddress: forwarderAddress,
|
|
176
|
-
user: signerAddress,
|
|
177
|
-
web3Lib: this._web3Lib,
|
|
178
|
-
batchId,
|
|
179
|
-
forwarderAbi: this._metaTxConfig.forwarderAbi
|
|
180
|
-
});
|
|
181
179
|
const offerFromSubgraph = await getOfferById(
|
|
182
180
|
this._subgraphUrl,
|
|
183
181
|
args.offerId
|
|
@@ -186,10 +184,10 @@ export class MetaTxMixin extends BaseCoreSDK {
|
|
|
186
184
|
web3Lib: this._web3Lib,
|
|
187
185
|
bosonVoucherAddress: offerFromSubgraph.seller.voucherCloneAddress,
|
|
188
186
|
chainId: this._chainId,
|
|
189
|
-
nonce,
|
|
190
187
|
forwarderAddress,
|
|
191
188
|
batchId,
|
|
192
189
|
forwarderAbi: this._metaTxConfig.forwarderAbi,
|
|
190
|
+
relayerUrl: this._metaTxConfig.relayerUrl,
|
|
193
191
|
...args
|
|
194
192
|
});
|
|
195
193
|
}
|
|
@@ -204,6 +202,7 @@ export class MetaTxMixin extends BaseCoreSDK {
|
|
|
204
202
|
| "forwarderAddress"
|
|
205
203
|
| "batchId"
|
|
206
204
|
| "forwarderAbi"
|
|
205
|
+
| "relayerUrl"
|
|
207
206
|
>,
|
|
208
207
|
overrides: Partial<{
|
|
209
208
|
batchId: BigNumberish;
|
|
@@ -216,26 +215,103 @@ export class MetaTxMixin extends BaseCoreSDK {
|
|
|
216
215
|
);
|
|
217
216
|
const forwarderAddress = this._contracts.forwarder;
|
|
218
217
|
const batchId = overrides.batchId || 0;
|
|
219
|
-
const nonce = await getNonce({
|
|
220
|
-
contractAddress: forwarderAddress,
|
|
221
|
-
user: sellerAddress,
|
|
222
|
-
web3Lib: this._web3Lib,
|
|
223
|
-
batchId,
|
|
224
|
-
forwarderAbi: this._metaTxConfig.forwarderAbi
|
|
225
|
-
});
|
|
226
218
|
|
|
227
219
|
return handler.signMetaTxSetApprovalForAll({
|
|
228
220
|
web3Lib: this._web3Lib,
|
|
229
221
|
bosonVoucherAddress: seller.voucherCloneAddress,
|
|
230
222
|
chainId: this._chainId,
|
|
231
|
-
nonce,
|
|
232
223
|
forwarderAddress,
|
|
233
224
|
batchId,
|
|
234
225
|
forwarderAbi: this._metaTxConfig.forwarderAbi,
|
|
226
|
+
relayerUrl: this._metaTxConfig.relayerUrl,
|
|
235
227
|
...args
|
|
236
228
|
});
|
|
237
229
|
}
|
|
238
230
|
|
|
231
|
+
public async signMetaTxSetApprovalForAllToContract(
|
|
232
|
+
args: Omit<
|
|
233
|
+
Parameters<typeof handler.signMetaTxSetApprovalForAllToContract>[0],
|
|
234
|
+
| "web3Lib"
|
|
235
|
+
| "bosonVoucherAddress"
|
|
236
|
+
| "chainId"
|
|
237
|
+
| "nonce"
|
|
238
|
+
| "forwarderAddress"
|
|
239
|
+
| "batchId"
|
|
240
|
+
| "forwarderAbi"
|
|
241
|
+
| "relayerUrl"
|
|
242
|
+
>,
|
|
243
|
+
overrides: Partial<{
|
|
244
|
+
batchId?: BigNumberish;
|
|
245
|
+
txGas?: number;
|
|
246
|
+
}> = {}
|
|
247
|
+
) {
|
|
248
|
+
const sellerAddress = await this._web3Lib.getSignerAddress();
|
|
249
|
+
const seller = await accounts.subgraph.getSellerByAddress(
|
|
250
|
+
this._subgraphUrl,
|
|
251
|
+
sellerAddress
|
|
252
|
+
);
|
|
253
|
+
const forwarderAddress = this._contracts.forwarder;
|
|
254
|
+
const batchId = overrides.batchId || 0;
|
|
255
|
+
|
|
256
|
+
return handler.signMetaTxSetApprovalForAllToContract(
|
|
257
|
+
{
|
|
258
|
+
web3Lib: this._web3Lib,
|
|
259
|
+
bosonVoucherAddress: seller.voucherCloneAddress,
|
|
260
|
+
chainId: this._chainId,
|
|
261
|
+
forwarderAddress,
|
|
262
|
+
batchId,
|
|
263
|
+
forwarderAbi: this._metaTxConfig.forwarderAbi,
|
|
264
|
+
relayerUrl: this._metaTxConfig.relayerUrl,
|
|
265
|
+
...args
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
txGas: overrides.txGas
|
|
269
|
+
}
|
|
270
|
+
);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
public async signMetaTxCallExternalContract(
|
|
274
|
+
args: Omit<
|
|
275
|
+
Parameters<typeof handler.signMetaTxCallExternalContract>[0],
|
|
276
|
+
| "web3Lib"
|
|
277
|
+
| "bosonVoucherAddress"
|
|
278
|
+
| "chainId"
|
|
279
|
+
| "nonce"
|
|
280
|
+
| "forwarderAddress"
|
|
281
|
+
| "batchId"
|
|
282
|
+
| "forwarderAbi"
|
|
283
|
+
| "relayerUrl"
|
|
284
|
+
>,
|
|
285
|
+
overrides: Partial<{
|
|
286
|
+
batchId?: BigNumberish;
|
|
287
|
+
txGas?: number;
|
|
288
|
+
}> = {}
|
|
289
|
+
) {
|
|
290
|
+
const sellerAddress = await this._web3Lib.getSignerAddress();
|
|
291
|
+
const seller = await accounts.subgraph.getSellerByAddress(
|
|
292
|
+
this._subgraphUrl,
|
|
293
|
+
sellerAddress
|
|
294
|
+
);
|
|
295
|
+
const forwarderAddress = this._contracts.forwarder;
|
|
296
|
+
const batchId = overrides.batchId || 0;
|
|
297
|
+
|
|
298
|
+
return handler.signMetaTxCallExternalContract(
|
|
299
|
+
{
|
|
300
|
+
web3Lib: this._web3Lib,
|
|
301
|
+
bosonVoucherAddress: seller.voucherCloneAddress,
|
|
302
|
+
chainId: this._chainId,
|
|
303
|
+
forwarderAddress,
|
|
304
|
+
batchId,
|
|
305
|
+
forwarderAbi: this._metaTxConfig.forwarderAbi,
|
|
306
|
+
relayerUrl: this._metaTxConfig.relayerUrl,
|
|
307
|
+
...args
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
txGas: overrides.txGas
|
|
311
|
+
}
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
|
|
239
315
|
public async relayBiconomyMetaTransaction(
|
|
240
316
|
contractAddress: string,
|
|
241
317
|
metaTxParams: {
|
|
@@ -340,6 +416,44 @@ export class MetaTxMixin extends BaseCoreSDK {
|
|
|
340
416
|
});
|
|
341
417
|
}
|
|
342
418
|
|
|
419
|
+
/**
|
|
420
|
+
* Encodes and signs a meta transaction for `extendOffer` that can be relayed.
|
|
421
|
+
* @param args - Meta transaction args.
|
|
422
|
+
* @returns Signature.
|
|
423
|
+
*/
|
|
424
|
+
public async signMetaTxExtendOffer(
|
|
425
|
+
args: Omit<
|
|
426
|
+
Parameters<typeof handler.signMetaTxExtendOffer>[0],
|
|
427
|
+
"web3Lib" | "metaTxHandlerAddress" | "chainId"
|
|
428
|
+
>
|
|
429
|
+
) {
|
|
430
|
+
return handler.signMetaTxExtendOffer({
|
|
431
|
+
web3Lib: this._web3Lib,
|
|
432
|
+
metaTxHandlerAddress: this._protocolDiamond,
|
|
433
|
+
chainId: this._chainId,
|
|
434
|
+
...args
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Encodes and signs a meta transaction for `extendOfferBatch` that can be relayed.
|
|
440
|
+
* @param args - Meta transaction args.
|
|
441
|
+
* @returns Signature.
|
|
442
|
+
*/
|
|
443
|
+
public async signMetaTxExtendOfferBatch(
|
|
444
|
+
args: Omit<
|
|
445
|
+
Parameters<typeof handler.signMetaTxExtendOfferBatch>[0],
|
|
446
|
+
"web3Lib" | "metaTxHandlerAddress" | "chainId"
|
|
447
|
+
>
|
|
448
|
+
) {
|
|
449
|
+
return handler.signMetaTxExtendOfferBatch({
|
|
450
|
+
web3Lib: this._web3Lib,
|
|
451
|
+
metaTxHandlerAddress: this._protocolDiamond,
|
|
452
|
+
chainId: this._chainId,
|
|
453
|
+
...args
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
|
|
343
457
|
/**
|
|
344
458
|
* Encodes and signs a meta transaction for `completeExchangeBatch` that can be relayed.
|
|
345
459
|
* @param args - Meta transaction args.
|
|
@@ -129,6 +129,9 @@ fragment BaseProductV1MetadataEntityFields on ProductV1MetadataEntity {
|
|
|
129
129
|
description
|
|
130
130
|
externalUrl
|
|
131
131
|
animationUrl
|
|
132
|
+
animationMetadata {
|
|
133
|
+
...BaseAnimationMetadataFields
|
|
134
|
+
}
|
|
132
135
|
licenseUrl
|
|
133
136
|
condition
|
|
134
137
|
schemaUrl
|
|
@@ -173,6 +176,13 @@ fragment BaseProductV1MetadataEntityFields on ProductV1MetadataEntity {
|
|
|
173
176
|
}
|
|
174
177
|
}
|
|
175
178
|
|
|
179
|
+
fragment BaseAnimationMetadataFields on AnimationMetadata {
|
|
180
|
+
id
|
|
181
|
+
width
|
|
182
|
+
height
|
|
183
|
+
type
|
|
184
|
+
}
|
|
185
|
+
|
|
176
186
|
fragment BaseProductV1ProductFields on ProductV1Product {
|
|
177
187
|
id
|
|
178
188
|
uuid
|
|
@@ -299,6 +309,8 @@ fragment BaseProductV1MediaFields on ProductV1Media {
|
|
|
299
309
|
url
|
|
300
310
|
tag
|
|
301
311
|
type
|
|
312
|
+
width
|
|
313
|
+
height
|
|
302
314
|
}
|
|
303
315
|
|
|
304
316
|
fragment BaseProductV1PersonalisationFields on ProductV1Personalisation {
|