/**
 * Used to switch how authentication/requests work under the hood
 */
export declare const REST_CLIENT_TYPE_ENUM: {
    /** Spot & Margin */
    readonly main: "main";
    /** Futures */
    readonly futures: "futures";
    /** Broker */
    readonly broker: "broker";
};
export type RestClientType = (typeof REST_CLIENT_TYPE_ENUM)[keyof typeof REST_CLIENT_TYPE_ENUM];
export interface RestClientOptions {
    /** Your API key */
    apiKey?: string;
    /** Your API secret */
    apiSecret?: string;
    /** Your API passphrase (can be anything) that you set when creating this API key (NOT your account password) */
    apiPassphrase?: string;
    /** The API key version. Defaults to "2" right now. You can see this in your API management page */
    apiKeyVersion?: number | string;
    /** Default: false. If true, we'll throw errors if any params are undefined */
    strictParamValidation?: boolean;
    /**
     * Optionally override API protocol + domain
     * e.g baseUrl: 'https://api.kucoin.com'
     **/
    baseUrl?: string;
    /** Default: true. whether to try and post-process request exceptions (and throw them). */
    parseExceptions?: boolean;
    customTimestampFn?: () => number;
}
export declare function serializeParams<T extends Record<string, any> | undefined = {}>(params: T, strict_validation: boolean | undefined, encodeValues: boolean, prefixWith: string): string;
export declare const APIIDMain = "NODESDK";
export declare const APIIDMainSign = "d28f5b4a-179d-4fcb-9c00-c8319c0bb82c";
export declare const APIIDFutures = "NODESDKFUTURES";
export declare const APIIDFuturesSign = "7f7fb0d6-e600-4ef4-8fe3-41e6aea9af84";
export declare function getRestBaseUrl(useTestnet: boolean, restInverseOptions: RestClientOptions, restClientType: RestClientType): string;
