@0xsequence/wallet-primitives 0.0.0-20250520201059

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.
Files changed (96) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +7 -0
  3. package/LICENSE +202 -0
  4. package/dist/address.d.ts +5 -0
  5. package/dist/address.d.ts.map +1 -0
  6. package/dist/address.js +7 -0
  7. package/dist/address.js.map +1 -0
  8. package/dist/attestation.d.ts +24 -0
  9. package/dist/attestation.d.ts.map +1 -0
  10. package/dist/attestation.js +77 -0
  11. package/dist/attestation.js.map +1 -0
  12. package/dist/config.d.ts +85 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +381 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/constants.d.ts +173 -0
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/constants.js +31 -0
  19. package/dist/constants.js.map +1 -0
  20. package/dist/context.d.ts +9 -0
  21. package/dist/context.d.ts.map +1 -0
  22. package/dist/context.js +8 -0
  23. package/dist/context.js.map +1 -0
  24. package/dist/erc-6492.d.ts +19 -0
  25. package/dist/erc-6492.d.ts.map +1 -0
  26. package/dist/erc-6492.js +64 -0
  27. package/dist/erc-6492.js.map +1 -0
  28. package/dist/extensions/index.d.ts +9 -0
  29. package/dist/extensions/index.d.ts.map +1 -0
  30. package/dist/extensions/index.js +7 -0
  31. package/dist/extensions/index.js.map +1 -0
  32. package/dist/extensions/passkeys.d.ts +31 -0
  33. package/dist/extensions/passkeys.d.ts.map +1 -0
  34. package/dist/extensions/passkeys.js +224 -0
  35. package/dist/extensions/passkeys.js.map +1 -0
  36. package/dist/extensions/recovery.d.ts +310 -0
  37. package/dist/extensions/recovery.d.ts.map +1 -0
  38. package/dist/extensions/recovery.js +444 -0
  39. package/dist/extensions/recovery.js.map +1 -0
  40. package/dist/generic-tree.d.ts +14 -0
  41. package/dist/generic-tree.d.ts.map +1 -0
  42. package/dist/generic-tree.js +34 -0
  43. package/dist/generic-tree.js.map +1 -0
  44. package/dist/index.d.ts +16 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +16 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/network.d.ts +15 -0
  49. package/dist/network.d.ts.map +1 -0
  50. package/dist/network.js +24 -0
  51. package/dist/network.js.map +1 -0
  52. package/dist/payload.d.ts +108 -0
  53. package/dist/payload.d.ts.map +1 -0
  54. package/dist/payload.js +627 -0
  55. package/dist/payload.js.map +1 -0
  56. package/dist/permission.d.ts +73 -0
  57. package/dist/permission.d.ts.map +1 -0
  58. package/dist/permission.js +188 -0
  59. package/dist/permission.js.map +1 -0
  60. package/dist/session-config.d.ts +113 -0
  61. package/dist/session-config.d.ts.map +1 -0
  62. package/dist/session-config.js +554 -0
  63. package/dist/session-config.js.map +1 -0
  64. package/dist/session-signature.d.ts +24 -0
  65. package/dist/session-signature.d.ts.map +1 -0
  66. package/dist/session-signature.js +141 -0
  67. package/dist/session-signature.js.map +1 -0
  68. package/dist/signature.d.ts +108 -0
  69. package/dist/signature.d.ts.map +1 -0
  70. package/dist/signature.js +1079 -0
  71. package/dist/signature.js.map +1 -0
  72. package/dist/utils.d.ts +45 -0
  73. package/dist/utils.d.ts.map +1 -0
  74. package/dist/utils.js +100 -0
  75. package/dist/utils.js.map +1 -0
  76. package/eslint.config.mjs +4 -0
  77. package/package.json +27 -0
  78. package/src/address.ts +19 -0
  79. package/src/attestation.ts +114 -0
  80. package/src/config.ts +521 -0
  81. package/src/constants.ts +39 -0
  82. package/src/context.ts +16 -0
  83. package/src/erc-6492.ts +97 -0
  84. package/src/extensions/index.ts +14 -0
  85. package/src/extensions/passkeys.ts +283 -0
  86. package/src/extensions/recovery.ts +542 -0
  87. package/src/generic-tree.ts +55 -0
  88. package/src/index.ts +15 -0
  89. package/src/network.ts +37 -0
  90. package/src/payload.ts +825 -0
  91. package/src/permission.ts +252 -0
  92. package/src/session-config.ts +681 -0
  93. package/src/session-signature.ts +197 -0
  94. package/src/signature.ts +1398 -0
  95. package/src/utils.ts +114 -0
  96. package/tsconfig.json +10 -0
