@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 CHANGED
@@ -187,11 +187,16 @@ var formatErrFn = (error) => {
187
187
  if (isNoPendingWithdrawals) {
188
188
  formatError = "no pending withdrawals";
189
189
  }
190
- 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"];
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 errStr = error?.message || error?.toString()?.toLowerCase() || "";
252
- const errorMsg1 = typeof error === "string" ? error : error instanceof Error ? error.message : typeof error.message === "string" ? error.message : JSON.stringify(error);
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
- const rpc = "https://unipay-solanam-6275.mainnet.rpcpool.com";
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 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"];
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 errStr = error?.message || error?.toString()?.toLowerCase() || "";
218
- const errorMsg1 = typeof error === "string" ? error : error instanceof Error ? error.message : typeof error.message === "string" ? error.message : JSON.stringify(error);
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
- const rpc = "https://unipay-solanam-6275.mainnet.rpcpool.com";
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primuslabs/fund-js-sdk",
3
- "version": "0.1.27",
3
+ "version": "0.1.29",
4
4
  "author": "Primus Labs <dev@primuslabs.org>",
5
5
  "description": "Primus fund js sdk",
6
6
  "repository": {