@bosonprotocol/core-sdk 1.25.0-alpha.3 → 1.25.0-alpha.30
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/interface.js.map +1 -1
- 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 +2 -1
- 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 +94 -25
- 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/metadata/mixin.d.ts +3 -3
- package/dist/cjs/metadata/mixin.d.ts.map +1 -1
- package/dist/cjs/metadata/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 +7036 -358
- package/dist/cjs/subgraph.d.ts.map +1 -1
- package/dist/cjs/subgraph.js +166 -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/interface.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 +2 -1
- 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 +120 -23
- 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/metadata/mixin.d.ts +3 -3
- package/dist/esm/metadata/mixin.d.ts.map +1 -1
- package/dist/esm/metadata/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 +7036 -358
- package/dist/esm/subgraph.d.ts.map +1 -1
- package/dist/esm/subgraph.js +163 -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 +2 -1
- package/src/accounts/mixin.ts +15 -14
- package/src/accounts/queries.graphql +46 -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 +2 -0
- package/src/meta-tx/biconomy.ts +35 -2
- package/src/meta-tx/handler.ts +204 -33
- package/src/meta-tx/mixin.ts +135 -21
- package/src/metadata/base.graphql +3 -0
- package/src/metadata/mixin.ts +5 -3
- package/src/metadata/product-v1.graphql +13 -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 +7124 -320
- package/src/voucher/handler.ts +78 -1
- package/src/voucher/interface.ts +88 -0
- package/src/voucher/mixin.ts +76 -0
package/src/exchanges/mixin.ts
CHANGED
|
@@ -83,7 +83,7 @@ export class ExchangesMixin extends BaseCoreSDK {
|
|
|
83
83
|
|
|
84
84
|
/**
|
|
85
85
|
* Revokes an existing voucher by calling the `ExchangeHandlerContract`.
|
|
86
|
-
* Callable by seller `
|
|
86
|
+
* Callable by seller `assistant`.
|
|
87
87
|
* @param exchangeId - ID of exchange to revoke.
|
|
88
88
|
* @returns Transaction response.
|
|
89
89
|
*/
|
|
@@ -134,7 +134,7 @@ export class ExchangesMixin extends BaseCoreSDK {
|
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
136
|
* Completes an existing voucher by calling the `ExchangeHandlerContract`.
|
|
137
|
-
* Callable by buyer or seller
|
|
137
|
+
* Callable by buyer or seller assistant.
|
|
138
138
|
* @param exchangeId - ID of exchange to complete.
|
|
139
139
|
* @returns Transaction response.
|
|
140
140
|
*/
|
|
@@ -151,7 +151,7 @@ export class ExchangesMixin extends BaseCoreSDK {
|
|
|
151
151
|
|
|
152
152
|
/**
|
|
153
153
|
* Completes a batch of existing vouchers by calling the `ExchangeHandlerContract`.
|
|
154
|
-
* Callable by buyer or seller
|
|
154
|
+
* Callable by buyer or seller assistant.
|
|
155
155
|
* @param exchangeIds - IDs of exchange to complete.
|
|
156
156
|
* @returns Transaction response.
|
|
157
157
|
*/
|
package/src/forwarder/handler.ts
CHANGED
|
@@ -7,13 +7,13 @@ export async function getNonce(args: {
|
|
|
7
7
|
contractAddress: string;
|
|
8
8
|
user: string;
|
|
9
9
|
web3Lib: Web3LibAdapter;
|
|
10
|
-
batchId
|
|
10
|
+
batchId?: BigNumberish;
|
|
11
11
|
forwarderAbi: typeof abis.MockForwarderABI | typeof abis.BiconomyForwarderABI;
|
|
12
12
|
}): Promise<string> {
|
|
13
13
|
const isMock = args.forwarderAbi === mockInterface.abi;
|
|
14
14
|
const data = isMock
|
|
15
15
|
? mockInterface.encodeGetNonce(args.user)
|
|
16
|
-
: biconomyInterface.encodeGetNonce(args.user, args.batchId);
|
|
16
|
+
: biconomyInterface.encodeGetNonce(args.user, args.batchId || "0");
|
|
17
17
|
|
|
18
18
|
const result = await args.web3Lib.call({
|
|
19
19
|
to: args.contractAddress,
|
|
@@ -45,12 +45,10 @@ export async function verifyEIP712(args: {
|
|
|
45
45
|
args.signature
|
|
46
46
|
);
|
|
47
47
|
try {
|
|
48
|
-
|
|
48
|
+
await args.web3Lib.call({
|
|
49
49
|
to: args.contractAddress,
|
|
50
50
|
data
|
|
51
51
|
});
|
|
52
|
-
const ret = biconomyInterface.decodeVerifyEIP712(result);
|
|
53
|
-
console.log({ ret });
|
|
54
52
|
return true;
|
|
55
53
|
} catch (e) {
|
|
56
54
|
return false;
|
package/src/index.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * as subgraph from "./subgraph";
|
|
|
13
13
|
export * as groups from "./groups";
|
|
14
14
|
export * as forwarder from "./forwarder";
|
|
15
15
|
export * as voucher from "./voucher";
|
|
16
|
+
export * as seaport from "./seaport";
|
|
16
17
|
|
|
17
18
|
export {
|
|
18
19
|
defaultConfigs,
|
|
@@ -26,6 +27,7 @@ export {
|
|
|
26
27
|
export {
|
|
27
28
|
MetadataType,
|
|
28
29
|
AnyMetadata,
|
|
30
|
+
OfferOrSellerMetadata,
|
|
29
31
|
validateMetadata,
|
|
30
32
|
base,
|
|
31
33
|
productV1
|
package/src/meta-tx/biconomy.ts
CHANGED
|
@@ -44,13 +44,46 @@ export type GetRetriedHashesArgs = {
|
|
|
44
44
|
transactionHash: string;
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
+
export type ForwarderDomainData = {
|
|
48
|
+
name: string;
|
|
49
|
+
version: string;
|
|
50
|
+
verifyingContract: string;
|
|
51
|
+
salt: string;
|
|
52
|
+
};
|
|
53
|
+
|
|
47
54
|
export class Biconomy {
|
|
48
55
|
public constructor(
|
|
49
56
|
private _relayerUrl: string,
|
|
50
|
-
private _apiKey
|
|
51
|
-
private _apiId
|
|
57
|
+
private _apiKey?: string,
|
|
58
|
+
private _apiId?: string
|
|
52
59
|
) {}
|
|
53
60
|
|
|
61
|
+
public async getForwarderDomainDetails(
|
|
62
|
+
args: { chainId: number },
|
|
63
|
+
overrides: Partial<{
|
|
64
|
+
relayerUrl: string;
|
|
65
|
+
forwarderAddress: string;
|
|
66
|
+
}> = {}
|
|
67
|
+
): Promise<{ [key: string]: ForwarderDomainData }> {
|
|
68
|
+
const url = `${
|
|
69
|
+
overrides.relayerUrl || this._relayerUrl
|
|
70
|
+
}/api/v2/meta-tx/systemInfo?networkId=${args.chainId}`;
|
|
71
|
+
const response = await fetch(url, { method: "GET" });
|
|
72
|
+
|
|
73
|
+
if (!response.ok) {
|
|
74
|
+
let message;
|
|
75
|
+
try {
|
|
76
|
+
const jsonResponse = await response.json();
|
|
77
|
+
message = JSON.stringify(jsonResponse);
|
|
78
|
+
} catch {
|
|
79
|
+
message = response.statusText;
|
|
80
|
+
}
|
|
81
|
+
throw new ApiError(response.status, `Failed to relay tx: ${message}`);
|
|
82
|
+
}
|
|
83
|
+
const txResponse = await response.json();
|
|
84
|
+
return txResponse?.forwarderDomainDetails;
|
|
85
|
+
}
|
|
86
|
+
|
|
54
87
|
public async relayTransaction(
|
|
55
88
|
args: RelayTransactionArgs,
|
|
56
89
|
overrides: Partial<RelayOverrides> = {}
|
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,
|
|
@@ -345,7 +392,7 @@ export async function signMetaTxCreateSeller(
|
|
|
345
392
|
return signMetaTx({
|
|
346
393
|
...args,
|
|
347
394
|
functionName:
|
|
348
|
-
"createSeller((uint256,address,address,address,address,bool),(uint256,uint8),(string,uint256))",
|
|
395
|
+
"createSeller((uint256,address,address,address,address,bool,string),(uint256,uint8),(string,uint256))",
|
|
349
396
|
functionSignature: encodeCreateSeller(args.createSellerArgs)
|
|
350
397
|
});
|
|
351
398
|
}
|
|
@@ -358,7 +405,7 @@ export async function signMetaTxUpdateSeller(
|
|
|
358
405
|
return signMetaTx({
|
|
359
406
|
...args,
|
|
360
407
|
functionName:
|
|
361
|
-
"updateSeller((uint256,address,address,address,address,bool),(uint256,uint8))",
|
|
408
|
+
"updateSeller((uint256,address,address,address,address,bool,string),(uint256,uint8))",
|
|
362
409
|
functionSignature: encodeUpdateSeller(args.updateSellerArgs)
|
|
363
410
|
});
|
|
364
411
|
}
|
|
@@ -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
|
}
|