@bosonprotocol/core-sdk 1.47.0-alpha.3 → 1.47.0-alpha.5
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/meta-tx/handler.d.ts +192 -1
- package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/meta-tx/handler.js +182 -29
- package/dist/cjs/meta-tx/handler.js.map +1 -1
- package/dist/cjs/meta-tx/mixin.d.ts +187 -30
- package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
- package/dist/cjs/meta-tx/mixin.js +161 -163
- package/dist/cjs/meta-tx/mixin.js.map +1 -1
- package/dist/cjs/native-meta-tx/handler.d.ts +16 -3
- package/dist/cjs/native-meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/native-meta-tx/handler.js +16 -5
- package/dist/cjs/native-meta-tx/handler.js.map +1 -1
- package/dist/cjs/native-meta-tx/mixin.d.ts +11 -3
- package/dist/cjs/native-meta-tx/mixin.d.ts.map +1 -1
- package/dist/cjs/native-meta-tx/mixin.js +7 -9
- package/dist/cjs/native-meta-tx/mixin.js.map +1 -1
- package/dist/esm/meta-tx/handler.d.ts +192 -1
- package/dist/esm/meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/meta-tx/handler.js +244 -46
- package/dist/esm/meta-tx/handler.js.map +1 -1
- package/dist/esm/meta-tx/mixin.d.ts +187 -30
- package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
- package/dist/esm/meta-tx/mixin.js +389 -163
- package/dist/esm/meta-tx/mixin.js.map +1 -1
- package/dist/esm/native-meta-tx/handler.d.ts +16 -3
- package/dist/esm/native-meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/native-meta-tx/handler.js +26 -6
- package/dist/esm/native-meta-tx/handler.js.map +1 -1
- package/dist/esm/native-meta-tx/mixin.d.ts +11 -3
- package/dist/esm/native-meta-tx/mixin.d.ts.map +1 -1
- package/dist/esm/native-meta-tx/mixin.js +12 -8
- package/dist/esm/native-meta-tx/mixin.js.map +1 -1
- package/package.json +2 -2
- package/src/meta-tx/handler.ts +839 -91
- package/src/meta-tx/mixin.ts +858 -62
- package/src/native-meta-tx/handler.ts +68 -18
- package/src/native-meta-tx/mixin.ts +30 -4
|
@@ -7,7 +7,11 @@ import {
|
|
|
7
7
|
import { BigNumberish, BigNumber } from "@ethersproject/bignumber";
|
|
8
8
|
import { BytesLike } from "@ethersproject/bytes";
|
|
9
9
|
import { Biconomy } from "../meta-tx/biconomy";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
BaseMetaTxArgs,
|
|
12
|
+
SignedMetaTx,
|
|
13
|
+
UnsignedMetaTx
|
|
14
|
+
} from "../meta-tx/handler";
|
|
11
15
|
import { prepareDataSignatureParameters } from "../utils/signature";
|
|
12
16
|
import {
|
|
13
17
|
nativeMetaTransactionsIface,
|
|
@@ -52,16 +56,27 @@ export async function getNonce(args: {
|
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
|
|
59
|
+
type NativeMetaTxArgs = BaseMetaTxArgs & {
|
|
60
|
+
functionName: string;
|
|
61
|
+
functionSignature: string;
|
|
62
|
+
domain: {
|
|
63
|
+
name: string;
|
|
64
|
+
version: string;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// Overload: returnTypedDataToSign is true → returns UnsignedMetaTx
|
|
55
69
|
export async function signNativeMetaTx(
|
|
56
|
-
args:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
70
|
+
args: NativeMetaTxArgs & { returnTypedDataToSign: true }
|
|
71
|
+
): Promise<UnsignedMetaTx>;
|
|
72
|
+
// Overload: returnTypedDataToSign is false or undefined → returns SignedMetaTx
|
|
73
|
+
export async function signNativeMetaTx(
|
|
74
|
+
args: NativeMetaTxArgs & { returnTypedDataToSign?: false | undefined }
|
|
75
|
+
): Promise<SignedMetaTx>;
|
|
76
|
+
// Implementation
|
|
77
|
+
export async function signNativeMetaTx(
|
|
78
|
+
args: NativeMetaTxArgs & { returnTypedDataToSign?: boolean }
|
|
79
|
+
): Promise<SignedMetaTx | UnsignedMetaTx> {
|
|
65
80
|
const metaTransactionType = [
|
|
66
81
|
{ name: "nonce", type: "uint256" },
|
|
67
82
|
{ name: "from", type: "address" },
|
|
@@ -75,18 +90,34 @@ export async function signNativeMetaTx(
|
|
|
75
90
|
const signerAddress = await args.web3Lib.getSignerAddress();
|
|
76
91
|
|
|
77
92
|
const message = {
|
|
78
|
-
nonce: args.nonce,
|
|
93
|
+
nonce: args.nonce.toString(),
|
|
79
94
|
from: signerAddress,
|
|
80
95
|
functionSignature: args.functionSignature
|
|
81
96
|
};
|
|
82
97
|
|
|
83
|
-
const
|
|
98
|
+
const baseParams = {
|
|
84
99
|
...args,
|
|
85
100
|
verifyingContractAddress: args.metaTxHandlerAddress,
|
|
86
101
|
customSignatureType,
|
|
87
102
|
customDomainData: args.domain,
|
|
88
103
|
primaryType: "MetaTransaction",
|
|
89
|
-
message
|
|
104
|
+
message
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
if (args.returnTypedDataToSign) {
|
|
108
|
+
const structuredData = await prepareDataSignatureParameters({
|
|
109
|
+
...baseParams,
|
|
110
|
+
returnTypedDataToSign: true
|
|
111
|
+
});
|
|
112
|
+
return {
|
|
113
|
+
...structuredData,
|
|
114
|
+
functionName: args.functionName,
|
|
115
|
+
functionSignature: args.functionSignature
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const signature = await prepareDataSignatureParameters({
|
|
120
|
+
...baseParams,
|
|
90
121
|
returnTypedDataToSign: false
|
|
91
122
|
});
|
|
92
123
|
|
|
@@ -97,14 +128,29 @@ export async function signNativeMetaTx(
|
|
|
97
128
|
};
|
|
98
129
|
}
|
|
99
130
|
|
|
100
|
-
|
|
131
|
+
type ApproveExchangeTokenBaseArgs = {
|
|
101
132
|
web3Lib: Web3LibAdapter;
|
|
102
133
|
chainId: number;
|
|
103
134
|
user: string;
|
|
104
135
|
exchangeToken: string;
|
|
105
136
|
spender: string;
|
|
106
137
|
value: BigNumberish;
|
|
107
|
-
}
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
// Overload: returnTypedDataToSign is true → returns UnsignedMetaTx
|
|
141
|
+
export async function signNativeMetaTxApproveExchangeToken(
|
|
142
|
+
args: ApproveExchangeTokenBaseArgs & { returnTypedDataToSign: true }
|
|
143
|
+
): Promise<UnsignedMetaTx>;
|
|
144
|
+
// Overload: returnTypedDataToSign is false or undefined → returns SignedMetaTx
|
|
145
|
+
export async function signNativeMetaTxApproveExchangeToken(
|
|
146
|
+
args: ApproveExchangeTokenBaseArgs & {
|
|
147
|
+
returnTypedDataToSign?: false | undefined;
|
|
148
|
+
}
|
|
149
|
+
): Promise<SignedMetaTx>;
|
|
150
|
+
// Implementation
|
|
151
|
+
export async function signNativeMetaTxApproveExchangeToken(
|
|
152
|
+
args: ApproveExchangeTokenBaseArgs & { returnTypedDataToSign?: boolean }
|
|
153
|
+
): Promise<SignedMetaTx | UnsignedMetaTx> {
|
|
108
154
|
const domain = {
|
|
109
155
|
name: await getERC20Name({
|
|
110
156
|
contractAddress: args.exchangeToken,
|
|
@@ -124,15 +170,19 @@ export async function signNativeMetaTxApproveExchangeToken(args: {
|
|
|
124
170
|
args.spender,
|
|
125
171
|
args.value
|
|
126
172
|
]);
|
|
127
|
-
|
|
173
|
+
const baseArgs = {
|
|
128
174
|
web3Lib: args.web3Lib,
|
|
129
175
|
metaTxHandlerAddress: args.exchangeToken,
|
|
130
176
|
chainId: args.chainId,
|
|
131
|
-
nonce
|
|
177
|
+
nonce,
|
|
132
178
|
functionName,
|
|
133
179
|
functionSignature,
|
|
134
180
|
domain
|
|
135
|
-
}
|
|
181
|
+
};
|
|
182
|
+
if (args.returnTypedDataToSign) {
|
|
183
|
+
return signNativeMetaTx({ ...baseArgs, returnTypedDataToSign: true });
|
|
184
|
+
}
|
|
185
|
+
return signNativeMetaTx({ ...baseArgs, returnTypedDataToSign: false });
|
|
136
186
|
}
|
|
137
187
|
|
|
138
188
|
export async function relayNativeMetaTransaction(args: {
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
import { BigNumberish } from "@ethersproject/bignumber";
|
|
7
7
|
import { BytesLike } from "@ethersproject/bytes";
|
|
8
8
|
import { handler } from ".";
|
|
9
|
+
import { SignedMetaTx, UnsignedMetaTx } from "../meta-tx/handler";
|
|
9
10
|
import { BaseCoreSDK } from "./../mixins/base-core-sdk";
|
|
10
11
|
|
|
11
12
|
export class NativeMetaTxMixin<
|
|
@@ -15,24 +16,49 @@ export class NativeMetaTxMixin<
|
|
|
15
16
|
* Encodes and signs a native "token.approve()" meta transaction that can be relayed.
|
|
16
17
|
* @param exchangeToken - The address of the token contract.
|
|
17
18
|
* @param value - The value to be approved.
|
|
18
|
-
* @param overrides - Optionally specify a spender address (default is the protocol contract address)
|
|
19
|
-
*
|
|
19
|
+
* @param overrides - Optionally specify a spender address (default is the protocol contract address)
|
|
20
|
+
* and/or set returnTypedDataToSign to control the return type.
|
|
21
|
+
* @returns Signature or structured typed data.
|
|
20
22
|
*/
|
|
23
|
+
// Overload: returnTypedDataToSign is true → returns UnsignedMetaTx
|
|
24
|
+
public async signNativeMetaTxApproveExchangeToken(
|
|
25
|
+
exchangeToken: string,
|
|
26
|
+
value: BigNumberish,
|
|
27
|
+
overrides: Partial<{ spender: string }> & { returnTypedDataToSign: true }
|
|
28
|
+
): Promise<UnsignedMetaTx>;
|
|
29
|
+
// Overload: returnTypedDataToSign is false or undefined → returns SignedMetaTx
|
|
30
|
+
public async signNativeMetaTxApproveExchangeToken(
|
|
31
|
+
exchangeToken: string,
|
|
32
|
+
value: BigNumberish,
|
|
33
|
+
overrides?: Partial<{ spender: string; returnTypedDataToSign?: false }>
|
|
34
|
+
): Promise<SignedMetaTx>;
|
|
35
|
+
// Implementation
|
|
21
36
|
public async signNativeMetaTxApproveExchangeToken(
|
|
22
37
|
exchangeToken: string,
|
|
23
38
|
value: BigNumberish,
|
|
24
39
|
overrides: Partial<{
|
|
25
40
|
spender: string;
|
|
41
|
+
returnTypedDataToSign: boolean;
|
|
26
42
|
}> = {}
|
|
27
|
-
) {
|
|
43
|
+
): Promise<SignedMetaTx | UnsignedMetaTx> {
|
|
28
44
|
const user = await this._web3Lib.getSignerAddress();
|
|
29
|
-
|
|
45
|
+
const baseArgs = {
|
|
30
46
|
web3Lib: this._web3Lib,
|
|
31
47
|
chainId: this._chainId,
|
|
32
48
|
user,
|
|
33
49
|
exchangeToken,
|
|
34
50
|
spender: overrides.spender || this._protocolDiamond,
|
|
35
51
|
value
|
|
52
|
+
};
|
|
53
|
+
if (overrides.returnTypedDataToSign) {
|
|
54
|
+
return handler.signNativeMetaTxApproveExchangeToken({
|
|
55
|
+
...baseArgs,
|
|
56
|
+
returnTypedDataToSign: true
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return handler.signNativeMetaTxApproveExchangeToken({
|
|
60
|
+
...baseArgs,
|
|
61
|
+
returnTypedDataToSign: false
|
|
36
62
|
});
|
|
37
63
|
}
|
|
38
64
|
|