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