@cfxdevkit/core / SessionKeyManager
Class: SessionKeyManager
Defined in: packages/core/src/wallet/session-keys/manager.ts:63
Session Key Manager
Manages temporary session keys for delegated transaction signing. Session keys allow applications to sign transactions on behalf of users with time-limited and permission-scoped access.
Use Cases:
- Gaming: Allow game to make in-game purchases without repeated wallet prompts
- Trading: Enable automated trading bots with spending limits
- DeFi: Permit auto-compounding or rebalancing with constraints
Example
const manager = new SessionKeyManager();
// Create session key with 1 hour TTL and spending limit
const sessionKey = manager.generateSessionKey(
'0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
{
ttl: 3600,
permissions: {
maxValue: parseEther('1.0'),
contracts: ['0xGameContract...']
},
chain: 'evm'
}
);
// Use session key to sign transactions
const signedTx = await manager.signWithSessionKey(sessionKey.id, {
to: '0xGameContract...',
data: '0x...',
chain: 'evm'
});Constructors
Constructor
new SessionKeyManager():
SessionKeyManager
Returns
SessionKeyManager
Methods
cleanupExpired()
cleanupExpired():
number
Defined in: packages/core/src/wallet/session-keys/manager.ts:300
Clean up expired session keys
Returns
number
Number of removed session keys
generateSessionKey()
generateSessionKey(
parentAddress,options):SessionKey
Defined in: packages/core/src/wallet/session-keys/manager.ts:73
Generate a new session key
Parameters
parentAddress
string
Parent wallet address
options
Session key configuration
Returns
Created session key
getSessionKey()
getSessionKey(
sessionKeyId):SessionKey|undefined
Defined in: packages/core/src/wallet/session-keys/manager.ts:111
Get session key by ID
Parameters
sessionKeyId
string
Session key identifier
Returns
SessionKey | undefined
Session key or undefined
getStats()
getStats():
object
Defined in: packages/core/src/wallet/session-keys/manager.ts:319
Get session key statistics
Returns
object
Statistics about session keys
active
active:
number=active.length
expired
expired:
number=expired.length
inactive
inactive:
number
total
total:
number=all.length
listActiveSessionKeys()
listActiveSessionKeys(
parentAddress):SessionKey[]
Defined in: packages/core/src/wallet/session-keys/manager.ts:152
List active session keys for a parent address
Parameters
parentAddress
string
Parent wallet address
Returns
Array of active session keys
listSessionKeys()
listSessionKeys(
parentAddress):SessionKey[]
Defined in: packages/core/src/wallet/session-keys/manager.ts:140
List all session keys for a parent address
Parameters
parentAddress
string
Parent wallet address
Returns
Array of session keys
revokeSessionKey()
revokeSessionKey(
sessionKeyId):void
Defined in: packages/core/src/wallet/session-keys/manager.ts:127
Revoke a session key
Parameters
sessionKeyId
string
Session key identifier
Returns
void
signWithSessionKey()
signWithSessionKey(
sessionKeyId,request):Promise<SignedTransaction>
Defined in: packages/core/src/wallet/session-keys/manager.ts:251
Sign transaction with session key
Parameters
sessionKeyId
string
Session key identifier
request
Transaction request
Returns
Promise<SignedTransaction>
Signed transaction
Throws
SessionKeyError if session key is invalid or transaction violates permissions