import { Method } from 'axios';
import { CoinbaseAccount, CoinbaseConfig, CoinbaseData, CoinbaseResult } from './types';
import { CryptoBalance } from './shared-types';
declare const BASE_URL = "https://api.coinbase.com";
declare const ENDPOINTS: {
    accounts: string;
};
/**
 * Coinbase Client
 *
 * Coinbase doesn't have an official node client, so a basic one is provided.
 *
 * There are two authentication methods: API key and OAuth2. Coinbase
 * discourages the use of API Keys except when writing your own software, so
 * OAuth2 is preferred.
 */
export declare class CoinbaseClient {
    config: CoinbaseConfig;
    /**
     * Create the client instance with baseUrl and scopes
     */
    constructor(config: CoinbaseConfig);
    /**
     * Execute a request and handle the response
     */
    request(method: Method, path: string, query?: Record<string, unknown>, data?: CoinbaseData): Promise<CoinbaseResult['accounts']>;
    /**
     * Generate a JWT for the current request
     */
    private generateSignedJwt;
    /**
     * Returns current coinbase accounts
     *
     * @see https://docs.cdp.coinbase.com/advanced-trade/reference/retailbrokerageapi_getaccounts
     */
    getAccounts(): Promise<CoinbaseAccount[]>;
    /**
     * Returns current coinbase holdings
     */
    getBalances(): Promise<CryptoBalance[]>;
}
export { BASE_URL as coinbaseAPIBaseUrl, ENDPOINTS as coinbaseEndpoints };
