Skip to Content
Packages@cfxdevkit/services

@cfxdevkit/services

Pluggable backends: keystore, crypto, dex, tokens.

Install

pnpm add @cfxdevkit/services

Scope: Stateless service primitives sitting just above @cfxdevkit/cdk.

Responsibilities

  • AES-256-GCM encryption helpers
  • Encrypted keystore format + read/write (file, memory, Ledger hardware wallet)
  • DEX adapters (Swappi today; pluggable interface for future DEXs)
  • Token metadata service
  • Session token management and bearer token parsing
  • Embedded wallet integration via keystore-backed managers
  • Audit logging for keystore operations

Depends on: @cfxdevkit/cdk only.

Sub-paths

Sub-pathExports
.30 symbols
./auth10 symbols
./keystore12 symbols
./keystore-audit2 symbols
./keystore-memory3 symbols
./keystore-file6 symbols
./keystore-ledger11 symbols
./crypto18 symbols
./embedded-wallet5 symbols

.

export declare const __packageName: "@cfxdevkit/services"; export declare const noopAuditLogger: AuditLogger; export { MemoryNonceStoreOptions } from "./auth"; export { NonceEntry } from "./auth"; export { createMemoryNonceStore } from "./auth"; export { MemoryNonceStore } from "./auth"; export { SessionToken } from "./auth"; export { SessionTokenOptions } from "./auth"; export { VerifySessionTokenOptions } from "./auth"; export { readBearerToken } from "./auth"; export { signSessionToken } from "./auth"; export { verifySessionToken } from "./auth"; export { SecretRef, Capability, StoredSecret, KeystoreCapabilities, KeystoreListOptions, KeystoreCallOptions, KeystorePutInput, KeystoreProvider } from "./keystore"; export { AuditEntry, AuditLogger, Timestamp } from "./keystore-audit"; export { MemoryNonceStoreOptions, NonceEntry, createMemoryNonceStore, MemoryNonceStore } from "./keystore-memory"; export { KeystoreFileProvider, KeystoreFileProviderOptions } from "./keystore-file"; export { KeystoreLedgerProvider, LedgerKeyPath, LedgerKeyPathOptions } from "./keystore-ledger"; export { encryptData, decryptData, generateKey, deriveKeyFromPassword } from "./crypto"; export { EmbeddedWallet, EmbeddedWalletManagerOptions, EmbeddedWalletManager, KeystoreEmbeddedWalletManager, createEmbeddedWalletManager } from "./embedded-wallet"; export { createAppendOnlyAuditLogger, AppendOnlyAuditLoggerOptions } from "./keystore-audit";

./auth

Session token and bearer token utilities for stateless authentication.

export { MemoryNonceStoreOptions, NonceEntry, createMemoryNonceStore, MemoryNonceStore } from "./auth"; export { SessionToken, SessionTokenOptions, VerifySessionTokenOptions } from "./auth"; export { readBearerToken, signSessionToken, verifySessionToken } from "./auth";

./keystore

Core keystore interfaces and types.

export interface SecretRef { id: string; path: string[]; } export interface Capability { name: string; args?: Record<string, unknown>; } export interface StoredSecret { id: string; path: string[]; encryptedValue: Uint8Array; nonce: Uint8Array; capabilities: Capability[]; createdAt: Timestamp; updatedAt: Timestamp; } export interface KeystoreCapabilities { list: boolean; get: boolean; put: boolean; delete: boolean; } export interface KeystoreListOptions { prefix?: string[]; } export interface KeystoreCallOptions { capability: Capability; } export interface KeystorePutInput { id: string; path: string[]; value: Uint8Array; capabilities: Capability[]; } export interface KeystoreProvider { list(options?: KeystoreListOptions): Promise<StoredSecret[]>; get(id: string): Promise<StoredSecret | null>; put(input: KeystorePutInput): Promise<void>; delete(id: string): Promise<void>; }

./keystore-audit

Audit logging for keystore operations.

export interface AuditEntry { timestamp: Timestamp; operation: string; keystoreId?: string; secretId?: string; caller?: string; success: boolean; error?: string; } export interface AuditLogger { log(entry: AuditEntry): void; } export function createAppendOnlyAuditLogger(opts: AppendOnlyAuditLoggerOptions): AuditLogger; export interface AppendOnlyAuditLoggerOptions { onLog?: (entry: AuditEntry) => void; }

./keystore-memory

In-memory keystore provider.

export { MemoryNonceStoreOptions, NonceEntry, createMemoryNonceStore, MemoryNonceStore } from "./keystore-memory";

./keystore-file

File-backed encrypted keystore provider.

