@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.
Files changed (37) hide show
  1. package/dist/cjs/meta-tx/handler.d.ts +192 -1
  2. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  3. package/dist/cjs/meta-tx/handler.js +182 -29
  4. package/dist/cjs/meta-tx/handler.js.map +1 -1
  5. package/dist/cjs/meta-tx/mixin.d.ts +187 -30
  6. package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
  7. package/dist/cjs/meta-tx/mixin.js +161 -163
  8. package/dist/cjs/meta-tx/mixin.js.map +1 -1
  9. package/dist/cjs/native-meta-tx/handler.d.ts +16 -3
  10. package/dist/cjs/native-meta-tx/handler.d.ts.map +1 -1
  11. package/dist/cjs/native-meta-tx/handler.js +16 -5
  12. package/dist/cjs/native-meta-tx/handler.js.map +1 -1
  13. package/dist/cjs/native-meta-tx/mixin.d.ts +11 -3
  14. package/dist/cjs/native-meta-tx/mixin.d.ts.map +1 -1
  15. package/dist/cjs/native-meta-tx/mixin.js +7 -9
  16. package/dist/cjs/native-meta-tx/mixin.js.map +1 -1
  17. package/dist/esm/meta-tx/handler.d.ts +192 -1
  18. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  19. package/dist/esm/meta-tx/handler.js +244 -46
  20. package/dist/esm/meta-tx/handler.js.map +1 -1
  21. package/dist/esm/meta-tx/mixin.d.ts +187 -30
  22. package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
  23. package/dist/esm/meta-tx/mixin.js +389 -163
  24. package/dist/esm/meta-tx/mixin.js.map +1 -1
  25. package/dist/esm/native-meta-tx/handler.d.ts +16 -3
  26. package/dist/esm/native-meta-tx/handler.d.ts.map +1 -1
  27. package/dist/esm/native-meta-tx/handler.js +26 -6
  28. package/dist/esm/native-meta-tx/handler.js.map +1 -1
  29. package/dist/esm/native-meta-tx/mixin.d.ts +11 -3
  30. package/dist/esm/native-meta-tx/mixin.d.ts.map +1 -1
  31. package/dist/esm/native-meta-tx/mixin.js +12 -8
  32. package/dist/esm/native-meta-tx/mixin.js.map +1 -1
  33. package/package.json +2 -2
  34. package/src/meta-tx/handler.ts +839 -91
  35. package/src/meta-tx/mixin.ts +858 -62
  36. package/src/native-meta-tx/handler.ts +68 -18
  37. 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 { BaseMetaTxArgs, SignedMetaTx } from "../meta-tx/handler";
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: BaseMetaTxArgs & {
57
- functionName: string;
58
- functionSignature: string;
59
- domain: {
60
- name: string;
61
- version: string;
62
- };
63
- }
64
- ): Promise<SignedMetaTx> {
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 signature = await prepareDataSignatureParameters({
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
- export async function signNativeMetaTxApproveExchangeToken(args: {
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
- return signNativeMetaTx({
173
+ const baseArgs = {
128
174
  web3Lib: args.web3Lib,
129
175
  metaTxHandlerAddress: args.exchangeToken,
130
176
  chainId: args.chainId,
131
- nonce: 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
- * @returns Signature.
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
- return handler.signNativeMetaTxApproveExchangeToken({
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