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
TypeScript
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>;
}