@reown/appkit-common-react-native 0.0.0-feat-multi-social-20250701185040 → 0.0.0-feat-multi-social-20250708154835
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/lib/commonjs/adapters/EvmAdapter.js +173 -0
- package/lib/commonjs/adapters/EvmAdapter.js.map +1 -1
- package/lib/commonjs/utils/ConstantsUtil.js +1 -1
- package/lib/commonjs/utils/TypeUtil.js +6 -0
- package/lib/commonjs/utils/TypeUtil.js.map +1 -1
- package/lib/module/adapters/EvmAdapter.js +174 -0
- package/lib/module/adapters/EvmAdapter.js.map +1 -1
- package/lib/module/utils/ConstantsUtil.js +1 -1
- package/lib/module/utils/TypeUtil.js +6 -0
- package/lib/module/utils/TypeUtil.js.map +1 -1
- package/lib/typescript/adapters/EvmAdapter.d.ts +47 -0
- package/lib/typescript/adapters/EvmAdapter.d.ts.map +1 -1
- package/lib/typescript/adapters/__tests__/EvmAdapter.test.d.ts +2 -0
- package/lib/typescript/adapters/__tests__/EvmAdapter.test.d.ts.map +1 -0
- package/lib/typescript/utils/TypeUtil.d.ts +16 -22
- package/lib/typescript/utils/TypeUtil.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/adapters/EvmAdapter.ts +201 -0
- package/src/adapters/__tests__/EvmAdapter.test.ts +104 -0
- package/src/utils/ConstantsUtil.ts +1 -1
- package/src/utils/TypeUtil.ts +25 -26
|
@@ -6,6 +6,44 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.EVMAdapter = void 0;
|
|
7
7
|
var _BlockchainAdapter = require("./BlockchainAdapter");
|
|
8
8
|
var _NumberUtil = require("../utils/NumberUtil");
|
|
9
|
+
// Type definitions for writeContract
|
|
10
|
+
|
|
11
|
+
// Simple ABI encoder for ERC20 functions
|
|
12
|
+
function encodeERC20Function(method, params) {
|
|
13
|
+
const functionSelectors = {
|
|
14
|
+
transfer: '0xa9059cbb',
|
|
15
|
+
// transfer(address,uint256)
|
|
16
|
+
transferFrom: '0x23b872dd',
|
|
17
|
+
// transferFrom(address,address,uint256)
|
|
18
|
+
approve: '0x095ea7b3' // approve(address,uint256)
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const selector = functionSelectors[method];
|
|
22
|
+
if (!selector) {
|
|
23
|
+
throw new Error(`EVMAdapter:encodeERC20Function - unsupported method: ${method}`);
|
|
24
|
+
}
|
|
25
|
+
let encodedParams = '';
|
|
26
|
+
switch (method) {
|
|
27
|
+
case 'transfer':
|
|
28
|
+
if (params.length !== 2) throw new Error('transfer requires 2 parameters: to, amount');
|
|
29
|
+
const [to, amount] = params;
|
|
30
|
+
encodedParams = to.toLowerCase().slice(2).padStart(64, '0') + amount.toString(16).padStart(64, '0');
|
|
31
|
+
break;
|
|
32
|
+
case 'transferFrom':
|
|
33
|
+
if (params.length !== 3) throw new Error('transferFrom requires 3 parameters: from, to, amount');
|
|
34
|
+
const [from, toTransferFrom, amountTransferFrom] = params;
|
|
35
|
+
encodedParams = from.toLowerCase().slice(2).padStart(64, '0') + toTransferFrom.toLowerCase().slice(2).padStart(64, '0') + amountTransferFrom.toString(16).padStart(64, '0');
|
|
36
|
+
break;
|
|
37
|
+
case 'approve':
|
|
38
|
+
if (params.length !== 2) throw new Error('approve requires 2 parameters: spender, amount');
|
|
39
|
+
const [spender, amountApprove] = params;
|
|
40
|
+
encodedParams = spender.toLowerCase().slice(2).padStart(64, '0') + amountApprove.toString(16).padStart(64, '0');
|
|
41
|
+
break;
|
|
42
|
+
default:
|
|
43
|
+
throw new Error(`EVMAdapter:encodeERC20Function - unsupported method: ${method}`);
|
|
44
|
+
}
|
|
45
|
+
return selector + encodedParams;
|
|
46
|
+
}
|
|
9
47
|
class EVMAdapter extends _BlockchainAdapter.BlockchainAdapter {
|
|
10
48
|
async signMessage(address, message, chain) {
|
|
11
49
|
const provider = this.getProvider();
|
|
@@ -89,6 +127,141 @@ class EVMAdapter extends _BlockchainAdapter.BlockchainAdapter {
|
|
|
89
127
|
|
|
90
128
|
return receipt?.blockHash || null;
|
|
91
129
|
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Executes a write operation on an ERC20 smart contract.
|
|
133
|
+
* This function is library-agnostic and uses only the provider for blockchain interactions.
|
|
134
|
+
*
|
|
135
|
+
* @param data - The contract interaction data
|
|
136
|
+
* @param data.tokenAddress - The ERC20 token contract address
|
|
137
|
+
* @param data.receiverAddress - The recipient address (required for transfer method)
|
|
138
|
+
* @param data.tokenAmount - The amount of tokens to transfer/approve
|
|
139
|
+
* @param data.fromAddress - The sender's address
|
|
140
|
+
* @param data.method - The ERC20 method to call: 'transfer', 'transferFrom', or 'approve'
|
|
141
|
+
* @param data.spenderAddress - The spender address (required for transferFrom and approve methods)
|
|
142
|
+
* @param data.abi - Optional ABI for future extensibility
|
|
143
|
+
*
|
|
144
|
+
* @returns Promise resolving to the transaction block hash or null if failed
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* // Transfer tokens
|
|
149
|
+
* const result = await adapter.writeContract({
|
|
150
|
+
* tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
151
|
+
* receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
152
|
+
* tokenAmount: BigInt(1000000000000000000), // 1 token with 18 decimals
|
|
153
|
+
* fromAddress: '0x1234567890123456789012345678901234567890',
|
|
154
|
+
* method: 'transfer'
|
|
155
|
+
* });
|
|
156
|
+
*
|
|
157
|
+
* // Approve tokens
|
|
158
|
+
* const result = await adapter.writeContract({
|
|
159
|
+
* tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
160
|
+
* receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
161
|
+
* tokenAmount: BigInt(1000000000000000000),
|
|
162
|
+
* fromAddress: '0x1234567890123456789012345678901234567890',
|
|
163
|
+
* method: 'approve',
|
|
164
|
+
* spenderAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd'
|
|
165
|
+
* });
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
async writeContract(data) {
|
|
169
|
+
const {
|
|
170
|
+
tokenAddress,
|
|
171
|
+
receiverAddress,
|
|
172
|
+
tokenAmount,
|
|
173
|
+
method,
|
|
174
|
+
fromAddress,
|
|
175
|
+
spenderAddress
|
|
176
|
+
} = data;
|
|
177
|
+
if (!this.getProvider()) {
|
|
178
|
+
throw new Error('EVMAdapter:writeContract - provider is undefined');
|
|
179
|
+
}
|
|
180
|
+
if (!fromAddress) {
|
|
181
|
+
throw new Error('EVMAdapter:writeContract - fromAddress is undefined');
|
|
182
|
+
}
|
|
183
|
+
if (!tokenAddress) {
|
|
184
|
+
throw new Error('EVMAdapter:writeContract - tokenAddress is undefined');
|
|
185
|
+
}
|
|
186
|
+
if (!tokenAmount) {
|
|
187
|
+
throw new Error('EVMAdapter:writeContract - tokenAmount is undefined');
|
|
188
|
+
}
|
|
189
|
+
if (!method) {
|
|
190
|
+
throw new Error('EVMAdapter:writeContract - method is undefined');
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Validate method-specific parameters
|
|
194
|
+
if (method === 'transfer' && !receiverAddress) {
|
|
195
|
+
throw new Error('EVMAdapter:writeContract - receiverAddress is required for transfer method');
|
|
196
|
+
}
|
|
197
|
+
if ((method === 'transferFrom' || method === 'approve') && !spenderAddress) {
|
|
198
|
+
throw new Error(`EVMAdapter:writeContract - spenderAddress is required for ${method} method`);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Encode the function call data based on method
|
|
202
|
+
let encodedData;
|
|
203
|
+
switch (method) {
|
|
204
|
+
case 'transfer':
|
|
205
|
+
encodedData = encodeERC20Function('transfer', [receiverAddress, tokenAmount]);
|
|
206
|
+
break;
|
|
207
|
+
case 'transferFrom':
|
|
208
|
+
encodedData = encodeERC20Function('transferFrom', [fromAddress, receiverAddress, tokenAmount]);
|
|
209
|
+
break;
|
|
210
|
+
case 'approve':
|
|
211
|
+
encodedData = encodeERC20Function('approve', [spenderAddress, tokenAmount]);
|
|
212
|
+
break;
|
|
213
|
+
default:
|
|
214
|
+
throw new Error(`EVMAdapter:writeContract - method '${method}' is not supported`);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Create transaction parameters
|
|
218
|
+
const txParams = {
|
|
219
|
+
from: fromAddress,
|
|
220
|
+
to: tokenAddress,
|
|
221
|
+
data: encodedData,
|
|
222
|
+
value: '0x0',
|
|
223
|
+
// No ETH value for token operations
|
|
224
|
+
type: '0x0' // legacy transaction type
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
try {
|
|
228
|
+
// Send the transaction
|
|
229
|
+
const txHash = await this.getProvider().request({
|
|
230
|
+
method: 'eth_sendTransaction',
|
|
231
|
+
params: [txParams]
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
// Wait for transaction receipt
|
|
235
|
+
let receipt = null;
|
|
236
|
+
let attempts = 0;
|
|
237
|
+
const maxAttempts = 60; // 60 seconds timeout
|
|
238
|
+
|
|
239
|
+
while (!receipt && attempts < maxAttempts) {
|
|
240
|
+
receipt = await this.getProvider().request({
|
|
241
|
+
method: 'eth_getTransactionReceipt',
|
|
242
|
+
params: [txHash]
|
|
243
|
+
});
|
|
244
|
+
if (!receipt) {
|
|
245
|
+
await new Promise(r => setTimeout(r, 1000)); // wait 1s
|
|
246
|
+
attempts++;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (!receipt) {
|
|
250
|
+
throw new Error('EVMAdapter:writeContract - transaction timeout');
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Check if transaction was successful
|
|
254
|
+
if (receipt.status === '0x0') {
|
|
255
|
+
throw new Error('EVMAdapter:writeContract - transaction failed');
|
|
256
|
+
}
|
|
257
|
+
return receipt?.blockHash || null;
|
|
258
|
+
} catch (error) {
|
|
259
|
+
if (error instanceof Error) {
|
|
260
|
+
throw new Error(`EVMAdapter:writeContract - ${error.message}`);
|
|
261
|
+
}
|
|
262
|
+
throw new Error('EVMAdapter:writeContract - unknown error occurred');
|
|
263
|
+
}
|
|
264
|
+
}
|
|
92
265
|
}
|
|
93
266
|
exports.EVMAdapter = EVMAdapter;
|
|
94
267
|
//# sourceMappingURL=EvmAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_BlockchainAdapter","require","_NumberUtil","
|
|
1
|
+
{"version":3,"names":["_BlockchainAdapter","require","_NumberUtil","encodeERC20Function","method","params","functionSelectors","transfer","transferFrom","approve","selector","Error","encodedParams","length","to","amount","toLowerCase","slice","padStart","toString","from","toTransferFrom","amountTransferFrom","spender","amountApprove","EVMAdapter","BlockchainAdapter","signMessage","address","message","chain","provider","getProvider","signature","request","estimateGas","data","chainNamespace","txParams","type","estimatedGasHex","BigInt","error","sendTransaction","value","NumberUtil","convertNumericToHexString","gas","gasPrice","txHash","receipt","Promise","r","setTimeout","blockHash","writeContract","tokenAddress","receiverAddress","tokenAmount","fromAddress","spenderAddress","encodedData","attempts","maxAttempts","status","exports"],"sourceRoot":"../../../src","sources":["adapters/EvmAdapter.ts"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.ConstantsUtil = void 0;
|
|
7
7
|
const ConstantsUtil = exports.ConstantsUtil = {
|
|
8
|
-
VERSION: '0.0.0-feat-multi-social-
|
|
8
|
+
VERSION: '0.0.0-feat-multi-social-20250708154835',
|
|
9
9
|
EIP155: 'eip155',
|
|
10
10
|
ADD_CHAIN_METHOD: 'wallet_addEthereumChain',
|
|
11
11
|
WC_NAME_SUFFIX: '.reown.id',
|
|
@@ -25,6 +25,12 @@ class WalletConnector extends _events.EventEmitter {
|
|
|
25
25
|
setProvider(provider) {
|
|
26
26
|
this.provider = provider;
|
|
27
27
|
}
|
|
28
|
+
async disconnect() {
|
|
29
|
+
await this.provider?.disconnect();
|
|
30
|
+
this.namespaces = undefined;
|
|
31
|
+
this.wallet = undefined;
|
|
32
|
+
this.properties = undefined;
|
|
33
|
+
}
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
//********** Provider Types **********//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_events","require","WalletConnector","EventEmitter","constructor","type","init","ops","storage","metadata","setProvider","provider","exports"],"sourceRoot":"../../../src","sources":["utils/TypeUtil.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_events","require","WalletConnector","EventEmitter","constructor","type","init","ops","storage","metadata","setProvider","provider","disconnect","namespaces","undefined","wallet","properties","exports"],"sourceRoot":"../../../src","sources":["utils/TypeUtil.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AA4KA;;AAgBA;;AAgBA;;AA8BO,MAAeC,eAAe,SAASC,oBAAY,CAAC;EASzDC,WAAWA,CAAC;IAAEC;EAAkC,CAAC,EAAE;IACjD,KAAK,CAAC,CAAC;IACP,IAAI,CAACA,IAAI,GAAGA,IAAI;EAClB;EAEA,MAAaC,IAAIA,CAACC,GAAyB,EAAE;IAC3C,IAAI,CAACC,OAAO,GAAGD,GAAG,CAACC,OAAO;IAC1B,IAAI,CAACC,QAAQ,GAAGF,GAAG,CAACE,QAAQ;EAC9B;EAEOC,WAAWA,CAACC,QAAkB,EAAE;IACrC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;EAEA,MAAaC,UAAUA,CAAA,EAAG;IACxB,MAAM,IAAI,CAACD,QAAQ,EAAEC,UAAU,CAAC,CAAC;IACjC,IAAI,CAACC,UAAU,GAAGC,SAAS;IAC3B,IAAI,CAACC,MAAM,GAAGD,SAAS;IACvB,IAAI,CAACE,UAAU,GAAGF,SAAS;EAC7B;AAUF;;AAEA;;AAmBA;;AAGA;;AA8DA;;AA8BA;AAAAG,OAAA,CAAAf,eAAA,GAAAA,eAAA"}
|
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
import { BlockchainAdapter } from './BlockchainAdapter';
|
|
2
2
|
import { NumberUtil } from '../utils/NumberUtil';
|
|
3
|
+
|
|
4
|
+
// Type definitions for writeContract
|
|
5
|
+
|
|
6
|
+
// Simple ABI encoder for ERC20 functions
|
|
7
|
+
function encodeERC20Function(method, params) {
|
|
8
|
+
const functionSelectors = {
|
|
9
|
+
transfer: '0xa9059cbb',
|
|
10
|
+
// transfer(address,uint256)
|
|
11
|
+
transferFrom: '0x23b872dd',
|
|
12
|
+
// transferFrom(address,address,uint256)
|
|
13
|
+
approve: '0x095ea7b3' // approve(address,uint256)
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const selector = functionSelectors[method];
|
|
17
|
+
if (!selector) {
|
|
18
|
+
throw new Error(`EVMAdapter:encodeERC20Function - unsupported method: ${method}`);
|
|
19
|
+
}
|
|
20
|
+
let encodedParams = '';
|
|
21
|
+
switch (method) {
|
|
22
|
+
case 'transfer':
|
|
23
|
+
if (params.length !== 2) throw new Error('transfer requires 2 parameters: to, amount');
|
|
24
|
+
const [to, amount] = params;
|
|
25
|
+
encodedParams = to.toLowerCase().slice(2).padStart(64, '0') + amount.toString(16).padStart(64, '0');
|
|
26
|
+
break;
|
|
27
|
+
case 'transferFrom':
|
|
28
|
+
if (params.length !== 3) throw new Error('transferFrom requires 3 parameters: from, to, amount');
|
|
29
|
+
const [from, toTransferFrom, amountTransferFrom] = params;
|
|
30
|
+
encodedParams = from.toLowerCase().slice(2).padStart(64, '0') + toTransferFrom.toLowerCase().slice(2).padStart(64, '0') + amountTransferFrom.toString(16).padStart(64, '0');
|
|
31
|
+
break;
|
|
32
|
+
case 'approve':
|
|
33
|
+
if (params.length !== 2) throw new Error('approve requires 2 parameters: spender, amount');
|
|
34
|
+
const [spender, amountApprove] = params;
|
|
35
|
+
encodedParams = spender.toLowerCase().slice(2).padStart(64, '0') + amountApprove.toString(16).padStart(64, '0');
|
|
36
|
+
break;
|
|
37
|
+
default:
|
|
38
|
+
throw new Error(`EVMAdapter:encodeERC20Function - unsupported method: ${method}`);
|
|
39
|
+
}
|
|
40
|
+
return selector + encodedParams;
|
|
41
|
+
}
|
|
3
42
|
export class EVMAdapter extends BlockchainAdapter {
|
|
4
43
|
async signMessage(address, message, chain) {
|
|
5
44
|
const provider = this.getProvider();
|
|
@@ -83,5 +122,140 @@ export class EVMAdapter extends BlockchainAdapter {
|
|
|
83
122
|
|
|
84
123
|
return receipt?.blockHash || null;
|
|
85
124
|
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Executes a write operation on an ERC20 smart contract.
|
|
128
|
+
* This function is library-agnostic and uses only the provider for blockchain interactions.
|
|
129
|
+
*
|
|
130
|
+
* @param data - The contract interaction data
|
|
131
|
+
* @param data.tokenAddress - The ERC20 token contract address
|
|
132
|
+
* @param data.receiverAddress - The recipient address (required for transfer method)
|
|
133
|
+
* @param data.tokenAmount - The amount of tokens to transfer/approve
|
|
134
|
+
* @param data.fromAddress - The sender's address
|
|
135
|
+
* @param data.method - The ERC20 method to call: 'transfer', 'transferFrom', or 'approve'
|
|
136
|
+
* @param data.spenderAddress - The spender address (required for transferFrom and approve methods)
|
|
137
|
+
* @param data.abi - Optional ABI for future extensibility
|
|
138
|
+
*
|
|
139
|
+
* @returns Promise resolving to the transaction block hash or null if failed
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* // Transfer tokens
|
|
144
|
+
* const result = await adapter.writeContract({
|
|
145
|
+
* tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
146
|
+
* receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
147
|
+
* tokenAmount: BigInt(1000000000000000000), // 1 token with 18 decimals
|
|
148
|
+
* fromAddress: '0x1234567890123456789012345678901234567890',
|
|
149
|
+
* method: 'transfer'
|
|
150
|
+
* });
|
|
151
|
+
*
|
|
152
|
+
* // Approve tokens
|
|
153
|
+
* const result = await adapter.writeContract({
|
|
154
|
+
* tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
155
|
+
* receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
156
|
+
* tokenAmount: BigInt(1000000000000000000),
|
|
157
|
+
* fromAddress: '0x1234567890123456789012345678901234567890',
|
|
158
|
+
* method: 'approve',
|
|
159
|
+
* spenderAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd'
|
|
160
|
+
* });
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
async writeContract(data) {
|
|
164
|
+
const {
|
|
165
|
+
tokenAddress,
|
|
166
|
+
receiverAddress,
|
|
167
|
+
tokenAmount,
|
|
168
|
+
method,
|
|
169
|
+
fromAddress,
|
|
170
|
+
spenderAddress
|
|
171
|
+
} = data;
|
|
172
|
+
if (!this.getProvider()) {
|
|
173
|
+
throw new Error('EVMAdapter:writeContract - provider is undefined');
|
|
174
|
+
}
|
|
175
|
+
if (!fromAddress) {
|
|
176
|
+
throw new Error('EVMAdapter:writeContract - fromAddress is undefined');
|
|
177
|
+
}
|
|
178
|
+
if (!tokenAddress) {
|
|
179
|
+
throw new Error('EVMAdapter:writeContract - tokenAddress is undefined');
|
|
180
|
+
}
|
|
181
|
+
if (!tokenAmount) {
|
|
182
|
+
throw new Error('EVMAdapter:writeContract - tokenAmount is undefined');
|
|
183
|
+
}
|
|
184
|
+
if (!method) {
|
|
185
|
+
throw new Error('EVMAdapter:writeContract - method is undefined');
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Validate method-specific parameters
|
|
189
|
+
if (method === 'transfer' && !receiverAddress) {
|
|
190
|
+
throw new Error('EVMAdapter:writeContract - receiverAddress is required for transfer method');
|
|
191
|
+
}
|
|
192
|
+
if ((method === 'transferFrom' || method === 'approve') && !spenderAddress) {
|
|
193
|
+
throw new Error(`EVMAdapter:writeContract - spenderAddress is required for ${method} method`);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Encode the function call data based on method
|
|
197
|
+
let encodedData;
|
|
198
|
+
switch (method) {
|
|
199
|
+
case 'transfer':
|
|
200
|
+
encodedData = encodeERC20Function('transfer', [receiverAddress, tokenAmount]);
|
|
201
|
+
break;
|
|
202
|
+
case 'transferFrom':
|
|
203
|
+
encodedData = encodeERC20Function('transferFrom', [fromAddress, receiverAddress, tokenAmount]);
|
|
204
|
+
break;
|
|
205
|
+
case 'approve':
|
|
206
|
+
encodedData = encodeERC20Function('approve', [spenderAddress, tokenAmount]);
|
|
207
|
+
break;
|
|
208
|
+
default:
|
|
209
|
+
throw new Error(`EVMAdapter:writeContract - method '${method}' is not supported`);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Create transaction parameters
|
|
213
|
+
const txParams = {
|
|
214
|
+
from: fromAddress,
|
|
215
|
+
to: tokenAddress,
|
|
216
|
+
data: encodedData,
|
|
217
|
+
value: '0x0',
|
|
218
|
+
// No ETH value for token operations
|
|
219
|
+
type: '0x0' // legacy transaction type
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
try {
|
|
223
|
+
// Send the transaction
|
|
224
|
+
const txHash = await this.getProvider().request({
|
|
225
|
+
method: 'eth_sendTransaction',
|
|
226
|
+
params: [txParams]
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
// Wait for transaction receipt
|
|
230
|
+
let receipt = null;
|
|
231
|
+
let attempts = 0;
|
|
232
|
+
const maxAttempts = 60; // 60 seconds timeout
|
|
233
|
+
|
|
234
|
+
while (!receipt && attempts < maxAttempts) {
|
|
235
|
+
receipt = await this.getProvider().request({
|
|
236
|
+
method: 'eth_getTransactionReceipt',
|
|
237
|
+
params: [txHash]
|
|
238
|
+
});
|
|
239
|
+
if (!receipt) {
|
|
240
|
+
await new Promise(r => setTimeout(r, 1000)); // wait 1s
|
|
241
|
+
attempts++;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (!receipt) {
|
|
245
|
+
throw new Error('EVMAdapter:writeContract - transaction timeout');
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Check if transaction was successful
|
|
249
|
+
if (receipt.status === '0x0') {
|
|
250
|
+
throw new Error('EVMAdapter:writeContract - transaction failed');
|
|
251
|
+
}
|
|
252
|
+
return receipt?.blockHash || null;
|
|
253
|
+
} catch (error) {
|
|
254
|
+
if (error instanceof Error) {
|
|
255
|
+
throw new Error(`EVMAdapter:writeContract - ${error.message}`);
|
|
256
|
+
}
|
|
257
|
+
throw new Error('EVMAdapter:writeContract - unknown error occurred');
|
|
258
|
+
}
|
|
259
|
+
}
|
|
86
260
|
}
|
|
87
261
|
//# sourceMappingURL=EvmAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BlockchainAdapter","NumberUtil","
|
|
1
|
+
{"version":3,"names":["BlockchainAdapter","NumberUtil","encodeERC20Function","method","params","functionSelectors","transfer","transferFrom","approve","selector","Error","encodedParams","length","to","amount","toLowerCase","slice","padStart","toString","from","toTransferFrom","amountTransferFrom","spender","amountApprove","EVMAdapter","signMessage","address","message","chain","provider","getProvider","signature","request","estimateGas","data","chainNamespace","txParams","type","estimatedGasHex","BigInt","error","sendTransaction","value","convertNumericToHexString","gas","gasPrice","txHash","receipt","Promise","r","setTimeout","blockHash","writeContract","tokenAddress","receiverAddress","tokenAmount","fromAddress","spenderAddress","encodedData","attempts","maxAttempts","status"],"sourceRoot":"../../../src","sources":["adapters/EvmAdapter.ts"],"mappings":"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"}
|
|
@@ -20,6 +20,12 @@ export class WalletConnector extends EventEmitter {
|
|
|
20
20
|
setProvider(provider) {
|
|
21
21
|
this.provider = provider;
|
|
22
22
|
}
|
|
23
|
+
async disconnect() {
|
|
24
|
+
await this.provider?.disconnect();
|
|
25
|
+
this.namespaces = undefined;
|
|
26
|
+
this.wallet = undefined;
|
|
27
|
+
this.properties = undefined;
|
|
28
|
+
}
|
|
23
29
|
}
|
|
24
30
|
|
|
25
31
|
//********** Provider Types **********//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventEmitter","WalletConnector","constructor","type","init","ops","storage","metadata","setProvider","provider"],"sourceRoot":"../../../src","sources":["utils/TypeUtil.ts"],"mappings":"AAAA,SAASA,YAAY,QAAQ,QAAQ;;
|
|
1
|
+
{"version":3,"names":["EventEmitter","WalletConnector","constructor","type","init","ops","storage","metadata","setProvider","provider","disconnect","namespaces","undefined","wallet","properties"],"sourceRoot":"../../../src","sources":["utils/TypeUtil.ts"],"mappings":"AAAA,SAASA,YAAY,QAAQ,QAAQ;;AA4KrC;;AAgBA;;AAgBA;;AA8BA,OAAO,MAAeC,eAAe,SAASD,YAAY,CAAC;EASzDE,WAAWA,CAAC;IAAEC;EAAkC,CAAC,EAAE;IACjD,KAAK,CAAC,CAAC;IACP,IAAI,CAACA,IAAI,GAAGA,IAAI;EAClB;EAEA,MAAaC,IAAIA,CAACC,GAAyB,EAAE;IAC3C,IAAI,CAACC,OAAO,GAAGD,GAAG,CAACC,OAAO;IAC1B,IAAI,CAACC,QAAQ,GAAGF,GAAG,CAACE,QAAQ;EAC9B;EAEOC,WAAWA,CAACC,QAAkB,EAAE;IACrC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;EAEA,MAAaC,UAAUA,CAAA,EAAG;IACxB,MAAM,IAAI,CAACD,QAAQ,EAAEC,UAAU,CAAC,CAAC;IACjC,IAAI,CAACC,UAAU,GAAGC,SAAS;IAC3B,IAAI,CAACC,MAAM,GAAGD,SAAS;IACvB,IAAI,CAACE,UAAU,GAAGF,SAAS;EAC7B;AAUF;;AAEA;;AAmBA;;AAGA;;AA8DA;;AA8BA"}
|
|
@@ -1,7 +1,54 @@
|
|
|
1
1
|
import { BlockchainAdapter } from './BlockchainAdapter';
|
|
2
|
+
export interface WriteContractData {
|
|
3
|
+
tokenAddress: `0x${string}`;
|
|
4
|
+
receiverAddress: `0x${string}`;
|
|
5
|
+
tokenAmount: bigint;
|
|
6
|
+
fromAddress: `0x${string}`;
|
|
7
|
+
method: 'transfer' | 'transferFrom' | 'approve';
|
|
8
|
+
abi?: any;
|
|
9
|
+
spenderAddress?: `0x${string}`;
|
|
10
|
+
}
|
|
2
11
|
export declare abstract class EVMAdapter extends BlockchainAdapter {
|
|
3
12
|
signMessage(address: string, message: string, chain?: string): Promise<string>;
|
|
4
13
|
estimateGas({ address, to, data, chainNamespace }: any): Promise<bigint>;
|
|
5
14
|
sendTransaction(data: any): Promise<`0x${string}` | null>;
|
|
15
|
+
/**
|
|
16
|
+
* Executes a write operation on an ERC20 smart contract.
|
|
17
|
+
* This function is library-agnostic and uses only the provider for blockchain interactions.
|
|
18
|
+
*
|
|
19
|
+
* @param data - The contract interaction data
|
|
20
|
+
* @param data.tokenAddress - The ERC20 token contract address
|
|
21
|
+
* @param data.receiverAddress - The recipient address (required for transfer method)
|
|
22
|
+
* @param data.tokenAmount - The amount of tokens to transfer/approve
|
|
23
|
+
* @param data.fromAddress - The sender's address
|
|
24
|
+
* @param data.method - The ERC20 method to call: 'transfer', 'transferFrom', or 'approve'
|
|
25
|
+
* @param data.spenderAddress - The spender address (required for transferFrom and approve methods)
|
|
26
|
+
* @param data.abi - Optional ABI for future extensibility
|
|
27
|
+
*
|
|
28
|
+
* @returns Promise resolving to the transaction block hash or null if failed
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* // Transfer tokens
|
|
33
|
+
* const result = await adapter.writeContract({
|
|
34
|
+
* tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
35
|
+
* receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
36
|
+
* tokenAmount: BigInt(1000000000000000000), // 1 token with 18 decimals
|
|
37
|
+
* fromAddress: '0x1234567890123456789012345678901234567890',
|
|
38
|
+
* method: 'transfer'
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* // Approve tokens
|
|
42
|
+
* const result = await adapter.writeContract({
|
|
43
|
+
* tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
44
|
+
* receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
45
|
+
* tokenAmount: BigInt(1000000000000000000),
|
|
46
|
+
* fromAddress: '0x1234567890123456789012345678901234567890',
|
|
47
|
+
* method: 'approve',
|
|
48
|
+
* spenderAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd'
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
writeContract(data: WriteContractData): Promise<`0x${string}` | null>;
|
|
6
53
|
}
|
|
7
54
|
//# sourceMappingURL=EvmAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvmAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/EvmAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"EvmAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/EvmAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;IAChD,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CAChC;AAkDD,8BAAsB,UAAW,SAAQ,iBAAiB;IAClD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB9E,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCxE,eAAe,CAAC,IAAI,EAAE,GAAG;IAyC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACG,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;CAwG5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmAdapter.test.d.ts","sourceRoot":"","sources":["../../../../src/adapters/__tests__/EvmAdapter.test.ts"],"names":[],"mappings":""}
|
|
@@ -48,19 +48,19 @@ export interface CaipNetwork {
|
|
|
48
48
|
imageUrl?: string;
|
|
49
49
|
}
|
|
50
50
|
export interface Balance {
|
|
51
|
-
name
|
|
51
|
+
name?: string;
|
|
52
|
+
amount: string;
|
|
52
53
|
symbol: string;
|
|
53
|
-
|
|
54
|
+
quantity?: {
|
|
55
|
+
decimals: string;
|
|
56
|
+
numeric: string;
|
|
57
|
+
};
|
|
58
|
+
chainId?: string;
|
|
54
59
|
address?: CaipAddress;
|
|
55
60
|
value?: number;
|
|
56
|
-
price
|
|
57
|
-
|
|
58
|
-
iconUrl: string;
|
|
61
|
+
price?: number;
|
|
62
|
+
iconUrl?: string;
|
|
59
63
|
}
|
|
60
|
-
type BalanceQuantity = {
|
|
61
|
-
decimals: string;
|
|
62
|
-
numeric: string;
|
|
63
|
-
};
|
|
64
64
|
export type TransactionStatus = 'confirmed' | 'failed' | 'pending';
|
|
65
65
|
export type TransactionDirection = 'in' | 'out' | 'self';
|
|
66
66
|
export type TransactionImage = {
|
|
@@ -154,11 +154,7 @@ export type ChainChangedEvent = {
|
|
|
154
154
|
export type DisconnectEvent = {};
|
|
155
155
|
export type BalanceChangedEvent = {
|
|
156
156
|
address: CaipAddress;
|
|
157
|
-
balance:
|
|
158
|
-
amount: string;
|
|
159
|
-
symbol: string;
|
|
160
|
-
contractAddress?: ContractAddress;
|
|
161
|
-
};
|
|
157
|
+
balance: Balance;
|
|
162
158
|
};
|
|
163
159
|
export interface AdapterEvents {
|
|
164
160
|
accountsChanged: (event: AccountsChangedEvent) => void;
|
|
@@ -167,16 +163,11 @@ export interface AdapterEvents {
|
|
|
167
163
|
balanceChanged: (event: BalanceChangedEvent) => void;
|
|
168
164
|
}
|
|
169
165
|
export interface GetBalanceParams {
|
|
166
|
+
network: AppKitNetwork;
|
|
170
167
|
address?: CaipAddress;
|
|
171
|
-
network?: AppKitNetwork;
|
|
172
168
|
tokens?: Tokens;
|
|
173
169
|
}
|
|
174
|
-
type
|
|
175
|
-
export interface GetBalanceResponse {
|
|
176
|
-
amount: string;
|
|
177
|
-
symbol: string;
|
|
178
|
-
contractAddress?: ContractAddress;
|
|
179
|
-
}
|
|
170
|
+
export type GetBalanceResponse = Balance;
|
|
180
171
|
interface BaseNamespace {
|
|
181
172
|
chains?: CaipNetworkId[];
|
|
182
173
|
accounts: CaipAddress[];
|
|
@@ -211,14 +202,15 @@ export declare abstract class WalletConnector extends EventEmitter {
|
|
|
211
202
|
});
|
|
212
203
|
init(ops: ConnectorInitOptions): Promise<void>;
|
|
213
204
|
setProvider(provider: Provider): void;
|
|
205
|
+
disconnect(): Promise<void>;
|
|
214
206
|
abstract connect(opts: ConnectOptions): Promise<Namespaces | undefined>;
|
|
215
|
-
abstract disconnect(): Promise<void>;
|
|
216
207
|
abstract getProvider(): Provider;
|
|
217
208
|
abstract getNamespaces(): Namespaces;
|
|
218
209
|
abstract getChainId(namespace: ChainNamespace): CaipNetworkId | undefined;
|
|
219
210
|
abstract getWalletInfo(): WalletInfo | undefined;
|
|
220
211
|
abstract getProperties(): ConnectionProperties | undefined;
|
|
221
212
|
abstract switchNetwork(network: AppKitNetwork): Promise<void>;
|
|
213
|
+
abstract restoreSession(): Promise<boolean>;
|
|
222
214
|
}
|
|
223
215
|
export interface Provider {
|
|
224
216
|
connect<T>(params?: any): Promise<T>;
|
|
@@ -254,7 +246,9 @@ export interface ConnectionProperties {
|
|
|
254
246
|
email?: string;
|
|
255
247
|
username?: string;
|
|
256
248
|
smartAccounts?: CaipAddress[];
|
|
249
|
+
provider?: SocialProvider;
|
|
257
250
|
}
|
|
251
|
+
export type AccountType = 'eoa' | 'smartAccount';
|
|
258
252
|
export interface Storage {
|
|
259
253
|
/**
|
|
260
254
|
* Returns all keys in storage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeUtil.d.ts","sourceRoot":"","sources":["../../../src/utils/TypeUtil.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,MAAM,WAAW,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEzE,MAAM,MAAM,OAAO,GAAG;IAEpB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,OAAO,EAAE;QACP,OAAO,EAAE;YAAE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;SAAE,CAAC;QACrC,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;SAAE,GAAG,SAAS,CAAC;KACxD,CAAC;IACF,cAAc,CAAC,EAAE;QACf,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC;KAC1D,CAAC;IAGF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB,CAAC,EAAE,aAAa,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IACpC,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB,CAAC,EAAE,aAAa,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,cAAc,EACd,YAAY,GAAG,cAAc,GAAG,eAAe,CAChD,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,aAAa,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AACnE,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,UAAU,GAAG,KAAK,GAAG,SAAS,CAAC;IACrC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;KACrB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE;YACL,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,uBAAuB,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,OAAO,GACP,GAAG,GACH,SAAS,GACT,OAAO,GACP,WAAW,CAAC;AAEhB,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAEhF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;CACH,CAAC;AAGF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC;AAEjC,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC,CAAC;CACH,CAAC;AAGF,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACvD,YAAY,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjD,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,eAAe,GAAG,WAAW,CAAC;AAEnC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAGD,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,KAAK,SAAS,GAAG,aAAa,CAAC;AAE/B,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,MAAM,CACrC,MAAM,EACN,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GACzB,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAC3E,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,8BAAsB,eAAgB,SAAQ,YAAY;IACjD,IAAI,EAAE,iBAAiB,CAAC;IAC/B,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC9B,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IAClC,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC9B,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC9B,SAAS,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;gBAEhC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE;IAKpC,IAAI,CAAC,GAAG,EAAE,oBAAoB;IAKpC,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAIrC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IACvE,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,IAAI,QAAQ;IAChC,QAAQ,CAAC,aAAa,IAAI,UAAU;IACpC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,cAAc,GAAG,aAAa,GAAG,SAAS;IACzE,QAAQ,CAAC,aAAa,IAAI,UAAU,GAAG,SAAS;IAChD,QAAQ,CAAC,aAAa,IAAI,oBAAoB,GAAG,SAAS;IAC1D,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAC9D;AAID,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,GAAG,OAAO,EACjB,IAAI,EAAE,gBAAgB,EACtB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG,CAAC;IACvD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;CACnE;AAGD,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAIlF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7B;;OAEG;IACH,UAAU,CAAC,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAE9C;;;OAGG;IACH,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAEtD;;;;OAIG;IACH,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAGD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,WAAW;IACnB,CAAC,EAAE,SAAS,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AACD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAE7E,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,KAAK;IACb,CAAC,EAAE,WAAW,CAAC;IACf,CAAC,EAAE,YAAY,CAAC;IAChB,CAAC,EAAE;QACD,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QACxB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,aAAa,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,MAAM,CAAC;IACvD,aAAa,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,UAAU,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IAEnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,MAAM,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAC/C,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,wBAAwB,EAAE,MAAM,CAAC;QACjC,mBAAmB,EAAE,OAAO,CAAC;QAC7B,sBAAsB,EAAE,OAAO,CAAC;QAChC,sBAAsB,EAAE,OAAO,CAAC;KACjC,CAAC;CACH"}
|
|
1
|
+
{"version":3,"file":"TypeUtil.d.ts","sourceRoot":"","sources":["../../../src/utils/TypeUtil.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reown/appkit-common-react-native",
|
|
3
|
-
"version": "0.0.0-feat-multi-social-
|
|
3
|
+
"version": "0.0.0-feat-multi-social-20250708154835",
|
|
4
4
|
"main": "lib/commonjs/index.js",
|
|
5
5
|
"types": "lib/typescript/index.d.ts",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -1,6 +1,65 @@
|
|
|
1
1
|
import { BlockchainAdapter } from './BlockchainAdapter';
|
|
2
2
|
import { NumberUtil } from '../utils/NumberUtil';
|
|
3
3
|
|
|
4
|
+
// Type definitions for writeContract
|
|
5
|
+
export interface WriteContractData {
|
|
6
|
+
tokenAddress: `0x${string}`;
|
|
7
|
+
receiverAddress: `0x${string}`;
|
|
8
|
+
tokenAmount: bigint;
|
|
9
|
+
fromAddress: `0x${string}`;
|
|
10
|
+
method: 'transfer' | 'transferFrom' | 'approve';
|
|
11
|
+
abi?: any; // Optional ABI for future extensibility
|
|
12
|
+
spenderAddress?: `0x${string}`; // Required for transferFrom and approve
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Simple ABI encoder for ERC20 functions
|
|
16
|
+
function encodeERC20Function(method: string, params: any[]): string {
|
|
17
|
+
const functionSelectors = {
|
|
18
|
+
transfer: '0xa9059cbb', // transfer(address,uint256)
|
|
19
|
+
transferFrom: '0x23b872dd', // transferFrom(address,address,uint256)
|
|
20
|
+
approve: '0x095ea7b3' // approve(address,uint256)
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const selector = functionSelectors[method as keyof typeof functionSelectors];
|
|
24
|
+
if (!selector) {
|
|
25
|
+
throw new Error(`EVMAdapter:encodeERC20Function - unsupported method: ${method}`);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
let encodedParams = '';
|
|
29
|
+
|
|
30
|
+
switch (method) {
|
|
31
|
+
case 'transfer':
|
|
32
|
+
if (params.length !== 2) throw new Error('transfer requires 2 parameters: to, amount');
|
|
33
|
+
const [to, amount] = params;
|
|
34
|
+
encodedParams =
|
|
35
|
+
to.toLowerCase().slice(2).padStart(64, '0') + amount.toString(16).padStart(64, '0');
|
|
36
|
+
break;
|
|
37
|
+
|
|
38
|
+
case 'transferFrom':
|
|
39
|
+
if (params.length !== 3)
|
|
40
|
+
throw new Error('transferFrom requires 3 parameters: from, to, amount');
|
|
41
|
+
const [from, toTransferFrom, amountTransferFrom] = params;
|
|
42
|
+
encodedParams =
|
|
43
|
+
from.toLowerCase().slice(2).padStart(64, '0') +
|
|
44
|
+
toTransferFrom.toLowerCase().slice(2).padStart(64, '0') +
|
|
45
|
+
amountTransferFrom.toString(16).padStart(64, '0');
|
|
46
|
+
break;
|
|
47
|
+
|
|
48
|
+
case 'approve':
|
|
49
|
+
if (params.length !== 2) throw new Error('approve requires 2 parameters: spender, amount');
|
|
50
|
+
const [spender, amountApprove] = params;
|
|
51
|
+
encodedParams =
|
|
52
|
+
spender.toLowerCase().slice(2).padStart(64, '0') +
|
|
53
|
+
amountApprove.toString(16).padStart(64, '0');
|
|
54
|
+
break;
|
|
55
|
+
|
|
56
|
+
default:
|
|
57
|
+
throw new Error(`EVMAdapter:encodeERC20Function - unsupported method: ${method}`);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return selector + encodedParams;
|
|
61
|
+
}
|
|
62
|
+
|
|
4
63
|
export abstract class EVMAdapter extends BlockchainAdapter {
|
|
5
64
|
async signMessage(address: string, message: string, chain?: string): Promise<string> {
|
|
6
65
|
const provider = this.getProvider();
|
|
@@ -93,4 +152,146 @@ export abstract class EVMAdapter extends BlockchainAdapter {
|
|
|
93
152
|
|
|
94
153
|
return receipt?.blockHash || null;
|
|
95
154
|
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Executes a write operation on an ERC20 smart contract.
|
|
158
|
+
* This function is library-agnostic and uses only the provider for blockchain interactions.
|
|
159
|
+
*
|
|
160
|
+
* @param data - The contract interaction data
|
|
161
|
+
* @param data.tokenAddress - The ERC20 token contract address
|
|
162
|
+
* @param data.receiverAddress - The recipient address (required for transfer method)
|
|
163
|
+
* @param data.tokenAmount - The amount of tokens to transfer/approve
|
|
164
|
+
* @param data.fromAddress - The sender's address
|
|
165
|
+
* @param data.method - The ERC20 method to call: 'transfer', 'transferFrom', or 'approve'
|
|
166
|
+
* @param data.spenderAddress - The spender address (required for transferFrom and approve methods)
|
|
167
|
+
* @param data.abi - Optional ABI for future extensibility
|
|
168
|
+
*
|
|
169
|
+
* @returns Promise resolving to the transaction block hash or null if failed
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* // Transfer tokens
|
|
174
|
+
* const result = await adapter.writeContract({
|
|
175
|
+
* tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
176
|
+
* receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
177
|
+
* tokenAmount: BigInt(1000000000000000000), // 1 token with 18 decimals
|
|
178
|
+
* fromAddress: '0x1234567890123456789012345678901234567890',
|
|
179
|
+
* method: 'transfer'
|
|
180
|
+
* });
|
|
181
|
+
*
|
|
182
|
+
* // Approve tokens
|
|
183
|
+
* const result = await adapter.writeContract({
|
|
184
|
+
* tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
185
|
+
* receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
186
|
+
* tokenAmount: BigInt(1000000000000000000),
|
|
187
|
+
* fromAddress: '0x1234567890123456789012345678901234567890',
|
|
188
|
+
* method: 'approve',
|
|
189
|
+
* spenderAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd'
|
|
190
|
+
* });
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
async writeContract(data: WriteContractData): Promise<`0x${string}` | null> {
|
|
194
|
+
const { tokenAddress, receiverAddress, tokenAmount, method, fromAddress, spenderAddress } =
|
|
195
|
+
data;
|
|
196
|
+
|
|
197
|
+
if (!this.getProvider()) {
|
|
198
|
+
throw new Error('EVMAdapter:writeContract - provider is undefined');
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (!fromAddress) {
|
|
202
|
+
throw new Error('EVMAdapter:writeContract - fromAddress is undefined');
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (!tokenAddress) {
|
|
206
|
+
throw new Error('EVMAdapter:writeContract - tokenAddress is undefined');
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
if (!tokenAmount) {
|
|
210
|
+
throw new Error('EVMAdapter:writeContract - tokenAmount is undefined');
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (!method) {
|
|
214
|
+
throw new Error('EVMAdapter:writeContract - method is undefined');
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Validate method-specific parameters
|
|
218
|
+
if (method === 'transfer' && !receiverAddress) {
|
|
219
|
+
throw new Error('EVMAdapter:writeContract - receiverAddress is required for transfer method');
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
if ((method === 'transferFrom' || method === 'approve') && !spenderAddress) {
|
|
223
|
+
throw new Error(`EVMAdapter:writeContract - spenderAddress is required for ${method} method`);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Encode the function call data based on method
|
|
227
|
+
let encodedData: string;
|
|
228
|
+
|
|
229
|
+
switch (method) {
|
|
230
|
+
case 'transfer':
|
|
231
|
+
encodedData = encodeERC20Function('transfer', [receiverAddress, tokenAmount]);
|
|
232
|
+
break;
|
|
233
|
+
case 'transferFrom':
|
|
234
|
+
encodedData = encodeERC20Function('transferFrom', [
|
|
235
|
+
fromAddress,
|
|
236
|
+
receiverAddress,
|
|
237
|
+
tokenAmount
|
|
238
|
+
]);
|
|
239
|
+
break;
|
|
240
|
+
case 'approve':
|
|
241
|
+
encodedData = encodeERC20Function('approve', [spenderAddress, tokenAmount]);
|
|
242
|
+
break;
|
|
243
|
+
default:
|
|
244
|
+
throw new Error(`EVMAdapter:writeContract - method '${method}' is not supported`);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Create transaction parameters
|
|
248
|
+
const txParams = {
|
|
249
|
+
from: fromAddress,
|
|
250
|
+
to: tokenAddress,
|
|
251
|
+
data: encodedData,
|
|
252
|
+
value: '0x0', // No ETH value for token operations
|
|
253
|
+
type: '0x0' // legacy transaction type
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
try {
|
|
257
|
+
// Send the transaction
|
|
258
|
+
const txHash = await this.getProvider().request({
|
|
259
|
+
method: 'eth_sendTransaction',
|
|
260
|
+
params: [txParams]
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
// Wait for transaction receipt
|
|
264
|
+
let receipt = null;
|
|
265
|
+
let attempts = 0;
|
|
266
|
+
const maxAttempts = 60; // 60 seconds timeout
|
|
267
|
+
|
|
268
|
+
while (!receipt && attempts < maxAttempts) {
|
|
269
|
+
receipt = (await this.getProvider().request({
|
|
270
|
+
method: 'eth_getTransactionReceipt',
|
|
271
|
+
params: [txHash]
|
|
272
|
+
})) as { blockHash?: `0x${string}`; status?: string };
|
|
273
|
+
|
|
274
|
+
if (!receipt) {
|
|
275
|
+
await new Promise(r => setTimeout(r, 1000)); // wait 1s
|
|
276
|
+
attempts++;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (!receipt) {
|
|
281
|
+
throw new Error('EVMAdapter:writeContract - transaction timeout');
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// Check if transaction was successful
|
|
285
|
+
if (receipt.status === '0x0') {
|
|
286
|
+
throw new Error('EVMAdapter:writeContract - transaction failed');
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
return receipt?.blockHash || null;
|
|
290
|
+
} catch (error) {
|
|
291
|
+
if (error instanceof Error) {
|
|
292
|
+
throw new Error(`EVMAdapter:writeContract - ${error.message}`);
|
|
293
|
+
}
|
|
294
|
+
throw new Error('EVMAdapter:writeContract - unknown error occurred');
|
|
295
|
+
}
|
|
296
|
+
}
|
|
96
297
|
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { EVMAdapter } from '../EvmAdapter';
|
|
2
|
+
import type { CaipAddress } from '../../utils/TypeUtil';
|
|
3
|
+
|
|
4
|
+
// Mock implementation for testing
|
|
5
|
+
class MockEVMAdapter extends EVMAdapter {
|
|
6
|
+
private mockProvider: any;
|
|
7
|
+
|
|
8
|
+
constructor() {
|
|
9
|
+
super({ projectId: 'test', supportedNamespace: 'eip155' });
|
|
10
|
+
this.mockProvider = {
|
|
11
|
+
request: jest.fn(),
|
|
12
|
+
on: jest.fn(),
|
|
13
|
+
off: jest.fn()
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
setMockProvider(provider: any) {
|
|
18
|
+
this.mockProvider = provider;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override getProvider() {
|
|
22
|
+
return this.mockProvider;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async disconnect(): Promise<void> {}
|
|
26
|
+
getSupportedNamespace() {
|
|
27
|
+
return 'eip155' as const;
|
|
28
|
+
}
|
|
29
|
+
async getBalance() {
|
|
30
|
+
return { amount: '0', symbol: 'ETH' };
|
|
31
|
+
}
|
|
32
|
+
getAccounts(): CaipAddress[] | undefined {
|
|
33
|
+
return ['eip155:1:0x1234567890123456789012345678901234567890'];
|
|
34
|
+
}
|
|
35
|
+
async switchNetwork() {}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
describe('EVMAdapter', () => {
|
|
39
|
+
let adapter: MockEVMAdapter;
|
|
40
|
+
|
|
41
|
+
beforeEach(() => {
|
|
42
|
+
adapter = new MockEVMAdapter();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
describe('writeContract', () => {
|
|
46
|
+
it('should encode transfer function correctly', async () => {
|
|
47
|
+
const mockProvider = {
|
|
48
|
+
request: jest
|
|
49
|
+
.fn()
|
|
50
|
+
.mockResolvedValueOnce('0x1234567890abcdef') // eth_sendTransaction
|
|
51
|
+
.mockResolvedValueOnce({ blockHash: '0xabcdef1234567890', status: '0x1' }) // eth_getTransactionReceipt
|
|
52
|
+
};
|
|
53
|
+
adapter.setMockProvider(mockProvider);
|
|
54
|
+
|
|
55
|
+
const result = await adapter.writeContract({
|
|
56
|
+
tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
57
|
+
receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
58
|
+
tokenAmount: BigInt(1000000000000000000), // 1 token with 18 decimals
|
|
59
|
+
fromAddress: '0x1234567890123456789012345678901234567890',
|
|
60
|
+
method: 'transfer'
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
expect(result).toBe('0xabcdef1234567890');
|
|
64
|
+
expect(mockProvider.request).toHaveBeenCalledWith({
|
|
65
|
+
method: 'eth_sendTransaction',
|
|
66
|
+
params: [
|
|
67
|
+
{
|
|
68
|
+
from: '0x1234567890123456789012345678901234567890',
|
|
69
|
+
to: '0x1234567890123456789012345678901234567890',
|
|
70
|
+
data: '0xa9059cbb000000000000000000000000abcdefabcdefabcdefabcdefabcdefabcdefabcd0000000000000000000000000000000000000000000000000de0b6b3a7640000',
|
|
71
|
+
value: '0x0',
|
|
72
|
+
type: '0x0'
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('should throw error for unsupported method', async () => {
|
|
79
|
+
await expect(
|
|
80
|
+
adapter.writeContract({
|
|
81
|
+
tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
82
|
+
receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
83
|
+
tokenAmount: BigInt(1000000000000000000),
|
|
84
|
+
fromAddress: '0x1234567890123456789012345678901234567890',
|
|
85
|
+
method: 'unsupported' as any
|
|
86
|
+
})
|
|
87
|
+
).rejects.toThrow("method 'unsupported' is not supported");
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('should throw error when provider is undefined', async () => {
|
|
91
|
+
adapter.setMockProvider(undefined);
|
|
92
|
+
|
|
93
|
+
await expect(
|
|
94
|
+
adapter.writeContract({
|
|
95
|
+
tokenAddress: '0x1234567890123456789012345678901234567890',
|
|
96
|
+
receiverAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
|
|
97
|
+
tokenAmount: BigInt(1000000000000000000),
|
|
98
|
+
fromAddress: '0x1234567890123456789012345678901234567890',
|
|
99
|
+
method: 'transfer'
|
|
100
|
+
})
|
|
101
|
+
).rejects.toThrow('provider is undefined');
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
package/src/utils/TypeUtil.ts
CHANGED
|
@@ -47,21 +47,20 @@ export interface CaipNetwork {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
export interface Balance {
|
|
50
|
-
name
|
|
50
|
+
name?: string;
|
|
51
|
+
amount: string;
|
|
51
52
|
symbol: string;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
quantity?: {
|
|
54
|
+
decimals: string;
|
|
55
|
+
numeric: string;
|
|
56
|
+
};
|
|
57
|
+
chainId?: string;
|
|
58
|
+
address?: CaipAddress; // contract address
|
|
59
|
+
value?: number; //total value of the amount in currency
|
|
60
|
+
price?: number; //price of the token in currency
|
|
61
|
+
iconUrl?: string;
|
|
58
62
|
}
|
|
59
63
|
|
|
60
|
-
type BalanceQuantity = {
|
|
61
|
-
decimals: string;
|
|
62
|
-
numeric: string;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
64
|
export type TransactionStatus = 'confirmed' | 'failed' | 'pending';
|
|
66
65
|
export type TransactionDirection = 'in' | 'out' | 'self';
|
|
67
66
|
export type TransactionImage = {
|
|
@@ -184,11 +183,7 @@ export type DisconnectEvent = {};
|
|
|
184
183
|
|
|
185
184
|
export type BalanceChangedEvent = {
|
|
186
185
|
address: CaipAddress;
|
|
187
|
-
balance:
|
|
188
|
-
amount: string;
|
|
189
|
-
symbol: string;
|
|
190
|
-
contractAddress?: ContractAddress;
|
|
191
|
-
};
|
|
186
|
+
balance: Balance;
|
|
192
187
|
};
|
|
193
188
|
|
|
194
189
|
//********** Adapter Event Map **********//
|
|
@@ -200,18 +195,12 @@ export interface AdapterEvents {
|
|
|
200
195
|
}
|
|
201
196
|
|
|
202
197
|
export interface GetBalanceParams {
|
|
198
|
+
network: AppKitNetwork;
|
|
203
199
|
address?: CaipAddress;
|
|
204
|
-
network?: AppKitNetwork;
|
|
205
200
|
tokens?: Tokens;
|
|
206
201
|
}
|
|
207
202
|
|
|
208
|
-
type
|
|
209
|
-
|
|
210
|
-
export interface GetBalanceResponse {
|
|
211
|
-
amount: string;
|
|
212
|
-
symbol: string;
|
|
213
|
-
contractAddress?: ContractAddress;
|
|
214
|
-
}
|
|
203
|
+
export type GetBalanceResponse = Balance;
|
|
215
204
|
|
|
216
205
|
//********** Connector Types **********//
|
|
217
206
|
interface BaseNamespace {
|
|
@@ -266,14 +255,21 @@ export abstract class WalletConnector extends EventEmitter {
|
|
|
266
255
|
this.provider = provider;
|
|
267
256
|
}
|
|
268
257
|
|
|
258
|
+
public async disconnect() {
|
|
259
|
+
await this.provider?.disconnect();
|
|
260
|
+
this.namespaces = undefined;
|
|
261
|
+
this.wallet = undefined;
|
|
262
|
+
this.properties = undefined;
|
|
263
|
+
}
|
|
264
|
+
|
|
269
265
|
abstract connect(opts: ConnectOptions): Promise<Namespaces | undefined>;
|
|
270
|
-
abstract disconnect(): Promise<void>;
|
|
271
266
|
abstract getProvider(): Provider;
|
|
272
267
|
abstract getNamespaces(): Namespaces;
|
|
273
268
|
abstract getChainId(namespace: ChainNamespace): CaipNetworkId | undefined;
|
|
274
269
|
abstract getWalletInfo(): WalletInfo | undefined;
|
|
275
270
|
abstract getProperties(): ConnectionProperties | undefined;
|
|
276
271
|
abstract switchNetwork(network: AppKitNetwork): Promise<void>;
|
|
272
|
+
abstract restoreSession(): Promise<boolean>;
|
|
277
273
|
}
|
|
278
274
|
|
|
279
275
|
//********** Provider Types **********//
|
|
@@ -324,8 +320,11 @@ export interface ConnectionProperties {
|
|
|
324
320
|
email?: string;
|
|
325
321
|
username?: string;
|
|
326
322
|
smartAccounts?: CaipAddress[];
|
|
323
|
+
provider?: SocialProvider;
|
|
327
324
|
}
|
|
328
325
|
|
|
326
|
+
export type AccountType = 'eoa' | 'smartAccount';
|
|
327
|
+
|
|
329
328
|
export interface Storage {
|
|
330
329
|
/**
|
|
331
330
|
* Returns all keys in storage.
|