Skip to Content

@cfxdevkit/core


@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

SessionKeyOptions

Session key configuration

Returns

SessionKey

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

SessionKey[]

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

SessionKey[]

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

SignTransactionRequest

Transaction request

Returns

Promise<SignedTransaction>

Signed transaction

Throws

SessionKeyError if session key is invalid or transaction violates permissions