permissionless 0.1.40 → 0.1.41

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # permissionless
2
2
 
3
+ ## 0.1.41
4
+
5
+ ### Patch Changes
6
+
7
+ - 299513dfee5054a3d59591f4bf11cb145783988d: Added decodeNonce util function
8
+
3
9
  ## 0.1.40
4
10
 
5
11
  ### Patch Changes
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeNonce = void 0;
4
+ const viem_1 = require("viem");
5
+ function decodeNonce(nonce) {
6
+ const parsedNonce = BigInt((0, viem_1.toHex)(nonce, { size: 32 }));
7
+ const key = parsedNonce >> BigInt(64);
8
+ const sequence = parsedNonce & BigInt("0xFFFFFFFFFFFFFFFF");
9
+ return { key, sequence };
10
+ }
11
+ exports.decodeNonce = decodeNonce;
12
+ //# sourceMappingURL=decodeNonce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decodeNonce.js","sourceRoot":"","sources":["../../utils/decodeNonce.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAE5B,SAAgB,WAAW,CAAC,KAAa;IACrC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAA,YAAK,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAEtD,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAE3D,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAA;AAC5B,CAAC;AAPD,kCAOC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ENTRYPOINT_ADDRESS_V07 = exports.ENTRYPOINT_ADDRESS_V06 = exports.encodeNonce = exports.getEntryPointVersion = exports.getPackedUserOperation = exports.getAddressFromInitCodeOrPaymasterAndData = exports.providerToSmartAccountSigner = exports.isSmartAccountDeployed = exports.AccountOrClientNotFoundError = exports.signUserOperationHashWithECDSA = exports.walletClientToSmartAccountSigner = exports.getRequiredPrefund = exports.getUserOperationHash = exports.deepHexlify = exports.transactionReceiptStatus = exports.parseAccount = void 0;
3
+ exports.ENTRYPOINT_ADDRESS_V07 = exports.ENTRYPOINT_ADDRESS_V06 = exports.decodeNonce = exports.encodeNonce = exports.getEntryPointVersion = exports.getPackedUserOperation = exports.getAddressFromInitCodeOrPaymasterAndData = exports.providerToSmartAccountSigner = exports.isSmartAccountDeployed = exports.AccountOrClientNotFoundError = exports.signUserOperationHashWithECDSA = exports.walletClientToSmartAccountSigner = exports.getRequiredPrefund = exports.getUserOperationHash = exports.deepHexlify = exports.transactionReceiptStatus = exports.parseAccount = void 0;
4
4
  const deepHexlify_1 = require("./deepHexlify.js");
5
5
  Object.defineProperty(exports, "deepHexlify", { enumerable: true, get: function () { return deepHexlify_1.deepHexlify; } });
6
6
  Object.defineProperty(exports, "transactionReceiptStatus", { enumerable: true, get: function () { return deepHexlify_1.transactionReceiptStatus; } });
@@ -25,6 +25,8 @@ function parseAccount(account) {
25
25
  return account;
26
26
  }
27
27
  exports.parseAccount = parseAccount;
28
+ const decodeNonce_1 = require("./decodeNonce.js");
29
+ Object.defineProperty(exports, "decodeNonce", { enumerable: true, get: function () { return decodeNonce_1.decodeNonce; } });
28
30
  const encodeNonce_1 = require("./encodeNonce.js");
29
31
  Object.defineProperty(exports, "encodeNonce", { enumerable: true, get: function () { return encodeNonce_1.encodeNonce; } });
