permissionless 0.1.39 → 0.1.40
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 +6 -0
- package/_cjs/utils/encodeNonce.js +11 -0
- package/_cjs/utils/encodeNonce.js.map +1 -0
- package/_cjs/utils/index.js +3 -1
- package/_cjs/utils/index.js.map +1 -1
- package/_esm/utils/encodeNonce.js +7 -0
- package/_esm/utils/encodeNonce.js.map +1 -0
- package/_esm/utils/index.js +2 -1
- package/_esm/utils/index.js.map +1 -1
- package/_types/utils/encodeNonce.d.ts +5 -0
- package/_types/utils/encodeNonce.d.ts.map +1 -0
- package/_types/utils/index.d.ts +2 -1
- package/_types/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/utils/encodeNonce.test.ts +38 -0
- package/utils/encodeNonce.ts +8 -0
- package/utils/index.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encodeNonce = void 0;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
function encodeNonce(args) {
|
|
6
|
+
const key = BigInt((0, viem_1.toHex)(args.key, { size: 24 }));
|
|
7
|
+
const sequence = BigInt((0, viem_1.toHex)(args.sequence, { size: 8 }));
|
|
8
|
+
return (key << BigInt(64)) + sequence;
|
|
9
|
+
}
|
|
10
|
+
exports.encodeNonce = encodeNonce;
|
|
11
|
+
//# sourceMappingURL=encodeNonce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encodeNonce.js","sourceRoot":"","sources":["../../utils/encodeNonce.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAE5B,SAAgB,WAAW,CAAC,IAAuC;IAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAA,YAAK,EAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAA,YAAK,EAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAE1D,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAA;AACzC,CAAC;AALD,kCAKC"}
|
package/_cjs/utils/index.js
CHANGED
|
@@ -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.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.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 encodeNonce_1 = require("./encodeNonce.js");
|
|
29
|
+
Object.defineProperty(exports, "encodeNonce", { enumerable: true, get: function () { return encodeNonce_1.encodeNonce; } });
|
|
28
30
|
const getEntryPointVersion_1 = require("./getEntryPointVersion.js");
|
|
29
31
|
Object.defineProperty(exports, "ENTRYPOINT_ADDRESS_V06", { enumerable: true, get: function () { return getEntryPointVersion_1.ENTRYPOINT_ADDRESS_V06; } });
|
|
30
32
|
Object.defineProperty(exports, "ENTRYPOINT_ADDRESS_V07", { enumerable: true, get: function () { return getEntryPointVersion_1.ENTRYPOINT_ADDRESS_V07; } });
|
package/_cjs/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":";;;AACA,+CAAqE;
|
|
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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { toHex } from "viem";
|
|
2
|
+
export function encodeNonce(args) {
|
|
3
|
+
const key = BigInt(toHex(args.key, { size: 24 }));
|
|
4
|
+
const sequence = BigInt(toHex(args.sequence, { size: 8 }));
|
|
5
|
+
return (key << BigInt(64)) + sequence;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=encodeNonce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encodeNonce.js","sourceRoot":"","sources":["../../utils/encodeNonce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAE5B,MAAM,UAAU,WAAW,CAAC,IAAuC;IAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAE1D,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAA;AACzC,CAAC"}
|
package/_esm/utils/index.js
CHANGED
|
@@ -11,7 +11,8 @@ export function parseAccount(account) {
|
|
|
11
11
|
return { address: account, type: "json-rpc" };
|
|
12
12
|
return account;
|
|
13
13
|
}
|
|
14
|
+
import { encodeNonce } from "./encodeNonce.js";
|
|
14
15
|
import { ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07, getEntryPointVersion } from "./getEntryPointVersion.js";
|
|
15
16
|
import { getPackedUserOperation } from "./getPackedUserOperation.js";
|
|
16
|
-
export { transactionReceiptStatus, deepHexlify, getUserOperationHash, getRequiredPrefund, walletClientToSmartAccountSigner, signUserOperationHashWithECDSA, AccountOrClientNotFoundError, isSmartAccountDeployed, providerToSmartAccountSigner, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, getEntryPointVersion, ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07 };
|
|
17
|
+
export { transactionReceiptStatus, deepHexlify, getUserOperationHash, getRequiredPrefund, walletClientToSmartAccountSigner, signUserOperationHashWithECDSA, AccountOrClientNotFoundError, isSmartAccountDeployed, providerToSmartAccountSigner, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, getEntryPointVersion, encodeNonce, ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07 };
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
package/_esm/utils/index.js.map
CHANGED
|
@@ -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,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,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,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encodeNonce.d.ts","sourceRoot":"","sources":["../../utils/encodeNonce.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAK3E"}
|
package/_types/utils/index.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ 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 { encodeNonce } from "./encodeNonce";
|
|
11
12
|
import { ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07, getEntryPointVersion } from "./getEntryPointVersion";
|
|
12
13
|
import { getPackedUserOperation } from "./getPackedUserOperation";
|
|
13
|
-
export { transactionReceiptStatus, deepHexlify, getUserOperationHash, getRequiredPrefund, walletClientToSmartAccountSigner, type GetRequiredPrefundReturnType, type GetUserOperationHashParams, signUserOperationHashWithECDSA, type SignUserOperationHashWithECDSAParams, AccountOrClientNotFoundError, isSmartAccountDeployed, providerToSmartAccountSigner, getAddressFromInitCodeOrPaymasterAndData, getPackedUserOperation, getEntryPointVersion, ENTRYPOINT_ADDRESS_V06, ENTRYPOINT_ADDRESS_V07 };
|
|
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 };
|
|
14
15
|
//# 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,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,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,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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { encodeNonce } from "permissionless/utils"
|
|
2
|
+
import { toHex } from "viem"
|
|
3
|
+
import { describe, expect, test } from "vitest"
|
|
4
|
+
|
|
5
|
+
describe("encodeNonce", () => {
|
|
6
|
+
test("should encode key and sequence correctly", async () => {
|
|
7
|
+
const key = 123456789012345678901234n
|
|
8
|
+
const sequence = 9876543210n
|
|
9
|
+
const expectedKey = BigInt(toHex(key, { size: 24 }))
|
|
10
|
+
const expectedSequence = BigInt(toHex(sequence, { size: 8 }))
|
|
11
|
+
|
|
12
|
+
const result = encodeNonce({ key, sequence })
|
|
13
|
+
|
|
14
|
+
expect(result).toBe((expectedKey << BigInt(64)) + expectedSequence)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
test("should handle zero values correctly", () => {
|
|
18
|
+
const key = BigInt(0)
|
|
19
|
+
const sequence = BigInt(0)
|
|
20
|
+
const expectedKey = BigInt(toHex(key, { size: 24 }))
|
|
21
|
+
const expectedSequence = BigInt(toHex(sequence, { size: 8 }))
|
|
22
|
+
|
|
23
|
+
const result = encodeNonce({ key, sequence })
|
|
24
|
+
|
|
25
|
+
expect(result).toBe((expectedKey << BigInt(64)) + expectedSequence)
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
test("should handle large values correctly", () => {
|
|
29
|
+
const key = BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFF")
|
|
30
|
+
const sequence = BigInt("0xFFFFFFFF")
|
|
31
|
+
const expectedKey = BigInt(toHex(key, { size: 24 }))
|
|
32
|
+
const expectedSequence = BigInt(toHex(sequence, { size: 8 }))
|
|
33
|
+
|
|
34
|
+
const result = encodeNonce({ key, sequence })
|
|
35
|
+
|
|
36
|
+
expect(result).toBe((expectedKey << BigInt(64)) + expectedSequence)
|
|
37
|
+
})
|
|
38
|
+
})
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { toHex } from "viem"
|
|
2
|
+
|
|
3
|
+
export function encodeNonce(args: { key: bigint; sequence: bigint }): bigint {
|
|
4
|
+
const key = BigInt(toHex(args.key, { size: 24 }))
|
|
5
|
+
const sequence = BigInt(toHex(args.sequence, { size: 8 }))
|
|
6
|
+
|
|
7
|
+
return (key << BigInt(64)) + sequence
|
|
8
|
+
}
|
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 { encodeNonce } from "./encodeNonce"
|
|
26
27
|
import {
|
|
27
28
|
ENTRYPOINT_ADDRESS_V06,
|
|
28
29
|
ENTRYPOINT_ADDRESS_V07,
|
|
@@ -47,6 +48,7 @@ export {
|
|
|
47
48
|
getAddressFromInitCodeOrPaymasterAndData,
|
|
48
49
|
getPackedUserOperation,
|
|
49
50
|
getEntryPointVersion,
|
|
51
|
+
encodeNonce,
|
|
50
52
|
ENTRYPOINT_ADDRESS_V06,
|
|
51
53
|
ENTRYPOINT_ADDRESS_V07
|
|
52
54
|
}
|