@veridex/sdk 1.0.0-beta.1
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 +73 -0
- package/LICENSE +21 -0
- package/README.md +212 -0
- package/dist/chains/aptos/index.d.mts +140 -0
- package/dist/chains/aptos/index.d.ts +140 -0
- package/dist/chains/aptos/index.js +563 -0
- package/dist/chains/aptos/index.js.map +1 -0
- package/dist/chains/aptos/index.mjs +536 -0
- package/dist/chains/aptos/index.mjs.map +1 -0
- package/dist/chains/evm/index.d.mts +5 -0
- package/dist/chains/evm/index.d.ts +5 -0
- package/dist/chains/evm/index.js +1233 -0
- package/dist/chains/evm/index.js.map +1 -0
- package/dist/chains/evm/index.mjs +1205 -0
- package/dist/chains/evm/index.mjs.map +1 -0
- package/dist/chains/solana/index.d.mts +116 -0
- package/dist/chains/solana/index.d.ts +116 -0
- package/dist/chains/solana/index.js +513 -0
- package/dist/chains/solana/index.js.map +1 -0
- package/dist/chains/solana/index.mjs +491 -0
- package/dist/chains/solana/index.mjs.map +1 -0
- package/dist/chains/starknet/index.d.mts +172 -0
- package/dist/chains/starknet/index.d.ts +172 -0
- package/dist/chains/starknet/index.js +534 -0
- package/dist/chains/starknet/index.js.map +1 -0
- package/dist/chains/starknet/index.mjs +507 -0
- package/dist/chains/starknet/index.mjs.map +1 -0
- package/dist/chains/sui/index.d.mts +182 -0
- package/dist/chains/sui/index.d.ts +182 -0
- package/dist/chains/sui/index.js +560 -0
- package/dist/chains/sui/index.js.map +1 -0
- package/dist/chains/sui/index.mjs +533 -0
- package/dist/chains/sui/index.mjs.map +1 -0
- package/dist/constants.d.mts +150 -0
- package/dist/constants.d.ts +150 -0
- package/dist/constants.js +430 -0
- package/dist/constants.js.map +1 -0
- package/dist/constants.mjs +392 -0
- package/dist/constants.mjs.map +1 -0
- package/dist/index-0NXfbk0z.d.ts +637 -0
- package/dist/index-D0dLVjTA.d.mts +637 -0
- package/dist/index.d.mts +3101 -0
- package/dist/index.d.ts +3101 -0
- package/dist/index.js +13186 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +13011 -0
- package/dist/index.mjs.map +1 -0
- package/dist/payload.d.mts +125 -0
- package/dist/payload.d.ts +125 -0
- package/dist/payload.js +315 -0
- package/dist/payload.js.map +1 -0
- package/dist/payload.mjs +269 -0
- package/dist/payload.mjs.map +1 -0
- package/dist/queries/index.d.mts +148 -0
- package/dist/queries/index.d.ts +148 -0
- package/dist/queries/index.js +1533 -0
- package/dist/queries/index.js.map +1 -0
- package/dist/queries/index.mjs +1508 -0
- package/dist/queries/index.mjs.map +1 -0
- package/dist/types-ChIsqCiw.d.mts +565 -0
- package/dist/types-ChIsqCiw.d.ts +565 -0
- package/dist/types-FJL7j6gQ.d.mts +172 -0
- package/dist/types-FJL7j6gQ.d.ts +172 -0
- package/dist/types.d.mts +407 -0
- package/dist/types.d.ts +407 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +1 -0
- package/dist/types.mjs.map +1 -0
- package/dist/utils.d.mts +81 -0
- package/dist/utils.d.ts +81 -0
- package/dist/utils.js +430 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +390 -0
- package/dist/utils.mjs.map +1 -0
- package/dist/wormhole.d.mts +167 -0
- package/dist/wormhole.d.ts +167 -0
- package/dist/wormhole.js +468 -0
- package/dist/wormhole.js.map +1 -0
- package/dist/wormhole.mjs +422 -0
- package/dist/wormhole.mjs.map +1 -0
- package/package.json +151 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Veridex Protocol SDK - Session Key Management Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for ephemeral session keys that enable
|
|
5
|
+
* native L1-speed transactions after initial biometric auth.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Ephemeral session key for fast software-backed signing
|
|
9
|
+
*
|
|
10
|
+
* Security model:
|
|
11
|
+
* - Private key encrypted at rest (AES-GCM)
|
|
12
|
+
* - Max 24-hour duration enforced on-chain
|
|
13
|
+
* - Value limits prevent unlimited spending
|
|
14
|
+
* - Chain scopes restrict cross-chain usage
|
|
15
|
+
*/
|
|
16
|
+
interface SessionKey {
|
|
17
|
+
/** Public key of the session (secp256k1) */
|
|
18
|
+
publicKey: Uint8Array;
|
|
19
|
+
/** Private key (MUST be encrypted before storage) */
|
|
20
|
+
privateKey: Uint8Array;
|
|
21
|
+
/** Keccak256 hash of public key (on-chain identifier) */
|
|
22
|
+
keyHash: string;
|
|
23
|
+
/** Unix timestamp when session expires (milliseconds) */
|
|
24
|
+
expiry: number;
|
|
25
|
+
/** Maximum transaction value allowed (in token's base units) */
|
|
26
|
+
maxValue: bigint;
|
|
27
|
+
/** Wormhole chain IDs where this session is valid */
|
|
28
|
+
chainScopes: number[];
|
|
29
|
+
/** User's Passkey key hash (binds session to user) */
|
|
30
|
+
userKeyHash: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Configuration for session creation and lifecycle
|
|
34
|
+
*/
|
|
35
|
+
interface SessionConfig {
|
|
36
|
+
/** Session duration in seconds (default: 3600 = 1 hour, max: 86400 = 24 hours) */
|
|
37
|
+
duration: number;
|
|
38
|
+
/** Maximum transaction value in base units (0 = unlimited, but NOT RECOMMENDED) */
|
|
39
|
+
maxValue: bigint;
|
|
40
|
+
/** Auto-refresh session before expiry (default: true) */
|
|
41
|
+
autoRefresh: boolean;
|
|
42
|
+
/** Refresh buffer time in seconds (refresh this many seconds before expiry, default: 300 = 5 min) */
|
|
43
|
+
refreshBuffer?: number;
|
|
44
|
+
/** Chain scopes - which Wormhole chain IDs can use this session (empty = all chains) */
|
|
45
|
+
chainScopes?: number[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Signature produced by signing with a session key
|
|
49
|
+
*
|
|
50
|
+
* This is a lightweight software signature (secp256k1) that can be
|
|
51
|
+
* validated on-chain via CCQ to Hub's isSessionActive() state.
|
|
52
|
+
*/
|
|
53
|
+
interface SessionSignature {
|
|
54
|
+
/** ECDSA signature (r, s, v) from session private key */
|
|
55
|
+
signature: Uint8Array;
|
|
56
|
+
/** Session key hash (links signature to registered session) */
|
|
57
|
+
sessionKeyHash: string;
|
|
58
|
+
/** User's Passkey key hash (for Hub state query) */
|
|
59
|
+
userKeyHash: string;
|
|
60
|
+
/** Timestamp when signature was created (for replay prevention) */
|
|
61
|
+
timestamp: number;
|
|
62
|
+
/** Optional nonce for additional replay protection */
|
|
63
|
+
nonce?: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Configuration for SessionManager initialization
|
|
67
|
+
*/
|
|
68
|
+
interface SessionManagerConfig {
|
|
69
|
+
/** Default session configuration */
|
|
70
|
+
defaultSessionConfig: SessionConfig;
|
|
71
|
+
/** Storage backend ('indexeddb' or 'localstorage', default: 'indexeddb') */
|
|
72
|
+
storageBackend?: 'indexeddb' | 'localstorage';
|
|
73
|
+
/** Enable debug logging */
|
|
74
|
+
debug?: boolean;
|
|
75
|
+
/** Custom encryption key derivation (for testing only) */
|
|
76
|
+
encryptionKey?: CryptoKey;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Events emitted during session lifecycle
|
|
80
|
+
*/
|
|
81
|
+
type SessionEvent = {
|
|
82
|
+
type: 'session-created';
|
|
83
|
+
session: SessionKey;
|
|
84
|
+
} | {
|
|
85
|
+
type: 'session-loaded';
|
|
86
|
+
session: SessionKey;
|
|
87
|
+
} | {
|
|
88
|
+
type: 'session-expired';
|
|
89
|
+
keyHash: string;
|
|
90
|
+
} | {
|
|
91
|
+
type: 'session-refreshed';
|
|
92
|
+
session: SessionKey;
|
|
93
|
+
} | {
|
|
94
|
+
type: 'session-revoked';
|
|
95
|
+
keyHash: string;
|
|
96
|
+
} | {
|
|
97
|
+
type: 'session-error';
|
|
98
|
+
error: Error;
|
|
99
|
+
};
|
|
100
|
+
type SessionEventCallback = (event: SessionEvent) => void;
|
|
101
|
+
/**
|
|
102
|
+
* Interface for session storage implementations
|
|
103
|
+
*
|
|
104
|
+
* Implementations MUST:
|
|
105
|
+
* - Encrypt private keys before storage
|
|
106
|
+
* - Use secure key derivation (e.g., PBKDF2 or similar)
|
|
107
|
+
* - Provide atomic read/write/delete operations
|
|
108
|
+
*/
|
|
109
|
+
interface SessionStorage {
|
|
110
|
+
/**
|
|
111
|
+
* Save a session (private key will be encrypted)
|
|
112
|
+
*/
|
|
113
|
+
save(session: SessionKey): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Load the active session (private key will be decrypted)
|
|
116
|
+
*/
|
|
117
|
+
load(): Promise<SessionKey | null>;
|
|
118
|
+
/**
|
|
119
|
+
* Clear all stored sessions
|
|
120
|
+
*/
|
|
121
|
+
clear(): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* Check if a session exists
|
|
124
|
+
*/
|
|
125
|
+
exists(): Promise<boolean>;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Parameters for an action to be signed with a session key
|
|
129
|
+
*/
|
|
130
|
+
interface ActionParams {
|
|
131
|
+
/** Action type (transfer, execute, bridge, etc.) */
|
|
132
|
+
action: string;
|
|
133
|
+
/** Target chain (Wormhole chain ID) */
|
|
134
|
+
targetChain: number;
|
|
135
|
+
/** Transaction value in base units */
|
|
136
|
+
value: bigint;
|
|
137
|
+
/** Action-specific payload */
|
|
138
|
+
payload: Uint8Array;
|
|
139
|
+
/** Nonce for replay prevention */
|
|
140
|
+
nonce: number;
|
|
141
|
+
/** Optional deadline timestamp */
|
|
142
|
+
deadline?: number;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Result of session-signed action
|
|
146
|
+
*/
|
|
147
|
+
interface SessionSignedAction {
|
|
148
|
+
/** Original action parameters */
|
|
149
|
+
action: ActionParams;
|
|
150
|
+
/** Session signature */
|
|
151
|
+
signature: SessionSignature;
|
|
152
|
+
/** Ready to submit to relayer or on-chain */
|
|
153
|
+
readyToSubmit: boolean;
|
|
154
|
+
}
|
|
155
|
+
declare class SessionError extends Error {
|
|
156
|
+
code: SessionErrorCode;
|
|
157
|
+
details?: unknown | undefined;
|
|
158
|
+
constructor(message: string, code: SessionErrorCode, details?: unknown | undefined);
|
|
159
|
+
}
|
|
160
|
+
declare enum SessionErrorCode {
|
|
161
|
+
NO_ACTIVE_SESSION = "NO_ACTIVE_SESSION",
|
|
162
|
+
SESSION_EXPIRED = "SESSION_EXPIRED",
|
|
163
|
+
VALUE_EXCEEDS_LIMIT = "VALUE_EXCEEDS_LIMIT",
|
|
164
|
+
CHAIN_NOT_ALLOWED = "CHAIN_NOT_ALLOWED",
|
|
165
|
+
STORAGE_ERROR = "STORAGE_ERROR",
|
|
166
|
+
ENCRYPTION_ERROR = "ENCRYPTION_ERROR",
|
|
167
|
+
INVALID_CONFIG = "INVALID_CONFIG",
|
|
168
|
+
REGISTRATION_FAILED = "REGISTRATION_FAILED",
|
|
169
|
+
REVOCATION_FAILED = "REVOCATION_FAILED"
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export { type ActionParams as A, type SessionKey as S, type SessionStorage as a, type SessionConfig as b, type SessionSignature as c, type SessionManagerConfig as d, type SessionEvent as e, type SessionEventCallback as f, type SessionSignedAction as g, SessionErrorCode as h, SessionError as i };
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Veridex Protocol SDK - Session Key Management Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for ephemeral session keys that enable
|
|
5
|
+
* native L1-speed transactions after initial biometric auth.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Ephemeral session key for fast software-backed signing
|
|
9
|
+
*
|
|
10
|
+
* Security model:
|
|
11
|
+
* - Private key encrypted at rest (AES-GCM)
|
|
12
|
+
* - Max 24-hour duration enforced on-chain
|
|
13
|
+
* - Value limits prevent unlimited spending
|
|
14
|
+
* - Chain scopes restrict cross-chain usage
|
|
15
|
+
*/
|
|
16
|
+
interface SessionKey {
|
|
17
|
+
/** Public key of the session (secp256k1) */
|
|
18
|
+
publicKey: Uint8Array;
|
|
19
|
+
/** Private key (MUST be encrypted before storage) */
|
|
20
|
+
privateKey: Uint8Array;
|
|
21
|
+
/** Keccak256 hash of public key (on-chain identifier) */
|
|
22
|
+
keyHash: string;
|
|
23
|
+
/** Unix timestamp when session expires (milliseconds) */
|
|
24
|
+
expiry: number;
|
|
25
|
+
/** Maximum transaction value allowed (in token's base units) */
|
|
26
|
+
maxValue: bigint;
|
|
27
|
+
/** Wormhole chain IDs where this session is valid */
|
|
28
|
+
chainScopes: number[];
|
|
29
|
+
/** User's Passkey key hash (binds session to user) */
|
|
30
|
+
userKeyHash: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Configuration for session creation and lifecycle
|
|
34
|
+
*/
|
|
35
|
+
interface SessionConfig {
|
|
36
|
+
/** Session duration in seconds (default: 3600 = 1 hour, max: 86400 = 24 hours) */
|
|
37
|
+
duration: number;
|
|
38
|
+
/** Maximum transaction value in base units (0 = unlimited, but NOT RECOMMENDED) */
|
|
39
|
+
maxValue: bigint;
|
|
40
|
+
/** Auto-refresh session before expiry (default: true) */
|
|
41
|
+
autoRefresh: boolean;
|
|
42
|
+
/** Refresh buffer time in seconds (refresh this many seconds before expiry, default: 300 = 5 min) */
|
|
43
|
+
refreshBuffer?: number;
|
|
44
|
+
/** Chain scopes - which Wormhole chain IDs can use this session (empty = all chains) */
|
|
45
|
+
chainScopes?: number[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Signature produced by signing with a session key
|
|
49
|
+
*
|
|
50
|
+
* This is a lightweight software signature (secp256k1) that can be
|
|
51
|
+
* validated on-chain via CCQ to Hub's isSessionActive() state.
|
|
52
|
+
*/
|
|
53
|
+
interface SessionSignature {
|
|
54
|
+
/** ECDSA signature (r, s, v) from session private key */
|
|
55
|
+
signature: Uint8Array;
|
|
56
|
+
/** Session key hash (links signature to registered session) */
|
|
57
|
+
sessionKeyHash: string;
|
|
58
|
+
/** User's Passkey key hash (for Hub state query) */
|
|
59
|
+
userKeyHash: string;
|
|
60
|
+
/** Timestamp when signature was created (for replay prevention) */
|
|
61
|
+
timestamp: number;
|
|
62
|
+
/** Optional nonce for additional replay protection */
|
|
63
|
+
nonce?: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Configuration for SessionManager initialization
|
|
67
|
+
*/
|
|
68
|
+
interface SessionManagerConfig {
|
|
69
|
+
/** Default session configuration */
|
|
70
|
+
defaultSessionConfig: SessionConfig;
|
|
71
|
+
/** Storage backend ('indexeddb' or 'localstorage', default: 'indexeddb') */
|
|
72
|
+
storageBackend?: 'indexeddb' | 'localstorage';
|
|
73
|
+
/** Enable debug logging */
|
|
74
|
+
debug?: boolean;
|
|
75
|
+
/** Custom encryption key derivation (for testing only) */
|
|
76
|
+
encryptionKey?: CryptoKey;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Events emitted during session lifecycle
|
|
80
|
+
*/
|
|
81
|
+
type SessionEvent = {
|
|
82
|
+
type: 'session-created';
|
|
83
|
+
session: SessionKey;
|
|
84
|
+
} | {
|
|
85
|
+
type: 'session-loaded';
|
|
86
|
+
session: SessionKey;
|
|
87
|
+
} | {
|
|
88
|
+
type: 'session-expired';
|
|
89
|
+
keyHash: string;
|
|
90
|
+
} | {
|
|
91
|
+
type: 'session-refreshed';
|
|
92
|
+
session: SessionKey;
|
|
93
|
+
} | {
|
|
94
|
+
type: 'session-revoked';
|
|
95
|
+
keyHash: string;
|
|
96
|
+
} | {
|
|
97
|
+
type: 'session-error';
|
|
98
|
+
error: Error;
|
|
99
|
+
};
|
|
100
|
+
type SessionEventCallback = (event: SessionEvent) => void;
|
|
101
|
+
/**
|
|
102
|
+
* Interface for session storage implementations
|
|
103
|
+
*
|
|
104
|
+
* Implementations MUST:
|
|
105
|
+
* - Encrypt private keys before storage
|
|
106
|
+
* - Use secure key derivation (e.g., PBKDF2 or similar)
|
|
107
|
+
* - Provide atomic read/write/delete operations
|
|
108
|
+
*/
|
|
109
|
+
interface SessionStorage {
|
|
110
|
+
/**
|
|
111
|
+
* Save a session (private key will be encrypted)
|
|
112
|
+
*/
|
|
113
|
+
save(session: SessionKey): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Load the active session (private key will be decrypted)
|
|
116
|
+
*/
|
|
117
|
+
load(): Promise<SessionKey | null>;
|
|
118
|
+
/**
|
|
119
|
+
* Clear all stored sessions
|
|
120
|
+
*/
|
|
121
|
+
clear(): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* Check if a session exists
|
|
124
|
+
*/
|
|
125
|
+
exists(): Promise<boolean>;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Parameters for an action to be signed with a session key
|
|
129
|
+
*/
|
|
130
|
+
interface ActionParams {
|
|
131
|
+
/** Action type (transfer, execute, bridge, etc.) */
|
|
132
|
+
action: string;
|
|
133
|
+
/** Target chain (Wormhole chain ID) */
|
|
134
|
+
targetChain: number;
|
|
135
|
+
/** Transaction value in base units */
|
|
136
|
+
value: bigint;
|
|
137
|
+
/** Action-specific payload */
|
|
138
|
+
payload: Uint8Array;
|
|
139
|
+
/** Nonce for replay prevention */
|
|
140
|
+
nonce: number;
|
|
141
|
+
/** Optional deadline timestamp */
|
|
142
|
+
deadline?: number;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Result of session-signed action
|
|
146
|
+
*/
|
|
147
|
+
interface SessionSignedAction {
|
|
148
|
+
/** Original action parameters */
|
|
149
|
+
action: ActionParams;
|
|
150
|
+
/** Session signature */
|
|
151
|
+
signature: SessionSignature;
|
|
152
|
+
/** Ready to submit to relayer or on-chain */
|
|
153
|
+
readyToSubmit: boolean;
|
|
154
|
+
}
|
|
155
|
+
declare class SessionError extends Error {
|
|
156
|
+
code: SessionErrorCode;
|
|
157
|
+
details?: unknown | undefined;
|
|
158
|
+
constructor(message: string, code: SessionErrorCode, details?: unknown | undefined);
|
|
159
|
+
}
|
|
160
|
+
declare enum SessionErrorCode {
|
|
161
|
+
NO_ACTIVE_SESSION = "NO_ACTIVE_SESSION",
|
|
162
|
+
SESSION_EXPIRED = "SESSION_EXPIRED",
|
|
163
|
+
VALUE_EXCEEDS_LIMIT = "VALUE_EXCEEDS_LIMIT",
|
|
164
|
+
CHAIN_NOT_ALLOWED = "CHAIN_NOT_ALLOWED",
|
|
165
|
+
STORAGE_ERROR = "STORAGE_ERROR",
|
|
166
|
+
ENCRYPTION_ERROR = "ENCRYPTION_ERROR",
|
|
167
|
+
INVALID_CONFIG = "INVALID_CONFIG",
|
|
168
|
+
REGISTRATION_FAILED = "REGISTRATION_FAILED",
|
|
169
|
+
REVOCATION_FAILED = "REVOCATION_FAILED"
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export { type ActionParams as A, type SessionKey as S, type SessionStorage as a, type SessionConfig as b, type SessionSignature as c, type SessionManagerConfig as d, type SessionEvent as e, type SessionEventCallback as f, type SessionSignedAction as g, SessionErrorCode as h, SessionError as i };
|