30
32
  const getEntryPointVersion_1 = require("./getEntryPointVersion.js");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":";;;AACA,+CAAqE;AAmCjE,4FAnCK,yBAAW,OAmCL;AADX,yGAlCkB,sCAAwB,OAkClB;AAjC5B,yGAAqG;AA6CjG,yHA7CK,mFAAwC,OA6CL;AA5C5C,6DAG6B;AAgCzB,mGAjCA,uCAAkB,OAiCA;AA/BtB,iEAG+B;AA2B3B,qGA5BA,2CAAoB,OA4BA;AA1BxB,qEAAiE;AAkC7D,uGAlCK,+CAAsB,OAkCL;AAjC1B,iFAA6E;AAkCzE,6GAlCK,2DAA4B,OAkCL;AAjChC,qFAIyC;AA2BrC,6GA9BA,6DAA4B,OA8BA;AAF5B,+GA1BA,+DAA8B,OA0BA;AAxBlC,yFAAqF;AAqBjF,iHArBK,mEAAgC,OAqBL;AAnBpC,SAAgB,YAAY,CAAC,OAA0B;IACnD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;IACjD,OAAO,OAAO,CAAA;AAClB,CAAC;AAJD,oCAIC;AACD,+CAA2C;AAyBvC,4FAzBK,yBAAW,OAyBL;AAxBf,iEAI+B;AAqB3B,uGAxBA,6CAAsB,OAwBA;AACtB,uGAxBA,6CAAsB,OAwBA;AAHtB,qGApBA,2CAAoB,OAoBA;AAjBxB,qEAAiE;AAgB7D,uGAhBK,+CAAsB,OAgBL"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":";;;AACA,+CAAqE;AAoCjE,4FApCK,yBAAW,OAoCL;AADX,yGAnCkB,sCAAwB,OAmClB;AAlC5B,yGAAqG;AA8CjG,yHA9CK,mFAAwC,OA8CL;AA7C5C,6DAG6B;AAiCzB,mGAlCA,uCAAkB,OAkCA;AAhCtB,iEAG+B;AA4B3B,qGA7BA,2CAAoB,OA6BA;AA3BxB,qEAAiE;AAmC7D,uGAnCK,+CAAsB,OAmCL;AAlC1B,iFAA6E;AAmCzE,6GAnCK,2DAA4B,OAmCL;AAlChC,qFAIyC;AA4BrC,6GA/BA,6DAA4B,OA+BA;AAF5B,+GA3BA,+DAA8B,OA2BA;AAzBlC,yFAAqF;AAsBjF,iHAtBK,mEAAgC,OAsBL;AApBpC,SAAgB,YAAY,CAAC,OAA0B;IACnD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;IACjD,OAAO,OAAO,CAAA;AAClB,CAAC;AAJD,oCAIC;AACD,+CAA2C;AA2BvC,4FA3BK,yBAAW,OA2BL;AA1Bf,+CAA2C;AAyBvC,4FAzBK,yBAAW,OAyBL;AAxBf,iEAI+B;AAsB3B,uGAzBA,6CAAsB,OAyBA;AACtB,uGAzBA,6CAAsB,OAyBA;AAJtB,qGApBA,2CAAoB,OAoBA;AAjBxB,qEAAiE;AAgB7D,uGAhBK,+CAAsB,OAgBL"}
@@ -0,0 +1,8 @@
1
+ import { toHex } from "viem";
2
+ export function decodeNonce(nonce) {
3
+ const parsedNonce = BigInt(toHex(nonce, { size: 32 }));
4
+ const key = parsedNonce >> BigInt(64);
5
+ const sequence = parsedNonce & BigInt("0xFFFFFFFFFFFFFFFF");
6
+ return { key, sequence };
7
+ }
8
+ //# sourceMappingURL=decodeNonce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decodeNonce.js","sourceRoot":"","sources":["../../utils/decodeNonce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAE5B,MAAM,UAAU,WAAW,CAAC,KAAa;IACrC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAEtD,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAE3D,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAA;AAC5B,CAAC"}
@@ -11,8 +11,9 @@ export function parseAccount(account) {
11
11
  return { address: account, type: "json-rpc" };
12
12
  return account;
13
13
  }
14
+ import { decodeNonce } from "./decodeNonce.js";
14
15
  import { encodeNonce } from "./encodeNonce.js";
15
16
  import { ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07, getEntryPointVersion } from "./getEntryPointVersion.js";
16
17
  import { getPackedUserOperation } from "./getPackedUserOperation.js";