@@ -0,0 +1,141 @@
1
+ import { Bytes, Hash, Hex } from 'ox';
2
+ import { encode, encodeForJson, fromParsed } from './attestation.js';
3
+ import { MAX_PERMISSIONS_COUNT } from './permission.js';
4
+ import { encodeSessionsTopology, isCompleteSessionsTopology, minimiseSessionsTopology, } from './session-config.js';
5
+ import { minBytesFor, packRSY } from './utils.js';
6
+ import { Payload } from './index.js';
7
+ export function isImplicitSessionCallSignature(callSignature) {
8
+ return 'attestation' in callSignature && 'identitySignature' in callSignature && 'sessionSignature' in callSignature;
9
+ }
10
+ export function isExplicitSessionCallSignature(callSignature) {
11
+ return 'permissionIndex' in callSignature && 'sessionSignature' in callSignature;
12
+ }
13
+ // JSON
14
+ export function sessionCallSignatureToJson(callSignature) {
15
+ return JSON.stringify(encodeSessionCallSignatureForJson(callSignature));
16
+ }
17
+ export function encodeSessionCallSignatureForJson(callSignature) {
18
+ if (isImplicitSessionCallSignature(callSignature)) {
19
+ return {
20
+ attestation: encodeForJson(callSignature.attestation),
21
+ identitySignature: rsyToRsvStr(callSignature.identitySignature),
22
+ sessionSignature: rsyToRsvStr(callSignature.sessionSignature),
23
+ };
24
+ }
25
+ else if (isExplicitSessionCallSignature(callSignature)) {
26
+ return {
27
+ permissionIndex: callSignature.permissionIndex,
28
+ sessionSignature: rsyToRsvStr(callSignature.sessionSignature),
29
+ };
30
+ }
31
+ else {
32
+ throw new Error('Invalid call signature');
33
+ }
34
+ }
35
+ export function sessionCallSignatureFromJson(json) {
36
+ const decoded = JSON.parse(json);
37
+ return sessionCallSignatureFromParsed(decoded);
38
+ }
39
+ export function sessionCallSignatureFromParsed(decoded) {
40
+ if (decoded.attestation) {
41
+ return {
42
+ attestation: fromParsed(decoded.attestation),
43
+ identitySignature: rsyFromRsvStr(decoded.identitySignature),
44
+ sessionSignature: rsyFromRsvStr(decoded.sessionSignature),
45
+ };
46
+ }
47
+ else if (decoded.permissionIndex) {
48
+ return {
49
+ permissionIndex: decoded.permissionIndex,
50
+ sessionSignature: rsyFromRsvStr(decoded.sessionSignature),
51
+ };
52
+ }
53
+ else {
54
+ throw new Error('Invalid call signature');
55
+ }
56
+ }
57
+ function rsyToRsvStr(sig) {
58
+ return `${sig.r.toString()}:${sig.s.toString()}:${sig.yParity + 27}`;
59
+ }
60
+ function rsyFromRsvStr(sigStr) {
61
+ const parts = sigStr.split(':');
62
+ if (parts.length !== 3) {
63
+ throw new Error('Signature must be in r:s:v format');
64
+ }
65
+ const [rStr, sStr, vStr] = parts;
66
+ if (!rStr || !sStr || !vStr) {
67
+ throw new Error('Invalid signature format');
68
+ }
69
+ return {
70
+ r: Bytes.toBigInt(Bytes.fromHex(rStr, { size: 32 })),
71
+ s: Bytes.toBigInt(Bytes.fromHex(sStr, { size: 32 })),
72
+ yParity: parseInt(vStr, 10) - 27,
73
+ };
74
+ }
75
+ // Usage
76
+ export function encodeSessionCallSignatures(callSignatures, topology, explicitSigners = [], implicitSigners = []) {
77
+ const parts = [];
78
+ // Validate the topology
79
+ if (!isCompleteSessionsTopology(topology)) {
80
+ // Refuse to encode incomplete topologies
81
+ throw new Error('Incomplete topology');
82
+ }
83
+ // Optimise the configuration tree by rolling unused signers into nodes.
84
+ topology = minimiseSessionsTopology(topology, explicitSigners, implicitSigners);
85
+ // Session topology
86
+ const encodedTopology = encodeSessionsTopology(topology);
87
+ if (minBytesFor(BigInt(encodedTopology.length)) > 3) {
88
+ throw new Error('Session topology is too large');
89
+ }
90
+ parts.push(Bytes.fromNumber(encodedTopology.length, { size: 3 }), encodedTopology);
91
+ // Create unique attestation list and maintain index mapping
92
+ const attestationMap = new Map();
93
+ const encodedAttestations = [];
94
+ // Map each call signature to its attestation index
95
+ callSignatures.filter(isImplicitSessionCallSignature).forEach((callSig) => {
96
+ if (callSig.attestation) {
97
+ const attestationStr = JSON.stringify(callSig.attestation);
98
+ if (!attestationMap.has(attestationStr)) {
99
+ attestationMap.set(attestationStr, encodedAttestations.length);
100
+ encodedAttestations.push(Bytes.concat(encode(callSig.attestation), packRSY(callSig.identitySignature)));
101
+ }
102
+ }
103
+ });
104
+ // Add the attestations to the parts
105
+ if (encodedAttestations.length >= 128) {
106
+ throw new Error('Too many attestations');
107
+ }
108
+ parts.push(Bytes.fromNumber(encodedAttestations.length, { size: 1 }), Bytes.concat(...encodedAttestations));
109
+ // Call signature parts
110
+ for (const callSignature of callSignatures) {
111
+ if (isImplicitSessionCallSignature(callSignature)) {
112
+ // Implicit
113
+ const attestationStr = JSON.stringify(callSignature.attestation);
114
+ const attestationIndex = attestationMap.get(attestationStr);
115
+ if (attestationIndex === undefined) {
116
+ // Unreachable
117
+ throw new Error('Failed to find attestation index');
118
+ }
119
+ const packedFlag = 0x80 | attestationIndex; // Implicit flag (MSB) true + attestation index
120
+ parts.push(Bytes.fromNumber(packedFlag, { size: 1 }), packRSY(callSignature.sessionSignature));
121
+ }
122
+ else if (isExplicitSessionCallSignature(callSignature)) {
123
+ // Explicit
124
+ if (callSignature.permissionIndex > MAX_PERMISSIONS_COUNT) {
125
+ throw new Error('Permission index is too large');
126
+ }
127
+ const packedFlag = callSignature.permissionIndex; // Implicit flag (MSB) false + permission index
128
+ parts.push(Bytes.fromNumber(packedFlag, { size: 1 }), packRSY(callSignature.sessionSignature));
129
+ }
130
+ else {
131
+ // Invalid call signature
132
+ throw new Error('Invalid call signature');
133
+ }
134
+ }
135
+ return Bytes.concat(...parts);
136
+ }
137
+ // Helper
138
+ export function hashCallWithReplayProtection(call, chainId, space, nonce) {
139
+ return Hex.fromBytes(Hash.keccak256(Bytes.concat(Bytes.fromNumber(Number(chainId), { size: 32 }), Bytes.fromNumber(Number(space), { size: 32 }), Bytes.fromNumber(Number(nonce), { size: 32 }), Bytes.fromHex(Payload.hashCall(call)))));
140
+ }
141
+ //# sourceMappingURL=session-signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-signature.js","sourceRoot":"","sources":["../src/session-signature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { Address, Bytes, Hex, Provider } from 'ox';
2
+ import { Config, Leaf, SapientSignerLeaf, SignerLeaf, Topology } from './config.js';
3
+ import { Parented } from './payload.js';
4
+ export declare const FLAG_SIGNATURE_HASH = 0;
5
+ export declare const FLAG_ADDRESS = 1;
6
+ export declare const FLAG_SIGNATURE_ERC1271 = 2;
7
+ export declare const FLAG_NODE = 3;
8
+ export declare const FLAG_BRANCH = 4;
9
+ export declare const FLAG_SUBDIGEST = 5;
10
+ export declare const FLAG_NESTED = 6;
11
+ export declare const FLAG_SIGNATURE_ETH_SIGN = 7;
12
+ export declare const FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST = 8;
13
+ export declare const FLAG_SIGNATURE_SAPIENT = 9;
14
+ export declare const FLAG_SIGNATURE_SAPIENT_COMPACT = 10;
15
+ export type RSY = {
16
+ r: bigint;
17
+ s: bigint;
18
+ yParity: number;
19
+ };
20
+ export type SignatureOfSignerLeafEthSign = {
21
+ type: 'eth_sign';
22
+ } & RSY;
23
+ export type SignatureOfSignerLeafHash = {
24
+ type: 'hash';
25
+ } & RSY;
26
+ export type SignatureOfSignerLeafErc1271 = {
27
+ type: 'erc1271';
28
+ address: `0x${string}`;
29
+ data: Hex.Hex;
30
+ };
31
+ export type SignatureOfSignerLeaf = SignatureOfSignerLeafEthSign | SignatureOfSignerLeafHash | SignatureOfSignerLeafErc1271;
32
+ export type SignatureOfSapientSignerLeaf = {
33
+ address: `0x${string}`;
34
+ data: Hex.Hex;
35
+ type: 'sapient' | 'sapient_compact';
36
+ };
37
+ export type SignedSignerLeaf = SignerLeaf & {
38
+ signed: true;
39
+ signature: SignatureOfSignerLeaf;
40
+ };
41
+ export type SignedSapientSignerLeaf = SapientSignerLeaf & {
42
+ signed: true;
43
+ signature: SignatureOfSapientSignerLeaf;
44
+ };
45
+ export type RawSignerLeaf = {
46
+ type: 'unrecovered-signer';
47
+ weight: bigint;
48
+ signature: SignatureOfSignerLeaf | SignatureOfSapientSignerLeaf;
49
+ };
50
+ export type RawNestedLeaf = {
51
+ type: 'nested';
52
+ tree: RawTopology;
53
+ weight: bigint;
54
+ threshold: bigint;
55
+ };
56
+ export type RawLeaf = Leaf | RawSignerLeaf | RawNestedLeaf;
57
+ export type RawNode = [RawTopology, RawTopology];
58
+ export type RawTopology = RawNode | RawLeaf;
59
+ export type RawConfig = {
60
+ threshold: bigint;
61
+ checkpoint: bigint;
62
+ topology: RawTopology;
63
+ checkpointer?: Address.Address;
64
+ };
65
+ export type RawSignature = {
66
+ noChainId: boolean;
67
+ checkpointerData?: Bytes.Bytes;
68
+ configuration: RawConfig;
69
+ suffix?: RawSignature[];
70
+ erc6492?: {
71
+ to: Address.Address;
72
+ data: Bytes.Bytes;
73
+ };
74
+ };
75
+ export declare function isSignatureOfSapientSignerLeaf(signature: any): signature is SignatureOfSapientSignerLeaf;
76
+ export declare function isRawSignature(signature: any): signature is RawSignature;
77
+ export declare function isRawConfig(configuration: any): configuration is RawConfig;
78
+ export declare function isRawSignerLeaf(cand: any): cand is RawSignerLeaf;
79
+ export declare function isSignedSignerLeaf(cand: any): cand is SignedSignerLeaf;
80
+ export declare function isSignedSapientSignerLeaf(cand: any): cand is SignedSapientSignerLeaf;
81
+ export declare function isRawNode(cand: any): cand is RawNode;
82
+ export declare function isRawTopology(cand: any): cand is RawTopology;
83
+ export declare function isRawLeaf(cand: any): cand is RawLeaf;
84
+ export declare function isRawNestedLeaf(cand: any): cand is RawNestedLeaf;
85
+ export declare function decodeSignature(erc6492Signature: Bytes.Bytes): RawSignature;
86
+ export declare function parseBranch(signature: Bytes.Bytes): {
87
+ nodes: RawTopology[];
88
+ leftover: Bytes.Bytes;
89
+ };
90
+ export declare function fillLeaves(topology: Topology, signatureFor: (leaf: SignerLeaf | SapientSignerLeaf) => SignatureOfSignerLeaf | SignatureOfSapientSignerLeaf | undefined): Topology;
91
+ export declare function encodeChainedSignature(signatures: RawSignature[]): Uint8Array;
92
+ export declare function encodeSignature(signature: RawSignature, skipCheckpointerData?: boolean, skipCheckpointerAddress?: boolean): Uint8Array;
93
+ export declare function encodeTopology(topology: Topology | RawTopology, options?: {
94
+ noChainId?: boolean;
95
+ checkpointerData?: Uint8Array;
96
+ }): Uint8Array;
97
+ export declare function rawSignatureToJson(signature: RawSignature): string;
98
+ export declare function rawSignatureFromJson(json: string): RawSignature;
99
+ export declare function recover(signature: RawSignature, wallet: Address.Address, chainId: bigint, payload: Parented, options?: {
100
+ provider?: Provider.Provider | {
101
+ provider: Provider.Provider;
102
+ block: number;
103
+ } | 'assume-valid' | 'assume-invalid';
104
+ }): Promise<{
105
+ configuration: Config;
106
+ weight: bigint;
107
+ }>;
108
+ //# sourceMappingURL=signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"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"}