@tradestack/paymaster 1.2.5 → 1.2.7
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/backend/services/chains/evm.service.d.ts +3 -2
- package/dist/backend/services/chains/evm.service.d.ts.map +1 -1
- package/dist/backend/services/chains/evm.service.js +70 -72
- package/dist/backend/services/chains/evm.service.js.map +1 -1
- package/dist/backend/services/chains/solana.service.d.ts +3 -2
- package/dist/backend/services/chains/solana.service.d.ts.map +1 -1
- package/dist/backend/services/chains/solana.service.js +34 -33
- package/dist/backend/services/chains/solana.service.js.map +1 -1
- package/dist/backend/services/chains/tron.service.d.ts +3 -2
- package/dist/backend/services/chains/tron.service.d.ts.map +1 -1
- package/dist/backend/services/chains/tron.service.js +61 -50
- package/dist/backend/services/chains/tron.service.js.map +1 -1
- package/dist/backend/services/sweep.service.d.ts +3 -2
- package/dist/backend/services/sweep.service.d.ts.map +1 -1
- package/dist/backend/services/sweep.service.js +8 -8
- package/dist/backend/services/sweep.service.js.map +1 -1
- package/dist/backend/services/sweep.worker.d.ts +1 -0
- package/dist/backend/services/sweep.worker.d.ts.map +1 -1
- package/dist/backend/services/sweep.worker.js +28 -27
- package/dist/backend/services/sweep.worker.js.map +1 -1
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +0 -2
- package/dist/sdk/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EVMChainConfig } from "../../config/chains";
|
|
2
2
|
import { TokenKey } from "../../config/constants";
|
|
3
3
|
import { Wallet } from "../../../sdk/types";
|
|
4
|
+
import { SweepCallbacks } from "../sweep.worker";
|
|
4
5
|
export declare const getPublicClient: (chainConfig: EVMChainConfig) => {
|
|
5
6
|
account: undefined;
|
|
6
7
|
batch?: {
|
|
@@ -5748,11 +5749,11 @@ export declare const getSmartAccountClient: (ownerPrivateKey: string, chainConfi
|
|
|
5748
5749
|
isDeployed: () => Promise<boolean>;
|
|
5749
5750
|
type: "smart";
|
|
5750
5751
|
}, undefined, undefined>>;
|
|
5751
|
-
export declare const sweepERC20: (wallet: Wallet, chainConfig: EVMChainConfig, token: TokenKey) => Promise<{
|
|
5752
|
+
export declare const sweepERC20: (wallet: Wallet, chainConfig: EVMChainConfig, token: TokenKey, callbacks: SweepCallbacks | undefined) => Promise<{
|
|
5752
5753
|
txHash: string;
|
|
5753
5754
|
amount: string;
|
|
5754
5755
|
}>;
|
|
5755
|
-
export declare const sweepNativeETH: (wallet: Wallet, chainConfig: EVMChainConfig) => Promise<{
|
|
5756
|
+
export declare const sweepNativeETH: (wallet: Wallet, chainConfig: EVMChainConfig, callbacks: SweepCallbacks | undefined) => Promise<{
|
|
5756
5757
|
txHash: string;
|
|
5757
5758
|
amount: string;
|
|
5758
5759
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm.service.d.ts","sourceRoot":"","sources":["../../../../../src/backend/services/chains/evm.service.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAA2B,MAAM,wBAAwB,CAAC;AAK3E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"evm.service.d.ts","sourceRoot":"","sources":["../../../../../src/backend/services/chains/evm.service.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAA2B,MAAM,wBAAwB,CAAC;AAK3E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAO,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA+CtD,eAAO,MAAM,eAAe,GAAI,aAAa,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;irBA8VpC,CAAA;;;;;;;;;;;;;;;;;;;;yBAgJooJ,CAAC;mCAA6lC,CAAC;;;;;;;;;;;;;;;;;yeAAumoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAzej2zB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,iBAAiB,MAAM,EACvB,cAAa,cAAwD;;;;;;;;;;;wTAxCrD,CAAC;sBAEf,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA8DA,CAAC;mBACO,CAAC;;2BAKF,CAAD;WAAe,CAAC;;iCASE,CAAC;;;;;;;;;;eAmDf,CAAC;;;mBAOyB,CAAC;;;;;;;;yBAzBzC,CAAC;AAGF,eAAO,MAAM,UAAU,GACrB,QAAQ,MAAM,EACd,aAAa,cAAc,EAC3B,OAAO,QAAQ,EACf,WAAW,cAAc,GAAG,SAAS,KACpC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAyL5C,CAAC;AAGF,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,aAAa,cAAc,EAC3B,WAAW,cAAc,GAAG,SAAS,KACpC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA6K5C,CAAC;AAGF,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,EACrB,aAAa,cAAc,EAC3B,OAAO,QAAQ,KACd,OAAO,CAAC,MAAM,CAiBhB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,eAAe,MAAM,EACrB,aAAa,cAAc,KAC1B,OAAO,CAAC,MAAM,CAUhB,CAAC"}
|
|
@@ -17,6 +17,7 @@ const db_context_1 = require("../../config/db.context");
|
|
|
17
17
|
const paymaster_service_1 = require("../paymaster.service");
|
|
18
18
|
const ERC20Abi_json_1 = __importDefault(require("../../contract/abi/ERC20Abi.json"));
|
|
19
19
|
const hotwallet_1 = require("../../helper/hotwallet");
|
|
20
|
+
const sweep_worker_1 = require("../sweep.worker");
|
|
20
21
|
const getMasterWallet = () => {
|
|
21
22
|
const mnemonic = process.env.HD_MNEMONIC;
|
|
22
23
|
if (!mnemonic) {
|
|
@@ -39,11 +40,11 @@ const getWalletHdIndex = async (walletAddress) => {
|
|
|
39
40
|
};
|
|
40
41
|
async function getTokenDecimals(publicClient, tokenAddress) {
|
|
41
42
|
try {
|
|
42
|
-
const decimals = await publicClient.readContract({
|
|
43
|
+
const decimals = (await publicClient.readContract({
|
|
43
44
|
address: tokenAddress,
|
|
44
45
|
abi: ERC20Abi_json_1.default,
|
|
45
46
|
functionName: "decimals",
|
|
46
|
-
});
|
|
47
|
+
}));
|
|
47
48
|
return decimals;
|
|
48
49
|
}
|
|
49
50
|
catch {
|
|
@@ -113,13 +114,13 @@ const getSmartAccountClient = async (ownerPrivateKey, chainConfig = chains_1.CHA
|
|
|
113
114
|
};
|
|
114
115
|
exports.getSmartAccountClient = getSmartAccountClient;
|
|
115
116
|
// ─── ERC-20 Token Sweep ───────────────────────────────────────────────────────
|
|
116
|
-
const sweepERC20 = async (wallet, chainConfig, token) => {
|
|
117
|
+
const sweepERC20 = async (wallet, chainConfig, token, callbacks) => {
|
|
117
118
|
const walletAddress = wallet.address;
|
|
118
119
|
const toAddress = (0, hotwallet_1.getEVMHotWallet)();
|
|
119
120
|
const tokenAddress = chainConfig.tokens[token];
|
|
120
121
|
const batchSweepId = (0, hotwallet_1.getBatchSweepId)();
|
|
121
122
|
if (!tokenAddress || tokenAddress.includes("DUMMY")) {
|
|
122
|
-
|
|
123
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] ${token} not configured, skipping ${walletAddress}`);
|
|
123
124
|
return { txHash: "", amount: "0" };
|
|
124
125
|
}
|
|
125
126
|
try {
|
|
@@ -127,32 +128,32 @@ const sweepERC20 = async (wallet, chainConfig, token) => {
|
|
|
127
128
|
const hd_index = await getWalletHdIndex(walletAddress);
|
|
128
129
|
const privateKey = derivePrivateKey(hd_index);
|
|
129
130
|
const publicClient = (0, exports.getPublicClient)(chainConfig);
|
|
130
|
-
const balance = await publicClient.readContract({
|
|
131
|
+
const balance = (await publicClient.readContract({
|
|
131
132
|
address: tokenAddress,
|
|
132
133
|
abi: ERC20Abi_json_1.default,
|
|
133
134
|
functionName: "balanceOf",
|
|
134
135
|
args: [walletAddress],
|
|
135
|
-
});
|
|
136
|
-
|
|
136
|
+
}));
|
|
137
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Wallet ${walletAddress} ${token} balance: ${balance}`);
|
|
137
138
|
if (balance === 0n) {
|
|
138
|
-
|
|
139
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Wallet ${walletAddress} has zero ${token}, skipping`);
|
|
139
140
|
return { txHash: "", amount: "0" };
|
|
140
141
|
}
|
|
141
142
|
const smartAccountClient = await (0, exports.getSmartAccountClient)(privateKey, chainConfig);
|
|
142
143
|
// Check if account is deployed
|
|
143
144
|
const accountAddress = smartAccountClient.account.address;
|
|
144
145
|
const code = await publicClient.getCode({ address: accountAddress });
|
|
145
|
-
const isDeployed = code !==
|
|
146
|
-
|
|
146
|
+
const isDeployed = code !== "0x" && code !== "0x0";
|
|
147
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Account ${accountAddress} deployed: ${isDeployed}`);
|
|
147
148
|
if (!isDeployed) {
|
|
148
149
|
// First, deploy the account without paymaster
|
|
149
|
-
|
|
150
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Deploying account first...`);
|
|
150
151
|
const deployOp = await smartAccountClient.sendUserOperation({
|
|
151
152
|
calls: [], // Empty calls for deployment
|
|
152
153
|
paymaster: undefined, // Skip paymaster for deployment
|
|
153
154
|
});
|
|
154
155
|
await smartAccountClient.waitForUserOperationReceipt({ hash: deployOp });
|
|
155
|
-
|
|
156
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Account deployed successfully`);
|
|
156
157
|
}
|
|
157
158
|
const callData = (0, viem_1.encodeFunctionData)({
|
|
158
159
|
abi: ERC20Abi_json_1.default,
|
|
@@ -160,11 +161,9 @@ const sweepERC20 = async (wallet, chainConfig, token) => {
|
|
|
160
161
|
args: [toAddress, balance],
|
|
161
162
|
});
|
|
162
163
|
const userOpHash = await smartAccountClient.sendUserOperation({
|
|
163
|
-
calls: [
|
|
164
|
-
{ to: tokenAddress, value: 0n, data: callData },
|
|
165
|
-
],
|
|
164
|
+
calls: [{ to: tokenAddress, value: 0n, data: callData }],
|
|
166
165
|
});
|
|
167
|
-
|
|
166
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] UserOperation submitted: ${userOpHash}`);
|
|
168
167
|
const receipt = (await Promise.race([
|
|
169
168
|
smartAccountClient.waitForUserOperationReceipt({ hash: userOpHash }),
|
|
170
169
|
new Promise((_, reject) => setTimeout(() => reject(new Error("UserOp receipt timeout after 60s")), 60000)),
|
|
@@ -172,16 +171,16 @@ const sweepERC20 = async (wallet, chainConfig, token) => {
|
|
|
172
171
|
const txHash = receipt.receipt.transactionHash;
|
|
173
172
|
// Fix decimal handling - don't assume 6 decimals for all tokens
|
|
174
173
|
const decimals = await getTokenDecimals(publicClient, tokenAddress);
|
|
175
|
-
const balanceAfter = await publicClient.readContract({
|
|
174
|
+
const balanceAfter = (await publicClient.readContract({
|
|
176
175
|
address: tokenAddress,
|
|
177
176
|
abi: ERC20Abi_json_1.default,
|
|
178
177
|
functionName: "balanceOf",
|
|
179
178
|
args: [walletAddress],
|
|
180
|
-
});
|
|
179
|
+
}));
|
|
181
180
|
const amountFormatted = (0, viem_1.formatUnits)(balance, decimals);
|
|
182
181
|
const amountAfterFormatted = (0, viem_1.formatUnits)(balanceAfter, decimals);
|
|
183
|
-
|
|
184
|
-
|
|
182
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Sweep complete: ${amountFormatted} ${token} → ${toAddress}`);
|
|
183
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Tx hash: ${txHash}`);
|
|
185
184
|
await adapter?.updateWalletBalanceById({
|
|
186
185
|
id: wallet.id,
|
|
187
186
|
balance: amountAfterFormatted,
|
|
@@ -190,16 +189,16 @@ const sweepERC20 = async (wallet, chainConfig, token) => {
|
|
|
190
189
|
await (0, db_context_1.dbQuery)(`INSERT INTO sweep_history
|
|
191
190
|
(wallet_address, batch_sweep_id, chain_id, token, amount, balance_before, balance_after, to_address, tx_hash, status, created_at)
|
|
192
191
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())`, [
|
|
193
|
-
walletAddress,
|
|
194
|
-
batchSweepId,
|
|
195
|
-
chainConfig.
|
|
196
|
-
token,
|
|
197
|
-
amountFormatted,
|
|
198
|
-
amountFormatted,
|
|
199
|
-
amountAfterFormatted,
|
|
200
|
-
toAddress,
|
|
201
|
-
txHash,
|
|
202
|
-
"success",
|
|
192
|
+
walletAddress,
|
|
193
|
+
batchSweepId,
|
|
194
|
+
chainConfig.chainKey,
|
|
195
|
+
token,
|
|
196
|
+
amountFormatted,
|
|
197
|
+
amountFormatted,
|
|
198
|
+
amountAfterFormatted,
|
|
199
|
+
toAddress,
|
|
200
|
+
txHash,
|
|
201
|
+
"success",
|
|
203
202
|
]);
|
|
204
203
|
return { txHash, amount: amountFormatted };
|
|
205
204
|
}
|
|
@@ -209,26 +208,25 @@ const sweepERC20 = async (wallet, chainConfig, token) => {
|
|
|
209
208
|
err?.details?.includes("AA10") ||
|
|
210
209
|
err?.cause?.details?.includes("AA10");
|
|
211
210
|
if (isSenderAlreadyConstructed) {
|
|
212
|
-
|
|
211
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Wallet ${walletAddress} already deployed (AA10) — skipping`);
|
|
213
212
|
return { txHash: "", amount: "0" };
|
|
214
213
|
}
|
|
215
214
|
await (0, db_context_1.dbQuery)(`INSERT INTO sweep_history
|
|
216
215
|
(wallet_address, batch_sweep_id, chain_id, token, amount, balance_before, balance_after, to_address, tx_hash, status, error, created_at)
|
|
217
216
|
VALUES (?, ?, ?, ?, '0', NULL, NULL, ?, NULL, 'failed', ?, NOW())`, [
|
|
218
|
-
walletAddress,
|
|
219
|
-
batchSweepId,
|
|
220
|
-
chainConfig.
|
|
221
|
-
token,
|
|
222
|
-
toAddress,
|
|
223
|
-
err instanceof Error ? err.message : "Unknown error",
|
|
217
|
+
walletAddress,
|
|
218
|
+
batchSweepId,
|
|
219
|
+
chainConfig.chainKey,
|
|
220
|
+
token,
|
|
221
|
+
toAddress,
|
|
222
|
+
err instanceof Error ? err.message : "Unknown error",
|
|
224
223
|
]);
|
|
225
224
|
throw err;
|
|
226
225
|
}
|
|
227
226
|
};
|
|
228
227
|
exports.sweepERC20 = sweepERC20;
|
|
229
|
-
// Helper function to get token decimals
|
|
230
228
|
// ─── Native ETH Sweep ─────────────────────────────────────────────────────────
|
|
231
|
-
const sweepNativeETH = async (wallet, chainConfig) => {
|
|
229
|
+
const sweepNativeETH = async (wallet, chainConfig, callbacks) => {
|
|
232
230
|
const walletAddress = wallet.address;
|
|
233
231
|
const toAddress = (0, hotwallet_1.getEVMHotWallet)();
|
|
234
232
|
const batchSweepId = (0, hotwallet_1.getBatchSweepId)();
|
|
@@ -240,28 +238,28 @@ const sweepNativeETH = async (wallet, chainConfig) => {
|
|
|
240
238
|
const balance = await publicClient.getBalance({
|
|
241
239
|
address: walletAddress,
|
|
242
240
|
});
|
|
243
|
-
|
|
241
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Wallet ${walletAddress} ETH balance: ${balance} wei`);
|
|
244
242
|
const MIN_ETH_THRESHOLD = (0, viem_1.parseEther)(constants_1.ETH_MIN_SWEEP_THRESHOLD);
|
|
245
243
|
if (balance < MIN_ETH_THRESHOLD) {
|
|
246
|
-
|
|
244
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Wallet ${walletAddress} ETH balance too low, skipping`);
|
|
247
245
|
return { txHash: "", amount: "0" };
|
|
248
246
|
}
|
|
249
247
|
const smartAccountClient = await (0, exports.getSmartAccountClient)(privateKey, chainConfig);
|
|
250
248
|
// Check if account is deployed
|
|
251
249
|
const accountAddress = smartAccountClient.account.address;
|
|
252
250
|
const code = await publicClient.getCode({ address: accountAddress });
|
|
253
|
-
const isDeployed = code !==
|
|
254
|
-
|
|
251
|
+
const isDeployed = code !== "0x" && code !== "0x0";
|
|
252
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Account ${accountAddress} deployed: ${isDeployed}`);
|
|
255
253
|
let userOpHash;
|
|
256
254
|
if (!isDeployed) {
|
|
257
255
|
// First, deploy the account without paymaster
|
|
258
|
-
|
|
256
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Deploying account first...`);
|
|
259
257
|
const deployOp = await smartAccountClient.sendUserOperation({
|
|
260
258
|
calls: [], // Empty calls for deployment
|
|
261
259
|
paymaster: undefined, // Skip paymaster for deployment
|
|
262
260
|
});
|
|
263
261
|
await smartAccountClient.waitForUserOperationReceipt({ hash: deployOp });
|
|
264
|
-
|
|
262
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Account deployed successfully`);
|
|
265
263
|
}
|
|
266
264
|
// Now send the actual sweep with paymaster
|
|
267
265
|
userOpHash = await smartAccountClient.sendUserOperation({
|
|
@@ -273,7 +271,7 @@ const sweepNativeETH = async (wallet, chainConfig) => {
|
|
|
273
271
|
},
|
|
274
272
|
],
|
|
275
273
|
});
|
|
276
|
-
|
|
274
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] ETH UserOperation submitted: ${userOpHash}`);
|
|
277
275
|
const receipt = (await Promise.race([
|
|
278
276
|
smartAccountClient.waitForUserOperationReceipt({ hash: userOpHash }),
|
|
279
277
|
new Promise((_, reject) => setTimeout(() => reject(new Error("UserOp receipt timeout after 60s")), 60000)),
|
|
@@ -284,26 +282,26 @@ const sweepNativeETH = async (wallet, chainConfig) => {
|
|
|
284
282
|
});
|
|
285
283
|
const amountFormatted = (0, viem_1.formatEther)(balance);
|
|
286
284
|
const amountAfterFormatted = (0, viem_1.formatEther)(balanceAfter);
|
|
287
|
-
|
|
288
|
-
|
|
285
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] ETH Sweep complete: ${amountFormatted} ETH → ${toAddress}`);
|
|
286
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Tx hash: ${txHash}`);
|
|
289
287
|
await adapter?.updateWalletBalanceById({
|
|
290
288
|
id: wallet.id,
|
|
291
289
|
balance: amountAfterFormatted,
|
|
292
|
-
type:
|
|
290
|
+
type: "native",
|
|
293
291
|
});
|
|
294
292
|
await (0, db_context_1.dbQuery)(`INSERT INTO sweep_history
|
|
295
293
|
(wallet_address, batch_sweep_id, chain_id, token, amount, balance_before, balance_after, to_address, tx_hash, status, created_at)
|
|
296
294
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())`, [
|
|
297
|
-
walletAddress,
|
|
298
|
-
batchSweepId,
|
|
299
|
-
chainConfig.
|
|
300
|
-
"ETH",
|
|
301
|
-
amountFormatted,
|
|
302
|
-
amountFormatted,
|
|
303
|
-
amountAfterFormatted,
|
|
304
|
-
toAddress,
|
|
305
|
-
txHash,
|
|
306
|
-
"success"
|
|
295
|
+
walletAddress,
|
|
296
|
+
batchSweepId,
|
|
297
|
+
chainConfig.chainKey,
|
|
298
|
+
"ETH",
|
|
299
|
+
amountFormatted,
|
|
300
|
+
amountFormatted,
|
|
301
|
+
amountAfterFormatted,
|
|
302
|
+
toAddress,
|
|
303
|
+
txHash,
|
|
304
|
+
"success",
|
|
307
305
|
]);
|
|
308
306
|
return { txHash, amount: amountFormatted };
|
|
309
307
|
}
|
|
@@ -313,23 +311,23 @@ const sweepNativeETH = async (wallet, chainConfig) => {
|
|
|
313
311
|
err?.details?.includes("AA10") ||
|
|
314
312
|
err?.cause?.details?.includes("AA10");
|
|
315
313
|
if (isSenderAlreadyConstructed) {
|
|
316
|
-
|
|
314
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Wallet ${walletAddress} already deployed (AA10) — skipping`);
|
|
317
315
|
return { txHash: "", amount: "0" };
|
|
318
316
|
}
|
|
319
317
|
await (0, db_context_1.dbQuery)(`INSERT INTO sweep_history
|
|
320
318
|
(wallet_address, batch_sweep_id, chain_id, token, amount, balance_before, balance_after, to_address, tx_hash, status, error, created_at)
|
|
321
319
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())`, [
|
|
322
|
-
walletAddress,
|
|
323
|
-
batchSweepId,
|
|
324
|
-
chainConfig.
|
|
325
|
-
"ETH",
|
|
326
|
-
"0",
|
|
327
|
-
null,
|
|
328
|
-
null,
|
|
329
|
-
null,
|
|
330
|
-
null,
|
|
331
|
-
"failed",
|
|
332
|
-
err instanceof Error ? err.message : "Unknown error",
|
|
320
|
+
walletAddress,
|
|
321
|
+
batchSweepId,
|
|
322
|
+
chainConfig.chainKey,
|
|
323
|
+
"ETH",
|
|
324
|
+
"0",
|
|
325
|
+
null,
|
|
326
|
+
null,
|
|
327
|
+
null,
|
|
328
|
+
null,
|
|
329
|
+
"failed",
|
|
330
|
+
err instanceof Error ? err.message : "Unknown error",
|
|
333
331
|
]);
|
|
334
332
|
throw err;
|
|
335
333
|
}
|
|
@@ -351,7 +349,7 @@ const getERC20Balance = async (walletAddress, chainConfig, token) => {
|
|
|
351
349
|
return balance;
|
|
352
350
|
}
|
|
353
351
|
catch (err) {
|
|
354
|
-
|
|
352
|
+
// Balance check errors are handled silently as they're not critical
|
|
355
353
|
return 0n;
|
|
356
354
|
}
|
|
357
355
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm.service.js","sourceRoot":"","sources":["../../../../../src/backend/services/chains/evm.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evm.service.js","sourceRoot":"","sources":["../../../../../src/backend/services/chains/evm.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,13 @@ import { Connection } from "@solana/web3.js";
|
|
|
2
2
|
import { TokenKey } from "../../config/constants";
|
|
3
3
|
import { SolanaChainConfig } from "../../config/chains";
|
|
4
4
|
import { Wallet } from "../../../sdk/types";
|
|
5
|
+
import { SweepCallbacks } from "../sweep.worker";
|
|
5
6
|
export declare const getSolanaConnection: (chainConfig: SolanaChainConfig) => Connection;
|
|
6
|
-
export declare const sweepSPLToken: (wallet: Wallet, chainConfig: SolanaChainConfig, token: TokenKey) => Promise<{
|
|
7
|
+
export declare const sweepSPLToken: (wallet: Wallet, chainConfig: SolanaChainConfig, token: TokenKey, callbacks: SweepCallbacks | undefined) => Promise<{
|
|
7
8
|
txHash: string;
|
|
8
9
|
amount: string;
|
|
9
10
|
}>;
|
|
10
|
-
export declare const sweepNativeSOL: (wallet: Wallet, chainConfig: SolanaChainConfig) => Promise<{
|
|
11
|
+
export declare const sweepNativeSOL: (wallet: Wallet, chainConfig: SolanaChainConfig, callbacks: SweepCallbacks | undefined) => Promise<{
|
|
11
12
|
txHash: string;
|
|
12
13
|
amount: string;
|
|
13
14
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana.service.d.ts","sourceRoot":"","sources":["../../../../../src/backend/services/chains/solana.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAOX,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EACL,QAAQ,EAGT,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"solana.service.d.ts","sourceRoot":"","sources":["../../../../../src/backend/services/chains/solana.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAOX,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EACL,QAAQ,EAGT,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAO,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA4CtD,eAAO,MAAM,mBAAmB,GAC9B,aAAa,iBAAiB,KAC7B,UAEF,CAAC;AAGF,eAAO,MAAM,aAAa,GACxB,QAAQ,MAAM,EACd,aAAa,iBAAiB,EAC9B,OAAO,QAAQ,EACf,WAAW,cAAc,GAAG,SAAS,KACpC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2I5C,CAAC;AAGF,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,aAAa,iBAAiB,EAC9B,WAAW,cAAc,GAAG,SAAS,KACpC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwG5C,CAAC;AAGF,eAAO,MAAM,aAAa,GACxB,eAAe,MAAM,EACrB,aAAa,iBAAiB,EAC9B,OAAO,QAAQ,KACd,OAAO,CAAC,MAAM,CAiBhB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,eAAe,MAAM,EACrB,aAAa,iBAAiB,KAC7B,OAAO,CAAC,MAAM,CAQhB,CAAC"}
|
|
@@ -8,6 +8,7 @@ const db_context_1 = require("../../config/db.context");
|
|
|
8
8
|
const constants_1 = require("../../config/constants");
|
|
9
9
|
const hotwallet_1 = require("../../helper/hotwallet");
|
|
10
10
|
const bip39_1 = require("bip39");
|
|
11
|
+
const sweep_worker_1 = require("../sweep.worker");
|
|
11
12
|
let feePayerKeypair = null;
|
|
12
13
|
const getFeePayerKeypair = () => {
|
|
13
14
|
if (!feePayerKeypair) {
|
|
@@ -45,14 +46,14 @@ const getSolanaConnection = (chainConfig) => {
|
|
|
45
46
|
};
|
|
46
47
|
exports.getSolanaConnection = getSolanaConnection;
|
|
47
48
|
// ─── SPL Token Sweep ──────────────────────────────────────────────────────────
|
|
48
|
-
const sweepSPLToken = async (wallet, chainConfig, token) => {
|
|
49
|
+
const sweepSPLToken = async (wallet, chainConfig, token, callbacks) => {
|
|
49
50
|
const tokenMint = chainConfig.tokens[token];
|
|
50
51
|
const walletAddress = wallet.address;
|
|
51
52
|
const toAddress = (0, hotwallet_1.getSolanaHotWallet)();
|
|
52
53
|
const adapter = (0, db_context_1.getDBAdapter)();
|
|
53
54
|
const batchSweepId = (0, hotwallet_1.getBatchSweepId)();
|
|
54
55
|
if (!tokenMint) {
|
|
55
|
-
|
|
56
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] ${token} not configured, skipping ${walletAddress}`);
|
|
56
57
|
return { txHash: "", amount: "0" };
|
|
57
58
|
}
|
|
58
59
|
try {
|
|
@@ -69,16 +70,16 @@ const sweepSPLToken = async (wallet, chainConfig, token) => {
|
|
|
69
70
|
tokenAccountInfo = await (0, spl_token_1.getAccount)(connection, userTokenAccount);
|
|
70
71
|
}
|
|
71
72
|
catch {
|
|
72
|
-
|
|
73
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] No ${token} token account for ${walletAddress}, skipping`);
|
|
73
74
|
return { txHash: "", amount: "0" };
|
|
74
75
|
}
|
|
75
76
|
const balance = tokenAccountInfo.amount;
|
|
76
77
|
const threshold = BigInt(Math.floor(constants_1.SWEEP_THRESHOLD_USD * 1000000));
|
|
77
78
|
if (balance < threshold) {
|
|
78
|
-
|
|
79
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] ${token} balance too low for ${walletAddress}, skipping`);
|
|
79
80
|
return { txHash: "", amount: "0" };
|
|
80
81
|
}
|
|
81
|
-
|
|
82
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Wallet ${walletAddress} ${token} balance: ${balance}`);
|
|
82
83
|
const hotWalletTokenAccount = await (0, spl_token_1.getAssociatedTokenAddress)(mintPublicKey, hotWalletPublicKey);
|
|
83
84
|
const transaction = new web3_js_1.Transaction();
|
|
84
85
|
transaction.feePayer = feePayer.publicKey;
|
|
@@ -100,8 +101,8 @@ const sweepSPLToken = async (wallet, chainConfig, token) => {
|
|
|
100
101
|
}
|
|
101
102
|
const amountFormatted = (Number(balance) / 1000000).toFixed(6);
|
|
102
103
|
const amountAfterFormatted = (Number(balanceAfter) / 1000000).toFixed(6);
|
|
103
|
-
|
|
104
|
-
|
|
104
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Sweep complete: ${amountFormatted} ${token} → ${toAddress}`);
|
|
105
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Tx hash: ${txHash}`);
|
|
105
106
|
await adapter?.updateWalletBalanceById({
|
|
106
107
|
id: wallet.id,
|
|
107
108
|
balance: amountAfterFormatted,
|
|
@@ -110,36 +111,36 @@ const sweepSPLToken = async (wallet, chainConfig, token) => {
|
|
|
110
111
|
await (0, db_context_1.dbQuery)(`INSERT INTO sweep_history
|
|
111
112
|
(wallet_address, batch_sweep_id, chain_id, token, amount, balance_before, balance_after, to_address, tx_hash, status, created_at)
|
|
112
113
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())`, [
|
|
113
|
-
walletAddress,
|
|
114
|
-
batchSweepId,
|
|
115
|
-
chainConfig.
|
|
116
|
-
token,
|
|
117
|
-
amountFormatted,
|
|
118
|
-
amountFormatted,
|
|
119
|
-
amountAfterFormatted,
|
|
120
|
-
toAddress,
|
|
121
|
-
txHash,
|
|
122
|
-
"success",
|
|
114
|
+
walletAddress,
|
|
115
|
+
batchSweepId,
|
|
116
|
+
chainConfig.chainKey,
|
|
117
|
+
token,
|
|
118
|
+
amountFormatted,
|
|
119
|
+
amountFormatted,
|
|
120
|
+
amountAfterFormatted,
|
|
121
|
+
toAddress,
|
|
122
|
+
txHash,
|
|
123
|
+
"success",
|
|
123
124
|
]);
|
|
124
125
|
return { txHash, amount: amountFormatted };
|
|
125
126
|
}
|
|
126
127
|
catch (err) {
|
|
127
|
-
|
|
128
|
+
(0, sweep_worker_1.log)(callbacks, "error", `[${chainConfig.name}] SPL sweep failed for ${walletAddress}: ${err}`);
|
|
128
129
|
await (0, db_context_1.dbQuery)(`INSERT INTO sweep_history
|
|
129
130
|
(wallet_address, batch_sweep_id, chain_id, token, amount, tx_hash, status, error, created_at)
|
|
130
131
|
VALUES (?, ?, ?, ?, '0', NULL, 'failed', ?, NOW())`, [
|
|
131
|
-
walletAddress,
|
|
132
|
-
batchSweepId,
|
|
133
|
-
chainConfig.
|
|
134
|
-
token,
|
|
135
|
-
err instanceof Error ? err.message : "Unknown error",
|
|
132
|
+
walletAddress,
|
|
133
|
+
batchSweepId,
|
|
134
|
+
chainConfig.chainKey,
|
|
135
|
+
token,
|
|
136
|
+
err instanceof Error ? err.message : "Unknown error",
|
|
136
137
|
]);
|
|
137
138
|
throw err;
|
|
138
139
|
}
|
|
139
140
|
};
|
|
140
141
|
exports.sweepSPLToken = sweepSPLToken;
|
|
141
142
|
// ─── Native SOL Sweep ─────────────────────────────────────────────────────────
|
|
142
|
-
const sweepNativeSOL = async (wallet, chainConfig) => {
|
|
143
|
+
const sweepNativeSOL = async (wallet, chainConfig, callbacks) => {
|
|
143
144
|
const walletAddress = wallet.address;
|
|
144
145
|
const toAddress = (0, hotwallet_1.getSolanaHotWallet)();
|
|
145
146
|
const adapter = (0, db_context_1.getDBAdapter)();
|
|
@@ -153,18 +154,18 @@ const sweepNativeSOL = async (wallet, chainConfig) => {
|
|
|
153
154
|
const hotWalletPublicKey = new web3_js_1.PublicKey(toAddress);
|
|
154
155
|
const balanceLamports = await connection.getBalance(walletPublicKey);
|
|
155
156
|
const balanceSOL = balanceLamports / web3_js_1.LAMPORTS_PER_SOL;
|
|
156
|
-
|
|
157
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Wallet ${walletAddress} SOL balance: ${balanceSOL}`);
|
|
157
158
|
if (balanceSOL < constants_1.SOL_MIN_SWEEP_THRESHOLD) {
|
|
158
|
-
|
|
159
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] SOL balance too low for ${walletAddress}, skipping`);
|
|
159
160
|
return { txHash: "", amount: "0" };
|
|
160
161
|
}
|
|
161
162
|
const rentExemptMinimum = await connection.getMinimumBalanceForRentExemption(0);
|
|
162
163
|
const sweepAmount = balanceLamports - rentExemptMinimum;
|
|
163
164
|
if (sweepAmount <= 0) {
|
|
164
|
-
|
|
165
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] SOL balance insufficient after rent reserve for ${walletAddress}, skipping`);
|
|
165
166
|
return { txHash: "", amount: "0" };
|
|
166
167
|
}
|
|
167
|
-
|
|
168
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Sweeping ${sweepAmount / web3_js_1.LAMPORTS_PER_SOL} SOL (keeping ${rentExemptMinimum} lamports for rent)`);
|
|
168
169
|
const transaction = new web3_js_1.Transaction();
|
|
169
170
|
transaction.feePayer = feePayer.publicKey;
|
|
170
171
|
transaction.add(web3_js_1.SystemProgram.transfer({
|
|
@@ -176,8 +177,8 @@ const sweepNativeSOL = async (wallet, chainConfig) => {
|
|
|
176
177
|
const balanceAfterLamports = await connection.getBalance(walletPublicKey);
|
|
177
178
|
const amountFormatted = (sweepAmount / web3_js_1.LAMPORTS_PER_SOL).toFixed(9);
|
|
178
179
|
const amountAfterFormatted = (balanceAfterLamports / web3_js_1.LAMPORTS_PER_SOL).toFixed(9);
|
|
179
|
-
|
|
180
|
-
|
|
180
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] SOL Sweep complete: ${amountFormatted} SOL → ${toAddress}`);
|
|
181
|
+
(0, sweep_worker_1.log)(callbacks, "info", `[${chainConfig.name}] Tx hash: ${txHash}`);
|
|
181
182
|
await adapter?.updateWalletBalanceById({
|
|
182
183
|
id: wallet.id,
|
|
183
184
|
balance: amountAfterFormatted,
|
|
@@ -188,7 +189,7 @@ const sweepNativeSOL = async (wallet, chainConfig) => {
|
|
|
188
189
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'success', NOW())`, [
|
|
189
190
|
walletAddress,
|
|
190
191
|
batchSweepId,
|
|
191
|
-
chainConfig.
|
|
192
|
+
chainConfig.chainKey,
|
|
192
193
|
"SOL",
|
|
193
194
|
amountFormatted,
|
|
194
195
|
amountFormatted,
|
|
@@ -199,13 +200,13 @@ const sweepNativeSOL = async (wallet, chainConfig) => {
|
|
|
199
200
|
return { txHash, amount: amountFormatted };
|
|
200
201
|
}
|
|
201
202
|
catch (err) {
|
|
202
|
-
|
|
203
|
+
(0, sweep_worker_1.log)(callbacks, "error", `[${chainConfig.name}] SOL sweep failed for ${walletAddress}: ${err}`);
|
|
203
204
|
await (0, db_context_1.dbQuery)(`INSERT INTO sweep_history
|
|
204
205
|
(wallet_address, batch_sweep_id, chain_id, token, amount, tx_hash, status, error, created_at)
|
|
205
206
|
VALUES (?, ?, ?, ?, '0', NULL, 'failed', ?, NOW())`, [
|
|
206
207
|
walletAddress,
|
|
207
208
|
batchSweepId,
|
|
208
|
-
chainConfig.
|
|
209
|
+
chainConfig.chainKey,
|
|
209
210
|
"SOL",
|
|
210
211
|
err instanceof Error ? err.message : "Unknown error",
|
|
211
212
|
]);
|