@meshconnect/uwc-injected-connector 0.5.2 → 0.6.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/services/ethereum/ethereum-transaction-builder.d.ts +5 -6
- package/dist/services/ethereum/ethereum-transaction-builder.d.ts.map +1 -1
- package/dist/services/ethereum/ethereum-transaction-builder.js +9 -14
- package/dist/services/ethereum/ethereum-transaction-builder.js.map +1 -1
- package/dist/services/ethereum/ethereum-transaction-service.d.ts.map +1 -1
- package/dist/services/ethereum/ethereum-transaction-service.js +86 -38
- package/dist/services/ethereum/ethereum-transaction-service.js.map +1 -1
- package/dist/services/ethereum/ethereum-wallet-service.d.ts.map +1 -1
- package/dist/services/ethereum/ethereum-wallet-service.js.map +1 -1
- package/package.json +4 -4
- package/src/services/ethereum/ethereum-transaction-builder.test.ts +21 -5
- package/src/services/ethereum/ethereum-transaction-builder.ts +19 -32
- package/src/services/ethereum/ethereum-transaction-service.test.ts +2 -31
- package/src/services/ethereum/ethereum-transaction-service.ts +89 -33
- package/src/services/ethereum/ethereum-wallet-service.ts +1 -2
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import type { EVMNativeTransferRequest, EVMContractCallRequest, EVMDataTransferRequest } from '@meshconnect/uwc-types';
|
|
2
|
-
import type { TransactionRequest } from 'ethers';
|
|
1
|
+
import type { EVMNativeTransferRequest, EVMContractCallRequest, EVMTransactionParams, EVMDataTransferRequest } from '@meshconnect/uwc-types';
|
|
3
2
|
/**
|
|
4
3
|
* Service for handling Ethereum/EVM transaction operations
|
|
5
4
|
*/
|
|
6
5
|
export declare class EthereumTransactionBuilder {
|
|
7
|
-
getContractTransaction(request: EVMContractCallRequest): Promise<
|
|
8
|
-
getNativeTransaction(request: EVMNativeTransferRequest): Promise<
|
|
9
|
-
getDataTransaction(request: EVMDataTransferRequest): Promise<
|
|
6
|
+
getContractTransaction(request: EVMContractCallRequest): Promise<EVMTransactionParams>;
|
|
7
|
+
getNativeTransaction(request: EVMNativeTransferRequest): Promise<EVMTransactionParams>;
|
|
8
|
+
getDataTransaction(request: EVMDataTransferRequest): Promise<EVMTransactionParams>;
|
|
10
9
|
/**
|
|
11
|
-
* Helper to format gas configuration for
|
|
10
|
+
* Helper to format gas configuration for viem
|
|
12
11
|
*/
|
|
13
12
|
private formatGasConfig;
|
|
14
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethereum-transaction-builder.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"ethereum-transaction-builder.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,wBAAwB,CAAA;AAG/B;;GAEG;AACH,qBAAa,0BAA0B;IAC/B,sBAAsB,CAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,oBAAoB,CAAC;IAoB1B,oBAAoB,CACxB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,oBAAoB,CAAC;IAY1B,kBAAkB,CACtB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,oBAAoB,CAAC;IAehC;;OAEG;IACH,OAAO,CAAC,eAAe;CAiBxB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { encodeFunctionData } from 'viem';
|
|
2
2
|
import { parseError } from '../../utils/error-utils';
|
|
3
3
|
/**
|
|
4
4
|
* Service for handling Ethereum/EVM transaction operations
|
|
@@ -6,21 +6,17 @@ import { parseError } from '../../utils/error-utils';
|
|
|
6
6
|
export class EthereumTransactionBuilder {
|
|
7
7
|
async getContractTransaction(request) {
|
|
8
8
|
try {
|
|
9
|
-
//
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
txOptions.value = request.value;
|
|
16
|
-
}
|
|
17
|
-
const iface = new ethers.Interface(request.abi);
|
|
18
|
-
const data = iface.encodeFunctionData(request.functionName, request.args || []);
|
|
9
|
+
// Encode function data using viem
|
|
10
|
+
const data = encodeFunctionData({
|
|
11
|
+
abi: request.abi,
|
|
12
|
+
functionName: request.functionName,
|
|
13
|
+
args: request.args || []
|
|
14
|
+
});
|
|
19
15
|
const txRequest = {
|
|
20
16
|
to: request.contractAddress,
|
|
21
17
|
data,
|
|
22
18
|
value: request.value ?? 0n,
|
|
23
|
-
...
|
|
19
|
+
...this.formatGasConfig(request.gasConfig)
|
|
24
20
|
};
|
|
25
21
|
return txRequest;
|
|
26
22
|
}
|
|
@@ -46,7 +42,6 @@ export class EthereumTransactionBuilder {
|
|
|
46
42
|
to: request.to,
|
|
47
43
|
data: request.data,
|
|
48
44
|
value: request.value ?? 0n,
|
|
49
|
-
chainId: BigInt(request.chainId),
|
|
50
45
|
...this.formatGasConfig(request.gasConfig)
|
|
51
46
|
};
|
|
52
47
|
return txRequest;
|
|
@@ -56,7 +51,7 @@ export class EthereumTransactionBuilder {
|
|
|
56
51
|
}
|
|
57
52
|
}
|
|
58
53
|
/**
|
|
59
|
-
* Helper to format gas configuration for
|
|
54
|
+
* Helper to format gas configuration for viem
|
|
60
55
|
*/
|
|
61
56
|
formatGasConfig(gasConfig) {
|
|
62
57
|
const txOptions = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethereum-transaction-builder.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ethereum-transaction-builder.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAQzC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD;;GAEG;AACH,MAAM,OAAO,0BAA0B;IACrC,KAAK,CAAC,sBAAsB,CAC1B,OAA+B;QAE/B,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,IAAI,GAAG,kBAAkB,CAAC;gBAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;aACzB,CAAC,CAAA;YACF,MAAM,SAAS,GAAyB;gBACtC,EAAE,EAAE,OAAO,CAAC,eAAe;gBAC3B,IAAI;gBACJ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC1B,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;aAC3C,CAAA;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,OAAiC;QAEjC,IAAI,CAAC;YACH,OAAO;gBACL,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;aAC3C,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,OAA+B;QAE/B,IAAI,CAAC;YACH,MAAM,SAAS,GAAyB;gBACtC,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC1B,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;aAC3C,CAAA;YAED,OAAO,SAAS,CAAA;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,SAAwB;QAExB,MAAM,SAAS,GAAkC,EAAE,CAAA;QACnD,IAAI,SAAS,EAAE,QAAQ,EAAE,CAAC;YACxB,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,SAAS,EAAE,YAAY,EAAE,CAAC;YAC5B,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;QACrE,CAAC;QACD,IAAI,SAAS,EAAE,oBAAoB,EAAE,CAAC;YACpC,SAAS,CAAC,oBAAoB,GAAG,MAAM,CACrC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAC3C,CAAA;QACH,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethereum-transaction-service.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAKV,0BAA0B,EAE3B,MAAM,wBAAwB,CAAA;AAI/B;;GAEG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,OAAO,CAA4B;;IAM3C;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,0BAA0B,EACnC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC;IAmClB;;OAEG;YACW,qBAAqB;
|
|
1
|
+
{"version":3,"file":"ethereum-transaction-service.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAKV,0BAA0B,EAE3B,MAAM,wBAAwB,CAAA;AAI/B;;GAEG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,OAAO,CAA4B;;IAM3C;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,0BAA0B,EACnC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC;IAmClB;;OAEG;YACW,qBAAqB;IAiCnC;;OAEG;YACW,gBAAgB;IAkC9B;;OAEG;YACW,gBAAgB;IAkC9B;;OAEG;YACW,SAAS;CA0HxB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createWalletClient, custom } from 'viem';
|
|
2
2
|
import { parseError } from '../../utils/error-utils';
|
|
3
3
|
import { EthereumTransactionBuilder } from './ethereum-transaction-builder';
|
|
4
4
|
/**
|
|
@@ -46,14 +46,24 @@ export class EthereumTransactionService {
|
|
|
46
46
|
try {
|
|
47
47
|
// Build transaction
|
|
48
48
|
const tx = await this.builder.getNativeTransaction(request);
|
|
49
|
-
// Create
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
//
|
|
55
|
-
const
|
|
56
|
-
|
|
49
|
+
// Create viem wallet client
|
|
50
|
+
const client = createWalletClient({
|
|
51
|
+
account: request.from,
|
|
52
|
+
transport: custom(provider)
|
|
53
|
+
});
|
|
54
|
+
// Send transaction and wait for confirmation
|
|
55
|
+
const hash = await client.sendTransaction({
|
|
56
|
+
account: request.from,
|
|
57
|
+
chain: null,
|
|
58
|
+
to: tx.to,
|
|
59
|
+
value: tx.value,
|
|
60
|
+
...(tx.gasLimit && { gas: tx.gasLimit }),
|
|
61
|
+
...(tx.maxFeePerGas && { maxFeePerGas: tx.maxFeePerGas }),
|
|
62
|
+
...(tx.maxPriorityFeePerGas && {
|
|
63
|
+
maxPriorityFeePerGas: tx.maxPriorityFeePerGas
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
return hash;
|
|
57
67
|
}
|
|
58
68
|
catch (error) {
|
|
59
69
|
parseError(error);
|
|
@@ -66,14 +76,25 @@ export class EthereumTransactionService {
|
|
|
66
76
|
try {
|
|
67
77
|
// Build transaction
|
|
68
78
|
const tx = await this.builder.getContractTransaction(request);
|
|
69
|
-
// Create
|
|
70
|
-
const
|
|
71
|
-
|
|
79
|
+
// Create viem wallet client
|
|
80
|
+
const client = createWalletClient({
|
|
81
|
+
account: request.from,
|
|
82
|
+
transport: custom(provider)
|
|
83
|
+
});
|
|
72
84
|
// Send transaction
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
85
|
+
const hash = await client.sendTransaction({
|
|
86
|
+
account: request.from,
|
|
87
|
+
chain: null,
|
|
88
|
+
to: tx.to,
|
|
89
|
+
data: tx.data,
|
|
90
|
+
value: tx.value,
|
|
91
|
+
...(tx.gasLimit && { gas: tx.gasLimit }),
|
|
92
|
+
...(tx.maxFeePerGas && { maxFeePerGas: tx.maxFeePerGas }),
|
|
93
|
+
...(tx.maxPriorityFeePerGas && {
|
|
94
|
+
maxPriorityFeePerGas: tx.maxPriorityFeePerGas
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
return hash;
|
|
77
98
|
}
|
|
78
99
|
catch (error) {
|
|
79
100
|
parseError(error);
|
|
@@ -86,14 +107,25 @@ export class EthereumTransactionService {
|
|
|
86
107
|
try {
|
|
87
108
|
// Build transaction
|
|
88
109
|
const tx = await this.builder.getDataTransaction(request);
|
|
89
|
-
// Create
|
|
90
|
-
const
|
|
91
|
-
|
|
110
|
+
// Create viem wallet client
|
|
111
|
+
const client = createWalletClient({
|
|
112
|
+
account: request.from,
|
|
113
|
+
transport: custom(provider)
|
|
114
|
+
});
|
|
92
115
|
// Send transaction
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
116
|
+
const hash = await client.sendTransaction({
|
|
117
|
+
account: request.from,
|
|
118
|
+
chain: null,
|
|
119
|
+
to: tx.to,
|
|
120
|
+
data: tx.data,
|
|
121
|
+
value: tx.value,
|
|
122
|
+
...(tx.gasLimit && { gas: tx.gasLimit }),
|
|
123
|
+
...(tx.maxFeePerGas && { maxFeePerGas: tx.maxFeePerGas }),
|
|
124
|
+
...(tx.maxPriorityFeePerGas && {
|
|
125
|
+
maxPriorityFeePerGas: tx.maxPriorityFeePerGas
|
|
126
|
+
})
|
|
127
|
+
});
|
|
128
|
+
return hash;
|
|
97
129
|
}
|
|
98
130
|
catch (error) {
|
|
99
131
|
parseError(error);
|
|
@@ -123,30 +155,46 @@ export class EthereumTransactionService {
|
|
|
123
155
|
value: '0x' + (result.value ?? 0n).toString(16)
|
|
124
156
|
};
|
|
125
157
|
}
|
|
158
|
+
else if ('data' in tx && 'chainId' in tx) {
|
|
159
|
+
// Data transfer
|
|
160
|
+
const result = await this.builder.getDataTransaction(tx);
|
|
161
|
+
return {
|
|
162
|
+
to: result.to ?? '',
|
|
163
|
+
data: result.data,
|
|
164
|
+
value: '0x' + (result.value ?? 0n).toString(16)
|
|
165
|
+
};
|
|
166
|
+
}
|
|
126
167
|
else {
|
|
127
168
|
throw new Error('Invalid transaction request type');
|
|
128
169
|
}
|
|
129
170
|
}));
|
|
130
|
-
// Create
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
171
|
+
// Create viem wallet client
|
|
172
|
+
const client = createWalletClient({
|
|
173
|
+
account: request.from,
|
|
174
|
+
transport: custom(provider)
|
|
175
|
+
});
|
|
176
|
+
// Send batch transaction using EIP-5792
|
|
177
|
+
const response = await client.request({
|
|
178
|
+
method: 'wallet_sendCalls',
|
|
179
|
+
params: [
|
|
180
|
+
{
|
|
181
|
+
version: request.version,
|
|
182
|
+
from: request.from,
|
|
183
|
+
chainId: request.chainId,
|
|
184
|
+
atomicRequired: request.atomicRequired,
|
|
185
|
+
calls: calls
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
});
|
|
142
189
|
// Poll for completion with retry logic for specific errors
|
|
143
190
|
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
144
191
|
let result;
|
|
145
192
|
while (true) {
|
|
146
193
|
try {
|
|
147
|
-
result =
|
|
148
|
-
|
|
149
|
-
|
|
194
|
+
result = await client.request({
|
|
195
|
+
method: 'wallet_getCallsStatus',
|
|
196
|
+
params: [response.id]
|
|
197
|
+
});
|
|
150
198
|
// Wait 1 second if still pending
|
|
151
199
|
if (result?.status === 100) {
|
|
152
200
|
await sleep(1000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethereum-transaction-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ethereum-transaction-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethereum-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAEf,OAAO,EACP,cAAc,EACf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,IAAI,qBAAqB,EACxC,MAAM,yBAAyB,CAAA;AAIhC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,OAAO,CAAsB;IAErC;;OAEG;IACG,mBAAmB,CAAC,eAAe,CAAC,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;OAEG;IACH,kBAAkB,IAAI,qBAAqB,EAAE;IAI7C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAIjE;;OAEG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAY3B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB1D;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS;IAKzD;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,sBAAsB,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAClD,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ethereum-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAEf,OAAO,EACP,cAAc,EACf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,IAAI,qBAAqB,EACxC,MAAM,yBAAyB,CAAA;AAIhC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,OAAO,CAAsB;IAErC;;OAEG;IACG,mBAAmB,CAAC,eAAe,CAAC,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;OAEG;IACH,kBAAkB,IAAI,qBAAqB,EAAE;IAI7C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAIjE;;OAEG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAY3B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB1D;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS;IAKzD;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,sBAAsB,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAClD,OAAO,CAAC,IAAI,CAAC;IAsEhB;;OAEG;IACH,uBAAuB,CACrB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE;IAarB;;OAEG;IACH,kBAAkB,CAChB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,IAAI;IAKP;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,oBAAoB,IAAI,gBAAgB,GAAG,IAAI;IAI/C;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAsD5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethereum-wallet-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,mBAAmB,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE9D;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACxB,eAAe,GAA4B,EAAE,CAAA;IAC7C,iBAAiB,GAA4B,IAAI,CAAA;IACjD,OAAO,GAAkB,IAAI,CAAA;IAErC;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,eAAkC;QAC1D,IAAI,CAAC,eAAe,GAAG,MAAM,iBAAiB,CAAC,eAAe,CAAC,CAAA;IACjE,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAC3B,QAA0B;QAE1B,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;gBACtC,MAAM,EAAE,cAAc;aACvB,CAAC,CAAA;YACF,OAAO,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,QAA0B;QACtC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YACtC,MAAM,EAAE,qBAAqB;SAC9B,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,6CAA6C;QAC7C,MAAM,QAAQ,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,aAAa;SACtB,CAAC,CAAA;QAEF,OAAO,OAAO,CAAA;IAChB,CAAC;IACD;;OAEG;IACH,cAAc,CAAC,SAAoB;QACjC,OAAO,iBAAiB,CAAC,IAAI,CAC3B,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAC/C,CAAA;IACH,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,SAAiB,EACjB,sBAAmD;QAEnD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QAED,wDAAwD;QACxD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAA;QAC5D,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,UAAU,GAAG,KAAK,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;QAC5D,uCAAuC;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBACnC,MAAM,EAAE,4BAA4B;gBACpC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;aAClC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,WAAoB,EAAE,CAAC;YAC9B,4EAA4E;
|
|
1
|
+
{"version":3,"file":"ethereum-wallet-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshconnect/uwc-injected-connector",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "Injected connector for Universal Wallet Connector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"@wallet-standard/base": "^1.1.0",
|
|
26
26
|
"bs58": "^6.0.0",
|
|
27
27
|
"buffer": "^6.0.3",
|
|
28
|
-
"
|
|
28
|
+
"viem": "^2.39.2",
|
|
29
29
|
"uuid": "^11.1.0",
|
|
30
|
-
"@meshconnect/uwc-types": "0.
|
|
31
|
-
"@meshconnect/uwc-constants": "0.
|
|
30
|
+
"@meshconnect/uwc-types": "0.5.1",
|
|
31
|
+
"@meshconnect/uwc-constants": "0.3.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"typescript": "^5.9.2"
|
|
@@ -136,11 +136,27 @@ describe('EthereumTransactionBuilder', () => {
|
|
|
136
136
|
expect(result).toEqual({
|
|
137
137
|
to: request.to,
|
|
138
138
|
data: request.data,
|
|
139
|
-
|
|
139
|
+
value: request.value,
|
|
140
140
|
gasLimit: BigInt(100000),
|
|
141
141
|
maxFeePerGas: BigInt(50000000000),
|
|
142
|
-
maxPriorityFeePerGas: BigInt(2000000000)
|
|
143
|
-
|
|
142
|
+
maxPriorityFeePerGas: BigInt(2000000000)
|
|
143
|
+
})
|
|
144
|
+
})
|
|
145
|
+
|
|
146
|
+
it('should build a data transaction without value', async () => {
|
|
147
|
+
const request: EVMDataTransferRequest = {
|
|
148
|
+
from: '0x1234567890123456789012345678901234567890',
|
|
149
|
+
to: '0x0987654321098765432109876543210987654321',
|
|
150
|
+
data: '0xa9059cbb',
|
|
151
|
+
chainId: '137' // Polygon
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const result = await builder.getDataTransaction(request)
|
|
155
|
+
|
|
156
|
+
expect(result).toEqual({
|
|
157
|
+
to: request.to,
|
|
158
|
+
data: request.data,
|
|
159
|
+
value: 0n
|
|
144
160
|
})
|
|
145
161
|
})
|
|
146
162
|
|
|
@@ -174,7 +190,7 @@ describe('EthereumTransactionBuilder', () => {
|
|
|
174
190
|
|
|
175
191
|
expect(result.data).toBe('0x')
|
|
176
192
|
expect(result.to).toBe(request.to)
|
|
177
|
-
expect(result.
|
|
193
|
+
expect(result.value).toBe(0n)
|
|
178
194
|
})
|
|
179
195
|
|
|
180
196
|
it('should handle complex encoded data', async () => {
|
|
@@ -190,7 +206,7 @@ describe('EthereumTransactionBuilder', () => {
|
|
|
190
206
|
const result = await builder.getDataTransaction(request)
|
|
191
207
|
|
|
192
208
|
expect(result.data).toBe(complexData)
|
|
193
|
-
expect(result.
|
|
209
|
+
expect(result.value).toBe(0n)
|
|
194
210
|
})
|
|
195
211
|
})
|
|
196
212
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { encodeFunctionData } from 'viem'
|
|
2
2
|
import type {
|
|
3
3
|
EVMGasConfig,
|
|
4
4
|
EVMNativeTransferRequest,
|
|
5
5
|
EVMContractCallRequest,
|
|
6
|
+
EVMTransactionParams,
|
|
6
7
|
EVMDataTransferRequest
|
|
7
8
|
} from '@meshconnect/uwc-types'
|
|
8
9
|
import { parseError } from '../../utils/error-utils'
|
|
9
|
-
import type { TransactionRequest } from 'ethers'
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Service for handling Ethereum/EVM transaction operations
|
|
@@ -14,32 +14,20 @@ import type { TransactionRequest } from 'ethers'
|
|
|
14
14
|
export class EthereumTransactionBuilder {
|
|
15
15
|
async getContractTransaction(
|
|
16
16
|
request: EVMContractCallRequest
|
|
17
|
-
): Promise<
|
|
17
|
+
): Promise<EVMTransactionParams> {
|
|
18
18
|
try {
|
|
19
|
-
//
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
txOptions.value = request.value
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const iface = new ethers.Interface(request.abi)
|
|
30
|
-
|
|
31
|
-
const data = iface.encodeFunctionData(
|
|
32
|
-
request.functionName,
|
|
33
|
-
request.args || []
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
const txRequest: TransactionRequest = {
|
|
19
|
+
// Encode function data using viem
|
|
20
|
+
const data = encodeFunctionData({
|
|
21
|
+
abi: request.abi,
|
|
22
|
+
functionName: request.functionName,
|
|
23
|
+
args: request.args || []
|
|
24
|
+
})
|
|
25
|
+
const txRequest: EVMTransactionParams = {
|
|
37
26
|
to: request.contractAddress,
|
|
38
27
|
data,
|
|
39
28
|
value: request.value ?? 0n,
|
|
40
|
-
...
|
|
29
|
+
...this.formatGasConfig(request.gasConfig)
|
|
41
30
|
}
|
|
42
|
-
|
|
43
31
|
return txRequest
|
|
44
32
|
} catch (error) {
|
|
45
33
|
parseError(error)
|
|
@@ -48,7 +36,7 @@ export class EthereumTransactionBuilder {
|
|
|
48
36
|
|
|
49
37
|
async getNativeTransaction(
|
|
50
38
|
request: EVMNativeTransferRequest
|
|
51
|
-
): Promise<
|
|
39
|
+
): Promise<EVMTransactionParams> {
|
|
52
40
|
try {
|
|
53
41
|
return {
|
|
54
42
|
to: request.to,
|
|
@@ -62,13 +50,12 @@ export class EthereumTransactionBuilder {
|
|
|
62
50
|
|
|
63
51
|
async getDataTransaction(
|
|
64
52
|
request: EVMDataTransferRequest
|
|
65
|
-
): Promise<
|
|
53
|
+
): Promise<EVMTransactionParams> {
|
|
66
54
|
try {
|
|
67
|
-
const txRequest:
|
|
55
|
+
const txRequest: EVMTransactionParams = {
|
|
68
56
|
to: request.to,
|
|
69
57
|
data: request.data,
|
|
70
58
|
value: request.value ?? 0n,
|
|
71
|
-
chainId: BigInt(request.chainId),
|
|
72
59
|
...this.formatGasConfig(request.gasConfig)
|
|
73
60
|
}
|
|
74
61
|
|
|
@@ -79,11 +66,12 @@ export class EthereumTransactionBuilder {
|
|
|
79
66
|
}
|
|
80
67
|
|
|
81
68
|
/**
|
|
82
|
-
* Helper to format gas configuration for
|
|
69
|
+
* Helper to format gas configuration for viem
|
|
83
70
|
*/
|
|
84
|
-
private formatGasConfig(
|
|
85
|
-
|
|
86
|
-
|
|
71
|
+
private formatGasConfig(
|
|
72
|
+
gasConfig?: EVMGasConfig
|
|
73
|
+
): Partial<EVMTransactionParams> {
|
|
74
|
+
const txOptions: Partial<EVMTransactionParams> = {}
|
|
87
75
|
if (gasConfig?.gasLimit) {
|
|
88
76
|
txOptions.gasLimit = BigInt(Math.floor(gasConfig.gasLimit))
|
|
89
77
|
}
|
|
@@ -95,7 +83,6 @@ export class EthereumTransactionBuilder {
|
|
|
95
83
|
Math.floor(gasConfig.maxPriorityFeePerGas)
|
|
96
84
|
)
|
|
97
85
|
}
|
|
98
|
-
|
|
99
86
|
return txOptions
|
|
100
87
|
}
|
|
101
88
|
}
|
|
@@ -7,30 +7,6 @@ import type {
|
|
|
7
7
|
} from '@meshconnect/uwc-types'
|
|
8
8
|
import type { EthereumProvider } from '../../eip6963-discovery'
|
|
9
9
|
|
|
10
|
-
// Mock ethers
|
|
11
|
-
vi.mock('ethers', () => {
|
|
12
|
-
const mockReceipt = { hash: '0xtxhash' }
|
|
13
|
-
const mockResponse = {
|
|
14
|
-
wait: vi.fn().mockResolvedValue(mockReceipt)
|
|
15
|
-
}
|
|
16
|
-
const mockSigner = {
|
|
17
|
-
sendTransaction: vi.fn().mockResolvedValue(mockResponse)
|
|
18
|
-
}
|
|
19
|
-
const mockProvider = {
|
|
20
|
-
getSigner: vi.fn().mockResolvedValue(mockSigner),
|
|
21
|
-
send: vi.fn()
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return {
|
|
25
|
-
ethers: {
|
|
26
|
-
BrowserProvider: vi.fn().mockImplementation(() => mockProvider),
|
|
27
|
-
Interface: vi.fn().mockImplementation(() => ({
|
|
28
|
-
encodeFunctionData: vi.fn().mockReturnValue('0xencodeddata')
|
|
29
|
-
}))
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
})
|
|
33
|
-
|
|
34
10
|
describe('EthereumTransactionService', () => {
|
|
35
11
|
let service: EthereumTransactionService
|
|
36
12
|
let mockProvider: EthereumProvider
|
|
@@ -39,7 +15,7 @@ describe('EthereumTransactionService', () => {
|
|
|
39
15
|
vi.clearAllMocks()
|
|
40
16
|
service = new EthereumTransactionService()
|
|
41
17
|
mockProvider = {
|
|
42
|
-
request: vi.fn()
|
|
18
|
+
request: vi.fn().mockResolvedValue('0xtxhash')
|
|
43
19
|
} as any
|
|
44
20
|
})
|
|
45
21
|
|
|
@@ -280,13 +256,8 @@ describe('EthereumTransactionService', () => {
|
|
|
280
256
|
|
|
281
257
|
describe('error handling', () => {
|
|
282
258
|
it('should handle transaction errors', async () => {
|
|
283
|
-
const { ethers } = await import('ethers')
|
|
284
259
|
const mockError = new Error('Transaction failed')
|
|
285
|
-
vi.
|
|
286
|
-
(_provider: any) => {
|
|
287
|
-
throw mockError
|
|
288
|
-
}
|
|
289
|
-
)
|
|
260
|
+
mockProvider.request = vi.fn().mockRejectedValue(mockError)
|
|
290
261
|
|
|
291
262
|
const request: EVMDataTransferRequest = {
|
|
292
263
|
from: '0x1234567890123456789012345678901234567890',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createWalletClient, custom } from 'viem'
|
|
2
2
|
import type { EthereumProvider } from '../../eip6963-discovery'
|
|
3
3
|
import type {
|
|
4
4
|
EVMNativeTransferRequest,
|
|
@@ -73,16 +73,26 @@ export class EthereumTransactionService {
|
|
|
73
73
|
// Build transaction
|
|
74
74
|
const tx = await this.builder.getNativeTransaction(request)
|
|
75
75
|
|
|
76
|
-
// Create
|
|
77
|
-
const
|
|
78
|
-
|
|
76
|
+
// Create viem wallet client
|
|
77
|
+
const client = createWalletClient({
|
|
78
|
+
account: request.from as `0x${string}`,
|
|
79
|
+
transport: custom(provider)
|
|
80
|
+
})
|
|
79
81
|
|
|
80
|
-
// Send transaction
|
|
81
|
-
const
|
|
82
|
+
// Send transaction and wait for confirmation
|
|
83
|
+
const hash = await client.sendTransaction({
|
|
84
|
+
account: request.from as `0x${string}`,
|
|
85
|
+
chain: null,
|
|
86
|
+
to: tx.to as `0x${string}`,
|
|
87
|
+
value: tx.value,
|
|
88
|
+
...(tx.gasLimit && { gas: tx.gasLimit }),
|
|
89
|
+
...(tx.maxFeePerGas && { maxFeePerGas: tx.maxFeePerGas }),
|
|
90
|
+
...(tx.maxPriorityFeePerGas && {
|
|
91
|
+
maxPriorityFeePerGas: tx.maxPriorityFeePerGas
|
|
92
|
+
})
|
|
93
|
+
})
|
|
82
94
|
|
|
83
|
-
|
|
84
|
-
const receipt = await response.wait()
|
|
85
|
-
return receipt ? receipt.hash : ''
|
|
95
|
+
return hash
|
|
86
96
|
} catch (error) {
|
|
87
97
|
parseError(error)
|
|
88
98
|
}
|
|
@@ -99,16 +109,27 @@ export class EthereumTransactionService {
|
|
|
99
109
|
// Build transaction
|
|
100
110
|
const tx = await this.builder.getContractTransaction(request)
|
|
101
111
|
|
|
102
|
-
// Create
|
|
103
|
-
const
|
|
104
|
-
|
|
112
|
+
// Create viem wallet client
|
|
113
|
+
const client = createWalletClient({
|
|
114
|
+
account: request.from as `0x${string}`,
|
|
115
|
+
transport: custom(provider)
|
|
116
|
+
})
|
|
105
117
|
|
|
106
118
|
// Send transaction
|
|
107
|
-
const
|
|
119
|
+
const hash = await client.sendTransaction({
|
|
120
|
+
account: request.from as `0x${string}`,
|
|
121
|
+
chain: null,
|
|
122
|
+
to: tx.to as `0x${string}`,
|
|
123
|
+
data: tx.data as `0x${string}`,
|
|
124
|
+
value: tx.value,
|
|
125
|
+
...(tx.gasLimit && { gas: tx.gasLimit }),
|
|
126
|
+
...(tx.maxFeePerGas && { maxFeePerGas: tx.maxFeePerGas }),
|
|
127
|
+
...(tx.maxPriorityFeePerGas && {
|
|
128
|
+
maxPriorityFeePerGas: tx.maxPriorityFeePerGas
|
|
129
|
+
})
|
|
130
|
+
})
|
|
108
131
|
|
|
109
|
-
|
|
110
|
-
const receipt = await response.wait()
|
|
111
|
-
return receipt ? receipt.hash : ''
|
|
132
|
+
return hash
|
|
112
133
|
} catch (error) {
|
|
113
134
|
parseError(error)
|
|
114
135
|
}
|
|
@@ -125,16 +146,27 @@ export class EthereumTransactionService {
|
|
|
125
146
|
// Build transaction
|
|
126
147
|
const tx = await this.builder.getDataTransaction(request)
|
|
127
148
|
|
|
128
|
-
// Create
|
|
129
|
-
const
|
|
130
|
-
|
|
149
|
+
// Create viem wallet client
|
|
150
|
+
const client = createWalletClient({
|
|
151
|
+
account: request.from as `0x${string}`,
|
|
152
|
+
transport: custom(provider)
|
|
153
|
+
})
|
|
131
154
|
|
|
132
155
|
// Send transaction
|
|
133
|
-
const
|
|
156
|
+
const hash = await client.sendTransaction({
|
|
157
|
+
account: request.from as `0x${string}`,
|
|
158
|
+
chain: null,
|
|
159
|
+
to: tx.to as `0x${string}`,
|
|
160
|
+
data: tx.data as `0x${string}`,
|
|
161
|
+
value: tx.value,
|
|
162
|
+
...(tx.gasLimit && { gas: tx.gasLimit }),
|
|
163
|
+
...(tx.maxFeePerGas && { maxFeePerGas: tx.maxFeePerGas }),
|
|
164
|
+
...(tx.maxPriorityFeePerGas && {
|
|
165
|
+
maxPriorityFeePerGas: tx.maxPriorityFeePerGas
|
|
166
|
+
})
|
|
167
|
+
})
|
|
134
168
|
|
|
135
|
-
|
|
136
|
-
const receipt = await response.wait()
|
|
137
|
-
return receipt ? receipt.hash : ''
|
|
169
|
+
return hash
|
|
138
170
|
} catch (error) {
|
|
139
171
|
parseError(error)
|
|
140
172
|
}
|
|
@@ -170,19 +202,37 @@ export class EthereumTransactionService {
|
|
|
170
202
|
to: result.to ?? '',
|
|
171
203
|
value: '0x' + (result.value ?? 0n).toString(16)
|
|
172
204
|
}
|
|
205
|
+
} else if ('data' in tx && 'chainId' in tx) {
|
|
206
|
+
// Data transfer
|
|
207
|
+
const result = await this.builder.getDataTransaction(
|
|
208
|
+
tx as EVMDataTransferRequest
|
|
209
|
+
)
|
|
210
|
+
return {
|
|
211
|
+
to: result.to ?? '',
|
|
212
|
+
data: result.data,
|
|
213
|
+
value: '0x' + (result.value ?? 0n).toString(16)
|
|
214
|
+
}
|
|
173
215
|
} else {
|
|
174
216
|
throw new Error('Invalid transaction request type')
|
|
175
217
|
}
|
|
176
218
|
})
|
|
177
219
|
)
|
|
178
220
|
|
|
179
|
-
// Create
|
|
180
|
-
const
|
|
221
|
+
// Create viem wallet client
|
|
222
|
+
const client = createWalletClient({
|
|
223
|
+
account: request.from as `0x${string}`,
|
|
224
|
+
transport: custom(provider)
|
|
225
|
+
})
|
|
181
226
|
|
|
182
|
-
// Send batch transaction
|
|
183
|
-
const response: { id: string } = await
|
|
184
|
-
|
|
185
|
-
|
|
227
|
+
// Send batch transaction using EIP-5792
|
|
228
|
+
const response: { id: string } = await (
|
|
229
|
+
client.request as (args: {
|
|
230
|
+
method: string
|
|
231
|
+
params: unknown[]
|
|
232
|
+
}) => Promise<{ id: string }>
|
|
233
|
+
)({
|
|
234
|
+
method: 'wallet_sendCalls',
|
|
235
|
+
params: [
|
|
186
236
|
{
|
|
187
237
|
version: request.version,
|
|
188
238
|
from: request.from,
|
|
@@ -191,7 +241,7 @@ export class EthereumTransactionService {
|
|
|
191
241
|
calls: calls
|
|
192
242
|
}
|
|
193
243
|
]
|
|
194
|
-
)
|
|
244
|
+
})
|
|
195
245
|
|
|
196
246
|
// Poll for completion with retry logic for specific errors
|
|
197
247
|
const sleep = (ms: number) =>
|
|
@@ -200,9 +250,15 @@ export class EthereumTransactionService {
|
|
|
200
250
|
|
|
201
251
|
while (true) {
|
|
202
252
|
try {
|
|
203
|
-
result =
|
|
204
|
-
|
|
205
|
-
|
|
253
|
+
result = await (
|
|
254
|
+
client.request as (args: {
|
|
255
|
+
method: string
|
|
256
|
+
params: unknown[]
|
|
257
|
+
}) => Promise<BatchTransactionResult>
|
|
258
|
+
)({
|
|
259
|
+
method: 'wallet_getCallsStatus',
|
|
260
|
+
params: [response.id]
|
|
261
|
+
})
|
|
206
262
|
|
|
207
263
|
// Wait 1 second if still pending
|
|
208
264
|
if (result?.status === 100) {
|
|
@@ -116,9 +116,8 @@ export class EthereumWalletService {
|
|
|
116
116
|
})
|
|
117
117
|
} catch (switchError: unknown) {
|
|
118
118
|
// This error code indicates that the chain has not been added to the wallet
|
|
119
|
-
|
|
120
119
|
if (
|
|
121
|
-
(switchError as
|
|
120
|
+
(switchError as { code?: number }).code === 4902 &&
|
|
122
121
|
(supportsAddingNetworks ?? true)
|
|
123
122
|
) {
|
|
124
123
|
// Try to add the chain to the wallet
|