17
- export { transactionReceiptStatus, deepHexlify, getUserOperationHash, getRequiredPrefund, walletClientToSmartAccountSigner, signUserOperationHashWithECDSA, AccountOrClientNotFoundError, isSmartAccountDeployed, providerToSmartAccountSigner, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, getEntryPointVersion, encodeNonce, ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07 };
18
+ export { transactionReceiptStatus, deepHexlify, getUserOperationHash, getRequiredPrefund, walletClientToSmartAccountSigner, signUserOperationHashWithECDSA, AccountOrClientNotFoundError, isSmartAccountDeployed, providerToSmartAccountSigner, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, getEntryPointVersion, encodeNonce, decodeNonce, ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07 };
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,EAEH,kBAAkB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEH,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EACH,4BAA4B,EAE5B,8BAA8B,EACjC,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAA;AAErF,MAAM,UAAU,YAAY,CAAC,OAA0B;IACnD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;IACjD,OAAO,OAAO,CAAA;AAClB,CAAC;AACD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EACH,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EACH,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gCAAgC,EAGhC,8BAA8B,EAE9B,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,EAC5B,wCAAwC,EACxC,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACzB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,EAEH,kBAAkB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEH,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EACH,4BAA4B,EAE5B,8BAA8B,EACjC,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAA;AAErF,MAAM,UAAU,YAAY,CAAC,OAA0B;IACnD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;IACjD,OAAO,OAAO,CAAA;AAClB,CAAC;AACD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EACH,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EACH,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gCAAgC,EAGhC,8BAA8B,EAE9B,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,EAC5B,wCAAwC,EACxC,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACzB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare function decodeNonce(nonce: bigint): {
2
+ key: bigint;
3
+ sequence: bigint;
4
+ };
5
+ //# sourceMappingURL=decodeNonce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decodeNonce.d.ts","sourceRoot":"","sources":["../../utils/decodeNonce.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAO5E"}
@@ -8,8 +8,9 @@ import { providerToSmartAccountSigner } from "./providerToSmartAccountSigner";
8
8
  import { AccountOrClientNotFoundError, type SignUserOperationHashWithECDSAParams, signUserOperationHashWithECDSA } from "./signUserOperationHashWithECDSA";
9
9
  import { walletClientToSmartAccountSigner } from "./walletClientToSmartAccountSigner";
10
10
  export declare function parseAccount(account: Address | Account): Account;
11
+ import { decodeNonce } from "./decodeNonce";
11
12
  import { encodeNonce } from "./encodeNonce";
12
13
  import { ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07, getEntryPointVersion } from "./getEntryPointVersion";
13
14
  import { getPackedUserOperation } from "./getPackedUserOperation";
14
- export { transactionReceiptStatus, deepHexlify, getUserOperationHash, getRequiredPrefund, walletClientToSmartAccountSigner, type GetRequiredPrefundReturnType, type GetUserOperationHashParams, signUserOperationHashWithECDSA, type SignUserOperationHashWithECDSAParams, AccountOrClientNotFoundError, isSmartAccountDeployed, providerToSmartAccountSigner, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, getEntryPointVersion, encodeNonce, ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07 };
15
+ export { transactionReceiptStatus, deepHexlify, getUserOperationHash, getRequiredPrefund, walletClientToSmartAccountSigner, type GetRequiredPrefundReturnType, type GetUserOperationHashParams, signUserOperationHashWithECDSA, type SignUserOperationHashWithECDSAParams, AccountOrClientNotFoundError, isSmartAccountDeployed, providerToSmartAccountSigner, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, getEntryPointVersion, encodeNonce, decodeNonce, ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07 };
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,EACH,KAAK,4BAA4B,EACjC,kBAAkB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACH,KAAK,0BAA0B,EAC/B,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EACH,4BAA4B,EAC5B,KAAK,oCAAoC,EACzC,8BAA8B,EACjC,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAA;AAErF,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAIhE;AACD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EACH,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EACH,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gCAAgC,EAChC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,8BAA8B,EAC9B,KAAK,oCAAoC,EACzC,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,EAC5B,wCAAwC,EACxC,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACzB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAA;AACrG,OAAO,EACH,KAAK,4BAA4B,EACjC,kBAAkB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACH,KAAK,0BAA0B,EAC/B,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EACH,4BAA4B,EAC5B,KAAK,oCAAoC,EACzC,8BAA8B,EACjC,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAA;AAErF,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAIhE;AACD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EACH,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EACH,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,gCAAgC,EAChC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,8BAA8B,EAC9B,KAAK,oCAAoC,EACzC,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,EAC5B,wCAAwC,EACxC,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACzB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "permissionless",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "author": "Pimlico",
5
5
  "homepage": "https://docs.pimlico.io/permissionless",
