@primuslabs/fund-js-sdk 0.1.27 → 0.1.29
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/index.js +25 -33
- package/dist/index.mjs +25 -34
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -187,11 +187,16 @@ var formatErrFn = (error) => {
|
|
|
187
187
|
if (isNoPendingWithdrawals) {
|
|
188
188
|
formatError = "no pending withdrawals";
|
|
189
189
|
}
|
|
190
|
-
const insufficientBalanceErrStrArr = ["insufficient
|
|
190
|
+
const insufficientBalanceErrStrArr = ["insufficient", "The caller does not have enough funds for value transfer.", "insufficient lamports", "Attempt to debit an account but found no record of a prior credit"];
|
|
191
191
|
const isInsufficientBalance = hasErrorFlagFn(curErrorStrArr, insufficientBalanceErrStrArr);
|
|
192
192
|
if (isInsufficientBalance) {
|
|
193
193
|
formatError = "insufficient balance";
|
|
194
194
|
}
|
|
195
|
+
const mayInsufficientBalanceErrStrArr = ["unpredictable_gas_limit"];
|
|
196
|
+
const isMayInsufficientBalance = hasErrorFlagFn(curErrorStrArr, mayInsufficientBalanceErrStrArr);
|
|
197
|
+
if (isMayInsufficientBalance) {
|
|
198
|
+
formatError = "may insufficient balance";
|
|
199
|
+
}
|
|
195
200
|
const alreadyClaimedErrStrArr = ["Already claimed"];
|
|
196
201
|
const isAlreadyClaimed = hasErrorFlagFn(curErrorStrArr, alreadyClaimedErrStrArr);
|
|
197
202
|
if (isAlreadyClaimed) {
|
|
@@ -248,35 +253,8 @@ var Contract = class {
|
|
|
248
253
|
resolve(tx.hash);
|
|
249
254
|
} catch (error) {
|
|
250
255
|
console.log("sendTransaction error:", error);
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
const errorMsg2 = typeof error === "object" ? JSON.stringify(error) : error?.toString();
|
|
254
|
-
const curErrorStrArr = [errorMsg1, errorMsg2];
|
|
255
|
-
const userRejectErrStrArr = ["user rejected", "approval denied"];
|
|
256
|
-
const isUserRejected = hasErrorFlagFn(curErrorStrArr, userRejectErrStrArr);
|
|
257
|
-
if (error?.code === "ACTION_REJECTED" || isUserRejected) {
|
|
258
|
-
return reject("user rejected transaction");
|
|
259
|
-
}
|
|
260
|
-
const isNoPendingWithdrawals = hasErrorFlagFn(curErrorStrArr, ["no pending withdrawals"]);
|
|
261
|
-
if (isNoPendingWithdrawals) {
|
|
262
|
-
return reject("no pending withdrawals");
|
|
263
|
-
}
|
|
264
|
-
const insufficientBalanceErrStrArr = ["insufficient balance", "INSUFFICIENT_FUNDS", "The caller does not have enough funds for value transfer.", "insufficient lamports", "Attempt to debit an account but found no record of a prior credit"];
|
|
265
|
-
const isInsufficientBalance = hasErrorFlagFn(curErrorStrArr, insufficientBalanceErrStrArr);
|
|
266
|
-
if (isInsufficientBalance) {
|
|
267
|
-
return reject("insufficient balance");
|
|
268
|
-
}
|
|
269
|
-
const alreadyClaimedErrStrArr = ["Already claimed"];
|
|
270
|
-
const isAlreadyClaimed = hasErrorFlagFn(curErrorStrArr, alreadyClaimedErrStrArr);
|
|
271
|
-
if (isAlreadyClaimed) {
|
|
272
|
-
return reject("already claimed");
|
|
273
|
-
}
|
|
274
|
-
const allClaimedErrStrArr = ["All claimed"];
|
|
275
|
-
const isAllClaimed = hasErrorFlagFn(curErrorStrArr, allClaimedErrStrArr);
|
|
276
|
-
if (isAllClaimed) {
|
|
277
|
-
return reject("all claimed");
|
|
278
|
-
}
|
|
279
|
-
return reject(error);
|
|
256
|
+
const formatErr = formatErrFn(error);
|
|
257
|
+
return reject(formatErr);
|
|
280
258
|
}
|
|
281
259
|
});
|
|
282
260
|
}
|
|
@@ -3008,6 +2986,12 @@ var getTxIsOnProcess = (err) => {
|
|
|
3008
2986
|
const isOnProcess = hasErrorFlagFn(curErrorStrArr, strArr);
|
|
3009
2987
|
return isOnProcess;
|
|
3010
2988
|
};
|
|
2989
|
+
async function isSolanaBalanceZero(connection, userPK) {
|
|
2990
|
+
const balanceLamports = await connection.getBalance(userPK);
|
|
2991
|
+
const balanceSOL = balanceLamports / 1e9;
|
|
2992
|
+
console.log(`Account balance: ${balanceSOL} SOL`);
|
|
2993
|
+
return balanceSOL <= 0;
|
|
2994
|
+
}
|
|
3011
2995
|
|
|
3012
2996
|
// src/config/redPacketIdl.json
|
|
3013
2997
|
var redPacketIdl_default = {
|
|
@@ -5882,6 +5866,13 @@ async function reClaim({
|
|
|
5882
5866
|
console.log("primusZktlsPda:", primusZktlsPda.toBase58());
|
|
5883
5867
|
console.log("reRecordPda:", reRecordPda.toBase58());
|
|
5884
5868
|
const attRecipient = new import_web33.PublicKey(attObj.recipient);
|
|
5869
|
+
const isEmptyWallet = await isSolanaBalanceZero(provider.connection, attRecipient);
|
|
5870
|
+
if (isEmptyWallet) {
|
|
5871
|
+
const err = "insufficient";
|
|
5872
|
+
const formatErr = formatErrFn(err);
|
|
5873
|
+
reject(formatErr);
|
|
5874
|
+
return;
|
|
5875
|
+
}
|
|
5885
5876
|
const redEnvelopeState = await redEnvelopeProgram.account.redEnvelopeState.fetch(redEnvelopePda);
|
|
5886
5877
|
console.log("redEnvelopeState.feeRecipient", redEnvelopeState.feeRecipient.toBase58());
|
|
5887
5878
|
const feeRecipient = redEnvelopeState.feeRecipient;
|
|
@@ -5958,8 +5949,11 @@ async function reClaim({
|
|
|
5958
5949
|
tx = new import_web33.Transaction().add(instruction);
|
|
5959
5950
|
tx.feePayer = userKey;
|
|
5960
5951
|
tx.recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash;
|
|
5952
|
+
signatureStr = await provider.sendAndConfirm(tx);
|
|
5953
|
+
return resolve(signatureStr);
|
|
5961
5954
|
console.log("UnSigned tx size:", tx.serialize({ requireAllSignatures: false, verifySignatures: false }).length, "bytes");
|
|
5962
5955
|
const signedTx = await provider.wallet.signTransaction(tx);
|
|
5956
|
+
signedTx.partialSign();
|
|
5963
5957
|
signatureStr = getTxSigStrFromTx(signedTx);
|
|
5964
5958
|
const isOnChain = await getTxIsOnChain(signatureStr, provider.connection);
|
|
5965
5959
|
if (isOnChain) {
|
|
@@ -5968,9 +5962,7 @@ async function reClaim({
|
|
|
5968
5962
|
} else {
|
|
5969
5963
|
const serializeSignedTx = signedTx.serialize();
|
|
5970
5964
|
console.log("Signed tx size:", serializeSignedTx.length, "bytes");
|
|
5971
|
-
|
|
5972
|
-
const rpcConnection = new import_web33.Connection(rpc);
|
|
5973
|
-
signatureStr = await rpcConnection.sendRawTransaction(serializeSignedTx);
|
|
5965
|
+
signatureStr = await provider.connection.sendRawTransaction(serializeSignedTx);
|
|
5974
5966
|
console.log("reClaim done ", signatureStr);
|
|
5975
5967
|
return resolve(signatureStr);
|
|
5976
5968
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -153,11 +153,16 @@ var formatErrFn = (error) => {
|
|
|
153
153
|
if (isNoPendingWithdrawals) {
|
|
154
154
|
formatError = "no pending withdrawals";
|
|
155
155
|
}
|
|
156
|
-
const insufficientBalanceErrStrArr = ["insufficient
|
|
156
|
+
const insufficientBalanceErrStrArr = ["insufficient", "The caller does not have enough funds for value transfer.", "insufficient lamports", "Attempt to debit an account but found no record of a prior credit"];
|
|
157
157
|
const isInsufficientBalance = hasErrorFlagFn(curErrorStrArr, insufficientBalanceErrStrArr);
|
|
158
158
|
if (isInsufficientBalance) {
|
|
159
159
|
formatError = "insufficient balance";
|
|
160
160
|
}
|
|
161
|
+
const mayInsufficientBalanceErrStrArr = ["unpredictable_gas_limit"];
|
|
162
|
+
const isMayInsufficientBalance = hasErrorFlagFn(curErrorStrArr, mayInsufficientBalanceErrStrArr);
|
|
163
|
+
if (isMayInsufficientBalance) {
|
|
164
|
+
formatError = "may insufficient balance";
|
|
165
|
+
}
|
|
161
166
|
const alreadyClaimedErrStrArr = ["Already claimed"];
|
|
162
167
|
const isAlreadyClaimed = hasErrorFlagFn(curErrorStrArr, alreadyClaimedErrStrArr);
|
|
163
168
|
if (isAlreadyClaimed) {
|
|
@@ -214,35 +219,8 @@ var Contract = class {
|
|
|
214
219
|
resolve(tx.hash);
|
|
215
220
|
} catch (error) {
|
|
216
221
|
console.log("sendTransaction error:", error);
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
const errorMsg2 = typeof error === "object" ? JSON.stringify(error) : error?.toString();
|
|
220
|
-
const curErrorStrArr = [errorMsg1, errorMsg2];
|
|
221
|
-
const userRejectErrStrArr = ["user rejected", "approval denied"];
|
|
222
|
-
const isUserRejected = hasErrorFlagFn(curErrorStrArr, userRejectErrStrArr);
|
|
223
|
-
if (error?.code === "ACTION_REJECTED" || isUserRejected) {
|
|
224
|
-
return reject("user rejected transaction");
|
|
225
|
-
}
|
|
226
|
-
const isNoPendingWithdrawals = hasErrorFlagFn(curErrorStrArr, ["no pending withdrawals"]);
|
|
227
|
-
if (isNoPendingWithdrawals) {
|
|
228
|
-
return reject("no pending withdrawals");
|
|
229
|
-
}
|
|
230
|
-
const insufficientBalanceErrStrArr = ["insufficient balance", "INSUFFICIENT_FUNDS", "The caller does not have enough funds for value transfer.", "insufficient lamports", "Attempt to debit an account but found no record of a prior credit"];
|
|
231
|
-
const isInsufficientBalance = hasErrorFlagFn(curErrorStrArr, insufficientBalanceErrStrArr);
|
|
232
|
-
if (isInsufficientBalance) {
|
|
233
|
-
return reject("insufficient balance");
|
|
234
|
-
}
|
|
235
|
-
const alreadyClaimedErrStrArr = ["Already claimed"];
|
|
236
|
-
const isAlreadyClaimed = hasErrorFlagFn(curErrorStrArr, alreadyClaimedErrStrArr);
|
|
237
|
-
if (isAlreadyClaimed) {
|
|
238
|
-
return reject("already claimed");
|
|
239
|
-
}
|
|
240
|
-
const allClaimedErrStrArr = ["All claimed"];
|
|
241
|
-
const isAllClaimed = hasErrorFlagFn(curErrorStrArr, allClaimedErrStrArr);
|
|
242
|
-
if (isAllClaimed) {
|
|
243
|
-
return reject("all claimed");
|
|
244
|
-
}
|
|
245
|
-
return reject(error);
|
|
222
|
+
const formatErr = formatErrFn(error);
|
|
223
|
+
return reject(formatErr);
|
|
246
224
|
}
|
|
247
225
|
});
|
|
248
226
|
}
|
|
@@ -2974,6 +2952,12 @@ var getTxIsOnProcess = (err) => {
|
|
|
2974
2952
|
const isOnProcess = hasErrorFlagFn(curErrorStrArr, strArr);
|
|
2975
2953
|
return isOnProcess;
|
|
2976
2954
|
};
|
|
2955
|
+
async function isSolanaBalanceZero(connection, userPK) {
|
|
2956
|
+
const balanceLamports = await connection.getBalance(userPK);
|
|
2957
|
+
const balanceSOL = balanceLamports / 1e9;
|
|
2958
|
+
console.log(`Account balance: ${balanceSOL} SOL`);
|
|
2959
|
+
return balanceSOL <= 0;
|
|
2960
|
+
}
|
|
2977
2961
|
|
|
2978
2962
|
// src/config/redPacketIdl.json
|
|
2979
2963
|
var redPacketIdl_default = {
|
|
@@ -5547,7 +5531,6 @@ var zktlsIdl_default = {
|
|
|
5547
5531
|
import * as anchor2 from "@coral-xyz/anchor";
|
|
5548
5532
|
import {
|
|
5549
5533
|
PublicKey as PublicKey3,
|
|
5550
|
-
Connection as Connection2,
|
|
5551
5534
|
SystemProgram,
|
|
5552
5535
|
Transaction,
|
|
5553
5536
|
Keypair
|
|
@@ -5856,6 +5839,13 @@ async function reClaim({
|
|
|
5856
5839
|
console.log("primusZktlsPda:", primusZktlsPda.toBase58());
|
|
5857
5840
|
console.log("reRecordPda:", reRecordPda.toBase58());
|
|
5858
5841
|
const attRecipient = new PublicKey3(attObj.recipient);
|
|
5842
|
+
const isEmptyWallet = await isSolanaBalanceZero(provider.connection, attRecipient);
|
|
5843
|
+
if (isEmptyWallet) {
|
|
5844
|
+
const err = "insufficient";
|
|
5845
|
+
const formatErr = formatErrFn(err);
|
|
5846
|
+
reject(formatErr);
|
|
5847
|
+
return;
|
|
5848
|
+
}
|
|
5859
5849
|
const redEnvelopeState = await redEnvelopeProgram.account.redEnvelopeState.fetch(redEnvelopePda);
|
|
5860
5850
|
console.log("redEnvelopeState.feeRecipient", redEnvelopeState.feeRecipient.toBase58());
|
|
5861
5851
|
const feeRecipient = redEnvelopeState.feeRecipient;
|
|
@@ -5932,8 +5922,11 @@ async function reClaim({
|
|
|
5932
5922
|
tx = new Transaction().add(instruction);
|
|
5933
5923
|
tx.feePayer = userKey;
|
|
5934
5924
|
tx.recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash;
|
|
5925
|
+
signatureStr = await provider.sendAndConfirm(tx);
|
|
5926
|
+
return resolve(signatureStr);
|
|
5935
5927
|
console.log("UnSigned tx size:", tx.serialize({ requireAllSignatures: false, verifySignatures: false }).length, "bytes");
|
|
5936
5928
|
const signedTx = await provider.wallet.signTransaction(tx);
|
|
5929
|
+
signedTx.partialSign();
|
|
5937
5930
|
signatureStr = getTxSigStrFromTx(signedTx);
|
|
5938
5931
|
const isOnChain = await getTxIsOnChain(signatureStr, provider.connection);
|
|
5939
5932
|
if (isOnChain) {
|
|
@@ -5942,9 +5935,7 @@ async function reClaim({
|
|
|
5942
5935
|
} else {
|
|
5943
5936
|
const serializeSignedTx = signedTx.serialize();
|
|
5944
5937
|
console.log("Signed tx size:", serializeSignedTx.length, "bytes");
|
|
5945
|
-
|
|
5946
|
-
const rpcConnection = new Connection2(rpc);
|
|
5947
|
-
signatureStr = await rpcConnection.sendRawTransaction(serializeSignedTx);
|
|
5938
|
+
signatureStr = await provider.connection.sendRawTransaction(serializeSignedTx);
|
|
5948
5939
|
console.log("reClaim done ", signatureStr);
|
|
5949
5940
|
return resolve(signatureStr);
|
|
5950
5941
|
}
|