UNPKG

askexperts

Version:

AskExperts SDK: build and use AI experts - ask them questions and pay with bitcoin on an open protocol

132 lines (131 loc) 3.52 kB
import { Request } from "express"; /** * Interface for wallet server permissions */ export interface WalletServerPerms { /** * Check if the user has permission to perform the requested operation * @param user_id - User ID * @param req - Express request object * @returns Promise that resolves with optional listIds if the user has permission, rejects otherwise */ checkPerms(user_id: string, req: Request): Promise<{ listIds?: string[]; }>; /** * Get the user ID associated with a public key * @param pubkey - Public key of the user * @returns Promise that resolves with the user ID */ getUserId(pubkey: string): Promise<string>; } /** * Configuration options for WalletServer */ export interface WalletServerOptions { /** Port to listen on */ port: number; /** Base path for the API (e.g., '/api') */ basePath?: string; /** Server origin for auth token validation (e.g. 'https://yourdomain.com') */ origin?: string; /** Optional permissions interface for authentication and authorization */ perms?: WalletServerPerms; } /** * WalletServer class that provides an HTTP API for WalletClient operations */ export declare class WalletServer { private app; private port; private basePath; private stopped; private server?; private walletClient; private perms?; private serverOrigin; /** * Creates a new WalletServer instance * * @param options - Configuration options */ constructor(options: WalletServerOptions); /** * Authentication middleware * Parses the auth token and checks permissions */ private authMiddleware; /** * Sets up the API routes * @private */ private setupRoutes; /** * Handles requests to list all wallets * * @param req - Express request object * @param res - Express response object * @private */ private handleListWallets; /** * Handles requests to get a wallet by ID * * @param req - Express request object * @param res - Express response object * @private */ private handleGetWallet; /** * Handles requests to get a wallet by name * * @param req - Express request object * @param res - Express response object * @private */ private handleGetWalletByName; /** * Handles requests to get the default wallet * * @param req - Express request object * @param res - Express response object * @private */ private handleGetDefaultWallet; /** * Handles requests to insert a new wallet * * @param req - Express request object * @param res - Express response object * @private */ private handleInsertWallet; /** * Handles requests to update an existing wallet * * @param req - Express request object * @param res - Express response object * @private */ private handleUpdateWallet; /** * Handles requests to delete a wallet * * @param req - Express request object * @param res - Express response object * @private */ private handleDeleteWallet; /** * Starts the server * * @returns Promise that resolves when the server is started */ start(): Promise<void>; /** * Stops the server * * @returns Promise that resolves when the server is stopped */ stop(): Promise<void>; }