6
6
  "repository": "github:pimlicolabs/permissionless.js",
@@ -0,0 +1,40 @@
1
+ import { describe, expect, test } from "vitest"
2
+ import { decodeNonce, encodeNonce } from "./index"
3
+
4
+ describe("decodeNonce", () => {
5
+ test("should encode key and sequence correctly", async () => {
6
+ const key = 123456789012345678901234n
7
+ const sequence = 9876543210n
8
+
9
+ const result = encodeNonce({ key, sequence })
10
+
11
+ const decodedNonce = decodeNonce(result)
12
+
13
+ expect(decodedNonce.key).toBe(key)
14
+ expect(decodedNonce.sequence).toBe(sequence)
15
+ })
16
+
17
+ test("should handle zero values correctly", () => {
18
+ const key = BigInt(0)
19
+ const sequence = BigInt(0)
20
+
21
+ const result = encodeNonce({ key, sequence })
22
+
23
+ const decodedNonce = decodeNonce(result)
24
+
25
+ expect(decodedNonce.key).toBe(key)
26
+ expect(decodedNonce.sequence).toBe(sequence)
27
+ })
28
+
29
+ test("should handle large values correctly", () => {
30
+ const key = BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFF")
31
+ const sequence = BigInt("0xFFFFFFFF")
32
+
33
+ const result = encodeNonce({ key, sequence })
34
+
35
+ const decodedNonce = decodeNonce(result)
36
+
37
+ expect(decodedNonce.key).toBe(key)
38
+ expect(decodedNonce.sequence).toBe(sequence)
39
+ })
40
+ })
@@ -0,0 +1,10 @@
1
+ import { toHex } from "viem"
2
+
3
+ export function decodeNonce(nonce: bigint): { key: bigint; sequence: bigint } {
4
+ const parsedNonce = BigInt(toHex(nonce, { size: 32 }))
5
+
6
+ const key = parsedNonce >> BigInt(64)
7
+ const sequence = parsedNonce & BigInt("0xFFFFFFFFFFFFFFFF")
8
+
9
+ return { key, sequence }
10
+ }
@@ -1,6 +1,6 @@
1
- import { encodeNonce } from "permissionless/utils"
2
1
  import { toHex } from "viem"
3
2
  import { describe, expect, test } from "vitest"
3
+ import { encodeNonce } from "./index"
4
4
 
5
5
  describe("encodeNonce", () => {
6
6
  test("should encode key and sequence correctly", async () => {
package/utils/index.ts CHANGED
@@ -23,6 +23,7 @@ export function parseAccount(account: Address | Account): Account {
23
23
  return { address: account, type: "json-rpc" }
24
24
  return account
25
25
  }
26
+ import { decodeNonce } from "./decodeNonce"
26
27
  import { encodeNonce } from "./encodeNonce"
27
28
  import {
28
29
  ENTRYPOINT_ADDRESS_V06,
@@ -49,6 +50,7 @@ export {
49
50
  getPackedUserOperation,
50
51
  getEntryPointVersion,
51
52
  encodeNonce,
53
+ decodeNonce,
52
54
  ENTRYPOINT_ADDRESS_V06,
53
55
  ENTRYPOINT_ADDRESS_V07
54
56
  }