export interface KeystoreFileProviderOptions { path: string; password: string | (() => string | Promise<string>); } export class KeystoreFileProvider implements KeystoreProvider { constructor(opts: KeystoreFileProviderOptions); list(options?: KeystoreListOptions): Promise<StoredSecret[]>; get(id: string): Promise<StoredSecret | null>; put(input: KeystorePutInput): Promise<void>; delete(id: string): Promise<void>; }

./keystore-ledger

Ledger hardware wallet-backed keystore provider.

export interface LedgerKeyPath { purpose: number; coinType: number; account: number; change: number; index: number; } export interface LedgerKeyPathOptions { path: LedgerKeyPath; } export class KeystoreLedgerProvider implements KeystoreProvider { constructor(opts: LedgerKeyPathOptions); list(options?: KeystoreListOptions): Promise<StoredSecret[]>; get(id: string): Promise<StoredSecret | null>; put(input: KeystorePutInput): Promise<void>; delete(id: string): Promise<void>; }

./crypto

AES-256-GCM encryption helpers.

export function encryptData(plaintext: Uint8Array, key: Uint8Array, nonce?: Uint8Array): { ciphertext: Uint8Array; nonce: Uint8Array }; export function decryptData(ciphertext: Uint8Array, key: Uint8Array, nonce: Uint8Array): Uint8Array; export function generateKey(): Uint8Array; export function deriveKeyFromPassword(password: string, salt: Uint8Array): Uint8Array;

./embedded-wallet

Embedded wallet integration using keystore-backed secret storage.

export interface EmbeddedWallet { id: string; address: string; createdAt: Timestamp; } export interface EmbeddedWalletManagerOptions { keystore: KeystoreProvider; } export interface EmbeddedWalletManager { createWallet(): Promise<EmbeddedWallet>; listWallets(): Promise<EmbeddedWallet[]>; getWallet(id: string): Promise<EmbeddedWallet | null>; deleteWallet(id: string): Promise<void>; } export class KeystoreEmbeddedWalletManager implements EmbeddedWalletManager { constructor(options: EmbeddedWalletManagerOptions); createWallet(): Promise<EmbeddedWallet>; listWallets(): Promise<EmbeddedWallet[]>; getWallet(id: string): Promise<EmbeddedWallet | null>; deleteWallet(id: string): Promise<void>; } export function createEmbeddedWalletManager(options: EmbeddedWalletManagerOptions): KeystoreEmbeddedWalletManager;

Usage

import { KeystoreFileProvider, encryptData, generateKey } from '@cfxdevkit/services'; // Derive encryption key from password const salt = new Uint8Array(16); const key = deriveKeyFromPassword('my-password', salt); // Encrypt data const plaintext = new TextEncoder().encode('secret data'); const { ciphertext, nonce } = encryptData(plaintext, key); // Initialize file-backed keystore const keystore = new KeystoreFileProvider({ path: './keystore.json', password: () => 'my-password' }); // Store encrypted secret await keystore.put({ id: 'my-secret', path: ['wallets', 'main'], value: ciphertext, capabilities: [{ name: 'sign' }] });

API Reference

See API.md for the full public surface.

Tier

Tier 0 — framework — Must not runtime-import from any higher tier.

API Reference

keystore

// Provides secure key management and cryptographic key operations for wallet accounts.

// Manages wallet account key generation, storage, encryption, and secure retrieval. export class Keystore { // Constructs a new keystore instance for managing wallet keys securely. constructor(); }

Usage

import { Keystore } from '@cfxdevkit/services/keystore'; // Create a new Keystore instance const keystore = new Keystore();

crypto

// Offers cryptographic primitives such as hashing, signing, encryption, and key derivation.

// Provides utilities for cryptographic operations including ECDSA signing, SHA-256 hashing, and key derivation. export class Crypto { // Constructs a new crypto instance for performing cryptographic operations. constructor(); }

Usage

import { Crypto } from '@cfxdevkit/services/crypto'; // Create a new Crypto instance const crypto = new Crypto();

dex

// Enables integration with decentralized exchanges for swapping, liquidity, and trading operations.

// Facilitates interaction with DEX protocols for token swaps, liquidity provision, and trade execution. export class Dex { // Constructs a new DEX service instance for interacting with decentralized exchanges. constructor(); }

Usage

import { Dex } from '@cfxdevkit/services/dex'; // Create a new Dex instance const dex = new Dex();

tokens

// Manages token metadata, balances, and interactions with fungible/non-fungible token standards.

// Handles token discovery, balance tracking, metadata retrieval, and interaction with ERC-20/ERC-721 standards. export class Tokens { // Constructs a new tokens service instance for managing token-related operations. constructor(); }

Usage

import { Tokens } from '@cfxdevkit/services/tokens'; // Create a new Tokens instance const tokens = new Tokens();
Last updated on