{"version":3,"sources":["../src/spot.ts","../package.json","../src/rest-api/index.ts","../src/rest-api/modules/account-api.ts","../src/rest-api/modules/general-api.ts","../src/rest-api/modules/market-api.ts","../src/rest-api/modules/trade-api.ts","../src/rest-api/modules/user-data-stream-api.ts","../src/rest-api/rest-api.ts","../src/websocket-api/index.ts","../src/websocket-api/modules/account-api.ts","../src/websocket-api/modules/auth-api.ts","../src/websocket-api/modules/general-api.ts","../src/websocket-api/modules/market-api.ts","../src/websocket-api/modules/trade-api.ts","../src/websocket-api/modules/user-data-stream-api.ts","../src/websocket-api/websocket-api.ts","../src/websocket-api/websocket-api-connection.ts","../src/websocket-streams/index.ts","../src/websocket-streams/modules/web-socket-streams-api.ts","../src/websocket-streams/websocket-streams.ts","../src/websocket-streams/websocket-streams-connection.ts","../src/index.ts"],"sourcesContent":["import {\n    buildUserAgent,\n    ConfigurationRestAPI,\n    ConfigurationWebsocketAPI,\n    ConfigurationWebsocketStreams,\n    SPOT_REST_API_PROD_URL,\n    SPOT_WS_API_PROD_URL,\n    SPOT_WS_STREAMS_PROD_URL,\n} from '@binance/common';\nimport { name, version } from '../package.json';\nimport { RestAPI } from './rest-api';\nimport { WebsocketAPI } from './websocket-api';\nimport { WebsocketStreams } from './websocket-streams';\n\nexport interface ConfigurationSpot {\n    configurationRestAPI?: ConfigurationRestAPI;\n    configurationWebsocketAPI?: ConfigurationWebsocketAPI;\n    configurationWebsocketStreams?: ConfigurationWebsocketStreams;\n}\n\nexport class Spot {\n    public restAPI!: RestAPI;\n    public websocketAPI!: WebsocketAPI;\n    public websocketStreams!: WebsocketStreams;\n\n    constructor(config: ConfigurationSpot) {\n        const userAgent = buildUserAgent(name, version);\n\n        if (config?.configurationRestAPI) {\n            const configRestAPI = new ConfigurationRestAPI(\n                config.configurationRestAPI\n            ) as ConfigurationRestAPI & {\n                baseOptions: Record<string, unknown>;\n            };\n            configRestAPI.basePath = configRestAPI.basePath || SPOT_REST_API_PROD_URL;\n            configRestAPI.baseOptions = configRestAPI.baseOptions || {};\n            configRestAPI.baseOptions.headers = {\n                ...(configRestAPI.baseOptions.headers || {}),\n                'User-Agent': userAgent,\n            };\n            this.restAPI = new RestAPI(configRestAPI);\n        }\n        if (config?.configurationWebsocketAPI) {\n            const configWebsocketAPI = new ConfigurationWebsocketAPI(\n                config.configurationWebsocketAPI\n            ) as ConfigurationWebsocketAPI & {\n                userAgent: string;\n            };\n            configWebsocketAPI.wsURL = configWebsocketAPI.wsURL || SPOT_WS_API_PROD_URL;\n            configWebsocketAPI.userAgent = userAgent;\n            this.websocketAPI = new WebsocketAPI(configWebsocketAPI);\n        }\n        if (config?.configurationWebsocketStreams) {\n            const configWebsocketStreams = new ConfigurationWebsocketStreams(\n                config.configurationWebsocketStreams\n            ) as ConfigurationWebsocketStreams & {\n                userAgent: string;\n            };\n            configWebsocketStreams.wsURL = configWebsocketStreams.wsURL || SPOT_WS_STREAMS_PROD_URL;\n            configWebsocketStreams.userAgent = userAgent;\n            this.websocketStreams = new WebsocketStreams(configWebsocketStreams);\n        }\n    }\n}\n","{\n    \"name\": \"@binance/spot\",\n    \"description\": \"Official Binance Spot Connector - A lightweight library that provides a convenient interface to Binance's Spot REST API, WebSocket API and WebSocket Streams.\",\n    \"version\": \"8.0.1\",\n    \"main\": \"./dist/index.js\",\n    \"module\": \"./dist/index.mjs\",\n    \"types\": \"./dist/index.d.ts\",\n    \"exports\": {\n        \".\": {\n            \"require\": \"./dist/index.js\",\n            \"import\": \"./dist/index.mjs\"\n        }\n    },\n    \"scripts\": {\n        \"prepublishOnly\": \"npm run build\",\n        \"build\": \"npm run clean && tsup\",\n        \"typecheck\": \"tsc --noEmit\",\n        \"clean\": \"rm -rf dist\",\n        \"test\": \"npx jest --maxWorkers=4 --bail\",\n        \"test:watch\": \"npx jest --watch\",\n        \"format\": \"npx prettier --ignore-path .prettierignore --write .\",\n        \"lint\": \"npx eslint '**/*.ts' --fix\"\n    },\n    \"keywords\": [\n        \"Binance\",\n        \"API\",\n        \"Spot\",\n        \"Connector\",\n        \"REST\",\n        \"WebSocket\",\n        \"Trading\"\n    ],\n    \"author\": \"Binance\",\n    \"license\": \"MIT\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/binance/binance-connector-js.git\"\n    },\n    \"bugs\": {\n        \"url\": \"https://github.com/binance/binance-connector-js/issues\"\n    },\n    \"homepage\": \"https://github.com/binance/binance-connector-js#readme\",\n    \"files\": [\n        \"dist\"\n    ],\n    \"devDependencies\": {\n        \"@types/jest\": \"^29.5.4\",\n        \"@types/node\": \"^20.17.24\",\n        \"eslint\": \"8.57.0\",\n        \"jest\": \"^29.6.4\",\n        \"prettier\": \"^3.3.3\",\n        \"ts-jest\": \"^29.1.1\",\n        \"ts-node\": \"^10.9.1\",\n        \"tsup\": \"^8.4.0\",\n        \"typescript\": \"^5.7.2\",\n        \"typescript-eslint\": \"^8.24.0\"\n    },\n    \"dependencies\": {\n        \"@binance/common\": \"^1.1.2\",\n        \"@types/ws\": \"^8.5.5\",\n        \"axios\": \"^1.7.4\",\n        \"ws\": \"^8.17.1\"\n    }\n}\n","/**\n * Binance Spot REST API\n *\n * OpenAPI Specifications for the Binance Spot REST API\n *\n * API documents:\n * - [Github rest-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md)\n * - [General API information for rest-api on website](https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport * from './types';\nexport * from './modules';\nexport * from './rest-api';\n","/**\n * Binance Spot REST API\n *\n * OpenAPI Specifications for the Binance Spot REST API\n *\n * API documents:\n * - [Github rest-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md)\n * - [General API information for rest-api on website](https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {\n    ConfigurationRestAPI,\n    TimeUnit,\n    RestApiResponse,\n    assertParamExists,\n    sendRequest,\n    type RequestArgs,\n} from '@binance/common';\nimport type {\n    AccountCommissionResponse,\n    AllOrderListResponse,\n    AllOrdersResponse,\n    GetAccountResponse,\n    GetOpenOrdersResponse,\n    GetOrderListResponse,\n    GetOrderResponse,\n    MyAllocationsResponse,\n    MyPreventedMatchesResponse,\n    MyTradesResponse,\n    OpenOrderListResponse,\n    OrderAmendmentsResponse,\n    RateLimitOrderResponse,\n} from '../types';\n\n/**\n * AccountApi - axios parameter creator\n */\nconst AccountApiAxiosParamCreator = function (configuration: ConfigurationRestAPI) {\n    return {\n        /**\n         * Get current account commission rates.\n         * Weight: 20\n         *\n         * @summary Query Commission Rates\n         * @param {string} symbol\n         *\n         * @throws {RequiredError}\n         */\n        accountCommission: async (symbol: string): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('accountCommission', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/account/commission',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Retrieves all order lists based on provided optional parameters.\n         *\n         * Note that the time between `startTime` and `endTime` can't be longer than 24 hours.\n         * Weight: 20\n         *\n         * @summary Query all Order lists\n         * @param {number} [fromId] ID to get aggregate trades from INCLUSIVE.\n         * @param {number} [startTime] Timestamp in ms to get aggregate trades from INCLUSIVE.\n         * @param {number} [endTime] Timestamp in ms to get aggregate trades until INCLUSIVE.\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        allOrderList: async (\n            fromId?: number,\n            startTime?: number,\n            endTime?: number,\n            limit?: number,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (fromId !== undefined && fromId !== null) {\n                localVarQueryParameter['fromId'] = fromId;\n            }\n\n            if (startTime !== undefined && startTime !== null) {\n                localVarQueryParameter['startTime'] = startTime;\n            }\n\n            if (endTime !== undefined && endTime !== null) {\n                localVarQueryParameter['endTime'] = endTime;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/allOrderList',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Get all account orders; active, canceled, or filled.\n         * Weight: 20\n         *\n         * @summary All orders\n         * @param {string} symbol\n         * @param {number} [orderId]\n         * @param {number} [startTime] Timestamp in ms to get aggregate trades from INCLUSIVE.\n         * @param {number} [endTime] Timestamp in ms to get aggregate trades until INCLUSIVE.\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        allOrders: async (\n            symbol: string,\n            orderId?: number,\n            startTime?: number,\n            endTime?: number,\n            limit?: number,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('allOrders', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (orderId !== undefined && orderId !== null) {\n                localVarQueryParameter['orderId'] = orderId;\n            }\n\n            if (startTime !== undefined && startTime !== null) {\n                localVarQueryParameter['startTime'] = startTime;\n            }\n\n            if (endTime !== undefined && endTime !== null) {\n                localVarQueryParameter['endTime'] = endTime;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/allOrders',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Get current account information.\n         * Weight: 20\n         *\n         * @summary Account information\n         * @param {boolean} [omitZeroBalances] When set to `true`, emits only the non-zero balances of an account. <br>Default value: `false`\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        getAccount: async (\n            omitZeroBalances?: boolean,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (omitZeroBalances !== undefined && omitZeroBalances !== null) {\n                localVarQueryParameter['omitZeroBalances'] = omitZeroBalances;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/account',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Get all open orders on a symbol. **Careful** when accessing this with no symbol.\n         * Weight: 6 for a single symbol; **80** when the symbol parameter is omitted\n         *\n         * @summary Current open orders\n         * @param {string} [symbol] Symbol to query\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        getOpenOrders: async (symbol?: string, recvWindow?: number): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/openOrders',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Check an order's status.\n         * Weight: 4\n         *\n         * @summary Query order\n         * @param {string} symbol\n         * @param {number} [orderId]\n         * @param {string} [origClientOrderId]\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        getOrder: async (\n            symbol: string,\n            orderId?: number,\n            origClientOrderId?: string,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('getOrder', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (orderId !== undefined && orderId !== null) {\n                localVarQueryParameter['orderId'] = orderId;\n            }\n\n            if (origClientOrderId !== undefined && origClientOrderId !== null) {\n                localVarQueryParameter['origClientOrderId'] = origClientOrderId;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/order',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Retrieves a specific order list based on provided optional parameters.\n         * Weight: 4\n         *\n         * @summary Query Order list\n         * @param {number} [orderListId] Either `orderListId` or `listClientOrderId` must be provided\n         * @param {string} [origClientOrderId]\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        getOrderList: async (\n            orderListId?: number,\n            origClientOrderId?: string,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (orderListId !== undefined && orderListId !== null) {\n                localVarQueryParameter['orderListId'] = orderListId;\n            }\n\n            if (origClientOrderId !== undefined && origClientOrderId !== null) {\n                localVarQueryParameter['origClientOrderId'] = origClientOrderId;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/orderList',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Retrieves allocations resulting from SOR order placement.\n         * Weight: 20\n         *\n         * @summary Query Allocations\n         * @param {string} symbol\n         * @param {number} [startTime] Timestamp in ms to get aggregate trades from INCLUSIVE.\n         * @param {number} [endTime] Timestamp in ms to get aggregate trades until INCLUSIVE.\n         * @param {number} [fromAllocationId]\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         * @param {number} [orderId]\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        myAllocations: async (\n            symbol: string,\n            startTime?: number,\n            endTime?: number,\n            fromAllocationId?: number,\n            limit?: number,\n            orderId?: number,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('myAllocations', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (startTime !== undefined && startTime !== null) {\n                localVarQueryParameter['startTime'] = startTime;\n            }\n\n            if (endTime !== undefined && endTime !== null) {\n                localVarQueryParameter['endTime'] = endTime;\n            }\n\n            if (fromAllocationId !== undefined && fromAllocationId !== null) {\n                localVarQueryParameter['fromAllocationId'] = fromAllocationId;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            if (orderId !== undefined && orderId !== null) {\n                localVarQueryParameter['orderId'] = orderId;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/myAllocations',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Displays the list of orders that were expired due to STP.\n         *\n         * These are the combinations supported:\n         *\n         * `symbol` + `preventedMatchId`\n         * `symbol` + `orderId`\n         * `symbol` + `orderId` + `fromPreventedMatchId` (`limit` will default to 500)\n         * `symbol` + `orderId` + `fromPreventedMatchId` + `limit`\n         * Weight: Case                            | Weight\n         * ----                            | -----\n         * If `symbol` is invalid          | 2\n         * Querying by `preventedMatchId`  | 2\n         * Querying by `orderId`           | 20\n         *\n         * @summary Query Prevented Matches\n         * @param {string} symbol\n         * @param {number} [preventedMatchId]\n         * @param {number} [orderId]\n         * @param {number} [fromPreventedMatchId]\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        myPreventedMatches: async (\n            symbol: string,\n            preventedMatchId?: number,\n            orderId?: number,\n            fromPreventedMatchId?: number,\n            limit?: number,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('myPreventedMatches', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (preventedMatchId !== undefined && preventedMatchId !== null) {\n                localVarQueryParameter['preventedMatchId'] = preventedMatchId;\n            }\n\n            if (orderId !== undefined && orderId !== null) {\n                localVarQueryParameter['orderId'] = orderId;\n            }\n\n            if (fromPreventedMatchId !== undefined && fromPreventedMatchId !== null) {\n                localVarQueryParameter['fromPreventedMatchId'] = fromPreventedMatchId;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/myPreventedMatches',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Get trades for a specific account and symbol.\n         * Weight: Condition| Weight|\n         * ---| ---\n         * |Without orderId|20|\n         * |With orderId|5|\n         *\n         * @summary Account trade list\n         * @param {string} symbol\n         * @param {number} [orderId]\n         * @param {number} [startTime] Timestamp in ms to get aggregate trades from INCLUSIVE.\n         * @param {number} [endTime] Timestamp in ms to get aggregate trades until INCLUSIVE.\n         * @param {number} [fromId] ID to get aggregate trades from INCLUSIVE.\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        myTrades: async (\n            symbol: string,\n            orderId?: number,\n            startTime?: number,\n            endTime?: number,\n            fromId?: number,\n            limit?: number,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('myTrades', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (orderId !== undefined && orderId !== null) {\n                localVarQueryParameter['orderId'] = orderId;\n            }\n\n            if (startTime !== undefined && startTime !== null) {\n                localVarQueryParameter['startTime'] = startTime;\n            }\n\n            if (endTime !== undefined && endTime !== null) {\n                localVarQueryParameter['endTime'] = endTime;\n            }\n\n            if (fromId !== undefined && fromId !== null) {\n                localVarQueryParameter['fromId'] = fromId;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/myTrades',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         *\n         * Weight: 6\n         *\n         * @summary Query Open Order lists\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        openOrderList: async (recvWindow?: number): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/openOrderList',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Queries all amendments of a single order.\n         * Weight: 4\n         *\n         * @summary Query Order Amendments\n         * @param {string} symbol\n         * @param {number} orderId\n         * @param {number} [fromExecutionId]\n         * @param {number} [limit] Default:500; Maximum: 1000\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        orderAmendments: async (\n            symbol: string,\n            orderId: number,\n            fromExecutionId?: number,\n            limit?: number,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('orderAmendments', 'symbol', symbol);\n            // verify required parameter 'orderId' is not null or undefined\n            assertParamExists('orderAmendments', 'orderId', orderId);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (orderId !== undefined && orderId !== null) {\n                localVarQueryParameter['orderId'] = orderId;\n            }\n\n            if (fromExecutionId !== undefined && fromExecutionId !== null) {\n                localVarQueryParameter['fromExecutionId'] = fromExecutionId;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/order/amendments',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Displays the user's unfilled order count for all intervals.\n         * Weight: 40\n         *\n         * @summary Query Unfilled Order Count\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        rateLimitOrder: async (recvWindow?: number): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/rateLimit/order',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n    };\n};\n\n/**\n * AccountApi - interface\n * @interface AccountApi\n */\nexport interface AccountApiInterface {\n    /**\n     * Get current account commission rates.\n     * Weight: 20\n     *\n     * @summary Query Commission Rates\n     * @param {AccountCommissionRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    accountCommission(\n        requestParameters: AccountCommissionRequest\n    ): Promise<RestApiResponse<AccountCommissionResponse>>;\n    /**\n     * Retrieves all order lists based on provided optional parameters.\n     *\n     * Note that the time between `startTime` and `endTime` can't be longer than 24 hours.\n     * Weight: 20\n     *\n     * @summary Query all Order lists\n     * @param {AllOrderListRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    allOrderList(\n        requestParameters?: AllOrderListRequest\n    ): Promise<RestApiResponse<AllOrderListResponse>>;\n    /**\n     * Get all account orders; active, canceled, or filled.\n     * Weight: 20\n     *\n     * @summary All orders\n     * @param {AllOrdersRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    allOrders(requestParameters: AllOrdersRequest): Promise<RestApiResponse<AllOrdersResponse>>;\n    /**\n     * Get current account information.\n     * Weight: 20\n     *\n     * @summary Account information\n     * @param {GetAccountRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    getAccount(requestParameters?: GetAccountRequest): Promise<RestApiResponse<GetAccountResponse>>;\n    /**\n     * Get all open orders on a symbol. **Careful** when accessing this with no symbol.\n     * Weight: 6 for a single symbol; **80** when the symbol parameter is omitted\n     *\n     * @summary Current open orders\n     * @param {GetOpenOrdersRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    getOpenOrders(\n        requestParameters?: GetOpenOrdersRequest\n    ): Promise<RestApiResponse<GetOpenOrdersResponse>>;\n    /**\n     * Check an order's status.\n     * Weight: 4\n     *\n     * @summary Query order\n     * @param {GetOrderRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    getOrder(requestParameters: GetOrderRequest): Promise<RestApiResponse<GetOrderResponse>>;\n    /**\n     * Retrieves a specific order list based on provided optional parameters.\n     * Weight: 4\n     *\n     * @summary Query Order list\n     * @param {GetOrderListRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    getOrderList(\n        requestParameters?: GetOrderListRequest\n    ): Promise<RestApiResponse<GetOrderListResponse>>;\n    /**\n     * Retrieves allocations resulting from SOR order placement.\n     * Weight: 20\n     *\n     * @summary Query Allocations\n     * @param {MyAllocationsRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    myAllocations(\n        requestParameters: MyAllocationsRequest\n    ): Promise<RestApiResponse<MyAllocationsResponse>>;\n    /**\n     * Displays the list of orders that were expired due to STP.\n     *\n     * These are the combinations supported:\n     *\n     * `symbol` + `preventedMatchId`\n     * `symbol` + `orderId`\n     * `symbol` + `orderId` + `fromPreventedMatchId` (`limit` will default to 500)\n     * `symbol` + `orderId` + `fromPreventedMatchId` + `limit`\n     * Weight: Case                            | Weight\n     * ----                            | -----\n     * If `symbol` is invalid          | 2\n     * Querying by `preventedMatchId`  | 2\n     * Querying by `orderId`           | 20\n     *\n     * @summary Query Prevented Matches\n     * @param {MyPreventedMatchesRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    myPreventedMatches(\n        requestParameters: MyPreventedMatchesRequest\n    ): Promise<RestApiResponse<MyPreventedMatchesResponse>>;\n    /**\n     * Get trades for a specific account and symbol.\n     * Weight: Condition| Weight|\n     * ---| ---\n     * |Without orderId|20|\n     * |With orderId|5|\n     *\n     * @summary Account trade list\n     * @param {MyTradesRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    myTrades(requestParameters: MyTradesRequest): Promise<RestApiResponse<MyTradesResponse>>;\n    /**\n     *\n     * Weight: 6\n     *\n     * @summary Query Open Order lists\n     * @param {OpenOrderListRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    openOrderList(\n        requestParameters?: OpenOrderListRequest\n    ): Promise<RestApiResponse<OpenOrderListResponse>>;\n    /**\n     * Queries all amendments of a single order.\n     * Weight: 4\n     *\n     * @summary Query Order Amendments\n     * @param {OrderAmendmentsRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    orderAmendments(\n        requestParameters: OrderAmendmentsRequest\n    ): Promise<RestApiResponse<OrderAmendmentsResponse>>;\n    /**\n     * Displays the user's unfilled order count for all intervals.\n     * Weight: 40\n     *\n     * @summary Query Unfilled Order Count\n     * @param {RateLimitOrderRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApiInterface\n     */\n    rateLimitOrder(\n        requestParameters?: RateLimitOrderRequest\n    ): Promise<RestApiResponse<RateLimitOrderResponse>>;\n}\n\n/**\n * Request parameters for accountCommission operation in AccountApi.\n * @interface AccountCommissionRequest\n */\nexport interface AccountCommissionRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiAccountCommission\n     */\n    readonly symbol: string;\n}\n\n/**\n * Request parameters for allOrderList operation in AccountApi.\n * @interface AllOrderListRequest\n */\nexport interface AllOrderListRequest {\n    /**\n     * ID to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiAllOrderList\n     */\n    readonly fromId?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiAllOrderList\n     */\n    readonly startTime?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades until INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiAllOrderList\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof AccountApiAllOrderList\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiAllOrderList\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for allOrders operation in AccountApi.\n * @interface AllOrdersRequest\n */\nexport interface AllOrdersRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiAllOrders\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly orderId?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly startTime?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades until INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for getAccount operation in AccountApi.\n * @interface GetAccountRequest\n */\nexport interface GetAccountRequest {\n    /**\n     * When set to `true`, emits only the non-zero balances of an account. <br>Default value: `false`\n     * @type {boolean}\n     * @memberof AccountApiGetAccount\n     */\n    readonly omitZeroBalances?: boolean;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiGetAccount\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for getOpenOrders operation in AccountApi.\n * @interface GetOpenOrdersRequest\n */\nexport interface GetOpenOrdersRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof AccountApiGetOpenOrders\n     */\n    readonly symbol?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiGetOpenOrders\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for getOrder operation in AccountApi.\n * @interface GetOrderRequest\n */\nexport interface GetOrderRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiGetOrder\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiGetOrder\n     */\n    readonly orderId?: number;\n\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiGetOrder\n     */\n    readonly origClientOrderId?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiGetOrder\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for getOrderList operation in AccountApi.\n * @interface GetOrderListRequest\n */\nexport interface GetOrderListRequest {\n    /**\n     * Either `orderListId` or `listClientOrderId` must be provided\n     * @type {number}\n     * @memberof AccountApiGetOrderList\n     */\n    readonly orderListId?: number;\n\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiGetOrderList\n     */\n    readonly origClientOrderId?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiGetOrderList\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for myAllocations operation in AccountApi.\n * @interface MyAllocationsRequest\n */\nexport interface MyAllocationsRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly symbol: string;\n\n    /**\n     * Timestamp in ms to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly startTime?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades until INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly endTime?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly fromAllocationId?: number;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly limit?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly orderId?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for myPreventedMatches operation in AccountApi.\n * @interface MyPreventedMatchesRequest\n */\nexport interface MyPreventedMatchesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly preventedMatchId?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly orderId?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly fromPreventedMatchId?: number;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for myTrades operation in AccountApi.\n * @interface MyTradesRequest\n */\nexport interface MyTradesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiMyTrades\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly orderId?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly startTime?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades until INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly endTime?: number;\n\n    /**\n     * ID to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly fromId?: number;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for openOrderList operation in AccountApi.\n * @interface OpenOrderListRequest\n */\nexport interface OpenOrderListRequest {\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiOpenOrderList\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderAmendments operation in AccountApi.\n * @interface OrderAmendmentsRequest\n */\nexport interface OrderAmendmentsRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly orderId: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly fromExecutionId?: number;\n\n    /**\n     * Default:500; Maximum: 1000\n     * @type {number}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for rateLimitOrder operation in AccountApi.\n * @interface RateLimitOrderRequest\n */\nexport interface RateLimitOrderRequest {\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiRateLimitOrder\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * AccountApi - object-oriented interface\n * @class AccountApi\n */\nexport class AccountApi implements AccountApiInterface {\n    private readonly configuration: ConfigurationRestAPI;\n    private localVarAxiosParamCreator;\n\n    constructor(configuration: ConfigurationRestAPI) {\n        this.configuration = configuration;\n        this.localVarAxiosParamCreator = AccountApiAxiosParamCreator(configuration);\n    }\n\n    /**\n     * Get current account commission rates.\n     * Weight: 20\n     *\n     * @summary Query Commission Rates\n     * @param {AccountCommissionRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AccountCommissionResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-commission-rates-user_data Binance API Documentation}\n     */\n    public async accountCommission(\n        requestParameters: AccountCommissionRequest\n    ): Promise<RestApiResponse<AccountCommissionResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.accountCommission(\n            requestParameters?.symbol\n        );\n        return sendRequest<AccountCommissionResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Retrieves all order lists based on provided optional parameters.\n     *\n     * Note that the time between `startTime` and `endTime` can't be longer than 24 hours.\n     * Weight: 20\n     *\n     * @summary Query all Order lists\n     * @param {AllOrderListRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AllOrderListResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-all-order-lists-user_data Binance API Documentation}\n     */\n    public async allOrderList(\n        requestParameters: AllOrderListRequest = {}\n    ): Promise<RestApiResponse<AllOrderListResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.allOrderList(\n            requestParameters?.fromId,\n            requestParameters?.startTime,\n            requestParameters?.endTime,\n            requestParameters?.limit,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<AllOrderListResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Get all account orders; active, canceled, or filled.\n     * Weight: 20\n     *\n     * @summary All orders\n     * @param {AllOrdersRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AllOrdersResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#all-orders-user_data Binance API Documentation}\n     */\n    public async allOrders(\n        requestParameters: AllOrdersRequest\n    ): Promise<RestApiResponse<AllOrdersResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.allOrders(\n            requestParameters?.symbol,\n            requestParameters?.orderId,\n            requestParameters?.startTime,\n            requestParameters?.endTime,\n            requestParameters?.limit,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<AllOrdersResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Get current account information.\n     * Weight: 20\n     *\n     * @summary Account information\n     * @param {GetAccountRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetAccountResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#account-information-user_data Binance API Documentation}\n     */\n    public async getAccount(\n        requestParameters: GetAccountRequest = {}\n    ): Promise<RestApiResponse<GetAccountResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.getAccount(\n            requestParameters?.omitZeroBalances,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<GetAccountResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Get all open orders on a symbol. **Careful** when accessing this with no symbol.\n     * Weight: 6 for a single symbol; **80** when the symbol parameter is omitted\n     *\n     * @summary Current open orders\n     * @param {GetOpenOrdersRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetOpenOrdersResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#current-open-orders-user_data Binance API Documentation}\n     */\n    public async getOpenOrders(\n        requestParameters: GetOpenOrdersRequest = {}\n    ): Promise<RestApiResponse<GetOpenOrdersResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.getOpenOrders(\n            requestParameters?.symbol,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<GetOpenOrdersResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Check an order's status.\n     * Weight: 4\n     *\n     * @summary Query order\n     * @param {GetOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-order-user_data Binance API Documentation}\n     */\n    public async getOrder(\n        requestParameters: GetOrderRequest\n    ): Promise<RestApiResponse<GetOrderResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.getOrder(\n            requestParameters?.symbol,\n            requestParameters?.orderId,\n            requestParameters?.origClientOrderId,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<GetOrderResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Retrieves a specific order list based on provided optional parameters.\n     * Weight: 4\n     *\n     * @summary Query Order list\n     * @param {GetOrderListRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetOrderListResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-order-list-user_data Binance API Documentation}\n     */\n    public async getOrderList(\n        requestParameters: GetOrderListRequest = {}\n    ): Promise<RestApiResponse<GetOrderListResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.getOrderList(\n            requestParameters?.orderListId,\n            requestParameters?.origClientOrderId,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<GetOrderListResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Retrieves allocations resulting from SOR order placement.\n     * Weight: 20\n     *\n     * @summary Query Allocations\n     * @param {MyAllocationsRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<MyAllocationsResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-allocations-user_data Binance API Documentation}\n     */\n    public async myAllocations(\n        requestParameters: MyAllocationsRequest\n    ): Promise<RestApiResponse<MyAllocationsResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.myAllocations(\n            requestParameters?.symbol,\n            requestParameters?.startTime,\n            requestParameters?.endTime,\n            requestParameters?.fromAllocationId,\n            requestParameters?.limit,\n            requestParameters?.orderId,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<MyAllocationsResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Displays the list of orders that were expired due to STP.\n     *\n     * These are the combinations supported:\n     *\n     * `symbol` + `preventedMatchId`\n     * `symbol` + `orderId`\n     * `symbol` + `orderId` + `fromPreventedMatchId` (`limit` will default to 500)\n     * `symbol` + `orderId` + `fromPreventedMatchId` + `limit`\n     * Weight: Case                            | Weight\n     * ----                            | -----\n     * If `symbol` is invalid          | 2\n     * Querying by `preventedMatchId`  | 2\n     * Querying by `orderId`           | 20\n     *\n     * @summary Query Prevented Matches\n     * @param {MyPreventedMatchesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<MyPreventedMatchesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-prevented-matches-user_data Binance API Documentation}\n     */\n    public async myPreventedMatches(\n        requestParameters: MyPreventedMatchesRequest\n    ): Promise<RestApiResponse<MyPreventedMatchesResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.myPreventedMatches(\n            requestParameters?.symbol,\n            requestParameters?.preventedMatchId,\n            requestParameters?.orderId,\n            requestParameters?.fromPreventedMatchId,\n            requestParameters?.limit,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<MyPreventedMatchesResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Get trades for a specific account and symbol.\n     * Weight: Condition| Weight|\n     * ---| ---\n     * |Without orderId|20|\n     * |With orderId|5|\n     *\n     * @summary Account trade list\n     * @param {MyTradesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<MyTradesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#account-trade-list-user_data Binance API Documentation}\n     */\n    public async myTrades(\n        requestParameters: MyTradesRequest\n    ): Promise<RestApiResponse<MyTradesResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.myTrades(\n            requestParameters?.symbol,\n            requestParameters?.orderId,\n            requestParameters?.startTime,\n            requestParameters?.endTime,\n            requestParameters?.fromId,\n            requestParameters?.limit,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<MyTradesResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     *\n     * Weight: 6\n     *\n     * @summary Query Open Order lists\n     * @param {OpenOrderListRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OpenOrderListResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-open-order-lists-user_data Binance API Documentation}\n     */\n    public async openOrderList(\n        requestParameters: OpenOrderListRequest = {}\n    ): Promise<RestApiResponse<OpenOrderListResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.openOrderList(\n            requestParameters?.recvWindow\n        );\n        return sendRequest<OpenOrderListResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Queries all amendments of a single order.\n     * Weight: 4\n     *\n     * @summary Query Order Amendments\n     * @param {OrderAmendmentsRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderAmendmentsResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-order-amendments-user_data Binance API Documentation}\n     */\n    public async orderAmendments(\n        requestParameters: OrderAmendmentsRequest\n    ): Promise<RestApiResponse<OrderAmendmentsResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.orderAmendments(\n            requestParameters?.symbol,\n            requestParameters?.orderId,\n            requestParameters?.fromExecutionId,\n            requestParameters?.limit,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<OrderAmendmentsResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Displays the user's unfilled order count for all intervals.\n     * Weight: 40\n     *\n     * @summary Query Unfilled Order Count\n     * @param {RateLimitOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<RateLimitOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-unfilled-order-count-user_data Binance API Documentation}\n     */\n    public async rateLimitOrder(\n        requestParameters: RateLimitOrderRequest = {}\n    ): Promise<RestApiResponse<RateLimitOrderResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.rateLimitOrder(\n            requestParameters?.recvWindow\n        );\n        return sendRequest<RateLimitOrderResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n}\n","/**\n * Binance Spot REST API\n *\n * OpenAPI Specifications for the Binance Spot REST API\n *\n * API documents:\n * - [Github rest-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md)\n * - [General API information for rest-api on website](https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {\n    ConfigurationRestAPI,\n    TimeUnit,\n    RestApiResponse,\n    sendRequest,\n    type RequestArgs,\n} from '@binance/common';\nimport type { ExchangeInfoResponse, TimeResponse } from '../types';\n\n/**\n * GeneralApi - axios parameter creator\n */\nconst GeneralApiAxiosParamCreator = function (configuration: ConfigurationRestAPI) {\n    return {\n        /**\n         * Current exchange trading rules and symbol information\n         * Weight: 20\n         *\n         * @summary Exchange information\n         * @param {string} [symbol] Symbol to query\n         * @param {Array<string>} [symbols] List of symbols to query\n         * @param {Array<string>} [permissions] List of permissions to query\n         * @param {boolean} [showPermissionSets] Controls whether the content of the `permissionSets` field is populated or not. Defaults to `true`\n         * @param {ExchangeInfoSymbolStatusEnum} [symbolStatus]\n         *\n         * @throws {RequiredError}\n         */\n        exchangeInfo: async (\n            symbol?: string,\n            symbols?: Array<string>,\n            permissions?: Array<string>,\n            showPermissionSets?: boolean,\n            symbolStatus?: ExchangeInfoSymbolStatusEnum\n        ): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (symbols) {\n                localVarQueryParameter['symbols'] = symbols;\n            }\n\n            if (permissions) {\n                localVarQueryParameter['permissions'] = permissions;\n            }\n\n            if (showPermissionSets !== undefined && showPermissionSets !== null) {\n                localVarQueryParameter['showPermissionSets'] = showPermissionSets;\n            }\n\n            if (symbolStatus !== undefined && symbolStatus !== null) {\n                localVarQueryParameter['symbolStatus'] = symbolStatus;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/exchangeInfo',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Test connectivity to the Rest API.\n         * Weight: 1\n         *\n         * @summary Test connectivity\n         *\n         * @throws {RequiredError}\n         */\n        ping: async (): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/ping',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Test connectivity to the Rest API and get the current server time.\n         * Weight: 1\n         *\n         * @summary Check server time\n         *\n         * @throws {RequiredError}\n         */\n        time: async (): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/time',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n    };\n};\n\n/**\n * GeneralApi - interface\n * @interface GeneralApi\n */\nexport interface GeneralApiInterface {\n    /**\n     * Current exchange trading rules and symbol information\n     * Weight: 20\n     *\n     * @summary Exchange information\n     * @param {ExchangeInfoRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof GeneralApiInterface\n     */\n    exchangeInfo(\n        requestParameters?: ExchangeInfoRequest\n    ): Promise<RestApiResponse<ExchangeInfoResponse>>;\n    /**\n     * Test connectivity to the Rest API.\n     * Weight: 1\n     *\n     * @summary Test connectivity\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof GeneralApiInterface\n     */\n    ping(): Promise<RestApiResponse<void>>;\n    /**\n     * Test connectivity to the Rest API and get the current server time.\n     * Weight: 1\n     *\n     * @summary Check server time\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof GeneralApiInterface\n     */\n    time(): Promise<RestApiResponse<TimeResponse>>;\n}\n\n/**\n * Request parameters for exchangeInfo operation in GeneralApi.\n * @interface ExchangeInfoRequest\n */\nexport interface ExchangeInfoRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly symbols?: Array<string>;\n\n    /**\n     * List of permissions to query\n     * @type {Array<string>}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly permissions?: Array<string>;\n\n    /**\n     * Controls whether the content of the `permissionSets` field is populated or not. Defaults to `true`\n     * @type {boolean}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly showPermissionSets?: boolean;\n\n    /**\n     *\n     * @type {'TRADING' | 'END_OF_DAY' | 'HALT' | 'BREAK' | 'NON_REPRESENTABLE'}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly symbolStatus?: ExchangeInfoSymbolStatusEnum;\n}\n\n/**\n * GeneralApi - object-oriented interface\n * @class GeneralApi\n */\nexport class GeneralApi implements GeneralApiInterface {\n    private readonly configuration: ConfigurationRestAPI;\n    private localVarAxiosParamCreator;\n\n    constructor(configuration: ConfigurationRestAPI) {\n        this.configuration = configuration;\n        this.localVarAxiosParamCreator = GeneralApiAxiosParamCreator(configuration);\n    }\n\n    /**\n     * Current exchange trading rules and symbol information\n     * Weight: 20\n     *\n     * @summary Exchange information\n     * @param {ExchangeInfoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<ExchangeInfoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof GeneralApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-endpoints#exchange-information Binance API Documentation}\n     */\n    public async exchangeInfo(\n        requestParameters: ExchangeInfoRequest = {}\n    ): Promise<RestApiResponse<ExchangeInfoResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.exchangeInfo(\n            requestParameters?.symbol,\n            requestParameters?.symbols,\n            requestParameters?.permissions,\n            requestParameters?.showPermissionSets,\n            requestParameters?.symbolStatus\n        );\n        return sendRequest<ExchangeInfoResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Test connectivity to the Rest API.\n     * Weight: 1\n     *\n     * @summary Test connectivity\n     * @returns {Promise<RestApiResponse<void>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof GeneralApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-endpoints#test-connectivity Binance API Documentation}\n     */\n    public async ping(): Promise<RestApiResponse<void>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.ping();\n        return sendRequest<void>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Test connectivity to the Rest API and get the current server time.\n     * Weight: 1\n     *\n     * @summary Check server time\n     * @returns {Promise<RestApiResponse<TimeResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof GeneralApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-endpoints#check-server-time Binance API Documentation}\n     */\n    public async time(): Promise<RestApiResponse<TimeResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.time();\n        return sendRequest<TimeResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n}\n\nexport enum ExchangeInfoSymbolStatusEnum {\n    TRADING = 'TRADING',\n    END_OF_DAY = 'END_OF_DAY',\n    HALT = 'HALT',\n    BREAK = 'BREAK',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n","/**\n * Binance Spot REST API\n *\n * OpenAPI Specifications for the Binance Spot REST API\n *\n * API documents:\n * - [Github rest-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md)\n * - [General API information for rest-api on website](https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {\n    ConfigurationRestAPI,\n    TimeUnit,\n    RestApiResponse,\n    assertParamExists,\n    sendRequest,\n    type RequestArgs,\n} from '@binance/common';\nimport type {\n    AggTradesResponse,\n    AvgPriceResponse,\n    DepthResponse,\n    GetTradesResponse,\n    HistoricalTradesResponse,\n    KlinesResponse,\n    Ticker24hrResponse,\n    TickerBookTickerResponse,\n    TickerPriceResponse,\n    TickerResponse,\n    TickerTradingDayResponse,\n    UiKlinesResponse,\n} from '../types';\n\n/**\n * MarketApi - axios parameter creator\n */\nconst MarketApiAxiosParamCreator = function (configuration: ConfigurationRestAPI) {\n    return {\n        /**\n         * Get compressed, aggregate trades. Trades that fill at the time, from the same taker order, with the same price will have the quantity aggregated.\n         * Weight: 4\n         *\n         * @summary Compressed/Aggregate trades list\n         * @param {string} symbol\n         * @param {number} [fromId] ID to get aggregate trades from INCLUSIVE.\n         * @param {number} [startTime] Timestamp in ms to get aggregate trades from INCLUSIVE.\n         * @param {number} [endTime] Timestamp in ms to get aggregate trades until INCLUSIVE.\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         *\n         * @throws {RequiredError}\n         */\n        aggTrades: async (\n            symbol: string,\n            fromId?: number,\n            startTime?: number,\n            endTime?: number,\n            limit?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('aggTrades', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (fromId !== undefined && fromId !== null) {\n                localVarQueryParameter['fromId'] = fromId;\n            }\n\n            if (startTime !== undefined && startTime !== null) {\n                localVarQueryParameter['startTime'] = startTime;\n            }\n\n            if (endTime !== undefined && endTime !== null) {\n                localVarQueryParameter['endTime'] = endTime;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/aggTrades',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Current average price for a symbol.\n         * Weight: 2\n         *\n         * @summary Current average price\n         * @param {string} symbol\n         *\n         * @throws {RequiredError}\n         */\n        avgPrice: async (symbol: string): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('avgPrice', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/avgPrice',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         *\n         * Weight: Adjusted based on the limit:\n         *\n         * |Limit|Request Weight\n         * ------|-------\n         * 1-100|  5\n         * 101-500| 25\n         * 501-1000| 50\n         * 1001-5000| 250\n         *\n         * @summary Order book\n         * @param {string} symbol\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         *\n         * @throws {RequiredError}\n         */\n        depth: async (symbol: string, limit?: number): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('depth', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/depth',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Get recent trades.\n         * Weight: 25\n         *\n         * @summary Recent trades list\n         * @param {string} symbol\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         *\n         * @throws {RequiredError}\n         */\n        getTrades: async (symbol: string, limit?: number): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('getTrades', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/trades',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Get older trades.\n         * Weight: 25\n         *\n         * @summary Old trade lookup\n         * @param {string} symbol\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         * @param {number} [fromId] ID to get aggregate trades from INCLUSIVE.\n         *\n         * @throws {RequiredError}\n         */\n        historicalTrades: async (\n            symbol: string,\n            limit?: number,\n            fromId?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('historicalTrades', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            if (fromId !== undefined && fromId !== null) {\n                localVarQueryParameter['fromId'] = fromId;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/historicalTrades',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Kline/candlestick bars for a symbol.\n         * Klines are uniquely identified by their open time.\n         * Weight: 2\n         *\n         * @summary Kline/Candlestick data\n         * @param {string} symbol\n         * @param {KlinesIntervalEnum} interval\n         * @param {number} [startTime] Timestamp in ms to get aggregate trades from INCLUSIVE.\n         * @param {number} [endTime] Timestamp in ms to get aggregate trades until INCLUSIVE.\n         * @param {string} [timeZone] Default: 0 (UTC)\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         *\n         * @throws {RequiredError}\n         */\n        klines: async (\n            symbol: string,\n            interval: KlinesIntervalEnum,\n            startTime?: number,\n            endTime?: number,\n            timeZone?: string,\n            limit?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('klines', 'symbol', symbol);\n            // verify required parameter 'interval' is not null or undefined\n            assertParamExists('klines', 'interval', interval);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (interval !== undefined && interval !== null) {\n                localVarQueryParameter['interval'] = interval;\n            }\n\n            if (startTime !== undefined && startTime !== null) {\n                localVarQueryParameter['startTime'] = startTime;\n            }\n\n            if (endTime !== undefined && endTime !== null) {\n                localVarQueryParameter['endTime'] = endTime;\n            }\n\n            if (timeZone !== undefined && timeZone !== null) {\n                localVarQueryParameter['timeZone'] = timeZone;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/klines',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         *\n         * Weight: 4 for each requested <tt>symbol</tt> regardless of <tt>windowSize</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n         *\n         * @summary Rolling window price change statistics\n         * @param {string} [symbol] Symbol to query\n         * @param {Array<string>} [symbols] List of symbols to query\n         * @param {TickerWindowSizeEnum} [windowSize]\n         * @param {TickerTypeEnum} [type]\n         *\n         * @throws {RequiredError}\n         */\n        ticker: async (\n            symbol?: string,\n            symbols?: Array<string>,\n            windowSize?: TickerWindowSizeEnum,\n            type?: TickerTypeEnum\n        ): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (symbols) {\n                localVarQueryParameter['symbols'] = symbols;\n            }\n\n            if (windowSize !== undefined && windowSize !== null) {\n                localVarQueryParameter['windowSize'] = windowSize;\n            }\n\n            if (type !== undefined && type !== null) {\n                localVarQueryParameter['type'] = type;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/ticker',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * 24 hour rolling window price change statistics. **Careful** when accessing this with no symbol.\n         * Weight: <table>\n         * <thead>\n         * <tr>\n         * <th>Parameter</th>\n         * <th>Symbols Provided</th>\n         * <th>Weight</th>\n         * </tr>\n         * </thead>\n         * <tbody>\n         * <tr>\n         * <td rowspan=\"2\">symbol</td>\n         * <td>1</td>\n         * <td>2</td>\n         * </tr>\n         * <tr>\n         * <td>symbol parameter is omitted</td>\n         * <td>80</td>\n         * </tr>\n         * <tr>\n         * <td rowspan=\"4\">symbols</td>\n         * <td>1-20</td>\n         * <td>2</td>\n         * </tr>\n         * <tr>\n         * <td>21-100</td>\n         * <td>40</td>\n         * </tr>\n         * <tr>\n         * <td>101 or more</td>\n         * <td>80</td>\n         * </tr>\n         * <tr>\n         * <td>symbols parameter is omitted</td>\n         * <td>80</td>\n         * </tr>\n         * </tbody>\n         * </table>\n         *\n         * @summary 24hr ticker price change statistics\n         * @param {string} [symbol] Symbol to query\n         * @param {Array<string>} [symbols] List of symbols to query\n         * @param {Ticker24hrTypeEnum} [type]\n         *\n         * @throws {RequiredError}\n         */\n        ticker24hr: async (\n            symbol?: string,\n            symbols?: Array<string>,\n            type?: Ticker24hrTypeEnum\n        ): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (symbols) {\n                localVarQueryParameter['symbols'] = symbols;\n            }\n\n            if (type !== undefined && type !== null) {\n                localVarQueryParameter['type'] = type;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/ticker/24hr',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Best price/qty on the order book for a symbol or symbols.\n         * Weight: <table>\n         * <thead>\n         * <tr>\n         * <th>Parameter</th>\n         * <th>Symbols Provided</th>\n         * <th>Weight</th>\n         * </tr>\n         * </thead>\n         * <tbody>\n         * <tr>\n         * <td rowspan=\"2\">symbol</td>\n         * <td>1</td>\n         * <td>2</td>\n         * </tr>\n         * <tr>\n         * <td>symbol parameter is omitted</td>\n         * <td>4</td>\n         * </tr>\n         * <tr>\n         * <td>symbols</td>\n         * <td>Any</td>\n         * <td>4</td>\n         * </tr>\n         * </tbody>\n         * </table>\n         *\n         * @summary Symbol order book ticker\n         * @param {string} [symbol] Symbol to query\n         * @param {Array<string>} [symbols] List of symbols to query\n         *\n         * @throws {RequiredError}\n         */\n        tickerBookTicker: async (\n            symbol?: string,\n            symbols?: Array<string>\n        ): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (symbols) {\n                localVarQueryParameter['symbols'] = symbols;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/ticker/bookTicker',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Latest price for a symbol or symbols.\n         * Weight: <table>\n         * <thead>\n         * <tr>\n         * <th>Parameter</th>\n         * <th>Symbols Provided</th>\n         * <th>Weight</th>\n         * </tr>\n         * </thead>\n         * <tbody>\n         * <tr>\n         * <td rowspan=\"2\">symbol</td>\n         * <td>1</td>\n         * <td>2</td>\n         * </tr>\n         * <tr>\n         * <td>symbol parameter is omitted</td>\n         * <td>4</td>\n         * </tr>\n         * <tr>\n         * <td>symbols</td>\n         * <td>Any</td>\n         * <td>4</td>\n         * </tr>\n         * </tbody>\n         * </table>\n         *\n         * @summary Symbol price ticker\n         * @param {string} [symbol] Symbol to query\n         * @param {Array<string>} [symbols] List of symbols to query\n         *\n         * @throws {RequiredError}\n         */\n        tickerPrice: async (symbol?: string, symbols?: Array<string>): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (symbols) {\n                localVarQueryParameter['symbols'] = symbols;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/ticker/price',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Price change statistics for a trading day.\n         * Weight: 4 for each requested <tt>symbol</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n         *\n         * @summary Trading Day Ticker\n         * @param {string} [symbol] Symbol to query\n         * @param {Array<string>} [symbols] List of symbols to query\n         * @param {string} [timeZone] Default: 0 (UTC)\n         * @param {TickerTradingDayTypeEnum} [type]\n         *\n         * @throws {RequiredError}\n         */\n        tickerTradingDay: async (\n            symbol?: string,\n            symbols?: Array<string>,\n            timeZone?: string,\n            type?: TickerTradingDayTypeEnum\n        ): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (symbols) {\n                localVarQueryParameter['symbols'] = symbols;\n            }\n\n            if (timeZone !== undefined && timeZone !== null) {\n                localVarQueryParameter['timeZone'] = timeZone;\n            }\n\n            if (type !== undefined && type !== null) {\n                localVarQueryParameter['type'] = type;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/ticker/tradingDay',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * The request is similar to klines having the same parameters and response.\n         *\n         * `uiKlines` return modified kline data, optimized for presentation of candlestick charts.\n         * Weight: 2\n         *\n         * @summary UIKlines\n         * @param {string} symbol\n         * @param {UiKlinesIntervalEnum} interval\n         * @param {number} [startTime] Timestamp in ms to get aggregate trades from INCLUSIVE.\n         * @param {number} [endTime] Timestamp in ms to get aggregate trades until INCLUSIVE.\n         * @param {string} [timeZone] Default: 0 (UTC)\n         * @param {number} [limit] Default: 500; Maximum: 1000.\n         *\n         * @throws {RequiredError}\n         */\n        uiKlines: async (\n            symbol: string,\n            interval: UiKlinesIntervalEnum,\n            startTime?: number,\n            endTime?: number,\n            timeZone?: string,\n            limit?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('uiKlines', 'symbol', symbol);\n            // verify required parameter 'interval' is not null or undefined\n            assertParamExists('uiKlines', 'interval', interval);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (interval !== undefined && interval !== null) {\n                localVarQueryParameter['interval'] = interval;\n            }\n\n            if (startTime !== undefined && startTime !== null) {\n                localVarQueryParameter['startTime'] = startTime;\n            }\n\n            if (endTime !== undefined && endTime !== null) {\n                localVarQueryParameter['endTime'] = endTime;\n            }\n\n            if (timeZone !== undefined && timeZone !== null) {\n                localVarQueryParameter['timeZone'] = timeZone;\n            }\n\n            if (limit !== undefined && limit !== null) {\n                localVarQueryParameter['limit'] = limit;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/uiKlines',\n                method: 'GET',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n    };\n};\n\n/**\n * MarketApi - interface\n * @interface MarketApi\n */\nexport interface MarketApiInterface {\n    /**\n     * Get compressed, aggregate trades. Trades that fill at the time, from the same taker order, with the same price will have the quantity aggregated.\n     * Weight: 4\n     *\n     * @summary Compressed/Aggregate trades list\n     * @param {AggTradesRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    aggTrades(requestParameters: AggTradesRequest): Promise<RestApiResponse<AggTradesResponse>>;\n    /**\n     * Current average price for a symbol.\n     * Weight: 2\n     *\n     * @summary Current average price\n     * @param {AvgPriceRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    avgPrice(requestParameters: AvgPriceRequest): Promise<RestApiResponse<AvgPriceResponse>>;\n    /**\n     *\n     * Weight: Adjusted based on the limit:\n     *\n     * |Limit|Request Weight\n     * ------|-------\n     * 1-100|  5\n     * 101-500| 25\n     * 501-1000| 50\n     * 1001-5000| 250\n     *\n     * @summary Order book\n     * @param {DepthRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    depth(requestParameters: DepthRequest): Promise<RestApiResponse<DepthResponse>>;\n    /**\n     * Get recent trades.\n     * Weight: 25\n     *\n     * @summary Recent trades list\n     * @param {GetTradesRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    getTrades(requestParameters: GetTradesRequest): Promise<RestApiResponse<GetTradesResponse>>;\n    /**\n     * Get older trades.\n     * Weight: 25\n     *\n     * @summary Old trade lookup\n     * @param {HistoricalTradesRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    historicalTrades(\n        requestParameters: HistoricalTradesRequest\n    ): Promise<RestApiResponse<HistoricalTradesResponse>>;\n    /**\n     * Kline/candlestick bars for a symbol.\n     * Klines are uniquely identified by their open time.\n     * Weight: 2\n     *\n     * @summary Kline/Candlestick data\n     * @param {KlinesRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    klines(requestParameters: KlinesRequest): Promise<RestApiResponse<KlinesResponse>>;\n    /**\n     *\n     * Weight: 4 for each requested <tt>symbol</tt> regardless of <tt>windowSize</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n     *\n     * @summary Rolling window price change statistics\n     * @param {TickerRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    ticker(requestParameters?: TickerRequest): Promise<RestApiResponse<TickerResponse>>;\n    /**\n     * 24 hour rolling window price change statistics. **Careful** when accessing this with no symbol.\n     * Weight: <table>\n     * <thead>\n     * <tr>\n     * <th>Parameter</th>\n     * <th>Symbols Provided</th>\n     * <th>Weight</th>\n     * </tr>\n     * </thead>\n     * <tbody>\n     * <tr>\n     * <td rowspan=\"2\">symbol</td>\n     * <td>1</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>symbol parameter is omitted</td>\n     * <td>80</td>\n     * </tr>\n     * <tr>\n     * <td rowspan=\"4\">symbols</td>\n     * <td>1-20</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>21-100</td>\n     * <td>40</td>\n     * </tr>\n     * <tr>\n     * <td>101 or more</td>\n     * <td>80</td>\n     * </tr>\n     * <tr>\n     * <td>symbols parameter is omitted</td>\n     * <td>80</td>\n     * </tr>\n     * </tbody>\n     * </table>\n     *\n     * @summary 24hr ticker price change statistics\n     * @param {Ticker24hrRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    ticker24hr(requestParameters?: Ticker24hrRequest): Promise<RestApiResponse<Ticker24hrResponse>>;\n    /**\n     * Best price/qty on the order book for a symbol or symbols.\n     * Weight: <table>\n     * <thead>\n     * <tr>\n     * <th>Parameter</th>\n     * <th>Symbols Provided</th>\n     * <th>Weight</th>\n     * </tr>\n     * </thead>\n     * <tbody>\n     * <tr>\n     * <td rowspan=\"2\">symbol</td>\n     * <td>1</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>symbol parameter is omitted</td>\n     * <td>4</td>\n     * </tr>\n     * <tr>\n     * <td>symbols</td>\n     * <td>Any</td>\n     * <td>4</td>\n     * </tr>\n     * </tbody>\n     * </table>\n     *\n     * @summary Symbol order book ticker\n     * @param {TickerBookTickerRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    tickerBookTicker(\n        requestParameters?: TickerBookTickerRequest\n    ): Promise<RestApiResponse<TickerBookTickerResponse>>;\n    /**\n     * Latest price for a symbol or symbols.\n     * Weight: <table>\n     * <thead>\n     * <tr>\n     * <th>Parameter</th>\n     * <th>Symbols Provided</th>\n     * <th>Weight</th>\n     * </tr>\n     * </thead>\n     * <tbody>\n     * <tr>\n     * <td rowspan=\"2\">symbol</td>\n     * <td>1</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>symbol parameter is omitted</td>\n     * <td>4</td>\n     * </tr>\n     * <tr>\n     * <td>symbols</td>\n     * <td>Any</td>\n     * <td>4</td>\n     * </tr>\n     * </tbody>\n     * </table>\n     *\n     * @summary Symbol price ticker\n     * @param {TickerPriceRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    tickerPrice(\n        requestParameters?: TickerPriceRequest\n    ): Promise<RestApiResponse<TickerPriceResponse>>;\n    /**\n     * Price change statistics for a trading day.\n     * Weight: 4 for each requested <tt>symbol</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n     *\n     * @summary Trading Day Ticker\n     * @param {TickerTradingDayRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    tickerTradingDay(\n        requestParameters?: TickerTradingDayRequest\n    ): Promise<RestApiResponse<TickerTradingDayResponse>>;\n    /**\n     * The request is similar to klines having the same parameters and response.\n     *\n     * `uiKlines` return modified kline data, optimized for presentation of candlestick charts.\n     * Weight: 2\n     *\n     * @summary UIKlines\n     * @param {UiKlinesRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApiInterface\n     */\n    uiKlines(requestParameters: UiKlinesRequest): Promise<RestApiResponse<UiKlinesResponse>>;\n}\n\n/**\n * Request parameters for aggTrades operation in MarketApi.\n * @interface AggTradesRequest\n */\nexport interface AggTradesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiAggTrades\n     */\n    readonly symbol: string;\n\n    /**\n     * ID to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof MarketApiAggTrades\n     */\n    readonly fromId?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof MarketApiAggTrades\n     */\n    readonly startTime?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades until INCLUSIVE.\n     * @type {number}\n     * @memberof MarketApiAggTrades\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof MarketApiAggTrades\n     */\n    readonly limit?: number;\n}\n\n/**\n * Request parameters for avgPrice operation in MarketApi.\n * @interface AvgPriceRequest\n */\nexport interface AvgPriceRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiAvgPrice\n     */\n    readonly symbol: string;\n}\n\n/**\n * Request parameters for depth operation in MarketApi.\n * @interface DepthRequest\n */\nexport interface DepthRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiDepth\n     */\n    readonly symbol: string;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof MarketApiDepth\n     */\n    readonly limit?: number;\n}\n\n/**\n * Request parameters for getTrades operation in MarketApi.\n * @interface GetTradesRequest\n */\nexport interface GetTradesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiGetTrades\n     */\n    readonly symbol: string;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof MarketApiGetTrades\n     */\n    readonly limit?: number;\n}\n\n/**\n * Request parameters for historicalTrades operation in MarketApi.\n * @interface HistoricalTradesRequest\n */\nexport interface HistoricalTradesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiHistoricalTrades\n     */\n    readonly symbol: string;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof MarketApiHistoricalTrades\n     */\n    readonly limit?: number;\n\n    /**\n     * ID to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof MarketApiHistoricalTrades\n     */\n    readonly fromId?: number;\n}\n\n/**\n * Request parameters for klines operation in MarketApi.\n * @interface KlinesRequest\n */\nexport interface KlinesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiKlines\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'1s' | '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '6h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M'}\n     * @memberof MarketApiKlines\n     */\n    readonly interval: KlinesIntervalEnum;\n\n    /**\n     * Timestamp in ms to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof MarketApiKlines\n     */\n    readonly startTime?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades until INCLUSIVE.\n     * @type {number}\n     * @memberof MarketApiKlines\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 0 (UTC)\n     * @type {string}\n     * @memberof MarketApiKlines\n     */\n    readonly timeZone?: string;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof MarketApiKlines\n     */\n    readonly limit?: number;\n}\n\n/**\n * Request parameters for ticker operation in MarketApi.\n * @interface TickerRequest\n */\nexport interface TickerRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof MarketApiTicker\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTicker\n     */\n    readonly symbols?: Array<string>;\n\n    /**\n     *\n     * @type {'1m' | '2m' | '3m' | '4m' | '5m' | '6m' | '7m' | '8m' | '9m' | '10m' | '11m' | '12m' | '13m' | '14m' | '15m' | '16m' | '17m' | '18m' | '19m' | '20m' | '21m' | '22m' | '23m' | '24m' | '25m' | '26m' | '27m' | '28m' | '29m' | '30m' | '31m' | '32m' | '33m' | '34m' | '35m' | '36m' | '37m' | '38m' | '39m' | '40m' | '41m' | '42m' | '43m' | '44m' | '45m' | '46m' | '47m' | '48m' | '49m' | '50m' | '51m' | '52m' | '53m' | '54m' | '55m' | '56m' | '57m' | '58m' | '59m' | '1h' | '2h' | '3h' | '4h' | '5h' | '6h' | '7h' | '8h' | '9h' | '10h' | '11h' | '12h' | '13h' | '14h' | '15h' | '16h' | '17h' | '18h' | '19h' | '20h' | '21h' | '22h' | '23h' | '1d' | '2d' | '3d' | '4d' | '5d' | '6d'}\n     * @memberof MarketApiTicker\n     */\n    readonly windowSize?: TickerWindowSizeEnum;\n\n    /**\n     *\n     * @type {'FULL' | 'MINI'}\n     * @memberof MarketApiTicker\n     */\n    readonly type?: TickerTypeEnum;\n}\n\n/**\n * Request parameters for ticker24hr operation in MarketApi.\n * @interface Ticker24hrRequest\n */\nexport interface Ticker24hrRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof MarketApiTicker24hr\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTicker24hr\n     */\n    readonly symbols?: Array<string>;\n\n    /**\n     *\n     * @type {'FULL' | 'MINI'}\n     * @memberof MarketApiTicker24hr\n     */\n    readonly type?: Ticker24hrTypeEnum;\n}\n\n/**\n * Request parameters for tickerBookTicker operation in MarketApi.\n * @interface TickerBookTickerRequest\n */\nexport interface TickerBookTickerRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof MarketApiTickerBookTicker\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTickerBookTicker\n     */\n    readonly symbols?: Array<string>;\n}\n\n/**\n * Request parameters for tickerPrice operation in MarketApi.\n * @interface TickerPriceRequest\n */\nexport interface TickerPriceRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof MarketApiTickerPrice\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTickerPrice\n     */\n    readonly symbols?: Array<string>;\n}\n\n/**\n * Request parameters for tickerTradingDay operation in MarketApi.\n * @interface TickerTradingDayRequest\n */\nexport interface TickerTradingDayRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof MarketApiTickerTradingDay\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTickerTradingDay\n     */\n    readonly symbols?: Array<string>;\n\n    /**\n     * Default: 0 (UTC)\n     * @type {string}\n     * @memberof MarketApiTickerTradingDay\n     */\n    readonly timeZone?: string;\n\n    /**\n     *\n     * @type {'FULL' | 'MINI'}\n     * @memberof MarketApiTickerTradingDay\n     */\n    readonly type?: TickerTradingDayTypeEnum;\n}\n\n/**\n * Request parameters for uiKlines operation in MarketApi.\n * @interface UiKlinesRequest\n */\nexport interface UiKlinesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiUiKlines\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'1s' | '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '6h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M'}\n     * @memberof MarketApiUiKlines\n     */\n    readonly interval: UiKlinesIntervalEnum;\n\n    /**\n     * Timestamp in ms to get aggregate trades from INCLUSIVE.\n     * @type {number}\n     * @memberof MarketApiUiKlines\n     */\n    readonly startTime?: number;\n\n    /**\n     * Timestamp in ms to get aggregate trades until INCLUSIVE.\n     * @type {number}\n     * @memberof MarketApiUiKlines\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 0 (UTC)\n     * @type {string}\n     * @memberof MarketApiUiKlines\n     */\n    readonly timeZone?: string;\n\n    /**\n     * Default: 500; Maximum: 1000.\n     * @type {number}\n     * @memberof MarketApiUiKlines\n     */\n    readonly limit?: number;\n}\n\n/**\n * MarketApi - object-oriented interface\n * @class MarketApi\n */\nexport class MarketApi implements MarketApiInterface {\n    private readonly configuration: ConfigurationRestAPI;\n    private localVarAxiosParamCreator;\n\n    constructor(configuration: ConfigurationRestAPI) {\n        this.configuration = configuration;\n        this.localVarAxiosParamCreator = MarketApiAxiosParamCreator(configuration);\n    }\n\n    /**\n     * Get compressed, aggregate trades. Trades that fill at the time, from the same taker order, with the same price will have the quantity aggregated.\n     * Weight: 4\n     *\n     * @summary Compressed/Aggregate trades list\n     * @param {AggTradesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AggTradesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#compressedaggregate-trades-list Binance API Documentation}\n     */\n    public async aggTrades(\n        requestParameters: AggTradesRequest\n    ): Promise<RestApiResponse<AggTradesResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.aggTrades(\n            requestParameters?.symbol,\n            requestParameters?.fromId,\n            requestParameters?.startTime,\n            requestParameters?.endTime,\n            requestParameters?.limit\n        );\n        return sendRequest<AggTradesResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Current average price for a symbol.\n     * Weight: 2\n     *\n     * @summary Current average price\n     * @param {AvgPriceRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AvgPriceResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#current-average-price Binance API Documentation}\n     */\n    public async avgPrice(\n        requestParameters: AvgPriceRequest\n    ): Promise<RestApiResponse<AvgPriceResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.avgPrice(\n            requestParameters?.symbol\n        );\n        return sendRequest<AvgPriceResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     *\n     * Weight: Adjusted based on the limit:\n     *\n     * |Limit|Request Weight\n     * ------|-------\n     * 1-100|  5\n     * 101-500| 25\n     * 501-1000| 50\n     * 1001-5000| 250\n     *\n     * @summary Order book\n     * @param {DepthRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<DepthResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#order-book Binance API Documentation}\n     */\n    public async depth(requestParameters: DepthRequest): Promise<RestApiResponse<DepthResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.depth(\n            requestParameters?.symbol,\n            requestParameters?.limit\n        );\n        return sendRequest<DepthResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Get recent trades.\n     * Weight: 25\n     *\n     * @summary Recent trades list\n     * @param {GetTradesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetTradesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#recent-trades-list Binance API Documentation}\n     */\n    public async getTrades(\n        requestParameters: GetTradesRequest\n    ): Promise<RestApiResponse<GetTradesResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.getTrades(\n            requestParameters?.symbol,\n            requestParameters?.limit\n        );\n        return sendRequest<GetTradesResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Get older trades.\n     * Weight: 25\n     *\n     * @summary Old trade lookup\n     * @param {HistoricalTradesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<HistoricalTradesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#old-trade-lookup Binance API Documentation}\n     */\n    public async historicalTrades(\n        requestParameters: HistoricalTradesRequest\n    ): Promise<RestApiResponse<HistoricalTradesResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.historicalTrades(\n            requestParameters?.symbol,\n            requestParameters?.limit,\n            requestParameters?.fromId\n        );\n        return sendRequest<HistoricalTradesResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Kline/candlestick bars for a symbol.\n     * Klines are uniquely identified by their open time.\n     * Weight: 2\n     *\n     * @summary Kline/Candlestick data\n     * @param {KlinesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<KlinesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#klinecandlestick-data Binance API Documentation}\n     */\n    public async klines(\n        requestParameters: KlinesRequest\n    ): Promise<RestApiResponse<KlinesResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.klines(\n            requestParameters?.symbol,\n            requestParameters?.interval,\n            requestParameters?.startTime,\n            requestParameters?.endTime,\n            requestParameters?.timeZone,\n            requestParameters?.limit\n        );\n        return sendRequest<KlinesResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     *\n     * Weight: 4 for each requested <tt>symbol</tt> regardless of <tt>windowSize</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n     *\n     * @summary Rolling window price change statistics\n     * @param {TickerRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<TickerResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#rolling-window-price-change-statistics Binance API Documentation}\n     */\n    public async ticker(\n        requestParameters: TickerRequest = {}\n    ): Promise<RestApiResponse<TickerResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.ticker(\n            requestParameters?.symbol,\n            requestParameters?.symbols,\n            requestParameters?.windowSize,\n            requestParameters?.type\n        );\n        return sendRequest<TickerResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * 24 hour rolling window price change statistics. **Careful** when accessing this with no symbol.\n     * Weight: <table>\n     * <thead>\n     * <tr>\n     * <th>Parameter</th>\n     * <th>Symbols Provided</th>\n     * <th>Weight</th>\n     * </tr>\n     * </thead>\n     * <tbody>\n     * <tr>\n     * <td rowspan=\"2\">symbol</td>\n     * <td>1</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>symbol parameter is omitted</td>\n     * <td>80</td>\n     * </tr>\n     * <tr>\n     * <td rowspan=\"4\">symbols</td>\n     * <td>1-20</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>21-100</td>\n     * <td>40</td>\n     * </tr>\n     * <tr>\n     * <td>101 or more</td>\n     * <td>80</td>\n     * </tr>\n     * <tr>\n     * <td>symbols parameter is omitted</td>\n     * <td>80</td>\n     * </tr>\n     * </tbody>\n     * </table>\n     *\n     * @summary 24hr ticker price change statistics\n     * @param {Ticker24hrRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<Ticker24hrResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#24hr-ticker-price-change-statistics Binance API Documentation}\n     */\n    public async ticker24hr(\n        requestParameters: Ticker24hrRequest = {}\n    ): Promise<RestApiResponse<Ticker24hrResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.ticker24hr(\n            requestParameters?.symbol,\n            requestParameters?.symbols,\n            requestParameters?.type\n        );\n        return sendRequest<Ticker24hrResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Best price/qty on the order book for a symbol or symbols.\n     * Weight: <table>\n     * <thead>\n     * <tr>\n     * <th>Parameter</th>\n     * <th>Symbols Provided</th>\n     * <th>Weight</th>\n     * </tr>\n     * </thead>\n     * <tbody>\n     * <tr>\n     * <td rowspan=\"2\">symbol</td>\n     * <td>1</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>symbol parameter is omitted</td>\n     * <td>4</td>\n     * </tr>\n     * <tr>\n     * <td>symbols</td>\n     * <td>Any</td>\n     * <td>4</td>\n     * </tr>\n     * </tbody>\n     * </table>\n     *\n     * @summary Symbol order book ticker\n     * @param {TickerBookTickerRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<TickerBookTickerResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#symbol-order-book-ticker Binance API Documentation}\n     */\n    public async tickerBookTicker(\n        requestParameters: TickerBookTickerRequest = {}\n    ): Promise<RestApiResponse<TickerBookTickerResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.tickerBookTicker(\n            requestParameters?.symbol,\n            requestParameters?.symbols\n        );\n        return sendRequest<TickerBookTickerResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Latest price for a symbol or symbols.\n     * Weight: <table>\n     * <thead>\n     * <tr>\n     * <th>Parameter</th>\n     * <th>Symbols Provided</th>\n     * <th>Weight</th>\n     * </tr>\n     * </thead>\n     * <tbody>\n     * <tr>\n     * <td rowspan=\"2\">symbol</td>\n     * <td>1</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>symbol parameter is omitted</td>\n     * <td>4</td>\n     * </tr>\n     * <tr>\n     * <td>symbols</td>\n     * <td>Any</td>\n     * <td>4</td>\n     * </tr>\n     * </tbody>\n     * </table>\n     *\n     * @summary Symbol price ticker\n     * @param {TickerPriceRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<TickerPriceResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#symbol-price-ticker Binance API Documentation}\n     */\n    public async tickerPrice(\n        requestParameters: TickerPriceRequest = {}\n    ): Promise<RestApiResponse<TickerPriceResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.tickerPrice(\n            requestParameters?.symbol,\n            requestParameters?.symbols\n        );\n        return sendRequest<TickerPriceResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Price change statistics for a trading day.\n     * Weight: 4 for each requested <tt>symbol</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n     *\n     * @summary Trading Day Ticker\n     * @param {TickerTradingDayRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<TickerTradingDayResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#trading-day-ticker Binance API Documentation}\n     */\n    public async tickerTradingDay(\n        requestParameters: TickerTradingDayRequest = {}\n    ): Promise<RestApiResponse<TickerTradingDayResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.tickerTradingDay(\n            requestParameters?.symbol,\n            requestParameters?.symbols,\n            requestParameters?.timeZone,\n            requestParameters?.type\n        );\n        return sendRequest<TickerTradingDayResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * The request is similar to klines having the same parameters and response.\n     *\n     * `uiKlines` return modified kline data, optimized for presentation of candlestick charts.\n     * Weight: 2\n     *\n     * @summary UIKlines\n     * @param {UiKlinesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<UiKlinesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#uiklines Binance API Documentation}\n     */\n    public async uiKlines(\n        requestParameters: UiKlinesRequest\n    ): Promise<RestApiResponse<UiKlinesResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.uiKlines(\n            requestParameters?.symbol,\n            requestParameters?.interval,\n            requestParameters?.startTime,\n            requestParameters?.endTime,\n            requestParameters?.timeZone,\n            requestParameters?.limit\n        );\n        return sendRequest<UiKlinesResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n}\n\nexport enum KlinesIntervalEnum {\n    INTERVAL_1s = '1s',\n    INTERVAL_1m = '1m',\n    INTERVAL_3m = '3m',\n    INTERVAL_5m = '5m',\n    INTERVAL_15m = '15m',\n    INTERVAL_30m = '30m',\n    INTERVAL_1h = '1h',\n    INTERVAL_2h = '2h',\n    INTERVAL_4h = '4h',\n    INTERVAL_6h = '6h',\n    INTERVAL_8h = '8h',\n    INTERVAL_12h = '12h',\n    INTERVAL_1d = '1d',\n    INTERVAL_3d = '3d',\n    INTERVAL_1w = '1w',\n    INTERVAL_1M = '1M',\n}\n\nexport enum TickerWindowSizeEnum {\n    WINDOW_SIZE_1m = '1m',\n    WINDOW_SIZE_2m = '2m',\n    WINDOW_SIZE_3m = '3m',\n    WINDOW_SIZE_4m = '4m',\n    WINDOW_SIZE_5m = '5m',\n    WINDOW_SIZE_6m = '6m',\n    WINDOW_SIZE_7m = '7m',\n    WINDOW_SIZE_8m = '8m',\n    WINDOW_SIZE_9m = '9m',\n    WINDOW_SIZE_10m = '10m',\n    WINDOW_SIZE_11m = '11m',\n    WINDOW_SIZE_12m = '12m',\n    WINDOW_SIZE_13m = '13m',\n    WINDOW_SIZE_14m = '14m',\n    WINDOW_SIZE_15m = '15m',\n    WINDOW_SIZE_16m = '16m',\n    WINDOW_SIZE_17m = '17m',\n    WINDOW_SIZE_18m = '18m',\n    WINDOW_SIZE_19m = '19m',\n    WINDOW_SIZE_20m = '20m',\n    WINDOW_SIZE_21m = '21m',\n    WINDOW_SIZE_22m = '22m',\n    WINDOW_SIZE_23m = '23m',\n    WINDOW_SIZE_24m = '24m',\n    WINDOW_SIZE_25m = '25m',\n    WINDOW_SIZE_26m = '26m',\n    WINDOW_SIZE_27m = '27m',\n    WINDOW_SIZE_28m = '28m',\n    WINDOW_SIZE_29m = '29m',\n    WINDOW_SIZE_30m = '30m',\n    WINDOW_SIZE_31m = '31m',\n    WINDOW_SIZE_32m = '32m',\n    WINDOW_SIZE_33m = '33m',\n    WINDOW_SIZE_34m = '34m',\n    WINDOW_SIZE_35m = '35m',\n    WINDOW_SIZE_36m = '36m',\n    WINDOW_SIZE_37m = '37m',\n    WINDOW_SIZE_38m = '38m',\n    WINDOW_SIZE_39m = '39m',\n    WINDOW_SIZE_40m = '40m',\n    WINDOW_SIZE_41m = '41m',\n    WINDOW_SIZE_42m = '42m',\n    WINDOW_SIZE_43m = '43m',\n    WINDOW_SIZE_44m = '44m',\n    WINDOW_SIZE_45m = '45m',\n    WINDOW_SIZE_46m = '46m',\n    WINDOW_SIZE_47m = '47m',\n    WINDOW_SIZE_48m = '48m',\n    WINDOW_SIZE_49m = '49m',\n    WINDOW_SIZE_50m = '50m',\n    WINDOW_SIZE_51m = '51m',\n    WINDOW_SIZE_52m = '52m',\n    WINDOW_SIZE_53m = '53m',\n    WINDOW_SIZE_54m = '54m',\n    WINDOW_SIZE_55m = '55m',\n    WINDOW_SIZE_56m = '56m',\n    WINDOW_SIZE_57m = '57m',\n    WINDOW_SIZE_58m = '58m',\n    WINDOW_SIZE_59m = '59m',\n    WINDOW_SIZE_1h = '1h',\n    WINDOW_SIZE_2h = '2h',\n    WINDOW_SIZE_3h = '3h',\n    WINDOW_SIZE_4h = '4h',\n    WINDOW_SIZE_5h = '5h',\n    WINDOW_SIZE_6h = '6h',\n    WINDOW_SIZE_7h = '7h',\n    WINDOW_SIZE_8h = '8h',\n    WINDOW_SIZE_9h = '9h',\n    WINDOW_SIZE_10h = '10h',\n    WINDOW_SIZE_11h = '11h',\n    WINDOW_SIZE_12h = '12h',\n    WINDOW_SIZE_13h = '13h',\n    WINDOW_SIZE_14h = '14h',\n    WINDOW_SIZE_15h = '15h',\n    WINDOW_SIZE_16h = '16h',\n    WINDOW_SIZE_17h = '17h',\n    WINDOW_SIZE_18h = '18h',\n    WINDOW_SIZE_19h = '19h',\n    WINDOW_SIZE_20h = '20h',\n    WINDOW_SIZE_21h = '21h',\n    WINDOW_SIZE_22h = '22h',\n    WINDOW_SIZE_23h = '23h',\n    WINDOW_SIZE_1d = '1d',\n    WINDOW_SIZE_2d = '2d',\n    WINDOW_SIZE_3d = '3d',\n    WINDOW_SIZE_4d = '4d',\n    WINDOW_SIZE_5d = '5d',\n    WINDOW_SIZE_6d = '6d',\n}\n\nexport enum TickerTypeEnum {\n    FULL = 'FULL',\n    MINI = 'MINI',\n}\n\nexport enum Ticker24hrTypeEnum {\n    FULL = 'FULL',\n    MINI = 'MINI',\n}\n\nexport enum TickerTradingDayTypeEnum {\n    FULL = 'FULL',\n    MINI = 'MINI',\n}\n\nexport enum UiKlinesIntervalEnum {\n    INTERVAL_1s = '1s',\n    INTERVAL_1m = '1m',\n    INTERVAL_3m = '3m',\n    INTERVAL_5m = '5m',\n    INTERVAL_15m = '15m',\n    INTERVAL_30m = '30m',\n    INTERVAL_1h = '1h',\n    INTERVAL_2h = '2h',\n    INTERVAL_4h = '4h',\n    INTERVAL_6h = '6h',\n    INTERVAL_8h = '8h',\n    INTERVAL_12h = '12h',\n    INTERVAL_1d = '1d',\n    INTERVAL_3d = '3d',\n    INTERVAL_1w = '1w',\n    INTERVAL_1M = '1M',\n}\n","/**\n * Binance Spot REST API\n *\n * OpenAPI Specifications for the Binance Spot REST API\n *\n * API documents:\n * - [Github rest-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md)\n * - [General API information for rest-api on website](https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {\n    ConfigurationRestAPI,\n    TimeUnit,\n    RestApiResponse,\n    assertParamExists,\n    sendRequest,\n    type RequestArgs,\n} from '@binance/common';\nimport type {\n    DeleteOpenOrdersResponse,\n    DeleteOrderListResponse,\n    DeleteOrderResponse,\n    NewOrderResponse,\n    OrderAmendKeepPriorityResponse,\n    OrderCancelReplaceResponse,\n    OrderListOcoResponse,\n    OrderListOtoResponse,\n    OrderListOtocoResponse,\n    OrderOcoResponse,\n    OrderTestResponse,\n    SorOrderResponse,\n    SorOrderTestResponse,\n} from '../types';\n\n/**\n * TradeApi - axios parameter creator\n */\nconst TradeApiAxiosParamCreator = function (configuration: ConfigurationRestAPI) {\n    return {\n        /**\n         * Cancels all active orders on a symbol.\n         * This includes orders that are part of an order list.\n         * Weight: 1\n         *\n         * @summary Cancel All Open Orders on a Symbol\n         * @param {string} symbol\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        deleteOpenOrders: async (symbol: string, recvWindow?: number): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('deleteOpenOrders', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/openOrders',\n                method: 'DELETE',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Cancel an active order.\n         * Weight: 1\n         *\n         * @summary Cancel order\n         * @param {string} symbol\n         * @param {number} [orderId]\n         * @param {string} [origClientOrderId]\n         * @param {string} [newClientOrderId] A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n         * @param {DeleteOrderCancelRestrictionsEnum} [cancelRestrictions]\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        deleteOrder: async (\n            symbol: string,\n            orderId?: number,\n            origClientOrderId?: string,\n            newClientOrderId?: string,\n            cancelRestrictions?: DeleteOrderCancelRestrictionsEnum,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('deleteOrder', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (orderId !== undefined && orderId !== null) {\n                localVarQueryParameter['orderId'] = orderId;\n            }\n\n            if (origClientOrderId !== undefined && origClientOrderId !== null) {\n                localVarQueryParameter['origClientOrderId'] = origClientOrderId;\n            }\n\n            if (newClientOrderId !== undefined && newClientOrderId !== null) {\n                localVarQueryParameter['newClientOrderId'] = newClientOrderId;\n            }\n\n            if (cancelRestrictions !== undefined && cancelRestrictions !== null) {\n                localVarQueryParameter['cancelRestrictions'] = cancelRestrictions;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/order',\n                method: 'DELETE',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Cancel an entire Order list\n         * Weight: 1\n         *\n         * @summary Cancel Order list\n         * @param {string} symbol\n         * @param {number} [orderListId] Either `orderListId` or `listClientOrderId` must be provided\n         * @param {string} [listClientOrderId] A unique Id for the entire orderList\n         * @param {string} [newClientOrderId] A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        deleteOrderList: async (\n            symbol: string,\n            orderListId?: number,\n            listClientOrderId?: string,\n            newClientOrderId?: string,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('deleteOrderList', 'symbol', symbol);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (orderListId !== undefined && orderListId !== null) {\n                localVarQueryParameter['orderListId'] = orderListId;\n            }\n\n            if (listClientOrderId !== undefined && listClientOrderId !== null) {\n                localVarQueryParameter['listClientOrderId'] = listClientOrderId;\n            }\n\n            if (newClientOrderId !== undefined && newClientOrderId !== null) {\n                localVarQueryParameter['newClientOrderId'] = newClientOrderId;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/orderList',\n                method: 'DELETE',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Send in a new order.\n         *\n         * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n         * Weight: 1\n         *\n         * @summary New order\n         * @param {string} symbol\n         * @param {NewOrderSideEnum} side\n         * @param {NewOrderTypeEnum} type\n         * @param {NewOrderTimeInForceEnum} [timeInForce]\n         * @param {number} [quantity]\n         * @param {number} [quoteOrderQty]\n         * @param {number} [price]\n         * @param {string} [newClientOrderId] A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n         * @param {number} [strategyId]\n         * @param {number} [strategyType] The value cannot be less than `1000000`.\n         * @param {number} [stopPrice] Used with `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, and `TAKE_PROFIT_LIMIT` orders.\n         * @param {number} [trailingDelta] See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n         * @param {number} [icebergQty] Used with `LIMIT`, `STOP_LOSS_LIMIT`, and `TAKE_PROFIT_LIMIT` to create an iceberg order.\n         * @param {NewOrderNewOrderRespTypeEnum} [newOrderRespType]\n         * @param {NewOrderSelfTradePreventionModeEnum} [selfTradePreventionMode]\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        newOrder: async (\n            symbol: string,\n            side: NewOrderSideEnum,\n            type: NewOrderTypeEnum,\n            timeInForce?: NewOrderTimeInForceEnum,\n            quantity?: number,\n            quoteOrderQty?: number,\n            price?: number,\n            newClientOrderId?: string,\n            strategyId?: number,\n            strategyType?: number,\n            stopPrice?: number,\n            trailingDelta?: number,\n            icebergQty?: number,\n            newOrderRespType?: NewOrderNewOrderRespTypeEnum,\n            selfTradePreventionMode?: NewOrderSelfTradePreventionModeEnum,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('newOrder', 'symbol', symbol);\n            // verify required parameter 'side' is not null or undefined\n            assertParamExists('newOrder', 'side', side);\n            // verify required parameter 'type' is not null or undefined\n            assertParamExists('newOrder', 'type', type);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (side !== undefined && side !== null) {\n                localVarQueryParameter['side'] = side;\n            }\n\n            if (type !== undefined && type !== null) {\n                localVarQueryParameter['type'] = type;\n            }\n\n            if (timeInForce !== undefined && timeInForce !== null) {\n                localVarQueryParameter['timeInForce'] = timeInForce;\n            }\n\n            if (quantity !== undefined && quantity !== null) {\n                localVarQueryParameter['quantity'] = quantity;\n            }\n\n            if (quoteOrderQty !== undefined && quoteOrderQty !== null) {\n                localVarQueryParameter['quoteOrderQty'] = quoteOrderQty;\n            }\n\n            if (price !== undefined && price !== null) {\n                localVarQueryParameter['price'] = price;\n            }\n\n            if (newClientOrderId !== undefined && newClientOrderId !== null) {\n                localVarQueryParameter['newClientOrderId'] = newClientOrderId;\n            }\n\n            if (strategyId !== undefined && strategyId !== null) {\n                localVarQueryParameter['strategyId'] = strategyId;\n            }\n\n            if (strategyType !== undefined && strategyType !== null) {\n                localVarQueryParameter['strategyType'] = strategyType;\n            }\n\n            if (stopPrice !== undefined && stopPrice !== null) {\n                localVarQueryParameter['stopPrice'] = stopPrice;\n            }\n\n            if (trailingDelta !== undefined && trailingDelta !== null) {\n                localVarQueryParameter['trailingDelta'] = trailingDelta;\n            }\n\n            if (icebergQty !== undefined && icebergQty !== null) {\n                localVarQueryParameter['icebergQty'] = icebergQty;\n            }\n\n            if (newOrderRespType !== undefined && newOrderRespType !== null) {\n                localVarQueryParameter['newOrderRespType'] = newOrderRespType;\n            }\n\n            if (selfTradePreventionMode !== undefined && selfTradePreventionMode !== null) {\n                localVarQueryParameter['selfTradePreventionMode'] = selfTradePreventionMode;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/order',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Reduce the quantity of an existing open order.\n         *\n         * This adds 0 orders to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n         *\n         * Read [Order Amend Keep Priority FAQ](faqs/order_amend_keep_priority.md) to learn more.\n         * Weight: 4\n         *\n         * @summary Order Amend Keep Priority\n         * @param {string} symbol\n         * @param {number} newQty `newQty` must be greater than 0 and less than the order's quantity.\n         * @param {number} [orderId]\n         * @param {string} [origClientOrderId]\n         * @param {string} [newClientOrderId] A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        orderAmendKeepPriority: async (\n            symbol: string,\n            newQty: number,\n            orderId?: number,\n            origClientOrderId?: string,\n            newClientOrderId?: string,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('orderAmendKeepPriority', 'symbol', symbol);\n            // verify required parameter 'newQty' is not null or undefined\n            assertParamExists('orderAmendKeepPriority', 'newQty', newQty);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (orderId !== undefined && orderId !== null) {\n                localVarQueryParameter['orderId'] = orderId;\n            }\n\n            if (origClientOrderId !== undefined && origClientOrderId !== null) {\n                localVarQueryParameter['origClientOrderId'] = origClientOrderId;\n            }\n\n            if (newClientOrderId !== undefined && newClientOrderId !== null) {\n                localVarQueryParameter['newClientOrderId'] = newClientOrderId;\n            }\n\n            if (newQty !== undefined && newQty !== null) {\n                localVarQueryParameter['newQty'] = newQty;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/order/amend/keepPriority',\n                method: 'PUT',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Cancels an existing order and places a new order on the same symbol.\n         *\n         * Filters and Order Count are evaluated before the processing of the cancellation and order placement occurs.\n         *\n         * A new order that was not attempted (i.e. when `newOrderResult: NOT_ATTEMPTED`), will still increase the unfilled order count by 1.\n         * Weight: 1\n         *\n         * @summary Cancel an Existing Order and Send a New Order\n         * @param {string} symbol\n         * @param {OrderCancelReplaceSideEnum} side\n         * @param {OrderCancelReplaceTypeEnum} type\n         * @param {OrderCancelReplaceCancelReplaceModeEnum} cancelReplaceMode\n         * @param {OrderCancelReplaceTimeInForceEnum} [timeInForce]\n         * @param {number} [quantity]\n         * @param {number} [quoteOrderQty]\n         * @param {number} [price]\n         * @param {string} [cancelNewClientOrderId] Used to uniquely identify this cancel. Automatically generated by default.\n         * @param {string} [cancelOrigClientOrderId] Either `cancelOrderId` or `cancelOrigClientOrderId` must be sent. <br></br> If both `cancelOrderId` and `cancelOrigClientOrderId` parameters are provided, the `cancelOrderId` is searched first, then the `cancelOrigClientOrderId` from that result is checked against that order. <br></br> If both conditions are not met the request will be rejected.\n         * @param {number} [cancelOrderId] Either `cancelOrderId` or `cancelOrigClientOrderId` must be sent. <br></br>If both `cancelOrderId` and `cancelOrigClientOrderId` parameters are provided, the `cancelOrderId` is searched first, then the `cancelOrigClientOrderId` from that result is checked against that order. <br></br>If both conditions are not met the request will be rejected.\n         * @param {string} [newClientOrderId] A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n         * @param {number} [strategyId]\n         * @param {number} [strategyType] The value cannot be less than `1000000`.\n         * @param {number} [stopPrice] Used with `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, and `TAKE_PROFIT_LIMIT` orders.\n         * @param {number} [trailingDelta] See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n         * @param {number} [icebergQty] Used with `LIMIT`, `STOP_LOSS_LIMIT`, and `TAKE_PROFIT_LIMIT` to create an iceberg order.\n         * @param {OrderCancelReplaceNewOrderRespTypeEnum} [newOrderRespType]\n         * @param {OrderCancelReplaceSelfTradePreventionModeEnum} [selfTradePreventionMode]\n         * @param {OrderCancelReplaceCancelRestrictionsEnum} [cancelRestrictions]\n         * @param {OrderCancelReplaceOrderRateLimitExceededModeEnum} [orderRateLimitExceededMode]\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        orderCancelReplace: async (\n            symbol: string,\n            side: OrderCancelReplaceSideEnum,\n            type: OrderCancelReplaceTypeEnum,\n            cancelReplaceMode: OrderCancelReplaceCancelReplaceModeEnum,\n            timeInForce?: OrderCancelReplaceTimeInForceEnum,\n            quantity?: number,\n            quoteOrderQty?: number,\n            price?: number,\n            cancelNewClientOrderId?: string,\n            cancelOrigClientOrderId?: string,\n            cancelOrderId?: number,\n            newClientOrderId?: string,\n            strategyId?: number,\n            strategyType?: number,\n            stopPrice?: number,\n            trailingDelta?: number,\n            icebergQty?: number,\n            newOrderRespType?: OrderCancelReplaceNewOrderRespTypeEnum,\n            selfTradePreventionMode?: OrderCancelReplaceSelfTradePreventionModeEnum,\n            cancelRestrictions?: OrderCancelReplaceCancelRestrictionsEnum,\n            orderRateLimitExceededMode?: OrderCancelReplaceOrderRateLimitExceededModeEnum,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('orderCancelReplace', 'symbol', symbol);\n            // verify required parameter 'side' is not null or undefined\n            assertParamExists('orderCancelReplace', 'side', side);\n            // verify required parameter 'type' is not null or undefined\n            assertParamExists('orderCancelReplace', 'type', type);\n            // verify required parameter 'cancelReplaceMode' is not null or undefined\n            assertParamExists('orderCancelReplace', 'cancelReplaceMode', cancelReplaceMode);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (side !== undefined && side !== null) {\n                localVarQueryParameter['side'] = side;\n            }\n\n            if (type !== undefined && type !== null) {\n                localVarQueryParameter['type'] = type;\n            }\n\n            if (cancelReplaceMode !== undefined && cancelReplaceMode !== null) {\n                localVarQueryParameter['cancelReplaceMode'] = cancelReplaceMode;\n            }\n\n            if (timeInForce !== undefined && timeInForce !== null) {\n                localVarQueryParameter['timeInForce'] = timeInForce;\n            }\n\n            if (quantity !== undefined && quantity !== null) {\n                localVarQueryParameter['quantity'] = quantity;\n            }\n\n            if (quoteOrderQty !== undefined && quoteOrderQty !== null) {\n                localVarQueryParameter['quoteOrderQty'] = quoteOrderQty;\n            }\n\n            if (price !== undefined && price !== null) {\n                localVarQueryParameter['price'] = price;\n            }\n\n            if (cancelNewClientOrderId !== undefined && cancelNewClientOrderId !== null) {\n                localVarQueryParameter['cancelNewClientOrderId'] = cancelNewClientOrderId;\n            }\n\n            if (cancelOrigClientOrderId !== undefined && cancelOrigClientOrderId !== null) {\n                localVarQueryParameter['cancelOrigClientOrderId'] = cancelOrigClientOrderId;\n            }\n\n            if (cancelOrderId !== undefined && cancelOrderId !== null) {\n                localVarQueryParameter['cancelOrderId'] = cancelOrderId;\n            }\n\n            if (newClientOrderId !== undefined && newClientOrderId !== null) {\n                localVarQueryParameter['newClientOrderId'] = newClientOrderId;\n            }\n\n            if (strategyId !== undefined && strategyId !== null) {\n                localVarQueryParameter['strategyId'] = strategyId;\n            }\n\n            if (strategyType !== undefined && strategyType !== null) {\n                localVarQueryParameter['strategyType'] = strategyType;\n            }\n\n            if (stopPrice !== undefined && stopPrice !== null) {\n                localVarQueryParameter['stopPrice'] = stopPrice;\n            }\n\n            if (trailingDelta !== undefined && trailingDelta !== null) {\n                localVarQueryParameter['trailingDelta'] = trailingDelta;\n            }\n\n            if (icebergQty !== undefined && icebergQty !== null) {\n                localVarQueryParameter['icebergQty'] = icebergQty;\n            }\n\n            if (newOrderRespType !== undefined && newOrderRespType !== null) {\n                localVarQueryParameter['newOrderRespType'] = newOrderRespType;\n            }\n\n            if (selfTradePreventionMode !== undefined && selfTradePreventionMode !== null) {\n                localVarQueryParameter['selfTradePreventionMode'] = selfTradePreventionMode;\n            }\n\n            if (cancelRestrictions !== undefined && cancelRestrictions !== null) {\n                localVarQueryParameter['cancelRestrictions'] = cancelRestrictions;\n            }\n\n            if (orderRateLimitExceededMode !== undefined && orderRateLimitExceededMode !== null) {\n                localVarQueryParameter['orderRateLimitExceededMode'] = orderRateLimitExceededMode;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/order/cancelReplace',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Send in an one-cancels-the-other (OCO) pair, where activation of one order immediately cancels the other.\n         *\n         * An OCO has 2 orders called the **above order** and **below order**.\n         * One of the orders must be a `LIMIT_MAKER/TAKE_PROFIT/TAKE_PROFIT_LIMIT` order and the other must be `STOP_LOSS` or `STOP_LOSS_LIMIT` order.\n         * Price restrictions\n         * If the OCO is on the `SELL` side:\n         * `LIMIT_MAKER/TAKE_PROFIT_LIMIT` `price` > Last Traded Price >  `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n         * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n         * If the OCO is on the `BUY` side:\n         * `LIMIT_MAKER/TAKE_PROFIT_LIMIT price` < Last Traded Price < `stopPrice`\n         * `TAKE_PROFIT stopPrice` < Last Traded Price < `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n         * OCOs add **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n         * Weight: 1\n         *\n         * Unfilled Order Count: 2\n         *\n         * @summary New Order list - OCO\n         * @param {string} symbol\n         * @param {OrderListOcoSideEnum} side\n         * @param {number} quantity\n         * @param {OrderListOcoAboveTypeEnum} aboveType\n         * @param {OrderListOcoBelowTypeEnum} belowType\n         * @param {string} [listClientOrderId] A unique Id for the entire orderList\n         * @param {string} [aboveClientOrderId] Arbitrary unique ID among open orders for the above order. Automatically generated if not sent\n         * @param {number} [aboveIcebergQty] Note that this can only be used if `aboveTimeInForce` is `GTC`.\n         * @param {number} [abovePrice] Can be used if `aboveType` is `STOP_LOSS_LIMIT` , `LIMIT_MAKER`, or `TAKE_PROFIT_LIMIT` to specify the limit price.\n         * @param {number} [aboveStopPrice] Can be used if `aboveType` is `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, `TAKE_PROFIT_LIMIT`. <br>Either `aboveStopPrice` or `aboveTrailingDelta` or both, must be specified.\n         * @param {number} [aboveTrailingDelta] See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n         * @param {number} [aboveTimeInForce] Required if `aboveType` is `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT`\n         * @param {number} [aboveStrategyId] Arbitrary numeric value identifying the above order within an order strategy.\n         * @param {number} [aboveStrategyType] Arbitrary numeric value identifying the above order strategy. <br>Values smaller than 1000000 are reserved and cannot be used.\n         * @param {string} [belowClientOrderId] Arbitrary unique ID among open orders for the below order. Automatically generated if not sent\n         * @param {number} [belowIcebergQty] Note that this can only be used if `belowTimeInForce` is `GTC`.\n         * @param {number} [belowPrice] Can be used if `belowType` is `STOP_LOSS_LIMIT`, `LIMIT_MAKER`, or `TAKE_PROFIT_LIMIT` to specify the limit price.\n         * @param {number} [belowStopPrice] Can be used if `belowType` is `STOP_LOSS`, `STOP_LOSS_LIMIT, TAKE_PROFIT` or `TAKE_PROFIT_LIMIT` <br>Either belowStopPrice or belowTrailingDelta or both, must be specified.\n         * @param {number} [belowTrailingDelta] See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n         * @param {OrderListOcoBelowTimeInForceEnum} [belowTimeInForce]\n         * @param {number} [belowStrategyId] Arbitrary numeric value identifying the below order within an order strategy.\n         * @param {number} [belowStrategyType] Arbitrary numeric value identifying the below order strategy. <br>Values smaller than 1000000 are reserved and cannot be used.\n         * @param {OrderListOcoNewOrderRespTypeEnum} [newOrderRespType]\n         * @param {OrderListOcoSelfTradePreventionModeEnum} [selfTradePreventionMode]\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        orderListOco: async (\n            symbol: string,\n            side: OrderListOcoSideEnum,\n            quantity: number,\n            aboveType: OrderListOcoAboveTypeEnum,\n            belowType: OrderListOcoBelowTypeEnum,\n            listClientOrderId?: string,\n            aboveClientOrderId?: string,\n            aboveIcebergQty?: number,\n            abovePrice?: number,\n            aboveStopPrice?: number,\n            aboveTrailingDelta?: number,\n            aboveTimeInForce?: number,\n            aboveStrategyId?: number,\n            aboveStrategyType?: number,\n            belowClientOrderId?: string,\n            belowIcebergQty?: number,\n            belowPrice?: number,\n            belowStopPrice?: number,\n            belowTrailingDelta?: number,\n            belowTimeInForce?: OrderListOcoBelowTimeInForceEnum,\n            belowStrategyId?: number,\n            belowStrategyType?: number,\n            newOrderRespType?: OrderListOcoNewOrderRespTypeEnum,\n            selfTradePreventionMode?: OrderListOcoSelfTradePreventionModeEnum,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('orderListOco', 'symbol', symbol);\n            // verify required parameter 'side' is not null or undefined\n            assertParamExists('orderListOco', 'side', side);\n            // verify required parameter 'quantity' is not null or undefined\n            assertParamExists('orderListOco', 'quantity', quantity);\n            // verify required parameter 'aboveType' is not null or undefined\n            assertParamExists('orderListOco', 'aboveType', aboveType);\n            // verify required parameter 'belowType' is not null or undefined\n            assertParamExists('orderListOco', 'belowType', belowType);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (listClientOrderId !== undefined && listClientOrderId !== null) {\n                localVarQueryParameter['listClientOrderId'] = listClientOrderId;\n            }\n\n            if (side !== undefined && side !== null) {\n                localVarQueryParameter['side'] = side;\n            }\n\n            if (quantity !== undefined && quantity !== null) {\n                localVarQueryParameter['quantity'] = quantity;\n            }\n\n            if (aboveType !== undefined && aboveType !== null) {\n                localVarQueryParameter['aboveType'] = aboveType;\n            }\n\n            if (aboveClientOrderId !== undefined && aboveClientOrderId !== null) {\n                localVarQueryParameter['aboveClientOrderId'] = aboveClientOrderId;\n            }\n\n            if (aboveIcebergQty !== undefined && aboveIcebergQty !== null) {\n                localVarQueryParameter['aboveIcebergQty'] = aboveIcebergQty;\n            }\n\n            if (abovePrice !== undefined && abovePrice !== null) {\n                localVarQueryParameter['abovePrice'] = abovePrice;\n            }\n\n            if (aboveStopPrice !== undefined && aboveStopPrice !== null) {\n                localVarQueryParameter['aboveStopPrice'] = aboveStopPrice;\n            }\n\n            if (aboveTrailingDelta !== undefined && aboveTrailingDelta !== null) {\n                localVarQueryParameter['aboveTrailingDelta'] = aboveTrailingDelta;\n            }\n\n            if (aboveTimeInForce !== undefined && aboveTimeInForce !== null) {\n                localVarQueryParameter['aboveTimeInForce'] = aboveTimeInForce;\n            }\n\n            if (aboveStrategyId !== undefined && aboveStrategyId !== null) {\n                localVarQueryParameter['aboveStrategyId'] = aboveStrategyId;\n            }\n\n            if (aboveStrategyType !== undefined && aboveStrategyType !== null) {\n                localVarQueryParameter['aboveStrategyType'] = aboveStrategyType;\n            }\n\n            if (belowType !== undefined && belowType !== null) {\n                localVarQueryParameter['belowType'] = belowType;\n            }\n\n            if (belowClientOrderId !== undefined && belowClientOrderId !== null) {\n                localVarQueryParameter['belowClientOrderId'] = belowClientOrderId;\n            }\n\n            if (belowIcebergQty !== undefined && belowIcebergQty !== null) {\n                localVarQueryParameter['belowIcebergQty'] = belowIcebergQty;\n            }\n\n            if (belowPrice !== undefined && belowPrice !== null) {\n                localVarQueryParameter['belowPrice'] = belowPrice;\n            }\n\n            if (belowStopPrice !== undefined && belowStopPrice !== null) {\n                localVarQueryParameter['belowStopPrice'] = belowStopPrice;\n            }\n\n            if (belowTrailingDelta !== undefined && belowTrailingDelta !== null) {\n                localVarQueryParameter['belowTrailingDelta'] = belowTrailingDelta;\n            }\n\n            if (belowTimeInForce !== undefined && belowTimeInForce !== null) {\n                localVarQueryParameter['belowTimeInForce'] = belowTimeInForce;\n            }\n\n            if (belowStrategyId !== undefined && belowStrategyId !== null) {\n                localVarQueryParameter['belowStrategyId'] = belowStrategyId;\n            }\n\n            if (belowStrategyType !== undefined && belowStrategyType !== null) {\n                localVarQueryParameter['belowStrategyType'] = belowStrategyType;\n            }\n\n            if (newOrderRespType !== undefined && newOrderRespType !== null) {\n                localVarQueryParameter['newOrderRespType'] = newOrderRespType;\n            }\n\n            if (selfTradePreventionMode !== undefined && selfTradePreventionMode !== null) {\n                localVarQueryParameter['selfTradePreventionMode'] = selfTradePreventionMode;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/orderList/oco',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Place an OTO.\n         *\n         * An OTO (One-Triggers-the-Other) is an order list comprised of 2 orders.\n         * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n         * The second order is called the **pending order**. It can be any order type except for `MARKET` orders using parameter `quoteOrderQty`. The pending order is only placed on the order book when the working order gets **fully filled**.\n         * If either the working order or the pending order is cancelled individually, the other order in the order list will also be canceled or expired.\n         * When the order list is placed, if the working order gets **immediately fully filled**, the placement response will show the working order as `FILLED` but the pending order will still appear as `PENDING_NEW`. You need to query the status of the pending order again to see its updated status.\n         * OTOs add **2 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n         * Weight: 1\n         *\n         * Unfilled Order Count: 2\n         *\n         * @summary New Order list - OTO\n         * @param {string} symbol\n         * @param {OrderListOtoWorkingTypeEnum} workingType\n         * @param {OrderListOtoWorkingSideEnum} workingSide\n         * @param {number} workingPrice\n         * @param {number} workingQuantity Sets the quantity for the working order.\n         * @param {OrderListOtoPendingTypeEnum} pendingType\n         * @param {OrderListOtoPendingSideEnum} pendingSide\n         * @param {number} pendingQuantity Sets the quantity for the pending order.\n         * @param {string} [listClientOrderId] A unique Id for the entire orderList\n         * @param {OrderListOtoNewOrderRespTypeEnum} [newOrderRespType]\n         * @param {OrderListOtoSelfTradePreventionModeEnum} [selfTradePreventionMode]\n         * @param {string} [workingClientOrderId] Arbitrary unique ID among open orders for the working order.<br> Automatically generated if not sent.\n         * @param {number} [workingIcebergQty] This can only be used if `workingTimeInForce` is `GTC`, or if `workingType` is `LIMIT_MAKER`.\n         * @param {OrderListOtoWorkingTimeInForceEnum} [workingTimeInForce]\n         * @param {number} [workingStrategyId] Arbitrary numeric value identifying the working order within an order strategy.\n         * @param {number} [workingStrategyType] Arbitrary numeric value identifying the working order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n         * @param {string} [pendingClientOrderId] Arbitrary unique ID among open orders for the pending order.<br> Automatically generated if not sent.\n         * @param {number} [pendingPrice]\n         * @param {number} [pendingStopPrice]\n         * @param {number} [pendingTrailingDelta]\n         * @param {number} [pendingIcebergQty] This can only be used if `pendingTimeInForce` is `GTC` or if `pendingType` is `LIMIT_MAKER`.\n         * @param {OrderListOtoPendingTimeInForceEnum} [pendingTimeInForce]\n         * @param {number} [pendingStrategyId] Arbitrary numeric value identifying the pending order within an order strategy.\n         * @param {number} [pendingStrategyType] Arbitrary numeric value identifying the pending order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        orderListOto: async (\n            symbol: string,\n            workingType: OrderListOtoWorkingTypeEnum,\n            workingSide: OrderListOtoWorkingSideEnum,\n            workingPrice: number,\n            workingQuantity: number,\n            pendingType: OrderListOtoPendingTypeEnum,\n            pendingSide: OrderListOtoPendingSideEnum,\n            pendingQuantity: number,\n            listClientOrderId?: string,\n            newOrderRespType?: OrderListOtoNewOrderRespTypeEnum,\n            selfTradePreventionMode?: OrderListOtoSelfTradePreventionModeEnum,\n            workingClientOrderId?: string,\n            workingIcebergQty?: number,\n            workingTimeInForce?: OrderListOtoWorkingTimeInForceEnum,\n            workingStrategyId?: number,\n            workingStrategyType?: number,\n            pendingClientOrderId?: string,\n            pendingPrice?: number,\n            pendingStopPrice?: number,\n            pendingTrailingDelta?: number,\n            pendingIcebergQty?: number,\n            pendingTimeInForce?: OrderListOtoPendingTimeInForceEnum,\n            pendingStrategyId?: number,\n            pendingStrategyType?: number,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('orderListOto', 'symbol', symbol);\n            // verify required parameter 'workingType' is not null or undefined\n            assertParamExists('orderListOto', 'workingType', workingType);\n            // verify required parameter 'workingSide' is not null or undefined\n            assertParamExists('orderListOto', 'workingSide', workingSide);\n            // verify required parameter 'workingPrice' is not null or undefined\n            assertParamExists('orderListOto', 'workingPrice', workingPrice);\n            // verify required parameter 'workingQuantity' is not null or undefined\n            assertParamExists('orderListOto', 'workingQuantity', workingQuantity);\n            // verify required parameter 'pendingType' is not null or undefined\n            assertParamExists('orderListOto', 'pendingType', pendingType);\n            // verify required parameter 'pendingSide' is not null or undefined\n            assertParamExists('orderListOto', 'pendingSide', pendingSide);\n            // verify required parameter 'pendingQuantity' is not null or undefined\n            assertParamExists('orderListOto', 'pendingQuantity', pendingQuantity);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (listClientOrderId !== undefined && listClientOrderId !== null) {\n                localVarQueryParameter['listClientOrderId'] = listClientOrderId;\n            }\n\n            if (newOrderRespType !== undefined && newOrderRespType !== null) {\n                localVarQueryParameter['newOrderRespType'] = newOrderRespType;\n            }\n\n            if (selfTradePreventionMode !== undefined && selfTradePreventionMode !== null) {\n                localVarQueryParameter['selfTradePreventionMode'] = selfTradePreventionMode;\n            }\n\n            if (workingType !== undefined && workingType !== null) {\n                localVarQueryParameter['workingType'] = workingType;\n            }\n\n            if (workingSide !== undefined && workingSide !== null) {\n                localVarQueryParameter['workingSide'] = workingSide;\n            }\n\n            if (workingClientOrderId !== undefined && workingClientOrderId !== null) {\n                localVarQueryParameter['workingClientOrderId'] = workingClientOrderId;\n            }\n\n            if (workingPrice !== undefined && workingPrice !== null) {\n                localVarQueryParameter['workingPrice'] = workingPrice;\n            }\n\n            if (workingQuantity !== undefined && workingQuantity !== null) {\n                localVarQueryParameter['workingQuantity'] = workingQuantity;\n            }\n\n            if (workingIcebergQty !== undefined && workingIcebergQty !== null) {\n                localVarQueryParameter['workingIcebergQty'] = workingIcebergQty;\n            }\n\n            if (workingTimeInForce !== undefined && workingTimeInForce !== null) {\n                localVarQueryParameter['workingTimeInForce'] = workingTimeInForce;\n            }\n\n            if (workingStrategyId !== undefined && workingStrategyId !== null) {\n                localVarQueryParameter['workingStrategyId'] = workingStrategyId;\n            }\n\n            if (workingStrategyType !== undefined && workingStrategyType !== null) {\n                localVarQueryParameter['workingStrategyType'] = workingStrategyType;\n            }\n\n            if (pendingType !== undefined && pendingType !== null) {\n                localVarQueryParameter['pendingType'] = pendingType;\n            }\n\n            if (pendingSide !== undefined && pendingSide !== null) {\n                localVarQueryParameter['pendingSide'] = pendingSide;\n            }\n\n            if (pendingClientOrderId !== undefined && pendingClientOrderId !== null) {\n                localVarQueryParameter['pendingClientOrderId'] = pendingClientOrderId;\n            }\n\n            if (pendingPrice !== undefined && pendingPrice !== null) {\n                localVarQueryParameter['pendingPrice'] = pendingPrice;\n            }\n\n            if (pendingStopPrice !== undefined && pendingStopPrice !== null) {\n                localVarQueryParameter['pendingStopPrice'] = pendingStopPrice;\n            }\n\n            if (pendingTrailingDelta !== undefined && pendingTrailingDelta !== null) {\n                localVarQueryParameter['pendingTrailingDelta'] = pendingTrailingDelta;\n            }\n\n            if (pendingQuantity !== undefined && pendingQuantity !== null) {\n                localVarQueryParameter['pendingQuantity'] = pendingQuantity;\n            }\n\n            if (pendingIcebergQty !== undefined && pendingIcebergQty !== null) {\n                localVarQueryParameter['pendingIcebergQty'] = pendingIcebergQty;\n            }\n\n            if (pendingTimeInForce !== undefined && pendingTimeInForce !== null) {\n                localVarQueryParameter['pendingTimeInForce'] = pendingTimeInForce;\n            }\n\n            if (pendingStrategyId !== undefined && pendingStrategyId !== null) {\n                localVarQueryParameter['pendingStrategyId'] = pendingStrategyId;\n            }\n\n            if (pendingStrategyType !== undefined && pendingStrategyType !== null) {\n                localVarQueryParameter['pendingStrategyType'] = pendingStrategyType;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/orderList/oto',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Place an OTOCO.\n         *\n         * An OTOCO (One-Triggers-One-Cancels-the-Other) is an order list comprised of 3 orders.\n         * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n         * The behavior of the working order is the same as the [OTO](#new-order-list---oto-trade).\n         * OTOCO has 2 pending orders (pending above and pending below), forming an OCO pair. The pending orders are only placed on the order book when the working order gets **fully filled**.\n         * The rules of the pending above and pending below follow the same rules as the [Order list OCO](#new-order-list---oco-trade).\n         * OTOCOs add **3 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n         * Weight: 1\n         *\n         * Unfilled Order Count: 3\n         *\n         * @summary New Order list - OTOCO\n         * @param {string} symbol\n         * @param {OrderListOtocoWorkingTypeEnum} workingType\n         * @param {OrderListOtocoWorkingSideEnum} workingSide\n         * @param {number} workingPrice\n         * @param {number} workingQuantity Sets the quantity for the working order.\n         * @param {OrderListOtocoPendingSideEnum} pendingSide\n         * @param {number} pendingQuantity Sets the quantity for the pending order.\n         * @param {OrderListOtocoPendingAboveTypeEnum} pendingAboveType\n         * @param {string} [listClientOrderId] A unique Id for the entire orderList\n         * @param {OrderListOtocoNewOrderRespTypeEnum} [newOrderRespType]\n         * @param {OrderListOtocoSelfTradePreventionModeEnum} [selfTradePreventionMode]\n         * @param {string} [workingClientOrderId] Arbitrary unique ID among open orders for the working order.<br> Automatically generated if not sent.\n         * @param {number} [workingIcebergQty] This can only be used if `workingTimeInForce` is `GTC`, or if `workingType` is `LIMIT_MAKER`.\n         * @param {OrderListOtocoWorkingTimeInForceEnum} [workingTimeInForce]\n         * @param {number} [workingStrategyId] Arbitrary numeric value identifying the working order within an order strategy.\n         * @param {number} [workingStrategyType] Arbitrary numeric value identifying the working order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n         * @param {string} [pendingAboveClientOrderId] Arbitrary unique ID among open orders for the pending above order.<br> Automatically generated if not sent.\n         * @param {number} [pendingAbovePrice] Can be used if `pendingAboveType` is `STOP_LOSS_LIMIT` , `LIMIT_MAKER`, or `TAKE_PROFIT_LIMIT` to specify the limit price.\n         * @param {number} [pendingAboveStopPrice] Can be used if `pendingAboveType` is `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, `TAKE_PROFIT_LIMIT`\n         * @param {number} [pendingAboveTrailingDelta] See [Trailing Stop FAQ](faqs/trailing-stop-faq.md)\n         * @param {number} [pendingAboveIcebergQty] This can only be used if `pendingAboveTimeInForce` is `GTC` or if `pendingAboveType` is `LIMIT_MAKER`.\n         * @param {OrderListOtocoPendingAboveTimeInForceEnum} [pendingAboveTimeInForce]\n         * @param {number} [pendingAboveStrategyId] Arbitrary numeric value identifying the pending above order within an order strategy.\n         * @param {number} [pendingAboveStrategyType] Arbitrary numeric value identifying the pending above order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n         * @param {OrderListOtocoPendingBelowTypeEnum} [pendingBelowType]\n         * @param {string} [pendingBelowClientOrderId] Arbitrary unique ID among open orders for the pending below order.<br> Automatically generated if not sent.\n         * @param {number} [pendingBelowPrice] Can be used if `pendingBelowType` is `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT` to specify limit price\n         * @param {number} [pendingBelowStopPrice] Can be used if `pendingBelowType` is `STOP_LOSS`, `STOP_LOSS_LIMIT, TAKE_PROFIT or TAKE_PROFIT_LIMIT`. <br>Either `pendingBelowStopPrice` or `pendingBelowTrailingDelta` or both, must be specified.\n         * @param {number} [pendingBelowTrailingDelta]\n         * @param {number} [pendingBelowIcebergQty] This can only be used if `pendingBelowTimeInForce` is `GTC`, or if `pendingBelowType` is `LIMIT_MAKER`.\n         * @param {OrderListOtocoPendingBelowTimeInForceEnum} [pendingBelowTimeInForce]\n         * @param {number} [pendingBelowStrategyId] Arbitrary numeric value identifying the pending below order within an order strategy.\n         * @param {number} [pendingBelowStrategyType] Arbitrary numeric value identifying the pending below order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        orderListOtoco: async (\n            symbol: string,\n            workingType: OrderListOtocoWorkingTypeEnum,\n            workingSide: OrderListOtocoWorkingSideEnum,\n            workingPrice: number,\n            workingQuantity: number,\n            pendingSide: OrderListOtocoPendingSideEnum,\n            pendingQuantity: number,\n            pendingAboveType: OrderListOtocoPendingAboveTypeEnum,\n            listClientOrderId?: string,\n            newOrderRespType?: OrderListOtocoNewOrderRespTypeEnum,\n            selfTradePreventionMode?: OrderListOtocoSelfTradePreventionModeEnum,\n            workingClientOrderId?: string,\n            workingIcebergQty?: number,\n            workingTimeInForce?: OrderListOtocoWorkingTimeInForceEnum,\n            workingStrategyId?: number,\n            workingStrategyType?: number,\n            pendingAboveClientOrderId?: string,\n            pendingAbovePrice?: number,\n            pendingAboveStopPrice?: number,\n            pendingAboveTrailingDelta?: number,\n            pendingAboveIcebergQty?: number,\n            pendingAboveTimeInForce?: OrderListOtocoPendingAboveTimeInForceEnum,\n            pendingAboveStrategyId?: number,\n            pendingAboveStrategyType?: number,\n            pendingBelowType?: OrderListOtocoPendingBelowTypeEnum,\n            pendingBelowClientOrderId?: string,\n            pendingBelowPrice?: number,\n            pendingBelowStopPrice?: number,\n            pendingBelowTrailingDelta?: number,\n            pendingBelowIcebergQty?: number,\n            pendingBelowTimeInForce?: OrderListOtocoPendingBelowTimeInForceEnum,\n            pendingBelowStrategyId?: number,\n            pendingBelowStrategyType?: number,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('orderListOtoco', 'symbol', symbol);\n            // verify required parameter 'workingType' is not null or undefined\n            assertParamExists('orderListOtoco', 'workingType', workingType);\n            // verify required parameter 'workingSide' is not null or undefined\n            assertParamExists('orderListOtoco', 'workingSide', workingSide);\n            // verify required parameter 'workingPrice' is not null or undefined\n            assertParamExists('orderListOtoco', 'workingPrice', workingPrice);\n            // verify required parameter 'workingQuantity' is not null or undefined\n            assertParamExists('orderListOtoco', 'workingQuantity', workingQuantity);\n            // verify required parameter 'pendingSide' is not null or undefined\n            assertParamExists('orderListOtoco', 'pendingSide', pendingSide);\n            // verify required parameter 'pendingQuantity' is not null or undefined\n            assertParamExists('orderListOtoco', 'pendingQuantity', pendingQuantity);\n            // verify required parameter 'pendingAboveType' is not null or undefined\n            assertParamExists('orderListOtoco', 'pendingAboveType', pendingAboveType);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (listClientOrderId !== undefined && listClientOrderId !== null) {\n                localVarQueryParameter['listClientOrderId'] = listClientOrderId;\n            }\n\n            if (newOrderRespType !== undefined && newOrderRespType !== null) {\n                localVarQueryParameter['newOrderRespType'] = newOrderRespType;\n            }\n\n            if (selfTradePreventionMode !== undefined && selfTradePreventionMode !== null) {\n                localVarQueryParameter['selfTradePreventionMode'] = selfTradePreventionMode;\n            }\n\n            if (workingType !== undefined && workingType !== null) {\n                localVarQueryParameter['workingType'] = workingType;\n            }\n\n            if (workingSide !== undefined && workingSide !== null) {\n                localVarQueryParameter['workingSide'] = workingSide;\n            }\n\n            if (workingClientOrderId !== undefined && workingClientOrderId !== null) {\n                localVarQueryParameter['workingClientOrderId'] = workingClientOrderId;\n            }\n\n            if (workingPrice !== undefined && workingPrice !== null) {\n                localVarQueryParameter['workingPrice'] = workingPrice;\n            }\n\n            if (workingQuantity !== undefined && workingQuantity !== null) {\n                localVarQueryParameter['workingQuantity'] = workingQuantity;\n            }\n\n            if (workingIcebergQty !== undefined && workingIcebergQty !== null) {\n                localVarQueryParameter['workingIcebergQty'] = workingIcebergQty;\n            }\n\n            if (workingTimeInForce !== undefined && workingTimeInForce !== null) {\n                localVarQueryParameter['workingTimeInForce'] = workingTimeInForce;\n            }\n\n            if (workingStrategyId !== undefined && workingStrategyId !== null) {\n                localVarQueryParameter['workingStrategyId'] = workingStrategyId;\n            }\n\n            if (workingStrategyType !== undefined && workingStrategyType !== null) {\n                localVarQueryParameter['workingStrategyType'] = workingStrategyType;\n            }\n\n            if (pendingSide !== undefined && pendingSide !== null) {\n                localVarQueryParameter['pendingSide'] = pendingSide;\n            }\n\n            if (pendingQuantity !== undefined && pendingQuantity !== null) {\n                localVarQueryParameter['pendingQuantity'] = pendingQuantity;\n            }\n\n            if (pendingAboveType !== undefined && pendingAboveType !== null) {\n                localVarQueryParameter['pendingAboveType'] = pendingAboveType;\n            }\n\n            if (pendingAboveClientOrderId !== undefined && pendingAboveClientOrderId !== null) {\n                localVarQueryParameter['pendingAboveClientOrderId'] = pendingAboveClientOrderId;\n            }\n\n            if (pendingAbovePrice !== undefined && pendingAbovePrice !== null) {\n                localVarQueryParameter['pendingAbovePrice'] = pendingAbovePrice;\n            }\n\n            if (pendingAboveStopPrice !== undefined && pendingAboveStopPrice !== null) {\n                localVarQueryParameter['pendingAboveStopPrice'] = pendingAboveStopPrice;\n            }\n\n            if (pendingAboveTrailingDelta !== undefined && pendingAboveTrailingDelta !== null) {\n                localVarQueryParameter['pendingAboveTrailingDelta'] = pendingAboveTrailingDelta;\n            }\n\n            if (pendingAboveIcebergQty !== undefined && pendingAboveIcebergQty !== null) {\n                localVarQueryParameter['pendingAboveIcebergQty'] = pendingAboveIcebergQty;\n            }\n\n            if (pendingAboveTimeInForce !== undefined && pendingAboveTimeInForce !== null) {\n                localVarQueryParameter['pendingAboveTimeInForce'] = pendingAboveTimeInForce;\n            }\n\n            if (pendingAboveStrategyId !== undefined && pendingAboveStrategyId !== null) {\n                localVarQueryParameter['pendingAboveStrategyId'] = pendingAboveStrategyId;\n            }\n\n            if (pendingAboveStrategyType !== undefined && pendingAboveStrategyType !== null) {\n                localVarQueryParameter['pendingAboveStrategyType'] = pendingAboveStrategyType;\n            }\n\n            if (pendingBelowType !== undefined && pendingBelowType !== null) {\n                localVarQueryParameter['pendingBelowType'] = pendingBelowType;\n            }\n\n            if (pendingBelowClientOrderId !== undefined && pendingBelowClientOrderId !== null) {\n                localVarQueryParameter['pendingBelowClientOrderId'] = pendingBelowClientOrderId;\n            }\n\n            if (pendingBelowPrice !== undefined && pendingBelowPrice !== null) {\n                localVarQueryParameter['pendingBelowPrice'] = pendingBelowPrice;\n            }\n\n            if (pendingBelowStopPrice !== undefined && pendingBelowStopPrice !== null) {\n                localVarQueryParameter['pendingBelowStopPrice'] = pendingBelowStopPrice;\n            }\n\n            if (pendingBelowTrailingDelta !== undefined && pendingBelowTrailingDelta !== null) {\n                localVarQueryParameter['pendingBelowTrailingDelta'] = pendingBelowTrailingDelta;\n            }\n\n            if (pendingBelowIcebergQty !== undefined && pendingBelowIcebergQty !== null) {\n                localVarQueryParameter['pendingBelowIcebergQty'] = pendingBelowIcebergQty;\n            }\n\n            if (pendingBelowTimeInForce !== undefined && pendingBelowTimeInForce !== null) {\n                localVarQueryParameter['pendingBelowTimeInForce'] = pendingBelowTimeInForce;\n            }\n\n            if (pendingBelowStrategyId !== undefined && pendingBelowStrategyId !== null) {\n                localVarQueryParameter['pendingBelowStrategyId'] = pendingBelowStrategyId;\n            }\n\n            if (pendingBelowStrategyType !== undefined && pendingBelowStrategyType !== null) {\n                localVarQueryParameter['pendingBelowStrategyType'] = pendingBelowStrategyType;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/orderList/otoco',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Send in a new OCO.\n         *\n         * Price Restrictions:\n         * `SELL`: Limit Price > Last Price > Stop Price\n         * `BUY`: Limit Price < Last Price < Stop Price\n         * Quantity Restrictions:\n         * Both legs must have the same quantity.\n         * `ICEBERG` quantities however do not have to be the same\n         * `OCO` adds **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n         * Weight: 1\n         *\n         * Unfilled Order Count: 2\n         *\n         * @summary New OCO - Deprecated\n         * @param {string} symbol\n         * @param {OrderOcoSideEnum} side\n         * @param {number} quantity\n         * @param {number} price\n         * @param {number} stopPrice\n         * @param {string} [listClientOrderId] A unique Id for the entire orderList\n         * @param {string} [limitClientOrderId] A unique Id for the limit order\n         * @param {number} [limitStrategyId]\n         * @param {number} [limitStrategyType] The value cannot be less than `1000000`.\n         * @param {number} [limitIcebergQty] Used to make the `LIMIT_MAKER` leg an iceberg order.\n         * @param {number} [trailingDelta] See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n         * @param {string} [stopClientOrderId] A unique Id for the stop loss/stop loss limit leg\n         * @param {number} [stopStrategyId]\n         * @param {number} [stopStrategyType] The value cannot be less than `1000000`.\n         * @param {number} [stopLimitPrice] If provided, `stopLimitTimeInForce` is required.\n         * @param {number} [stopIcebergQty] Used with `STOP_LOSS_LIMIT` leg to make an iceberg order.\n         * @param {OrderOcoStopLimitTimeInForceEnum} [stopLimitTimeInForce]\n         * @param {OrderOcoNewOrderRespTypeEnum} [newOrderRespType]\n         * @param {OrderOcoSelfTradePreventionModeEnum} [selfTradePreventionMode]\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        orderOco: async (\n            symbol: string,\n            side: OrderOcoSideEnum,\n            quantity: number,\n            price: number,\n            stopPrice: number,\n            listClientOrderId?: string,\n            limitClientOrderId?: string,\n            limitStrategyId?: number,\n            limitStrategyType?: number,\n            limitIcebergQty?: number,\n            trailingDelta?: number,\n            stopClientOrderId?: string,\n            stopStrategyId?: number,\n            stopStrategyType?: number,\n            stopLimitPrice?: number,\n            stopIcebergQty?: number,\n            stopLimitTimeInForce?: OrderOcoStopLimitTimeInForceEnum,\n            newOrderRespType?: OrderOcoNewOrderRespTypeEnum,\n            selfTradePreventionMode?: OrderOcoSelfTradePreventionModeEnum,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('orderOco', 'symbol', symbol);\n            // verify required parameter 'side' is not null or undefined\n            assertParamExists('orderOco', 'side', side);\n            // verify required parameter 'quantity' is not null or undefined\n            assertParamExists('orderOco', 'quantity', quantity);\n            // verify required parameter 'price' is not null or undefined\n            assertParamExists('orderOco', 'price', price);\n            // verify required parameter 'stopPrice' is not null or undefined\n            assertParamExists('orderOco', 'stopPrice', stopPrice);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (listClientOrderId !== undefined && listClientOrderId !== null) {\n                localVarQueryParameter['listClientOrderId'] = listClientOrderId;\n            }\n\n            if (side !== undefined && side !== null) {\n                localVarQueryParameter['side'] = side;\n            }\n\n            if (quantity !== undefined && quantity !== null) {\n                localVarQueryParameter['quantity'] = quantity;\n            }\n\n            if (limitClientOrderId !== undefined && limitClientOrderId !== null) {\n                localVarQueryParameter['limitClientOrderId'] = limitClientOrderId;\n            }\n\n            if (price !== undefined && price !== null) {\n                localVarQueryParameter['price'] = price;\n            }\n\n            if (limitStrategyId !== undefined && limitStrategyId !== null) {\n                localVarQueryParameter['limitStrategyId'] = limitStrategyId;\n            }\n\n            if (limitStrategyType !== undefined && limitStrategyType !== null) {\n                localVarQueryParameter['limitStrategyType'] = limitStrategyType;\n            }\n\n            if (limitIcebergQty !== undefined && limitIcebergQty !== null) {\n                localVarQueryParameter['limitIcebergQty'] = limitIcebergQty;\n            }\n\n            if (trailingDelta !== undefined && trailingDelta !== null) {\n                localVarQueryParameter['trailingDelta'] = trailingDelta;\n            }\n\n            if (stopClientOrderId !== undefined && stopClientOrderId !== null) {\n                localVarQueryParameter['stopClientOrderId'] = stopClientOrderId;\n            }\n\n            if (stopPrice !== undefined && stopPrice !== null) {\n                localVarQueryParameter['stopPrice'] = stopPrice;\n            }\n\n            if (stopStrategyId !== undefined && stopStrategyId !== null) {\n                localVarQueryParameter['stopStrategyId'] = stopStrategyId;\n            }\n\n            if (stopStrategyType !== undefined && stopStrategyType !== null) {\n                localVarQueryParameter['stopStrategyType'] = stopStrategyType;\n            }\n\n            if (stopLimitPrice !== undefined && stopLimitPrice !== null) {\n                localVarQueryParameter['stopLimitPrice'] = stopLimitPrice;\n            }\n\n            if (stopIcebergQty !== undefined && stopIcebergQty !== null) {\n                localVarQueryParameter['stopIcebergQty'] = stopIcebergQty;\n            }\n\n            if (stopLimitTimeInForce !== undefined && stopLimitTimeInForce !== null) {\n                localVarQueryParameter['stopLimitTimeInForce'] = stopLimitTimeInForce;\n            }\n\n            if (newOrderRespType !== undefined && newOrderRespType !== null) {\n                localVarQueryParameter['newOrderRespType'] = newOrderRespType;\n            }\n\n            if (selfTradePreventionMode !== undefined && selfTradePreventionMode !== null) {\n                localVarQueryParameter['selfTradePreventionMode'] = selfTradePreventionMode;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/order/oco',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Test new order creation and signature/recvWindow long.\n         * Creates and validates a new order but does not send it into the matching engine.\n         * Weight: |Condition| Request Weight|\n         * |------------           | ------------ |\n         * |Without `computeCommissionRates`| 1|\n         * |With `computeCommissionRates`|20|\n         *\n         * @summary Test new order\n         * @param {boolean} [computeCommissionRates] Default: `false`\n         *\n         * @throws {RequiredError}\n         */\n        orderTest: async (computeCommissionRates?: boolean): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (computeCommissionRates !== undefined && computeCommissionRates !== null) {\n                localVarQueryParameter['computeCommissionRates'] = computeCommissionRates;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/order/test',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Places an order using smart order routing (SOR).\n         *\n         * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n         *\n         * Read [SOR FAQ](faqs/sor_faq.md) to learn more.\n         * Weight: 1\n         *\n         * Unfilled Order Count: 1\n         *\n         * @summary New order using SOR\n         * @param {string} symbol\n         * @param {SorOrderSideEnum} side\n         * @param {SorOrderTypeEnum} type\n         * @param {number} quantity\n         * @param {SorOrderTimeInForceEnum} [timeInForce]\n         * @param {number} [price]\n         * @param {string} [newClientOrderId] A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n         * @param {number} [strategyId]\n         * @param {number} [strategyType] The value cannot be less than `1000000`.\n         * @param {number} [icebergQty] Used with `LIMIT`, `STOP_LOSS_LIMIT`, and `TAKE_PROFIT_LIMIT` to create an iceberg order.\n         * @param {SorOrderNewOrderRespTypeEnum} [newOrderRespType]\n         * @param {SorOrderSelfTradePreventionModeEnum} [selfTradePreventionMode]\n         * @param {number} [recvWindow] The value cannot be greater than `60000`\n         *\n         * @throws {RequiredError}\n         */\n        sorOrder: async (\n            symbol: string,\n            side: SorOrderSideEnum,\n            type: SorOrderTypeEnum,\n            quantity: number,\n            timeInForce?: SorOrderTimeInForceEnum,\n            price?: number,\n            newClientOrderId?: string,\n            strategyId?: number,\n            strategyType?: number,\n            icebergQty?: number,\n            newOrderRespType?: SorOrderNewOrderRespTypeEnum,\n            selfTradePreventionMode?: SorOrderSelfTradePreventionModeEnum,\n            recvWindow?: number\n        ): Promise<RequestArgs> => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('sorOrder', 'symbol', symbol);\n            // verify required parameter 'side' is not null or undefined\n            assertParamExists('sorOrder', 'side', side);\n            // verify required parameter 'type' is not null or undefined\n            assertParamExists('sorOrder', 'type', type);\n            // verify required parameter 'quantity' is not null or undefined\n            assertParamExists('sorOrder', 'quantity', quantity);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (symbol !== undefined && symbol !== null) {\n                localVarQueryParameter['symbol'] = symbol;\n            }\n\n            if (side !== undefined && side !== null) {\n                localVarQueryParameter['side'] = side;\n            }\n\n            if (type !== undefined && type !== null) {\n                localVarQueryParameter['type'] = type;\n            }\n\n            if (timeInForce !== undefined && timeInForce !== null) {\n                localVarQueryParameter['timeInForce'] = timeInForce;\n            }\n\n            if (quantity !== undefined && quantity !== null) {\n                localVarQueryParameter['quantity'] = quantity;\n            }\n\n            if (price !== undefined && price !== null) {\n                localVarQueryParameter['price'] = price;\n            }\n\n            if (newClientOrderId !== undefined && newClientOrderId !== null) {\n                localVarQueryParameter['newClientOrderId'] = newClientOrderId;\n            }\n\n            if (strategyId !== undefined && strategyId !== null) {\n                localVarQueryParameter['strategyId'] = strategyId;\n            }\n\n            if (strategyType !== undefined && strategyType !== null) {\n                localVarQueryParameter['strategyType'] = strategyType;\n            }\n\n            if (icebergQty !== undefined && icebergQty !== null) {\n                localVarQueryParameter['icebergQty'] = icebergQty;\n            }\n\n            if (newOrderRespType !== undefined && newOrderRespType !== null) {\n                localVarQueryParameter['newOrderRespType'] = newOrderRespType;\n            }\n\n            if (selfTradePreventionMode !== undefined && selfTradePreventionMode !== null) {\n                localVarQueryParameter['selfTradePreventionMode'] = selfTradePreventionMode;\n            }\n\n            if (recvWindow !== undefined && recvWindow !== null) {\n                localVarQueryParameter['recvWindow'] = recvWindow;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/sor/order',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Test new order creation and signature/recvWindow using smart order routing (SOR).\n         * Creates and validates a new order but does not send it into the matching engine.\n         * Weight: | Condition | Request Weight |\n         * | --------- | -------------- |\n         * | Without `computeCommissionRates`  |  1 |\n         * | With `computeCommissionRates`     | 20 |\n         *\n         * @summary Test new order using SOR\n         * @param {boolean} [computeCommissionRates] Default: `false`\n         *\n         * @throws {RequiredError}\n         */\n        sorOrderTest: async (computeCommissionRates?: boolean): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (computeCommissionRates !== undefined && computeCommissionRates !== null) {\n                localVarQueryParameter['computeCommissionRates'] = computeCommissionRates;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/sor/order/test',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n    };\n};\n\n/**\n * TradeApi - interface\n * @interface TradeApi\n */\nexport interface TradeApiInterface {\n    /**\n     * Cancels all active orders on a symbol.\n     * This includes orders that are part of an order list.\n     * Weight: 1\n     *\n     * @summary Cancel All Open Orders on a Symbol\n     * @param {DeleteOpenOrdersRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    deleteOpenOrders(\n        requestParameters: DeleteOpenOrdersRequest\n    ): Promise<RestApiResponse<DeleteOpenOrdersResponse>>;\n    /**\n     * Cancel an active order.\n     * Weight: 1\n     *\n     * @summary Cancel order\n     * @param {DeleteOrderRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    deleteOrder(\n        requestParameters: DeleteOrderRequest\n    ): Promise<RestApiResponse<DeleteOrderResponse>>;\n    /**\n     * Cancel an entire Order list\n     * Weight: 1\n     *\n     * @summary Cancel Order list\n     * @param {DeleteOrderListRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    deleteOrderList(\n        requestParameters: DeleteOrderListRequest\n    ): Promise<RestApiResponse<DeleteOrderListResponse>>;\n    /**\n     * Send in a new order.\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * @summary New order\n     * @param {NewOrderRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    newOrder(requestParameters: NewOrderRequest): Promise<RestApiResponse<NewOrderResponse>>;\n    /**\n     * Reduce the quantity of an existing open order.\n     *\n     * This adds 0 orders to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [Order Amend Keep Priority FAQ](faqs/order_amend_keep_priority.md) to learn more.\n     * Weight: 4\n     *\n     * @summary Order Amend Keep Priority\n     * @param {OrderAmendKeepPriorityRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    orderAmendKeepPriority(\n        requestParameters: OrderAmendKeepPriorityRequest\n    ): Promise<RestApiResponse<OrderAmendKeepPriorityResponse>>;\n    /**\n     * Cancels an existing order and places a new order on the same symbol.\n     *\n     * Filters and Order Count are evaluated before the processing of the cancellation and order placement occurs.\n     *\n     * A new order that was not attempted (i.e. when `newOrderResult: NOT_ATTEMPTED`), will still increase the unfilled order count by 1.\n     * Weight: 1\n     *\n     * @summary Cancel an Existing Order and Send a New Order\n     * @param {OrderCancelReplaceRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    orderCancelReplace(\n        requestParameters: OrderCancelReplaceRequest\n    ): Promise<RestApiResponse<OrderCancelReplaceResponse>>;\n    /**\n     * Send in an one-cancels-the-other (OCO) pair, where activation of one order immediately cancels the other.\n     *\n     * An OCO has 2 orders called the **above order** and **below order**.\n     * One of the orders must be a `LIMIT_MAKER/TAKE_PROFIT/TAKE_PROFIT_LIMIT` order and the other must be `STOP_LOSS` or `STOP_LOSS_LIMIT` order.\n     * Price restrictions\n     * If the OCO is on the `SELL` side:\n     * `LIMIT_MAKER/TAKE_PROFIT_LIMIT` `price` > Last Traded Price >  `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n     * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * If the OCO is on the `BUY` side:\n     * `LIMIT_MAKER/TAKE_PROFIT_LIMIT price` < Last Traded Price < `stopPrice`\n     * `TAKE_PROFIT stopPrice` < Last Traded Price < `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * OCOs add **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary New Order list - OCO\n     * @param {OrderListOcoRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    orderListOco(\n        requestParameters: OrderListOcoRequest\n    ): Promise<RestApiResponse<OrderListOcoResponse>>;\n    /**\n     * Place an OTO.\n     *\n     * An OTO (One-Triggers-the-Other) is an order list comprised of 2 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The second order is called the **pending order**. It can be any order type except for `MARKET` orders using parameter `quoteOrderQty`. The pending order is only placed on the order book when the working order gets **fully filled**.\n     * If either the working order or the pending order is cancelled individually, the other order in the order list will also be canceled or expired.\n     * When the order list is placed, if the working order gets **immediately fully filled**, the placement response will show the working order as `FILLED` but the pending order will still appear as `PENDING_NEW`. You need to query the status of the pending order again to see its updated status.\n     * OTOs add **2 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary New Order list - OTO\n     * @param {OrderListOtoRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    orderListOto(\n        requestParameters: OrderListOtoRequest\n    ): Promise<RestApiResponse<OrderListOtoResponse>>;\n    /**\n     * Place an OTOCO.\n     *\n     * An OTOCO (One-Triggers-One-Cancels-the-Other) is an order list comprised of 3 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The behavior of the working order is the same as the [OTO](#new-order-list---oto-trade).\n     * OTOCO has 2 pending orders (pending above and pending below), forming an OCO pair. The pending orders are only placed on the order book when the working order gets **fully filled**.\n     * The rules of the pending above and pending below follow the same rules as the [Order list OCO](#new-order-list---oco-trade).\n     * OTOCOs add **3 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 3\n     *\n     * @summary New Order list - OTOCO\n     * @param {OrderListOtocoRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    orderListOtoco(\n        requestParameters: OrderListOtocoRequest\n    ): Promise<RestApiResponse<OrderListOtocoResponse>>;\n    /**\n     * Send in a new OCO.\n     *\n     * Price Restrictions:\n     * `SELL`: Limit Price > Last Price > Stop Price\n     * `BUY`: Limit Price < Last Price < Stop Price\n     * Quantity Restrictions:\n     * Both legs must have the same quantity.\n     * `ICEBERG` quantities however do not have to be the same\n     * `OCO` adds **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary New OCO - Deprecated\n     * @param {OrderOcoRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    orderOco(requestParameters: OrderOcoRequest): Promise<RestApiResponse<OrderOcoResponse>>;\n    /**\n     * Test new order creation and signature/recvWindow long.\n     * Creates and validates a new order but does not send it into the matching engine.\n     * Weight: |Condition| Request Weight|\n     * |------------           | ------------ |\n     * |Without `computeCommissionRates`| 1|\n     * |With `computeCommissionRates`|20|\n     *\n     * @summary Test new order\n     * @param {OrderTestRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    orderTest(requestParameters?: OrderTestRequest): Promise<RestApiResponse<OrderTestResponse>>;\n    /**\n     * Places an order using smart order routing (SOR).\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [SOR FAQ](faqs/sor_faq.md) to learn more.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 1\n     *\n     * @summary New order using SOR\n     * @param {SorOrderRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    sorOrder(requestParameters: SorOrderRequest): Promise<RestApiResponse<SorOrderResponse>>;\n    /**\n     * Test new order creation and signature/recvWindow using smart order routing (SOR).\n     * Creates and validates a new order but does not send it into the matching engine.\n     * Weight: | Condition | Request Weight |\n     * | --------- | -------------- |\n     * | Without `computeCommissionRates`  |  1 |\n     * | With `computeCommissionRates`     | 20 |\n     *\n     * @summary Test new order using SOR\n     * @param {SorOrderTestRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApiInterface\n     */\n    sorOrderTest(\n        requestParameters?: SorOrderTestRequest\n    ): Promise<RestApiResponse<SorOrderTestResponse>>;\n}\n\n/**\n * Request parameters for deleteOpenOrders operation in TradeApi.\n * @interface DeleteOpenOrdersRequest\n */\nexport interface DeleteOpenOrdersRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiDeleteOpenOrders\n     */\n    readonly symbol: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiDeleteOpenOrders\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for deleteOrder operation in TradeApi.\n * @interface DeleteOrderRequest\n */\nexport interface DeleteOrderRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiDeleteOrder\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiDeleteOrder\n     */\n    readonly orderId?: number;\n\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiDeleteOrder\n     */\n    readonly origClientOrderId?: string;\n\n    /**\n     * A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n     * @type {string}\n     * @memberof TradeApiDeleteOrder\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     *\n     * @type {'ONLY_NEW' | 'NEW' | 'ONLY_PARTIALLY_FILLED' | 'PARTIALLY_FILLED'}\n     * @memberof TradeApiDeleteOrder\n     */\n    readonly cancelRestrictions?: DeleteOrderCancelRestrictionsEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiDeleteOrder\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for deleteOrderList operation in TradeApi.\n * @interface DeleteOrderListRequest\n */\nexport interface DeleteOrderListRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiDeleteOrderList\n     */\n    readonly symbol: string;\n\n    /**\n     * Either `orderListId` or `listClientOrderId` must be provided\n     * @type {number}\n     * @memberof TradeApiDeleteOrderList\n     */\n    readonly orderListId?: number;\n\n    /**\n     * A unique Id for the entire orderList\n     * @type {string}\n     * @memberof TradeApiDeleteOrderList\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     * A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n     * @type {string}\n     * @memberof TradeApiDeleteOrderList\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiDeleteOrderList\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for newOrder operation in TradeApi.\n * @interface NewOrderRequest\n */\nexport interface NewOrderRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiNewOrder\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiNewOrder\n     */\n    readonly side: NewOrderSideEnum;\n\n    /**\n     *\n     * @type {'MARKET' | 'LIMIT' | 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiNewOrder\n     */\n    readonly type: NewOrderTypeEnum;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiNewOrder\n     */\n    readonly timeInForce?: NewOrderTimeInForceEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiNewOrder\n     */\n    readonly quantity?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiNewOrder\n     */\n    readonly quoteOrderQty?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiNewOrder\n     */\n    readonly price?: number;\n\n    /**\n     * A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n     * @type {string}\n     * @memberof TradeApiNewOrder\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiNewOrder\n     */\n    readonly strategyId?: number;\n\n    /**\n     * The value cannot be less than `1000000`.\n     * @type {number}\n     * @memberof TradeApiNewOrder\n     */\n    readonly strategyType?: number;\n\n    /**\n     * Used with `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, and `TAKE_PROFIT_LIMIT` orders.\n     * @type {number}\n     * @memberof TradeApiNewOrder\n     */\n    readonly stopPrice?: number;\n\n    /**\n     * See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n     * @type {number}\n     * @memberof TradeApiNewOrder\n     */\n    readonly trailingDelta?: number;\n\n    /**\n     * Used with `LIMIT`, `STOP_LOSS_LIMIT`, and `TAKE_PROFIT_LIMIT` to create an iceberg order.\n     * @type {number}\n     * @memberof TradeApiNewOrder\n     */\n    readonly icebergQty?: number;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiNewOrder\n     */\n    readonly newOrderRespType?: NewOrderNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiNewOrder\n     */\n    readonly selfTradePreventionMode?: NewOrderSelfTradePreventionModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiNewOrder\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderAmendKeepPriority operation in TradeApi.\n * @interface OrderAmendKeepPriorityRequest\n */\nexport interface OrderAmendKeepPriorityRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly symbol: string;\n\n    /**\n     * `newQty` must be greater than 0 and less than the order's quantity.\n     * @type {number}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly newQty: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly orderId?: number;\n\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly origClientOrderId?: string;\n\n    /**\n     * A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n     * @type {string}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderCancelReplace operation in TradeApi.\n * @interface OrderCancelReplaceRequest\n */\nexport interface OrderCancelReplaceRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly side: OrderCancelReplaceSideEnum;\n\n    /**\n     *\n     * @type {'MARKET' | 'LIMIT' | 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly type: OrderCancelReplaceTypeEnum;\n\n    /**\n     *\n     * @type {'STOP_ON_FAILURE' | 'ALLOW_FAILURE'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelReplaceMode: OrderCancelReplaceCancelReplaceModeEnum;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly timeInForce?: OrderCancelReplaceTimeInForceEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly quantity?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly quoteOrderQty?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly price?: number;\n\n    /**\n     * Used to uniquely identify this cancel. Automatically generated by default.\n     * @type {string}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelNewClientOrderId?: string;\n\n    /**\n     * Either `cancelOrderId` or `cancelOrigClientOrderId` must be sent. <br></br> If both `cancelOrderId` and `cancelOrigClientOrderId` parameters are provided, the `cancelOrderId` is searched first, then the `cancelOrigClientOrderId` from that result is checked against that order. <br></br> If both conditions are not met the request will be rejected.\n     * @type {string}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelOrigClientOrderId?: string;\n\n    /**\n     * Either `cancelOrderId` or `cancelOrigClientOrderId` must be sent. <br></br>If both `cancelOrderId` and `cancelOrigClientOrderId` parameters are provided, the `cancelOrderId` is searched first, then the `cancelOrigClientOrderId` from that result is checked against that order. <br></br>If both conditions are not met the request will be rejected.\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelOrderId?: number;\n\n    /**\n     * A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n     * @type {string}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly strategyId?: number;\n\n    /**\n     * The value cannot be less than `1000000`.\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly strategyType?: number;\n\n    /**\n     * Used with `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, and `TAKE_PROFIT_LIMIT` orders.\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly stopPrice?: number;\n\n    /**\n     * See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly trailingDelta?: number;\n\n    /**\n     * Used with `LIMIT`, `STOP_LOSS_LIMIT`, and `TAKE_PROFIT_LIMIT` to create an iceberg order.\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly icebergQty?: number;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly newOrderRespType?: OrderCancelReplaceNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly selfTradePreventionMode?: OrderCancelReplaceSelfTradePreventionModeEnum;\n\n    /**\n     *\n     * @type {'ONLY_NEW' | 'NEW' | 'ONLY_PARTIALLY_FILLED' | 'PARTIALLY_FILLED'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelRestrictions?: OrderCancelReplaceCancelRestrictionsEnum;\n\n    /**\n     *\n     * @type {'DO_NOTHING' | 'CANCEL_ONLY'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly orderRateLimitExceededMode?: OrderCancelReplaceOrderRateLimitExceededModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderListOco operation in TradeApi.\n * @interface OrderListOcoRequest\n */\nexport interface OrderListOcoRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly side: OrderListOcoSideEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly quantity: number;\n\n    /**\n     *\n     * @type {'STOP_LOSS_LIMIT' | 'STOP_LOSS' | 'LIMIT_MAKER' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly aboveType: OrderListOcoAboveTypeEnum;\n\n    /**\n     *\n     * @type {'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly belowType: OrderListOcoBelowTypeEnum;\n\n    /**\n     * A unique Id for the entire orderList\n     * @type {string}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     * Arbitrary unique ID among open orders for the above order. Automatically generated if not sent\n     * @type {string}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly aboveClientOrderId?: string;\n\n    /**\n     * Note that this can only be used if `aboveTimeInForce` is `GTC`.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly aboveIcebergQty?: number;\n\n    /**\n     * Can be used if `aboveType` is `STOP_LOSS_LIMIT` , `LIMIT_MAKER`, or `TAKE_PROFIT_LIMIT` to specify the limit price.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly abovePrice?: number;\n\n    /**\n     * Can be used if `aboveType` is `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, `TAKE_PROFIT_LIMIT`. <br>Either `aboveStopPrice` or `aboveTrailingDelta` or both, must be specified.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly aboveStopPrice?: number;\n\n    /**\n     * See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly aboveTrailingDelta?: number;\n\n    /**\n     * Required if `aboveType` is `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT`\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly aboveTimeInForce?: number;\n\n    /**\n     * Arbitrary numeric value identifying the above order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly aboveStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the above order strategy. <br>Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly aboveStrategyType?: number;\n\n    /**\n     * Arbitrary unique ID among open orders for the below order. Automatically generated if not sent\n     * @type {string}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly belowClientOrderId?: string;\n\n    /**\n     * Note that this can only be used if `belowTimeInForce` is `GTC`.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly belowIcebergQty?: number;\n\n    /**\n     * Can be used if `belowType` is `STOP_LOSS_LIMIT`, `LIMIT_MAKER`, or `TAKE_PROFIT_LIMIT` to specify the limit price.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly belowPrice?: number;\n\n    /**\n     * Can be used if `belowType` is `STOP_LOSS`, `STOP_LOSS_LIMIT, TAKE_PROFIT` or `TAKE_PROFIT_LIMIT` <br>Either belowStopPrice or belowTrailingDelta or both, must be specified.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly belowStopPrice?: number;\n\n    /**\n     * See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly belowTrailingDelta?: number;\n\n    /**\n     *\n     * @type {'belowType' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly belowTimeInForce?: OrderListOcoBelowTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the below order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly belowStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the below order strategy. <br>Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly belowStrategyType?: number;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly newOrderRespType?: OrderListOcoNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly selfTradePreventionMode?: OrderListOcoSelfTradePreventionModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderListOco\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderListOto operation in TradeApi.\n * @interface OrderListOtoRequest\n */\nexport interface OrderListOtoRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'LIMIT' | 'LIMIT_MAKER'}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly workingType: OrderListOtoWorkingTypeEnum;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly workingSide: OrderListOtoWorkingSideEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly workingPrice: number;\n\n    /**\n     * Sets the quantity for the working order.\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly workingQuantity: number;\n\n    /**\n     *\n     * @type {'LIMIT' | 'MARKET' | 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER'}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingType: OrderListOtoPendingTypeEnum;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingSide: OrderListOtoPendingSideEnum;\n\n    /**\n     * Sets the quantity for the pending order.\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingQuantity: number;\n\n    /**\n     * A unique Id for the entire orderList\n     * @type {string}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly newOrderRespType?: OrderListOtoNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly selfTradePreventionMode?: OrderListOtoSelfTradePreventionModeEnum;\n\n    /**\n     * Arbitrary unique ID among open orders for the working order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly workingClientOrderId?: string;\n\n    /**\n     * This can only be used if `workingTimeInForce` is `GTC`, or if `workingType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly workingIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly workingTimeInForce?: OrderListOtoWorkingTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the working order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly workingStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the working order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly workingStrategyType?: number;\n\n    /**\n     * Arbitrary unique ID among open orders for the pending order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingClientOrderId?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingPrice?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingStopPrice?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingTrailingDelta?: number;\n\n    /**\n     * This can only be used if `pendingTimeInForce` is `GTC` or if `pendingType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingTimeInForce?: OrderListOtoPendingTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the pending order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the pending order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly pendingStrategyType?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderListOto\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderListOtoco operation in TradeApi.\n * @interface OrderListOtocoRequest\n */\nexport interface OrderListOtocoRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'LIMIT' | 'LIMIT_MAKER'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly workingType: OrderListOtocoWorkingTypeEnum;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly workingSide: OrderListOtocoWorkingSideEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly workingPrice: number;\n\n    /**\n     * Sets the quantity for the working order.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly workingQuantity: number;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingSide: OrderListOtocoPendingSideEnum;\n\n    /**\n     * Sets the quantity for the pending order.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingQuantity: number;\n\n    /**\n     *\n     * @type {'STOP_LOSS_LIMIT' | 'STOP_LOSS' | 'LIMIT_MAKER' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingAboveType: OrderListOtocoPendingAboveTypeEnum;\n\n    /**\n     * A unique Id for the entire orderList\n     * @type {string}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly newOrderRespType?: OrderListOtocoNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly selfTradePreventionMode?: OrderListOtocoSelfTradePreventionModeEnum;\n\n    /**\n     * Arbitrary unique ID among open orders for the working order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly workingClientOrderId?: string;\n\n    /**\n     * This can only be used if `workingTimeInForce` is `GTC`, or if `workingType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly workingIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly workingTimeInForce?: OrderListOtocoWorkingTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the working order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly workingStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the working order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly workingStrategyType?: number;\n\n    /**\n     * Arbitrary unique ID among open orders for the pending above order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingAboveClientOrderId?: string;\n\n    /**\n     * Can be used if `pendingAboveType` is `STOP_LOSS_LIMIT` , `LIMIT_MAKER`, or `TAKE_PROFIT_LIMIT` to specify the limit price.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingAbovePrice?: number;\n\n    /**\n     * Can be used if `pendingAboveType` is `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, `TAKE_PROFIT_LIMIT`\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingAboveStopPrice?: number;\n\n    /**\n     * See [Trailing Stop FAQ](faqs/trailing-stop-faq.md)\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingAboveTrailingDelta?: number;\n\n    /**\n     * This can only be used if `pendingAboveTimeInForce` is `GTC` or if `pendingAboveType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingAboveIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingAboveTimeInForce?: OrderListOtocoPendingAboveTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the pending above order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingAboveStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the pending above order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingAboveStrategyType?: number;\n\n    /**\n     *\n     * @type {'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingBelowType?: OrderListOtocoPendingBelowTypeEnum;\n\n    /**\n     * Arbitrary unique ID among open orders for the pending below order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingBelowClientOrderId?: string;\n\n    /**\n     * Can be used if `pendingBelowType` is `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT` to specify limit price\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingBelowPrice?: number;\n\n    /**\n     * Can be used if `pendingBelowType` is `STOP_LOSS`, `STOP_LOSS_LIMIT, TAKE_PROFIT or TAKE_PROFIT_LIMIT`. <br>Either `pendingBelowStopPrice` or `pendingBelowTrailingDelta` or both, must be specified.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingBelowStopPrice?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingBelowTrailingDelta?: number;\n\n    /**\n     * This can only be used if `pendingBelowTimeInForce` is `GTC`, or if `pendingBelowType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingBelowIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingBelowTimeInForce?: OrderListOtocoPendingBelowTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the pending below order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingBelowStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the pending below order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly pendingBelowStrategyType?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderListOtoco\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderOco operation in TradeApi.\n * @interface OrderOcoRequest\n */\nexport interface OrderOcoRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderOco\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderOco\n     */\n    readonly side: OrderOcoSideEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly quantity: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly price: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly stopPrice: number;\n\n    /**\n     * A unique Id for the entire orderList\n     * @type {string}\n     * @memberof TradeApiOrderOco\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     * A unique Id for the limit order\n     * @type {string}\n     * @memberof TradeApiOrderOco\n     */\n    readonly limitClientOrderId?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly limitStrategyId?: number;\n\n    /**\n     * The value cannot be less than `1000000`.\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly limitStrategyType?: number;\n\n    /**\n     * Used to make the `LIMIT_MAKER` leg an iceberg order.\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly limitIcebergQty?: number;\n\n    /**\n     * See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly trailingDelta?: number;\n\n    /**\n     * A unique Id for the stop loss/stop loss limit leg\n     * @type {string}\n     * @memberof TradeApiOrderOco\n     */\n    readonly stopClientOrderId?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly stopStrategyId?: number;\n\n    /**\n     * The value cannot be less than `1000000`.\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly stopStrategyType?: number;\n\n    /**\n     * If provided, `stopLimitTimeInForce` is required.\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly stopLimitPrice?: number;\n\n    /**\n     * Used with `STOP_LOSS_LIMIT` leg to make an iceberg order.\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly stopIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'FOK' | 'IOC'}\n     * @memberof TradeApiOrderOco\n     */\n    readonly stopLimitTimeInForce?: OrderOcoStopLimitTimeInForceEnum;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderOco\n     */\n    readonly newOrderRespType?: OrderOcoNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderOco\n     */\n    readonly selfTradePreventionMode?: OrderOcoSelfTradePreventionModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderOco\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderTest operation in TradeApi.\n * @interface OrderTestRequest\n */\nexport interface OrderTestRequest {\n    /**\n     * Default: `false`\n     * @type {boolean}\n     * @memberof TradeApiOrderTest\n     */\n    readonly computeCommissionRates?: boolean;\n}\n\n/**\n * Request parameters for sorOrder operation in TradeApi.\n * @interface SorOrderRequest\n */\nexport interface SorOrderRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiSorOrder\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiSorOrder\n     */\n    readonly side: SorOrderSideEnum;\n\n    /**\n     *\n     * @type {'MARKET' | 'LIMIT' | 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiSorOrder\n     */\n    readonly type: SorOrderTypeEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiSorOrder\n     */\n    readonly quantity: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiSorOrder\n     */\n    readonly timeInForce?: SorOrderTimeInForceEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiSorOrder\n     */\n    readonly price?: number;\n\n    /**\n     * A unique id among open orders. Automatically generated if not sent.<br/> Orders with the same `newClientOrderID` can be accepted only when the previous one is filled, otherwise the order will be rejected.\n     * @type {string}\n     * @memberof TradeApiSorOrder\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiSorOrder\n     */\n    readonly strategyId?: number;\n\n    /**\n     * The value cannot be less than `1000000`.\n     * @type {number}\n     * @memberof TradeApiSorOrder\n     */\n    readonly strategyType?: number;\n\n    /**\n     * Used with `LIMIT`, `STOP_LOSS_LIMIT`, and `TAKE_PROFIT_LIMIT` to create an iceberg order.\n     * @type {number}\n     * @memberof TradeApiSorOrder\n     */\n    readonly icebergQty?: number;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiSorOrder\n     */\n    readonly newOrderRespType?: SorOrderNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiSorOrder\n     */\n    readonly selfTradePreventionMode?: SorOrderSelfTradePreventionModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiSorOrder\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for sorOrderTest operation in TradeApi.\n * @interface SorOrderTestRequest\n */\nexport interface SorOrderTestRequest {\n    /**\n     * Default: `false`\n     * @type {boolean}\n     * @memberof TradeApiSorOrderTest\n     */\n    readonly computeCommissionRates?: boolean;\n}\n\n/**\n * TradeApi - object-oriented interface\n * @class TradeApi\n */\nexport class TradeApi implements TradeApiInterface {\n    private readonly configuration: ConfigurationRestAPI;\n    private localVarAxiosParamCreator;\n\n    constructor(configuration: ConfigurationRestAPI) {\n        this.configuration = configuration;\n        this.localVarAxiosParamCreator = TradeApiAxiosParamCreator(configuration);\n    }\n\n    /**\n     * Cancels all active orders on a symbol.\n     * This includes orders that are part of an order list.\n     * Weight: 1\n     *\n     * @summary Cancel All Open Orders on a Symbol\n     * @param {DeleteOpenOrdersRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<DeleteOpenOrdersResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-all-open-orders-on-a-symbol-trade Binance API Documentation}\n     */\n    public async deleteOpenOrders(\n        requestParameters: DeleteOpenOrdersRequest\n    ): Promise<RestApiResponse<DeleteOpenOrdersResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.deleteOpenOrders(\n            requestParameters?.symbol,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<DeleteOpenOrdersResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Cancel an active order.\n     * Weight: 1\n     *\n     * @summary Cancel order\n     * @param {DeleteOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<DeleteOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-order-trade Binance API Documentation}\n     */\n    public async deleteOrder(\n        requestParameters: DeleteOrderRequest\n    ): Promise<RestApiResponse<DeleteOrderResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.deleteOrder(\n            requestParameters?.symbol,\n            requestParameters?.orderId,\n            requestParameters?.origClientOrderId,\n            requestParameters?.newClientOrderId,\n            requestParameters?.cancelRestrictions,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<DeleteOrderResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Cancel an entire Order list\n     * Weight: 1\n     *\n     * @summary Cancel Order list\n     * @param {DeleteOrderListRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<DeleteOrderListResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-order-list-trade Binance API Documentation}\n     */\n    public async deleteOrderList(\n        requestParameters: DeleteOrderListRequest\n    ): Promise<RestApiResponse<DeleteOrderListResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.deleteOrderList(\n            requestParameters?.symbol,\n            requestParameters?.orderListId,\n            requestParameters?.listClientOrderId,\n            requestParameters?.newClientOrderId,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<DeleteOrderListResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Send in a new order.\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * @summary New order\n     * @param {NewOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<NewOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-trade Binance API Documentation}\n     */\n    public async newOrder(\n        requestParameters: NewOrderRequest\n    ): Promise<RestApiResponse<NewOrderResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.newOrder(\n            requestParameters?.symbol,\n            requestParameters?.side,\n            requestParameters?.type,\n            requestParameters?.timeInForce,\n            requestParameters?.quantity,\n            requestParameters?.quoteOrderQty,\n            requestParameters?.price,\n            requestParameters?.newClientOrderId,\n            requestParameters?.strategyId,\n            requestParameters?.strategyType,\n            requestParameters?.stopPrice,\n            requestParameters?.trailingDelta,\n            requestParameters?.icebergQty,\n            requestParameters?.newOrderRespType,\n            requestParameters?.selfTradePreventionMode,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<NewOrderResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Reduce the quantity of an existing open order.\n     *\n     * This adds 0 orders to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [Order Amend Keep Priority FAQ](faqs/order_amend_keep_priority.md) to learn more.\n     * Weight: 4\n     *\n     * @summary Order Amend Keep Priority\n     * @param {OrderAmendKeepPriorityRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderAmendKeepPriorityResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#order-amend-keep-priority-trade Binance API Documentation}\n     */\n    public async orderAmendKeepPriority(\n        requestParameters: OrderAmendKeepPriorityRequest\n    ): Promise<RestApiResponse<OrderAmendKeepPriorityResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.orderAmendKeepPriority(\n            requestParameters?.symbol,\n            requestParameters?.newQty,\n            requestParameters?.orderId,\n            requestParameters?.origClientOrderId,\n            requestParameters?.newClientOrderId,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<OrderAmendKeepPriorityResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Cancels an existing order and places a new order on the same symbol.\n     *\n     * Filters and Order Count are evaluated before the processing of the cancellation and order placement occurs.\n     *\n     * A new order that was not attempted (i.e. when `newOrderResult: NOT_ATTEMPTED`), will still increase the unfilled order count by 1.\n     * Weight: 1\n     *\n     * @summary Cancel an Existing Order and Send a New Order\n     * @param {OrderCancelReplaceRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderCancelReplaceResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-an-existing-order-and-send-a-new-order-trade Binance API Documentation}\n     */\n    public async orderCancelReplace(\n        requestParameters: OrderCancelReplaceRequest\n    ): Promise<RestApiResponse<OrderCancelReplaceResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.orderCancelReplace(\n            requestParameters?.symbol,\n            requestParameters?.side,\n            requestParameters?.type,\n            requestParameters?.cancelReplaceMode,\n            requestParameters?.timeInForce,\n            requestParameters?.quantity,\n            requestParameters?.quoteOrderQty,\n            requestParameters?.price,\n            requestParameters?.cancelNewClientOrderId,\n            requestParameters?.cancelOrigClientOrderId,\n            requestParameters?.cancelOrderId,\n            requestParameters?.newClientOrderId,\n            requestParameters?.strategyId,\n            requestParameters?.strategyType,\n            requestParameters?.stopPrice,\n            requestParameters?.trailingDelta,\n            requestParameters?.icebergQty,\n            requestParameters?.newOrderRespType,\n            requestParameters?.selfTradePreventionMode,\n            requestParameters?.cancelRestrictions,\n            requestParameters?.orderRateLimitExceededMode,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<OrderCancelReplaceResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Send in an one-cancels-the-other (OCO) pair, where activation of one order immediately cancels the other.\n     *\n     * An OCO has 2 orders called the **above order** and **below order**.\n     * One of the orders must be a `LIMIT_MAKER/TAKE_PROFIT/TAKE_PROFIT_LIMIT` order and the other must be `STOP_LOSS` or `STOP_LOSS_LIMIT` order.\n     * Price restrictions\n     * If the OCO is on the `SELL` side:\n     * `LIMIT_MAKER/TAKE_PROFIT_LIMIT` `price` > Last Traded Price >  `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n     * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * If the OCO is on the `BUY` side:\n     * `LIMIT_MAKER/TAKE_PROFIT_LIMIT price` < Last Traded Price < `stopPrice`\n     * `TAKE_PROFIT stopPrice` < Last Traded Price < `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * OCOs add **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary New Order list - OCO\n     * @param {OrderListOcoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderListOcoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-list---oco-trade Binance API Documentation}\n     */\n    public async orderListOco(\n        requestParameters: OrderListOcoRequest\n    ): Promise<RestApiResponse<OrderListOcoResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.orderListOco(\n            requestParameters?.symbol,\n            requestParameters?.side,\n            requestParameters?.quantity,\n            requestParameters?.aboveType,\n            requestParameters?.belowType,\n            requestParameters?.listClientOrderId,\n            requestParameters?.aboveClientOrderId,\n            requestParameters?.aboveIcebergQty,\n            requestParameters?.abovePrice,\n            requestParameters?.aboveStopPrice,\n            requestParameters?.aboveTrailingDelta,\n            requestParameters?.aboveTimeInForce,\n            requestParameters?.aboveStrategyId,\n            requestParameters?.aboveStrategyType,\n            requestParameters?.belowClientOrderId,\n            requestParameters?.belowIcebergQty,\n            requestParameters?.belowPrice,\n            requestParameters?.belowStopPrice,\n            requestParameters?.belowTrailingDelta,\n            requestParameters?.belowTimeInForce,\n            requestParameters?.belowStrategyId,\n            requestParameters?.belowStrategyType,\n            requestParameters?.newOrderRespType,\n            requestParameters?.selfTradePreventionMode,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<OrderListOcoResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Place an OTO.\n     *\n     * An OTO (One-Triggers-the-Other) is an order list comprised of 2 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The second order is called the **pending order**. It can be any order type except for `MARKET` orders using parameter `quoteOrderQty`. The pending order is only placed on the order book when the working order gets **fully filled**.\n     * If either the working order or the pending order is cancelled individually, the other order in the order list will also be canceled or expired.\n     * When the order list is placed, if the working order gets **immediately fully filled**, the placement response will show the working order as `FILLED` but the pending order will still appear as `PENDING_NEW`. You need to query the status of the pending order again to see its updated status.\n     * OTOs add **2 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary New Order list - OTO\n     * @param {OrderListOtoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderListOtoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-list---oto-trade Binance API Documentation}\n     */\n    public async orderListOto(\n        requestParameters: OrderListOtoRequest\n    ): Promise<RestApiResponse<OrderListOtoResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.orderListOto(\n            requestParameters?.symbol,\n            requestParameters?.workingType,\n            requestParameters?.workingSide,\n            requestParameters?.workingPrice,\n            requestParameters?.workingQuantity,\n            requestParameters?.pendingType,\n            requestParameters?.pendingSide,\n            requestParameters?.pendingQuantity,\n            requestParameters?.listClientOrderId,\n            requestParameters?.newOrderRespType,\n            requestParameters?.selfTradePreventionMode,\n            requestParameters?.workingClientOrderId,\n            requestParameters?.workingIcebergQty,\n            requestParameters?.workingTimeInForce,\n            requestParameters?.workingStrategyId,\n            requestParameters?.workingStrategyType,\n            requestParameters?.pendingClientOrderId,\n            requestParameters?.pendingPrice,\n            requestParameters?.pendingStopPrice,\n            requestParameters?.pendingTrailingDelta,\n            requestParameters?.pendingIcebergQty,\n            requestParameters?.pendingTimeInForce,\n            requestParameters?.pendingStrategyId,\n            requestParameters?.pendingStrategyType,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<OrderListOtoResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Place an OTOCO.\n     *\n     * An OTOCO (One-Triggers-One-Cancels-the-Other) is an order list comprised of 3 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The behavior of the working order is the same as the [OTO](#new-order-list---oto-trade).\n     * OTOCO has 2 pending orders (pending above and pending below), forming an OCO pair. The pending orders are only placed on the order book when the working order gets **fully filled**.\n     * The rules of the pending above and pending below follow the same rules as the [Order list OCO](#new-order-list---oco-trade).\n     * OTOCOs add **3 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 3\n     *\n     * @summary New Order list - OTOCO\n     * @param {OrderListOtocoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderListOtocoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-list---otoco-trade Binance API Documentation}\n     */\n    public async orderListOtoco(\n        requestParameters: OrderListOtocoRequest\n    ): Promise<RestApiResponse<OrderListOtocoResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.orderListOtoco(\n            requestParameters?.symbol,\n            requestParameters?.workingType,\n            requestParameters?.workingSide,\n            requestParameters?.workingPrice,\n            requestParameters?.workingQuantity,\n            requestParameters?.pendingSide,\n            requestParameters?.pendingQuantity,\n            requestParameters?.pendingAboveType,\n            requestParameters?.listClientOrderId,\n            requestParameters?.newOrderRespType,\n            requestParameters?.selfTradePreventionMode,\n            requestParameters?.workingClientOrderId,\n            requestParameters?.workingIcebergQty,\n            requestParameters?.workingTimeInForce,\n            requestParameters?.workingStrategyId,\n            requestParameters?.workingStrategyType,\n            requestParameters?.pendingAboveClientOrderId,\n            requestParameters?.pendingAbovePrice,\n            requestParameters?.pendingAboveStopPrice,\n            requestParameters?.pendingAboveTrailingDelta,\n            requestParameters?.pendingAboveIcebergQty,\n            requestParameters?.pendingAboveTimeInForce,\n            requestParameters?.pendingAboveStrategyId,\n            requestParameters?.pendingAboveStrategyType,\n            requestParameters?.pendingBelowType,\n            requestParameters?.pendingBelowClientOrderId,\n            requestParameters?.pendingBelowPrice,\n            requestParameters?.pendingBelowStopPrice,\n            requestParameters?.pendingBelowTrailingDelta,\n            requestParameters?.pendingBelowIcebergQty,\n            requestParameters?.pendingBelowTimeInForce,\n            requestParameters?.pendingBelowStrategyId,\n            requestParameters?.pendingBelowStrategyType,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<OrderListOtocoResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Send in a new OCO.\n     *\n     * Price Restrictions:\n     * `SELL`: Limit Price > Last Price > Stop Price\n     * `BUY`: Limit Price < Last Price < Stop Price\n     * Quantity Restrictions:\n     * Both legs must have the same quantity.\n     * `ICEBERG` quantities however do not have to be the same\n     * `OCO` adds **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary New OCO - Deprecated\n     * @param {OrderOcoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderOcoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-oco---deprecated-trade Binance API Documentation}\n     */\n    public async orderOco(\n        requestParameters: OrderOcoRequest\n    ): Promise<RestApiResponse<OrderOcoResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.orderOco(\n            requestParameters?.symbol,\n            requestParameters?.side,\n            requestParameters?.quantity,\n            requestParameters?.price,\n            requestParameters?.stopPrice,\n            requestParameters?.listClientOrderId,\n            requestParameters?.limitClientOrderId,\n            requestParameters?.limitStrategyId,\n            requestParameters?.limitStrategyType,\n            requestParameters?.limitIcebergQty,\n            requestParameters?.trailingDelta,\n            requestParameters?.stopClientOrderId,\n            requestParameters?.stopStrategyId,\n            requestParameters?.stopStrategyType,\n            requestParameters?.stopLimitPrice,\n            requestParameters?.stopIcebergQty,\n            requestParameters?.stopLimitTimeInForce,\n            requestParameters?.newOrderRespType,\n            requestParameters?.selfTradePreventionMode,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<OrderOcoResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Test new order creation and signature/recvWindow long.\n     * Creates and validates a new order but does not send it into the matching engine.\n     * Weight: |Condition| Request Weight|\n     * |------------           | ------------ |\n     * |Without `computeCommissionRates`| 1|\n     * |With `computeCommissionRates`|20|\n     *\n     * @summary Test new order\n     * @param {OrderTestRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderTestResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#test-new-order-trade Binance API Documentation}\n     */\n    public async orderTest(\n        requestParameters: OrderTestRequest = {}\n    ): Promise<RestApiResponse<OrderTestResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.orderTest(\n            requestParameters?.computeCommissionRates\n        );\n        return sendRequest<OrderTestResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Places an order using smart order routing (SOR).\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [SOR FAQ](faqs/sor_faq.md) to learn more.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 1\n     *\n     * @summary New order using SOR\n     * @param {SorOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<SorOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-using-sor-trade Binance API Documentation}\n     */\n    public async sorOrder(\n        requestParameters: SorOrderRequest\n    ): Promise<RestApiResponse<SorOrderResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.sorOrder(\n            requestParameters?.symbol,\n            requestParameters?.side,\n            requestParameters?.type,\n            requestParameters?.quantity,\n            requestParameters?.timeInForce,\n            requestParameters?.price,\n            requestParameters?.newClientOrderId,\n            requestParameters?.strategyId,\n            requestParameters?.strategyType,\n            requestParameters?.icebergQty,\n            requestParameters?.newOrderRespType,\n            requestParameters?.selfTradePreventionMode,\n            requestParameters?.recvWindow\n        );\n        return sendRequest<SorOrderResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n\n    /**\n     * Test new order creation and signature/recvWindow using smart order routing (SOR).\n     * Creates and validates a new order but does not send it into the matching engine.\n     * Weight: | Condition | Request Weight |\n     * | --------- | -------------- |\n     * | Without `computeCommissionRates`  |  1 |\n     * | With `computeCommissionRates`     | 20 |\n     *\n     * @summary Test new order using SOR\n     * @param {SorOrderTestRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<SorOrderTestResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#test-new-order-using-sor-trade Binance API Documentation}\n     */\n    public async sorOrderTest(\n        requestParameters: SorOrderTestRequest = {}\n    ): Promise<RestApiResponse<SorOrderTestResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.sorOrderTest(\n            requestParameters?.computeCommissionRates\n        );\n        return sendRequest<SorOrderTestResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: true }\n        );\n    }\n}\n\nexport enum DeleteOrderCancelRestrictionsEnum {\n    ONLY_NEW = 'ONLY_NEW',\n    NEW = 'NEW',\n    ONLY_PARTIALLY_FILLED = 'ONLY_PARTIALLY_FILLED',\n    PARTIALLY_FILLED = 'PARTIALLY_FILLED',\n}\n\nexport enum NewOrderSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum NewOrderTypeEnum {\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum NewOrderTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum NewOrderNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum NewOrderSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderCancelReplaceSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderCancelReplaceTypeEnum {\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderCancelReplaceCancelReplaceModeEnum {\n    STOP_ON_FAILURE = 'STOP_ON_FAILURE',\n    ALLOW_FAILURE = 'ALLOW_FAILURE',\n}\n\nexport enum OrderCancelReplaceTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderCancelReplaceNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderCancelReplaceSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderCancelReplaceCancelRestrictionsEnum {\n    ONLY_NEW = 'ONLY_NEW',\n    NEW = 'NEW',\n    ONLY_PARTIALLY_FILLED = 'ONLY_PARTIALLY_FILLED',\n    PARTIALLY_FILLED = 'PARTIALLY_FILLED',\n}\n\nexport enum OrderCancelReplaceOrderRateLimitExceededModeEnum {\n    DO_NOTHING = 'DO_NOTHING',\n    CANCEL_ONLY = 'CANCEL_ONLY',\n}\n\nexport enum OrderListOcoSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListOcoAboveTypeEnum {\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListOcoBelowTypeEnum {\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListOcoBelowTimeInForceEnum {\n    belowType = 'belowType',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListOcoNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderListOcoSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderListOtoWorkingTypeEnum {\n    LIMIT = 'LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n}\n\nexport enum OrderListOtoWorkingSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListOtoPendingTypeEnum {\n    LIMIT = 'LIMIT',\n    MARKET = 'MARKET',\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n}\n\nexport enum OrderListOtoPendingSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListOtoNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderListOtoSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderListOtoWorkingTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderListOtoPendingTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderListOtocoWorkingTypeEnum {\n    LIMIT = 'LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n}\n\nexport enum OrderListOtocoWorkingSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListOtocoPendingSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListOtocoPendingAboveTypeEnum {\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListOtocoNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderListOtocoSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderListOtocoWorkingTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderListOtocoPendingAboveTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderListOtocoPendingBelowTypeEnum {\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListOtocoPendingBelowTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderOcoSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderOcoStopLimitTimeInForceEnum {\n    GTC = 'GTC',\n    FOK = 'FOK',\n    IOC = 'IOC',\n}\n\nexport enum OrderOcoNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderOcoSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum SorOrderSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum SorOrderTypeEnum {\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum SorOrderTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum SorOrderNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum SorOrderSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n","/**\n * Binance Spot REST API\n *\n * OpenAPI Specifications for the Binance Spot REST API\n *\n * API documents:\n * - [Github rest-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md)\n * - [General API information for rest-api on website](https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {\n    ConfigurationRestAPI,\n    TimeUnit,\n    RestApiResponse,\n    assertParamExists,\n    sendRequest,\n    type RequestArgs,\n} from '@binance/common';\nimport type { NewUserDataStreamResponse } from '../types';\n\n/**\n * UserDataStreamApi - axios parameter creator\n */\nconst UserDataStreamApiAxiosParamCreator = function (configuration: ConfigurationRestAPI) {\n    return {\n        /**\n         * Close out a user data stream.\n         * Weight: 2\n         *\n         * @summary Close user data stream\n         * @param {string} listenKey\n         *\n         * @throws {RequiredError}\n         */\n        deleteUserDataStream: async (listenKey: string): Promise<RequestArgs> => {\n            // verify required parameter 'listenKey' is not null or undefined\n            assertParamExists('deleteUserDataStream', 'listenKey', listenKey);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (listenKey !== undefined && listenKey !== null) {\n                localVarQueryParameter['listenKey'] = listenKey;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/userDataStream',\n                method: 'DELETE',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Start a new user data stream. The stream will close after 60 minutes unless a keepalive is sent.\n         * Weight: 2\n         *\n         * @summary Start user data stream\n         *\n         * @throws {RequiredError}\n         */\n        newUserDataStream: async (): Promise<RequestArgs> => {\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/userDataStream',\n                method: 'POST',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n        /**\n         * Keepalive a user data stream to prevent a time out. User data streams will close after 60 minutes. It's recommended to send a ping about every 30 minutes.\n         * Weight: 2\n         *\n         * @summary Keepalive user data stream\n         * @param {string} listenKey\n         *\n         * @throws {RequiredError}\n         */\n        putUserDataStream: async (listenKey: string): Promise<RequestArgs> => {\n            // verify required parameter 'listenKey' is not null or undefined\n            assertParamExists('putUserDataStream', 'listenKey', listenKey);\n\n            const localVarQueryParameter: Record<string, unknown> = {};\n\n            if (listenKey !== undefined && listenKey !== null) {\n                localVarQueryParameter['listenKey'] = listenKey;\n            }\n\n            let _timeUnit: TimeUnit | undefined;\n            if ('timeUnit' in configuration) _timeUnit = configuration.timeUnit as TimeUnit;\n\n            return {\n                endpoint: '/api/v3/userDataStream',\n                method: 'PUT',\n                params: localVarQueryParameter,\n                timeUnit: _timeUnit,\n            };\n        },\n    };\n};\n\n/**\n * UserDataStreamApi - interface\n * @interface UserDataStreamApi\n */\nexport interface UserDataStreamApiInterface {\n    /**\n     * Close out a user data stream.\n     * Weight: 2\n     *\n     * @summary Close user data stream\n     * @param {DeleteUserDataStreamRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof UserDataStreamApiInterface\n     */\n    deleteUserDataStream(\n        requestParameters: DeleteUserDataStreamRequest\n    ): Promise<RestApiResponse<void>>;\n    /**\n     * Start a new user data stream. The stream will close after 60 minutes unless a keepalive is sent.\n     * Weight: 2\n     *\n     * @summary Start user data stream\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof UserDataStreamApiInterface\n     */\n    newUserDataStream(): Promise<RestApiResponse<NewUserDataStreamResponse>>;\n    /**\n     * Keepalive a user data stream to prevent a time out. User data streams will close after 60 minutes. It's recommended to send a ping about every 30 minutes.\n     * Weight: 2\n     *\n     * @summary Keepalive user data stream\n     * @param {PutUserDataStreamRequest} requestParameters Request parameters.\n     *\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof UserDataStreamApiInterface\n     */\n    putUserDataStream(requestParameters: PutUserDataStreamRequest): Promise<RestApiResponse<void>>;\n}\n\n/**\n * Request parameters for deleteUserDataStream operation in UserDataStreamApi.\n * @interface DeleteUserDataStreamRequest\n */\nexport interface DeleteUserDataStreamRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof UserDataStreamApiDeleteUserDataStream\n     */\n    readonly listenKey: string;\n}\n\n/**\n * Request parameters for putUserDataStream operation in UserDataStreamApi.\n * @interface PutUserDataStreamRequest\n */\nexport interface PutUserDataStreamRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof UserDataStreamApiPutUserDataStream\n     */\n    readonly listenKey: string;\n}\n\n/**\n * UserDataStreamApi - object-oriented interface\n * @class UserDataStreamApi\n */\nexport class UserDataStreamApi implements UserDataStreamApiInterface {\n    private readonly configuration: ConfigurationRestAPI;\n    private localVarAxiosParamCreator;\n\n    constructor(configuration: ConfigurationRestAPI) {\n        this.configuration = configuration;\n        this.localVarAxiosParamCreator = UserDataStreamApiAxiosParamCreator(configuration);\n    }\n\n    /**\n     * Close out a user data stream.\n     * Weight: 2\n     *\n     * @summary Close user data stream\n     * @param {DeleteUserDataStreamRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<void>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof UserDataStreamApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/user-data-stream-endpoints---deprecated#close-user-data-stream-user_stream Binance API Documentation}\n     */\n    public async deleteUserDataStream(\n        requestParameters: DeleteUserDataStreamRequest\n    ): Promise<RestApiResponse<void>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.deleteUserDataStream(\n            requestParameters?.listenKey\n        );\n        return sendRequest<void>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Start a new user data stream. The stream will close after 60 minutes unless a keepalive is sent.\n     * Weight: 2\n     *\n     * @summary Start user data stream\n     * @returns {Promise<RestApiResponse<NewUserDataStreamResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof UserDataStreamApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/user-data-stream-endpoints---deprecated#start-user-data-stream-user_stream Binance API Documentation}\n     */\n    public async newUserDataStream(): Promise<RestApiResponse<NewUserDataStreamResponse>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.newUserDataStream();\n        return sendRequest<NewUserDataStreamResponse>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n\n    /**\n     * Keepalive a user data stream to prevent a time out. User data streams will close after 60 minutes. It's recommended to send a ping about every 30 minutes.\n     * Weight: 2\n     *\n     * @summary Keepalive user data stream\n     * @param {PutUserDataStreamRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<void>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @memberof UserDataStreamApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/user-data-stream-endpoints---deprecated#keepalive-user-data-stream-user_stream Binance API Documentation}\n     */\n    public async putUserDataStream(\n        requestParameters: PutUserDataStreamRequest\n    ): Promise<RestApiResponse<void>> {\n        const localVarAxiosArgs = await this.localVarAxiosParamCreator.putUserDataStream(\n            requestParameters?.listenKey\n        );\n        return sendRequest<void>(\n            this.configuration,\n            localVarAxiosArgs.endpoint,\n            localVarAxiosArgs.method,\n            localVarAxiosArgs.params,\n            localVarAxiosArgs?.timeUnit,\n            { isSigned: false }\n        );\n    }\n}\n","/**\n * Binance Spot REST API\n *\n * OpenAPI Specifications for the Binance Spot REST API\n *\n * API documents:\n * - [Github rest-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md)\n * - [General API information for rest-api on website](https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { ConfigurationRestAPI, RestApiResponse, sendRequest, TimeUnit } from '@binance/common';\nimport { AccountApi } from './modules/account-api';\nimport { GeneralApi } from './modules/general-api';\nimport { MarketApi } from './modules/market-api';\nimport { TradeApi } from './modules/trade-api';\nimport { UserDataStreamApi } from './modules/user-data-stream-api';\n\nimport type {\n    AccountCommissionRequest,\n    AllOrderListRequest,\n    AllOrdersRequest,\n    GetAccountRequest,\n    GetOpenOrdersRequest,\n    GetOrderRequest,\n    GetOrderListRequest,\n    MyAllocationsRequest,\n    MyPreventedMatchesRequest,\n    MyTradesRequest,\n    OpenOrderListRequest,\n    OrderAmendmentsRequest,\n    RateLimitOrderRequest,\n} from './modules/account-api';\nimport type { ExchangeInfoRequest } from './modules/general-api';\nimport type {\n    AggTradesRequest,\n    AvgPriceRequest,\n    DepthRequest,\n    GetTradesRequest,\n    HistoricalTradesRequest,\n    KlinesRequest,\n    TickerRequest,\n    Ticker24hrRequest,\n    TickerBookTickerRequest,\n    TickerPriceRequest,\n    TickerTradingDayRequest,\n    UiKlinesRequest,\n} from './modules/market-api';\nimport type {\n    DeleteOpenOrdersRequest,\n    DeleteOrderRequest,\n    DeleteOrderListRequest,\n    NewOrderRequest,\n    OrderAmendKeepPriorityRequest,\n    OrderCancelReplaceRequest,\n    OrderListOcoRequest,\n    OrderListOtoRequest,\n    OrderListOtocoRequest,\n    OrderOcoRequest,\n    OrderTestRequest,\n    SorOrderRequest,\n    SorOrderTestRequest,\n} from './modules/trade-api';\nimport type {\n    DeleteUserDataStreamRequest,\n    PutUserDataStreamRequest,\n} from './modules/user-data-stream-api';\n\nimport type {\n    AccountCommissionResponse,\n    AllOrderListResponse,\n    AllOrdersResponse,\n    GetAccountResponse,\n    GetOpenOrdersResponse,\n    GetOrderResponse,\n    GetOrderListResponse,\n    MyAllocationsResponse,\n    MyPreventedMatchesResponse,\n    MyTradesResponse,\n    OpenOrderListResponse,\n    OrderAmendmentsResponse,\n    RateLimitOrderResponse,\n} from './types';\nimport type { ExchangeInfoResponse, TimeResponse } from './types';\nimport type {\n    AggTradesResponse,\n    AvgPriceResponse,\n    DepthResponse,\n    GetTradesResponse,\n    HistoricalTradesResponse,\n    KlinesResponse,\n    TickerResponse,\n    Ticker24hrResponse,\n    TickerBookTickerResponse,\n    TickerPriceResponse,\n    TickerTradingDayResponse,\n    UiKlinesResponse,\n} from './types';\nimport type {\n    DeleteOpenOrdersResponse,\n    DeleteOrderResponse,\n    DeleteOrderListResponse,\n    NewOrderResponse,\n    OrderAmendKeepPriorityResponse,\n    OrderCancelReplaceResponse,\n    OrderListOcoResponse,\n    OrderListOtoResponse,\n    OrderListOtocoResponse,\n    OrderOcoResponse,\n    OrderTestResponse,\n    SorOrderResponse,\n    SorOrderTestResponse,\n} from './types';\nimport type { NewUserDataStreamResponse } from './types';\n\nexport class RestAPI {\n    private configuration: ConfigurationRestAPI;\n    private accountApi: AccountApi;\n    private generalApi: GeneralApi;\n    private marketApi: MarketApi;\n    private tradeApi: TradeApi;\n    private userDataStreamApi: UserDataStreamApi;\n\n    constructor(configuration: ConfigurationRestAPI) {\n        this.configuration = configuration;\n        this.accountApi = new AccountApi(configuration);\n        this.generalApi = new GeneralApi(configuration);\n        this.marketApi = new MarketApi(configuration);\n        this.tradeApi = new TradeApi(configuration);\n        this.userDataStreamApi = new UserDataStreamApi(configuration);\n    }\n\n    /**\n     * Generic function to send a request.\n     * @param endpoint - The API endpoint to call.\n     * @param method - HTTP method to use (GET, POST, DELETE, etc.).\n     * @param params - Query parameters for the request.\n     * @param timeUnit - The time unit for the request.\n     * @returns A promise resolving to the response data object.\n     */\n    sendRequest<T>(\n        endpoint: string,\n        method: 'GET' | 'POST' | 'DELETE' | 'PUT' | 'PATCH',\n        params: Record<string, unknown> = {},\n        timeUnit: TimeUnit = this.configuration?.timeUnit as TimeUnit\n    ): Promise<RestApiResponse<T>> {\n        return sendRequest<T>(this.configuration, endpoint, method, params, timeUnit);\n    }\n\n    /**\n     * Generic function to send a signed request.\n     * @param endpoint - The API endpoint to call.\n     * @param method - HTTP method to use (GET, POST, DELETE, etc.).\n     * @param params - Query parameters for the request.\n     * @param timeUnit - The time unit for the request.\n     * @returns A promise resolving to the response data object.\n     */\n    sendSignedRequest<T>(\n        endpoint: string,\n        method: 'GET' | 'POST' | 'DELETE' | 'PUT' | 'PATCH',\n        params: Record<string, unknown> = {},\n        timeUnit: TimeUnit = this.configuration?.timeUnit as TimeUnit\n    ): Promise<RestApiResponse<T>> {\n        return sendRequest<T>(this.configuration, endpoint, method, params, timeUnit, {\n            isSigned: true,\n        });\n    }\n\n    /**\n     * Get current account commission rates.\n     * Weight: 20\n     *\n     * @summary Query Commission Rates\n     * @param {AccountCommissionRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AccountCommissionResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-commission-rates-user_data Binance API Documentation}\n     */\n    accountCommission(\n        requestParameters: AccountCommissionRequest\n    ): Promise<RestApiResponse<AccountCommissionResponse>> {\n        return this.accountApi.accountCommission(requestParameters);\n    }\n\n    /**\n     * Retrieves all order lists based on provided optional parameters.\n     *\n     * Note that the time between `startTime` and `endTime` can't be longer than 24 hours.\n     * Weight: 20\n     *\n     * @summary Query all Order lists\n     * @param {AllOrderListRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AllOrderListResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-all-order-lists-user_data Binance API Documentation}\n     */\n    allOrderList(\n        requestParameters: AllOrderListRequest = {}\n    ): Promise<RestApiResponse<AllOrderListResponse>> {\n        return this.accountApi.allOrderList(requestParameters);\n    }\n\n    /**\n     * Get all account orders; active, canceled, or filled.\n     * Weight: 20\n     *\n     * @summary All orders\n     * @param {AllOrdersRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AllOrdersResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#all-orders-user_data Binance API Documentation}\n     */\n    allOrders(requestParameters: AllOrdersRequest): Promise<RestApiResponse<AllOrdersResponse>> {\n        return this.accountApi.allOrders(requestParameters);\n    }\n\n    /**\n     * Get current account information.\n     * Weight: 20\n     *\n     * @summary Account information\n     * @param {GetAccountRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetAccountResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#account-information-user_data Binance API Documentation}\n     */\n    getAccount(\n        requestParameters: GetAccountRequest = {}\n    ): Promise<RestApiResponse<GetAccountResponse>> {\n        return this.accountApi.getAccount(requestParameters);\n    }\n\n    /**\n     * Get all open orders on a symbol. **Careful** when accessing this with no symbol.\n     * Weight: 6 for a single symbol; **80** when the symbol parameter is omitted\n     *\n     * @summary Current open orders\n     * @param {GetOpenOrdersRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetOpenOrdersResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#current-open-orders-user_data Binance API Documentation}\n     */\n    getOpenOrders(\n        requestParameters: GetOpenOrdersRequest = {}\n    ): Promise<RestApiResponse<GetOpenOrdersResponse>> {\n        return this.accountApi.getOpenOrders(requestParameters);\n    }\n\n    /**\n     * Check an order's status.\n     * Weight: 4\n     *\n     * @summary Query order\n     * @param {GetOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-order-user_data Binance API Documentation}\n     */\n    getOrder(requestParameters: GetOrderRequest): Promise<RestApiResponse<GetOrderResponse>> {\n        return this.accountApi.getOrder(requestParameters);\n    }\n\n    /**\n     * Retrieves a specific order list based on provided optional parameters.\n     * Weight: 4\n     *\n     * @summary Query Order list\n     * @param {GetOrderListRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetOrderListResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-order-list-user_data Binance API Documentation}\n     */\n    getOrderList(\n        requestParameters: GetOrderListRequest = {}\n    ): Promise<RestApiResponse<GetOrderListResponse>> {\n        return this.accountApi.getOrderList(requestParameters);\n    }\n\n    /**\n     * Retrieves allocations resulting from SOR order placement.\n     * Weight: 20\n     *\n     * @summary Query Allocations\n     * @param {MyAllocationsRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<MyAllocationsResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-allocations-user_data Binance API Documentation}\n     */\n    myAllocations(\n        requestParameters: MyAllocationsRequest\n    ): Promise<RestApiResponse<MyAllocationsResponse>> {\n        return this.accountApi.myAllocations(requestParameters);\n    }\n\n    /**\n     * Displays the list of orders that were expired due to STP.\n     *\n     * These are the combinations supported:\n     *\n     * `symbol` + `preventedMatchId`\n     * `symbol` + `orderId`\n     * `symbol` + `orderId` + `fromPreventedMatchId` (`limit` will default to 500)\n     * `symbol` + `orderId` + `fromPreventedMatchId` + `limit`\n     * Weight: Case                            | Weight\n     * ----                            | -----\n     * If `symbol` is invalid          | 2\n     * Querying by `preventedMatchId`  | 2\n     * Querying by `orderId`           | 20\n     *\n     * @summary Query Prevented Matches\n     * @param {MyPreventedMatchesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<MyPreventedMatchesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-prevented-matches-user_data Binance API Documentation}\n     */\n    myPreventedMatches(\n        requestParameters: MyPreventedMatchesRequest\n    ): Promise<RestApiResponse<MyPreventedMatchesResponse>> {\n        return this.accountApi.myPreventedMatches(requestParameters);\n    }\n\n    /**\n     * Get trades for a specific account and symbol.\n     * Weight: Condition| Weight|\n     * ---| ---\n     * |Without orderId|20|\n     * |With orderId|5|\n     *\n     * @summary Account trade list\n     * @param {MyTradesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<MyTradesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#account-trade-list-user_data Binance API Documentation}\n     */\n    myTrades(requestParameters: MyTradesRequest): Promise<RestApiResponse<MyTradesResponse>> {\n        return this.accountApi.myTrades(requestParameters);\n    }\n\n    /**\n     *\n     * Weight: 6\n     *\n     * @summary Query Open Order lists\n     * @param {OpenOrderListRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OpenOrderListResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-open-order-lists-user_data Binance API Documentation}\n     */\n    openOrderList(\n        requestParameters: OpenOrderListRequest = {}\n    ): Promise<RestApiResponse<OpenOrderListResponse>> {\n        return this.accountApi.openOrderList(requestParameters);\n    }\n\n    /**\n     * Queries all amendments of a single order.\n     * Weight: 4\n     *\n     * @summary Query Order Amendments\n     * @param {OrderAmendmentsRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderAmendmentsResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-order-amendments-user_data Binance API Documentation}\n     */\n    orderAmendments(\n        requestParameters: OrderAmendmentsRequest\n    ): Promise<RestApiResponse<OrderAmendmentsResponse>> {\n        return this.accountApi.orderAmendments(requestParameters);\n    }\n\n    /**\n     * Displays the user's unfilled order count for all intervals.\n     * Weight: 40\n     *\n     * @summary Query Unfilled Order Count\n     * @param {RateLimitOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<RateLimitOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/account-endpoints#query-unfilled-order-count-user_data Binance API Documentation}\n     */\n    rateLimitOrder(\n        requestParameters: RateLimitOrderRequest = {}\n    ): Promise<RestApiResponse<RateLimitOrderResponse>> {\n        return this.accountApi.rateLimitOrder(requestParameters);\n    }\n\n    /**\n     * Current exchange trading rules and symbol information\n     * Weight: 20\n     *\n     * @summary Exchange information\n     * @param {ExchangeInfoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<ExchangeInfoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-endpoints#exchange-information Binance API Documentation}\n     */\n    exchangeInfo(\n        requestParameters: ExchangeInfoRequest = {}\n    ): Promise<RestApiResponse<ExchangeInfoResponse>> {\n        return this.generalApi.exchangeInfo(requestParameters);\n    }\n\n    /**\n     * Test connectivity to the Rest API.\n     * Weight: 1\n     *\n     * @summary Test connectivity\n     * @returns {Promise<RestApiResponse<void>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-endpoints#test-connectivity Binance API Documentation}\n     */\n    ping(): Promise<RestApiResponse<void>> {\n        return this.generalApi.ping();\n    }\n\n    /**\n     * Test connectivity to the Rest API and get the current server time.\n     * Weight: 1\n     *\n     * @summary Check server time\n     * @returns {Promise<RestApiResponse<TimeResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/general-endpoints#check-server-time Binance API Documentation}\n     */\n    time(): Promise<RestApiResponse<TimeResponse>> {\n        return this.generalApi.time();\n    }\n\n    /**\n     * Get compressed, aggregate trades. Trades that fill at the time, from the same taker order, with the same price will have the quantity aggregated.\n     * Weight: 4\n     *\n     * @summary Compressed/Aggregate trades list\n     * @param {AggTradesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AggTradesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#compressedaggregate-trades-list Binance API Documentation}\n     */\n    aggTrades(requestParameters: AggTradesRequest): Promise<RestApiResponse<AggTradesResponse>> {\n        return this.marketApi.aggTrades(requestParameters);\n    }\n\n    /**\n     * Current average price for a symbol.\n     * Weight: 2\n     *\n     * @summary Current average price\n     * @param {AvgPriceRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<AvgPriceResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#current-average-price Binance API Documentation}\n     */\n    avgPrice(requestParameters: AvgPriceRequest): Promise<RestApiResponse<AvgPriceResponse>> {\n        return this.marketApi.avgPrice(requestParameters);\n    }\n\n    /**\n     *\n     * Weight: Adjusted based on the limit:\n     *\n     * |Limit|Request Weight\n     * ------|-------\n     * 1-100|  5\n     * 101-500| 25\n     * 501-1000| 50\n     * 1001-5000| 250\n     *\n     * @summary Order book\n     * @param {DepthRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<DepthResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#order-book Binance API Documentation}\n     */\n    depth(requestParameters: DepthRequest): Promise<RestApiResponse<DepthResponse>> {\n        return this.marketApi.depth(requestParameters);\n    }\n\n    /**\n     * Get recent trades.\n     * Weight: 25\n     *\n     * @summary Recent trades list\n     * @param {GetTradesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<GetTradesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#recent-trades-list Binance API Documentation}\n     */\n    getTrades(requestParameters: GetTradesRequest): Promise<RestApiResponse<GetTradesResponse>> {\n        return this.marketApi.getTrades(requestParameters);\n    }\n\n    /**\n     * Get older trades.\n     * Weight: 25\n     *\n     * @summary Old trade lookup\n     * @param {HistoricalTradesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<HistoricalTradesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#old-trade-lookup Binance API Documentation}\n     */\n    historicalTrades(\n        requestParameters: HistoricalTradesRequest\n    ): Promise<RestApiResponse<HistoricalTradesResponse>> {\n        return this.marketApi.historicalTrades(requestParameters);\n    }\n\n    /**\n     * Kline/candlestick bars for a symbol.\n     * Klines are uniquely identified by their open time.\n     * Weight: 2\n     *\n     * @summary Kline/Candlestick data\n     * @param {KlinesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<KlinesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#klinecandlestick-data Binance API Documentation}\n     */\n    klines(requestParameters: KlinesRequest): Promise<RestApiResponse<KlinesResponse>> {\n        return this.marketApi.klines(requestParameters);\n    }\n\n    /**\n     *\n     * Weight: 4 for each requested <tt>symbol</tt> regardless of <tt>windowSize</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n     *\n     * @summary Rolling window price change statistics\n     * @param {TickerRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<TickerResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#rolling-window-price-change-statistics Binance API Documentation}\n     */\n    ticker(requestParameters: TickerRequest = {}): Promise<RestApiResponse<TickerResponse>> {\n        return this.marketApi.ticker(requestParameters);\n    }\n\n    /**\n     * 24 hour rolling window price change statistics. **Careful** when accessing this with no symbol.\n     * Weight: <table>\n     * <thead>\n     * <tr>\n     * <th>Parameter</th>\n     * <th>Symbols Provided</th>\n     * <th>Weight</th>\n     * </tr>\n     * </thead>\n     * <tbody>\n     * <tr>\n     * <td rowspan=\"2\">symbol</td>\n     * <td>1</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>symbol parameter is omitted</td>\n     * <td>80</td>\n     * </tr>\n     * <tr>\n     * <td rowspan=\"4\">symbols</td>\n     * <td>1-20</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>21-100</td>\n     * <td>40</td>\n     * </tr>\n     * <tr>\n     * <td>101 or more</td>\n     * <td>80</td>\n     * </tr>\n     * <tr>\n     * <td>symbols parameter is omitted</td>\n     * <td>80</td>\n     * </tr>\n     * </tbody>\n     * </table>\n     *\n     * @summary 24hr ticker price change statistics\n     * @param {Ticker24hrRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<Ticker24hrResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#24hr-ticker-price-change-statistics Binance API Documentation}\n     */\n    ticker24hr(\n        requestParameters: Ticker24hrRequest = {}\n    ): Promise<RestApiResponse<Ticker24hrResponse>> {\n        return this.marketApi.ticker24hr(requestParameters);\n    }\n\n    /**\n     * Best price/qty on the order book for a symbol or symbols.\n     * Weight: <table>\n     * <thead>\n     * <tr>\n     * <th>Parameter</th>\n     * <th>Symbols Provided</th>\n     * <th>Weight</th>\n     * </tr>\n     * </thead>\n     * <tbody>\n     * <tr>\n     * <td rowspan=\"2\">symbol</td>\n     * <td>1</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>symbol parameter is omitted</td>\n     * <td>4</td>\n     * </tr>\n     * <tr>\n     * <td>symbols</td>\n     * <td>Any</td>\n     * <td>4</td>\n     * </tr>\n     * </tbody>\n     * </table>\n     *\n     * @summary Symbol order book ticker\n     * @param {TickerBookTickerRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<TickerBookTickerResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#symbol-order-book-ticker Binance API Documentation}\n     */\n    tickerBookTicker(\n        requestParameters: TickerBookTickerRequest = {}\n    ): Promise<RestApiResponse<TickerBookTickerResponse>> {\n        return this.marketApi.tickerBookTicker(requestParameters);\n    }\n\n    /**\n     * Latest price for a symbol or symbols.\n     * Weight: <table>\n     * <thead>\n     * <tr>\n     * <th>Parameter</th>\n     * <th>Symbols Provided</th>\n     * <th>Weight</th>\n     * </tr>\n     * </thead>\n     * <tbody>\n     * <tr>\n     * <td rowspan=\"2\">symbol</td>\n     * <td>1</td>\n     * <td>2</td>\n     * </tr>\n     * <tr>\n     * <td>symbol parameter is omitted</td>\n     * <td>4</td>\n     * </tr>\n     * <tr>\n     * <td>symbols</td>\n     * <td>Any</td>\n     * <td>4</td>\n     * </tr>\n     * </tbody>\n     * </table>\n     *\n     * @summary Symbol price ticker\n     * @param {TickerPriceRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<TickerPriceResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#symbol-price-ticker Binance API Documentation}\n     */\n    tickerPrice(\n        requestParameters: TickerPriceRequest = {}\n    ): Promise<RestApiResponse<TickerPriceResponse>> {\n        return this.marketApi.tickerPrice(requestParameters);\n    }\n\n    /**\n     * Price change statistics for a trading day.\n     * Weight: 4 for each requested <tt>symbol</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n     *\n     * @summary Trading Day Ticker\n     * @param {TickerTradingDayRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<TickerTradingDayResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#trading-day-ticker Binance API Documentation}\n     */\n    tickerTradingDay(\n        requestParameters: TickerTradingDayRequest = {}\n    ): Promise<RestApiResponse<TickerTradingDayResponse>> {\n        return this.marketApi.tickerTradingDay(requestParameters);\n    }\n\n    /**\n     * The request is similar to klines having the same parameters and response.\n     *\n     * `uiKlines` return modified kline data, optimized for presentation of candlestick charts.\n     * Weight: 2\n     *\n     * @summary UIKlines\n     * @param {UiKlinesRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<UiKlinesResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#uiklines Binance API Documentation}\n     */\n    uiKlines(requestParameters: UiKlinesRequest): Promise<RestApiResponse<UiKlinesResponse>> {\n        return this.marketApi.uiKlines(requestParameters);\n    }\n\n    /**\n     * Cancels all active orders on a symbol.\n     * This includes orders that are part of an order list.\n     * Weight: 1\n     *\n     * @summary Cancel All Open Orders on a Symbol\n     * @param {DeleteOpenOrdersRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<DeleteOpenOrdersResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-all-open-orders-on-a-symbol-trade Binance API Documentation}\n     */\n    deleteOpenOrders(\n        requestParameters: DeleteOpenOrdersRequest\n    ): Promise<RestApiResponse<DeleteOpenOrdersResponse>> {\n        return this.tradeApi.deleteOpenOrders(requestParameters);\n    }\n\n    /**\n     * Cancel an active order.\n     * Weight: 1\n     *\n     * @summary Cancel order\n     * @param {DeleteOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<DeleteOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-order-trade Binance API Documentation}\n     */\n    deleteOrder(\n        requestParameters: DeleteOrderRequest\n    ): Promise<RestApiResponse<DeleteOrderResponse>> {\n        return this.tradeApi.deleteOrder(requestParameters);\n    }\n\n    /**\n     * Cancel an entire Order list\n     * Weight: 1\n     *\n     * @summary Cancel Order list\n     * @param {DeleteOrderListRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<DeleteOrderListResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-order-list-trade Binance API Documentation}\n     */\n    deleteOrderList(\n        requestParameters: DeleteOrderListRequest\n    ): Promise<RestApiResponse<DeleteOrderListResponse>> {\n        return this.tradeApi.deleteOrderList(requestParameters);\n    }\n\n    /**\n     * Send in a new order.\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * @summary New order\n     * @param {NewOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<NewOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-trade Binance API Documentation}\n     */\n    newOrder(requestParameters: NewOrderRequest): Promise<RestApiResponse<NewOrderResponse>> {\n        return this.tradeApi.newOrder(requestParameters);\n    }\n\n    /**\n     * Reduce the quantity of an existing open order.\n     *\n     * This adds 0 orders to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [Order Amend Keep Priority FAQ](faqs/order_amend_keep_priority.md) to learn more.\n     * Weight: 4\n     *\n     * @summary Order Amend Keep Priority\n     * @param {OrderAmendKeepPriorityRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderAmendKeepPriorityResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#order-amend-keep-priority-trade Binance API Documentation}\n     */\n    orderAmendKeepPriority(\n        requestParameters: OrderAmendKeepPriorityRequest\n    ): Promise<RestApiResponse<OrderAmendKeepPriorityResponse>> {\n        return this.tradeApi.orderAmendKeepPriority(requestParameters);\n    }\n\n    /**\n     * Cancels an existing order and places a new order on the same symbol.\n     *\n     * Filters and Order Count are evaluated before the processing of the cancellation and order placement occurs.\n     *\n     * A new order that was not attempted (i.e. when `newOrderResult: NOT_ATTEMPTED`), will still increase the unfilled order count by 1.\n     * Weight: 1\n     *\n     * @summary Cancel an Existing Order and Send a New Order\n     * @param {OrderCancelReplaceRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderCancelReplaceResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#cancel-an-existing-order-and-send-a-new-order-trade Binance API Documentation}\n     */\n    orderCancelReplace(\n        requestParameters: OrderCancelReplaceRequest\n    ): Promise<RestApiResponse<OrderCancelReplaceResponse>> {\n        return this.tradeApi.orderCancelReplace(requestParameters);\n    }\n\n    /**\n     * Send in an one-cancels-the-other (OCO) pair, where activation of one order immediately cancels the other.\n     *\n     * An OCO has 2 orders called the **above order** and **below order**.\n     * One of the orders must be a `LIMIT_MAKER/TAKE_PROFIT/TAKE_PROFIT_LIMIT` order and the other must be `STOP_LOSS` or `STOP_LOSS_LIMIT` order.\n     * Price restrictions\n     * If the OCO is on the `SELL` side:\n     * `LIMIT_MAKER/TAKE_PROFIT_LIMIT` `price` > Last Traded Price >  `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n     * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * If the OCO is on the `BUY` side:\n     * `LIMIT_MAKER/TAKE_PROFIT_LIMIT price` < Last Traded Price < `stopPrice`\n     * `TAKE_PROFIT stopPrice` < Last Traded Price < `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * OCOs add **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary New Order list - OCO\n     * @param {OrderListOcoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderListOcoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-list---oco-trade Binance API Documentation}\n     */\n    orderListOco(\n        requestParameters: OrderListOcoRequest\n    ): Promise<RestApiResponse<OrderListOcoResponse>> {\n        return this.tradeApi.orderListOco(requestParameters);\n    }\n\n    /**\n     * Place an OTO.\n     *\n     * An OTO (One-Triggers-the-Other) is an order list comprised of 2 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The second order is called the **pending order**. It can be any order type except for `MARKET` orders using parameter `quoteOrderQty`. The pending order is only placed on the order book when the working order gets **fully filled**.\n     * If either the working order or the pending order is cancelled individually, the other order in the order list will also be canceled or expired.\n     * When the order list is placed, if the working order gets **immediately fully filled**, the placement response will show the working order as `FILLED` but the pending order will still appear as `PENDING_NEW`. You need to query the status of the pending order again to see its updated status.\n     * OTOs add **2 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary New Order list - OTO\n     * @param {OrderListOtoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderListOtoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-list---oto-trade Binance API Documentation}\n     */\n    orderListOto(\n        requestParameters: OrderListOtoRequest\n    ): Promise<RestApiResponse<OrderListOtoResponse>> {\n        return this.tradeApi.orderListOto(requestParameters);\n    }\n\n    /**\n     * Place an OTOCO.\n     *\n     * An OTOCO (One-Triggers-One-Cancels-the-Other) is an order list comprised of 3 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The behavior of the working order is the same as the [OTO](#new-order-list---oto-trade).\n     * OTOCO has 2 pending orders (pending above and pending below), forming an OCO pair. The pending orders are only placed on the order book when the working order gets **fully filled**.\n     * The rules of the pending above and pending below follow the same rules as the [Order list OCO](#new-order-list---oco-trade).\n     * OTOCOs add **3 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 3\n     *\n     * @summary New Order list - OTOCO\n     * @param {OrderListOtocoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderListOtocoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-list---otoco-trade Binance API Documentation}\n     */\n    orderListOtoco(\n        requestParameters: OrderListOtocoRequest\n    ): Promise<RestApiResponse<OrderListOtocoResponse>> {\n        return this.tradeApi.orderListOtoco(requestParameters);\n    }\n\n    /**\n     * Send in a new OCO.\n     *\n     * Price Restrictions:\n     * `SELL`: Limit Price > Last Price > Stop Price\n     * `BUY`: Limit Price < Last Price < Stop Price\n     * Quantity Restrictions:\n     * Both legs must have the same quantity.\n     * `ICEBERG` quantities however do not have to be the same\n     * `OCO` adds **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary New OCO - Deprecated\n     * @param {OrderOcoRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderOcoResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-oco---deprecated-trade Binance API Documentation}\n     */\n    orderOco(requestParameters: OrderOcoRequest): Promise<RestApiResponse<OrderOcoResponse>> {\n        return this.tradeApi.orderOco(requestParameters);\n    }\n\n    /**\n     * Test new order creation and signature/recvWindow long.\n     * Creates and validates a new order but does not send it into the matching engine.\n     * Weight: |Condition| Request Weight|\n     * |------------           | ------------ |\n     * |Without `computeCommissionRates`| 1|\n     * |With `computeCommissionRates`|20|\n     *\n     * @summary Test new order\n     * @param {OrderTestRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<OrderTestResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#test-new-order-trade Binance API Documentation}\n     */\n    orderTest(\n        requestParameters: OrderTestRequest = {}\n    ): Promise<RestApiResponse<OrderTestResponse>> {\n        return this.tradeApi.orderTest(requestParameters);\n    }\n\n    /**\n     * Places an order using smart order routing (SOR).\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [SOR FAQ](faqs/sor_faq.md) to learn more.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 1\n     *\n     * @summary New order using SOR\n     * @param {SorOrderRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<SorOrderResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#new-order-using-sor-trade Binance API Documentation}\n     */\n    sorOrder(requestParameters: SorOrderRequest): Promise<RestApiResponse<SorOrderResponse>> {\n        return this.tradeApi.sorOrder(requestParameters);\n    }\n\n    /**\n     * Test new order creation and signature/recvWindow using smart order routing (SOR).\n     * Creates and validates a new order but does not send it into the matching engine.\n     * Weight: | Condition | Request Weight |\n     * | --------- | -------------- |\n     * | Without `computeCommissionRates`  |  1 |\n     * | With `computeCommissionRates`     | 20 |\n     *\n     * @summary Test new order using SOR\n     * @param {SorOrderTestRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<SorOrderTestResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/trading-endpoints#test-new-order-using-sor-trade Binance API Documentation}\n     */\n    sorOrderTest(\n        requestParameters: SorOrderTestRequest = {}\n    ): Promise<RestApiResponse<SorOrderTestResponse>> {\n        return this.tradeApi.sorOrderTest(requestParameters);\n    }\n\n    /**\n     * Close out a user data stream.\n     * Weight: 2\n     *\n     * @summary Close user data stream\n     * @param {DeleteUserDataStreamRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<void>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/user-data-stream-endpoints---deprecated#close-user-data-stream-user_stream Binance API Documentation}\n     */\n    deleteUserDataStream(\n        requestParameters: DeleteUserDataStreamRequest\n    ): Promise<RestApiResponse<void>> {\n        return this.userDataStreamApi.deleteUserDataStream(requestParameters);\n    }\n\n    /**\n     * Start a new user data stream. The stream will close after 60 minutes unless a keepalive is sent.\n     * Weight: 2\n     *\n     * @summary Start user data stream\n     * @returns {Promise<RestApiResponse<NewUserDataStreamResponse>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/user-data-stream-endpoints---deprecated#start-user-data-stream-user_stream Binance API Documentation}\n     */\n    newUserDataStream(): Promise<RestApiResponse<NewUserDataStreamResponse>> {\n        return this.userDataStreamApi.newUserDataStream();\n    }\n\n    /**\n     * Keepalive a user data stream to prevent a time out. User data streams will close after 60 minutes. It's recommended to send a ping about every 30 minutes.\n     * Weight: 2\n     *\n     * @summary Keepalive user data stream\n     * @param {PutUserDataStreamRequest} requestParameters Request parameters.\n     * @returns {Promise<RestApiResponse<void>>}\n     * @throws {RequiredError | ConnectorClientError | UnauthorizedError | ForbiddenError | TooManyRequestsError | RateLimitBanError | ServerError | NotFoundError | NetworkError | BadRequestError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/rest-api/user-data-stream-endpoints---deprecated#keepalive-user-data-stream-user_stream Binance API Documentation}\n     */\n    putUserDataStream(requestParameters: PutUserDataStreamRequest): Promise<RestApiResponse<void>> {\n        return this.userDataStreamApi.putUserDataStream(requestParameters);\n    }\n}\n","/**\n * Binance Spot WebSocket API\n *\n * OpenAPI Specifications for the Binance Spot WebSocket API\n *\n * API documents:\n * - [Github web-socket-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md)\n * - [General API information for web-socket-api on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport * from './types';\nexport * from './modules';\nexport * from './websocket-api';\nexport * from './websocket-api-connection';\n","/**\n * Binance Spot WebSocket API\n *\n * OpenAPI Specifications for the Binance Spot WebSocket API\n *\n * API documents:\n * - [Github web-socket-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md)\n * - [General API information for web-socket-api on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { WebsocketAPIBase, WebsocketApiResponse, WebsocketSendMsgOptions } from '@binance/common';\nimport type {\n    AccountCommissionResponse,\n    AccountRateLimitsOrdersResponse,\n    AccountStatusResponse,\n    AllOrderListsResponse,\n    AllOrdersResponse,\n    MyAllocationsResponse,\n    MyPreventedMatchesResponse,\n    MyTradesResponse,\n    OpenOrderListsStatusResponse,\n    OpenOrdersStatusResponse,\n    OrderAmendmentsResponse,\n    OrderListStatusResponse,\n    OrderStatusResponse,\n} from '../types';\n\n/**\n * AccountApi - interface\n *\n * @interface AccountApi\n */\nexport interface AccountApiInterface {\n    /**\n     * Get current account commission rates.\n     * Weight: 20\n     *\n     * @summary WebSocket Account Commission Rates\n     * @param {AccountCommissionRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<AccountCommissionResponse>}\n     * @memberof AccountApiInterface\n     */\n    accountCommission(\n        requestParameters: AccountCommissionRequest\n    ): Promise<WebsocketApiResponse<AccountCommissionResponse>>;\n\n    /**\n     * Query your current unfilled order count for all intervals.\n     * Weight: 40\n     *\n     * @summary WebSocket Unfilled Order Count\n     * @param {AccountRateLimitsOrdersRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<AccountRateLimitsOrdersResponse>}\n     * @memberof AccountApiInterface\n     */\n    accountRateLimitsOrders(\n        requestParameters?: AccountRateLimitsOrdersRequest\n    ): Promise<WebsocketApiResponse<AccountRateLimitsOrdersResponse>>;\n\n    /**\n     * Query information about your account.\n     * Weight: 20\n     *\n     * @summary WebSocket Account information\n     * @param {AccountStatusRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<AccountStatusResponse>}\n     * @memberof AccountApiInterface\n     */\n    accountStatus(\n        requestParameters?: AccountStatusRequest\n    ): Promise<WebsocketApiResponse<AccountStatusResponse>>;\n\n    /**\n     * Query information about all your order lists, filtered by time range.\n     * Weight: 20\n     *\n     * @summary WebSocket Account order list history\n     * @param {AllOrderListsRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<AllOrderListsResponse>}\n     * @memberof AccountApiInterface\n     */\n    allOrderLists(\n        requestParameters?: AllOrderListsRequest\n    ): Promise<WebsocketApiResponse<AllOrderListsResponse>>;\n\n    /**\n     * Query information about all your orders – active, canceled, filled – filtered by time range.\n     * Weight: 20\n     *\n     * @summary WebSocket Account order history\n     * @param {AllOrdersRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<AllOrdersResponse>}\n     * @memberof AccountApiInterface\n     */\n    allOrders(\n        requestParameters: AllOrdersRequest\n    ): Promise<WebsocketApiResponse<AllOrdersResponse>>;\n\n    /**\n     * Retrieves allocations resulting from SOR order placement.\n     * Weight: 20\n     *\n     * @summary WebSocket Account allocations\n     * @param {MyAllocationsRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<MyAllocationsResponse>}\n     * @memberof AccountApiInterface\n     */\n    myAllocations(\n        requestParameters: MyAllocationsRequest\n    ): Promise<WebsocketApiResponse<MyAllocationsResponse>>;\n\n    /**\n     * Displays the list of orders that were expired due to STP.\n     *\n     * These are the combinations supported:\n     *\n     * `symbol` + `preventedMatchId`\n     * `symbol` + `orderId`\n     * `symbol` + `orderId` + `fromPreventedMatchId` (`limit` will default to 500)\n     * `symbol` + `orderId` + `fromPreventedMatchId` + `limit`\n     * Weight: Case                            | Weight\n     * ----                            | -----\n     * If `symbol` is invalid          | 2\n     * Querying by `preventedMatchId`  | 2\n     * Querying by `orderId`           | 20\n     *\n     * @summary WebSocket Account prevented matches\n     * @param {MyPreventedMatchesRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<MyPreventedMatchesResponse>}\n     * @memberof AccountApiInterface\n     */\n    myPreventedMatches(\n        requestParameters: MyPreventedMatchesRequest\n    ): Promise<WebsocketApiResponse<MyPreventedMatchesResponse>>;\n\n    /**\n     * Query information about all your trades, filtered by time range.\n     * Weight: Condition| Weight|\n     * ---| ---\n     * |Without orderId|20|\n     * |With orderId|5|\n     *\n     * @summary WebSocket Account trade history\n     * @param {MyTradesRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<MyTradesResponse>}\n     * @memberof AccountApiInterface\n     */\n    myTrades(requestParameters: MyTradesRequest): Promise<WebsocketApiResponse<MyTradesResponse>>;\n\n    /**\n     * Query execution status of all open order lists.\n     *\n     * If you need to continuously monitor order status updates, please consider using WebSocket Streams:\n     *\n     * `userDataStream.start` request\n     * `executionReport` user data stream event\n     * Weight: 6\n     *\n     * @summary WebSocket Current open Order lists\n     * @param {OpenOrderListsStatusRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OpenOrderListsStatusResponse>}\n     * @memberof AccountApiInterface\n     */\n    openOrderListsStatus(\n        requestParameters?: OpenOrderListsStatusRequest\n    ): Promise<WebsocketApiResponse<OpenOrderListsStatusResponse>>;\n\n    /**\n     * Query execution status of all open orders.\n     *\n     * If you need to continuously monitor order status updates, please consider using WebSocket Streams:\n     *\n     * `userDataStream.start` request\n     * `executionReport` user data stream event\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Parameter | Weight |\n     * | --------- | ------ |\n     * | `symbol`  |      6 |\n     * | none      |     80 |\n     *\n     * @summary WebSocket Current open orders\n     * @param {OpenOrdersStatusRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OpenOrdersStatusResponse>}\n     * @memberof AccountApiInterface\n     */\n    openOrdersStatus(\n        requestParameters?: OpenOrdersStatusRequest\n    ): Promise<WebsocketApiResponse<OpenOrdersStatusResponse>>;\n\n    /**\n     * Queries all amendments of a single order.\n     * Weight: 4\n     *\n     * @summary WebSocket Query Order Amendments\n     * @param {OrderAmendmentsRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderAmendmentsResponse>}\n     * @memberof AccountApiInterface\n     */\n    orderAmendments(\n        requestParameters: OrderAmendmentsRequest\n    ): Promise<WebsocketApiResponse<OrderAmendmentsResponse>>;\n\n    /**\n     * Check execution status of an Order list.\n     *\n     * For execution status of individual orders, use `order.status`.\n     * Weight: 4\n     *\n     * @summary WebSocket Query Order list\n     * @param {OrderListStatusRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderListStatusResponse>}\n     * @memberof AccountApiInterface\n     */\n    orderListStatus(\n        requestParameters?: OrderListStatusRequest\n    ): Promise<WebsocketApiResponse<OrderListStatusResponse>>;\n\n    /**\n     * Check execution status of an order.\n     * Weight: 4\n     *\n     * @summary WebSocket Query order\n     * @param {OrderStatusRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderStatusResponse>}\n     * @memberof AccountApiInterface\n     */\n    orderStatus(\n        requestParameters: OrderStatusRequest\n    ): Promise<WebsocketApiResponse<OrderStatusResponse>>;\n}\n\n/**\n * Request parameters for accountCommission operation in AccountApi.\n * @interface AccountCommissionRequest\n */\nexport interface AccountCommissionRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiAccountCommission\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiAccountCommission\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for accountRateLimitsOrders operation in AccountApi.\n * @interface AccountRateLimitsOrdersRequest\n */\nexport interface AccountRateLimitsOrdersRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiAccountRateLimitsOrders\n     */\n    readonly id?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiAccountRateLimitsOrders\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for accountStatus operation in AccountApi.\n * @interface AccountStatusRequest\n */\nexport interface AccountStatusRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiAccountStatus\n     */\n    readonly id?: string;\n\n    /**\n     * When set to `true`, emits only the non-zero balances of an account. <br>Default value: false\n     * @type {boolean}\n     * @memberof AccountApiAccountStatus\n     */\n    readonly omitZeroBalances?: boolean;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiAccountStatus\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for allOrderLists operation in AccountApi.\n * @interface AllOrderListsRequest\n */\nexport interface AllOrderListsRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiAllOrderLists\n     */\n    readonly id?: string;\n\n    /**\n     * Aggregate trade ID to begin at\n     * @type {number}\n     * @memberof AccountApiAllOrderLists\n     */\n    readonly fromId?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiAllOrderLists\n     */\n    readonly startTime?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiAllOrderLists\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof AccountApiAllOrderLists\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiAllOrderLists\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for allOrders operation in AccountApi.\n * @interface AllOrdersRequest\n */\nexport interface AllOrdersRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiAllOrders\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiAllOrders\n     */\n    readonly id?: string;\n\n    /**\n     * Cancel order by orderId\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly orderId?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly startTime?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiAllOrders\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for myAllocations operation in AccountApi.\n * @interface MyAllocationsRequest\n */\nexport interface MyAllocationsRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly startTime?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly endTime?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly fromAllocationId?: number;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly limit?: number;\n\n    /**\n     * `orderId`or`origClientOrderId`mustbesent\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly orderId?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiMyAllocations\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for myPreventedMatches operation in AccountApi.\n * @interface MyPreventedMatchesRequest\n */\nexport interface MyPreventedMatchesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly preventedMatchId?: number;\n\n    /**\n     * `orderId`or`origClientOrderId`mustbesent\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly orderId?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly fromPreventedMatchId?: number;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiMyPreventedMatches\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for myTrades operation in AccountApi.\n * @interface MyTradesRequest\n */\nexport interface MyTradesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiMyTrades\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiMyTrades\n     */\n    readonly id?: string;\n\n    /**\n     * Cancel order by orderId\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly orderId?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly startTime?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly endTime?: number;\n\n    /**\n     * Aggregate trade ID to begin at\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly fromId?: number;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiMyTrades\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for openOrderListsStatus operation in AccountApi.\n * @interface OpenOrderListsStatusRequest\n */\nexport interface OpenOrderListsStatusRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiOpenOrderListsStatus\n     */\n    readonly id?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiOpenOrderListsStatus\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for openOrdersStatus operation in AccountApi.\n * @interface OpenOrdersStatusRequest\n */\nexport interface OpenOrdersStatusRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiOpenOrdersStatus\n     */\n    readonly id?: string;\n\n    /**\n     * Describe a single symbol\n     * @type {string}\n     * @memberof AccountApiOpenOrdersStatus\n     */\n    readonly symbol?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiOpenOrdersStatus\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderAmendments operation in AccountApi.\n * @interface OrderAmendmentsRequest\n */\nexport interface OrderAmendmentsRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly orderId: number;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly fromExecutionId?: number;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly limit?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiOrderAmendments\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderListStatus operation in AccountApi.\n * @interface OrderListStatusRequest\n */\nexport interface OrderListStatusRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiOrderListStatus\n     */\n    readonly id?: string;\n\n    /**\n     * `orderId`or`origClientOrderId`mustbesent\n     * @type {string}\n     * @memberof AccountApiOrderListStatus\n     */\n    readonly origClientOrderId?: string;\n\n    /**\n     * Cancel order list by orderListId\n     * @type {number}\n     * @memberof AccountApiOrderListStatus\n     */\n    readonly orderListId?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiOrderListStatus\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderStatus operation in AccountApi.\n * @interface OrderStatusRequest\n */\nexport interface OrderStatusRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof AccountApiOrderStatus\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AccountApiOrderStatus\n     */\n    readonly id?: string;\n\n    /**\n     * Cancel order by orderId\n     * @type {number}\n     * @memberof AccountApiOrderStatus\n     */\n    readonly orderId?: number;\n\n    /**\n     * `orderId`or`origClientOrderId`mustbesent\n     * @type {string}\n     * @memberof AccountApiOrderStatus\n     */\n    readonly origClientOrderId?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AccountApiOrderStatus\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * AccountApi - object-oriented interface\n * @class AccountApi\n * @extends {WebsocketAPIBase}\n */\nexport class AccountApi implements AccountApiInterface {\n    private readonly websocketBase: WebsocketAPIBase;\n\n    constructor(websocketBase: WebsocketAPIBase) {\n        this.websocketBase = websocketBase;\n    }\n\n    /**\n     * Get current account commission rates.\n     * Weight: 20\n     *\n     * @summary WebSocket Account Commission Rates\n     * @param {AccountCommissionRequest} requestParameters Request parameters.\n     * @returns {Promise<AccountCommissionResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-commission-rates-user_data Binance API Documentation}\n     */\n    public accountCommission(\n        requestParameters: AccountCommissionRequest\n    ): Promise<WebsocketApiResponse<AccountCommissionResponse>> {\n        return this.websocketBase.sendMessage<AccountCommissionResponse>(\n            '/account.commission'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Query your current unfilled order count for all intervals.\n     * Weight: 40\n     *\n     * @summary WebSocket Unfilled Order Count\n     * @param {AccountRateLimitsOrdersRequest} requestParameters Request parameters.\n     * @returns {Promise<AccountRateLimitsOrdersResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#unfilled-order-count-user_data Binance API Documentation}\n     */\n    public accountRateLimitsOrders(\n        requestParameters: AccountRateLimitsOrdersRequest = {}\n    ): Promise<WebsocketApiResponse<AccountRateLimitsOrdersResponse>> {\n        return this.websocketBase.sendMessage<AccountRateLimitsOrdersResponse>(\n            '/account.rateLimits.orders'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Query information about your account.\n     * Weight: 20\n     *\n     * @summary WebSocket Account information\n     * @param {AccountStatusRequest} requestParameters Request parameters.\n     * @returns {Promise<AccountStatusResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-information-user_data Binance API Documentation}\n     */\n    public accountStatus(\n        requestParameters: AccountStatusRequest = {}\n    ): Promise<WebsocketApiResponse<AccountStatusResponse>> {\n        return this.websocketBase.sendMessage<AccountStatusResponse>(\n            '/account.status'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Query information about all your order lists, filtered by time range.\n     * Weight: 20\n     *\n     * @summary WebSocket Account order list history\n     * @param {AllOrderListsRequest} requestParameters Request parameters.\n     * @returns {Promise<AllOrderListsResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-order-list-history-user_data Binance API Documentation}\n     */\n    public allOrderLists(\n        requestParameters: AllOrderListsRequest = {}\n    ): Promise<WebsocketApiResponse<AllOrderListsResponse>> {\n        return this.websocketBase.sendMessage<AllOrderListsResponse>(\n            '/allOrderLists'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Query information about all your orders – active, canceled, filled – filtered by time range.\n     * Weight: 20\n     *\n     * @summary WebSocket Account order history\n     * @param {AllOrdersRequest} requestParameters Request parameters.\n     * @returns {Promise<AllOrdersResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-order-history-user_data Binance API Documentation}\n     */\n    public allOrders(\n        requestParameters: AllOrdersRequest\n    ): Promise<WebsocketApiResponse<AllOrdersResponse>> {\n        return this.websocketBase.sendMessage<AllOrdersResponse>(\n            '/allOrders'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Retrieves allocations resulting from SOR order placement.\n     * Weight: 20\n     *\n     * @summary WebSocket Account allocations\n     * @param {MyAllocationsRequest} requestParameters Request parameters.\n     * @returns {Promise<MyAllocationsResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-allocations-user_data Binance API Documentation}\n     */\n    public myAllocations(\n        requestParameters: MyAllocationsRequest\n    ): Promise<WebsocketApiResponse<MyAllocationsResponse>> {\n        return this.websocketBase.sendMessage<MyAllocationsResponse>(\n            '/myAllocations'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Displays the list of orders that were expired due to STP.\n     *\n     * These are the combinations supported:\n     *\n     * `symbol` + `preventedMatchId`\n     * `symbol` + `orderId`\n     * `symbol` + `orderId` + `fromPreventedMatchId` (`limit` will default to 500)\n     * `symbol` + `orderId` + `fromPreventedMatchId` + `limit`\n     * Weight: Case                            | Weight\n     * ----                            | -----\n     * If `symbol` is invalid          | 2\n     * Querying by `preventedMatchId`  | 2\n     * Querying by `orderId`           | 20\n     *\n     * @summary WebSocket Account prevented matches\n     * @param {MyPreventedMatchesRequest} requestParameters Request parameters.\n     * @returns {Promise<MyPreventedMatchesResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-prevented-matches-user_data Binance API Documentation}\n     */\n    public myPreventedMatches(\n        requestParameters: MyPreventedMatchesRequest\n    ): Promise<WebsocketApiResponse<MyPreventedMatchesResponse>> {\n        return this.websocketBase.sendMessage<MyPreventedMatchesResponse>(\n            '/myPreventedMatches'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Query information about all your trades, filtered by time range.\n     * Weight: Condition| Weight|\n     * ---| ---\n     * |Without orderId|20|\n     * |With orderId|5|\n     *\n     * @summary WebSocket Account trade history\n     * @param {MyTradesRequest} requestParameters Request parameters.\n     * @returns {Promise<MyTradesResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-trade-history-user_data Binance API Documentation}\n     */\n    public myTrades(\n        requestParameters: MyTradesRequest\n    ): Promise<WebsocketApiResponse<MyTradesResponse>> {\n        return this.websocketBase.sendMessage<MyTradesResponse>(\n            '/myTrades'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Query execution status of all open order lists.\n     *\n     * If you need to continuously monitor order status updates, please consider using WebSocket Streams:\n     *\n     * `userDataStream.start` request\n     * `executionReport` user data stream event\n     * Weight: 6\n     *\n     * @summary WebSocket Current open Order lists\n     * @param {OpenOrderListsStatusRequest} requestParameters Request parameters.\n     * @returns {Promise<OpenOrderListsStatusResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#current-open-order-lists-user_data Binance API Documentation}\n     */\n    public openOrderListsStatus(\n        requestParameters: OpenOrderListsStatusRequest = {}\n    ): Promise<WebsocketApiResponse<OpenOrderListsStatusResponse>> {\n        return this.websocketBase.sendMessage<OpenOrderListsStatusResponse>(\n            '/openOrderLists.status'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Query execution status of all open orders.\n     *\n     * If you need to continuously monitor order status updates, please consider using WebSocket Streams:\n     *\n     * `userDataStream.start` request\n     * `executionReport` user data stream event\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Parameter | Weight |\n     * | --------- | ------ |\n     * | `symbol`  |      6 |\n     * | none      |     80 |\n     *\n     * @summary WebSocket Current open orders\n     * @param {OpenOrdersStatusRequest} requestParameters Request parameters.\n     * @returns {Promise<OpenOrdersStatusResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#current-open-orders-user_data Binance API Documentation}\n     */\n    public openOrdersStatus(\n        requestParameters: OpenOrdersStatusRequest = {}\n    ): Promise<WebsocketApiResponse<OpenOrdersStatusResponse>> {\n        return this.websocketBase.sendMessage<OpenOrdersStatusResponse>(\n            '/openOrders.status'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Queries all amendments of a single order.\n     * Weight: 4\n     *\n     * @summary WebSocket Query Order Amendments\n     * @param {OrderAmendmentsRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderAmendmentsResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#query-order-amendments-user_data Binance API Documentation}\n     */\n    public orderAmendments(\n        requestParameters: OrderAmendmentsRequest\n    ): Promise<WebsocketApiResponse<OrderAmendmentsResponse>> {\n        return this.websocketBase.sendMessage<OrderAmendmentsResponse>(\n            '/order.amendments'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Check execution status of an Order list.\n     *\n     * For execution status of individual orders, use `order.status`.\n     * Weight: 4\n     *\n     * @summary WebSocket Query Order list\n     * @param {OrderListStatusRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderListStatusResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#query-order-list-user_data Binance API Documentation}\n     */\n    public orderListStatus(\n        requestParameters: OrderListStatusRequest = {}\n    ): Promise<WebsocketApiResponse<OrderListStatusResponse>> {\n        return this.websocketBase.sendMessage<OrderListStatusResponse>(\n            '/orderList.status'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Check execution status of an order.\n     * Weight: 4\n     *\n     * @summary WebSocket Query order\n     * @param {OrderStatusRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderStatusResponse>}\n     * @memberof AccountApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#query-order-user_data Binance API Documentation}\n     */\n    public orderStatus(\n        requestParameters: OrderStatusRequest\n    ): Promise<WebsocketApiResponse<OrderStatusResponse>> {\n        return this.websocketBase.sendMessage<OrderStatusResponse>(\n            '/order.status'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n}\n","/**\n * Binance Spot WebSocket API\n *\n * OpenAPI Specifications for the Binance Spot WebSocket API\n *\n * API documents:\n * - [Github web-socket-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md)\n * - [General API information for web-socket-api on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { WebsocketAPIBase, WebsocketApiResponse, WebsocketSendMsgOptions } from '@binance/common';\nimport type { SessionLogonResponse, SessionLogoutResponse, SessionStatusResponse } from '../types';\n\n/**\n * AuthApi - interface\n *\n * @interface AuthApi\n */\nexport interface AuthApiInterface {\n    /**\n     * Authenticate WebSocket connection using the provided API key.\n     *\n     * After calling `session.logon`, you can omit `apiKey` and `signature` parameters for future requests that require them.\n     *\n     * Note that only one API key can be authenticated.\n     * Calling `session.logon` multiple times changes the current authenticated API key.\n     * Weight: 2\n     *\n     * @summary WebSocket Log in with API key\n     * @param {SessionLogonRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<SessionLogonResponse>}\n     * @memberof AuthApiInterface\n     */\n    sessionLogon(\n        requestParameters?: SessionLogonRequest\n    ): Promise<WebsocketApiResponse<SessionLogonResponse>>;\n\n    /**\n     * Forget the API key previously authenticated.\n     * If the connection is not authenticated, this request does nothing.\n     *\n     * Note that the WebSocket connection stays open after `session.logout` request.\n     * You can continue using the connection,\n     * but now you will have to explicitly provide the `apiKey` and `signature` parameters where needed.\n     * Weight: 2\n     *\n     * @summary WebSocket Log out of the session\n     * @param {SessionLogoutRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<SessionLogoutResponse>}\n     * @memberof AuthApiInterface\n     */\n    sessionLogout(\n        requestParameters?: SessionLogoutRequest\n    ): Promise<WebsocketApiResponse<SessionLogoutResponse>>;\n\n    /**\n     * Query the status of the WebSocket connection,\n     * inspecting which API key (if any) is used to authorize requests.\n     * Weight: 2\n     *\n     * @summary WebSocket Query session status\n     * @param {SessionStatusRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<SessionStatusResponse>}\n     * @memberof AuthApiInterface\n     */\n    sessionStatus(\n        requestParameters?: SessionStatusRequest\n    ): Promise<WebsocketApiResponse<SessionStatusResponse>>;\n}\n\n/**\n * Request parameters for sessionLogon operation in AuthApi.\n * @interface SessionLogonRequest\n */\nexport interface SessionLogonRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AuthApiSessionLogon\n     */\n    readonly id?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof AuthApiSessionLogon\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for sessionLogout operation in AuthApi.\n * @interface SessionLogoutRequest\n */\nexport interface SessionLogoutRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AuthApiSessionLogout\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for sessionStatus operation in AuthApi.\n * @interface SessionStatusRequest\n */\nexport interface SessionStatusRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof AuthApiSessionStatus\n     */\n    readonly id?: string;\n}\n\n/**\n * AuthApi - object-oriented interface\n * @class AuthApi\n * @extends {WebsocketAPIBase}\n */\nexport class AuthApi implements AuthApiInterface {\n    private readonly websocketBase: WebsocketAPIBase;\n\n    constructor(websocketBase: WebsocketAPIBase) {\n        this.websocketBase = websocketBase;\n    }\n\n    /**\n     * Authenticate WebSocket connection using the provided API key.\n     *\n     * After calling `session.logon`, you can omit `apiKey` and `signature` parameters for future requests that require them.\n     *\n     * Note that only one API key can be authenticated.\n     * Calling `session.logon` multiple times changes the current authenticated API key.\n     * Weight: 2\n     *\n     * @summary WebSocket Log in with API key\n     * @param {SessionLogonRequest} requestParameters Request parameters.\n     * @returns {Promise<SessionLogonResponse>}\n     * @memberof AuthApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/authentication-requests#log-in-with-api-key-signed Binance API Documentation}\n     */\n    public sessionLogon(\n        requestParameters: SessionLogonRequest = {}\n    ): Promise<WebsocketApiResponse<SessionLogonResponse>> {\n        return this.websocketBase.sendMessage<SessionLogonResponse>(\n            '/session.logon'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Forget the API key previously authenticated.\n     * If the connection is not authenticated, this request does nothing.\n     *\n     * Note that the WebSocket connection stays open after `session.logout` request.\n     * You can continue using the connection,\n     * but now you will have to explicitly provide the `apiKey` and `signature` parameters where needed.\n     * Weight: 2\n     *\n     * @summary WebSocket Log out of the session\n     * @param {SessionLogoutRequest} requestParameters Request parameters.\n     * @returns {Promise<SessionLogoutResponse>}\n     * @memberof AuthApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/authentication-requests#log-out-of-the-session Binance API Documentation}\n     */\n    public sessionLogout(\n        requestParameters: SessionLogoutRequest = {}\n    ): Promise<WebsocketApiResponse<SessionLogoutResponse>> {\n        return this.websocketBase.sendMessage<SessionLogoutResponse>(\n            '/session.logout'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Query the status of the WebSocket connection,\n     * inspecting which API key (if any) is used to authorize requests.\n     * Weight: 2\n     *\n     * @summary WebSocket Query session status\n     * @param {SessionStatusRequest} requestParameters Request parameters.\n     * @returns {Promise<SessionStatusResponse>}\n     * @memberof AuthApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/authentication-requests#query-session-status Binance API Documentation}\n     */\n    public sessionStatus(\n        requestParameters: SessionStatusRequest = {}\n    ): Promise<WebsocketApiResponse<SessionStatusResponse>> {\n        return this.websocketBase.sendMessage<SessionStatusResponse>(\n            '/session.status'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n}\n","/**\n * Binance Spot WebSocket API\n *\n * OpenAPI Specifications for the Binance Spot WebSocket API\n *\n * API documents:\n * - [Github web-socket-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md)\n * - [General API information for web-socket-api on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { WebsocketAPIBase, WebsocketApiResponse, WebsocketSendMsgOptions } from '@binance/common';\nimport type { ExchangeInfoResponse, PingResponse, TimeResponse } from '../types';\n\n/**\n * GeneralApi - interface\n *\n * @interface GeneralApi\n */\nexport interface GeneralApiInterface {\n    /**\n     * Query current exchange trading rules, rate limits, and symbol information.\n     * Weight: 20\n     *\n     * @summary WebSocket Exchange information\n     * @param {ExchangeInfoRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<ExchangeInfoResponse>}\n     * @memberof GeneralApiInterface\n     */\n    exchangeInfo(\n        requestParameters?: ExchangeInfoRequest\n    ): Promise<WebsocketApiResponse<ExchangeInfoResponse>>;\n\n    /**\n     * Test connectivity to the WebSocket API.\n     * Weight: 1\n     *\n     * @summary WebSocket Test connectivity\n     * @param {PingRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<PingResponse>}\n     * @memberof GeneralApiInterface\n     */\n    ping(requestParameters?: PingRequest): Promise<WebsocketApiResponse<PingResponse>>;\n\n    /**\n     * Test connectivity to the WebSocket API and get the current server time.\n     * Weight: 1\n     *\n     * @summary WebSocket Check server time\n     * @param {TimeRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<TimeResponse>}\n     * @memberof GeneralApiInterface\n     */\n    time(requestParameters?: TimeRequest): Promise<WebsocketApiResponse<TimeResponse>>;\n}\n\n/**\n * Request parameters for exchangeInfo operation in GeneralApi.\n * @interface ExchangeInfoRequest\n */\nexport interface ExchangeInfoRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly id?: string;\n\n    /**\n     * Describe a single symbol\n     * @type {string}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly symbols?: Array<string>;\n\n    /**\n     *\n     * @type {Array<string>}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly permissions?: Array<string>;\n\n    /**\n     *\n     * @type {boolean}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly showPermissionSets?: boolean;\n\n    /**\n     *\n     * @type {'TRADING' | 'END_OF_DAY' | 'HALT' | 'BREAK' | 'NON_REPRESENTABLE'}\n     * @memberof GeneralApiExchangeInfo\n     */\n    readonly symbolStatus?: ExchangeInfoSymbolStatusEnum;\n}\n\n/**\n * Request parameters for ping operation in GeneralApi.\n * @interface PingRequest\n */\nexport interface PingRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof GeneralApiPing\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for time operation in GeneralApi.\n * @interface TimeRequest\n */\nexport interface TimeRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof GeneralApiTime\n     */\n    readonly id?: string;\n}\n\n/**\n * GeneralApi - object-oriented interface\n * @class GeneralApi\n * @extends {WebsocketAPIBase}\n */\nexport class GeneralApi implements GeneralApiInterface {\n    private readonly websocketBase: WebsocketAPIBase;\n\n    constructor(websocketBase: WebsocketAPIBase) {\n        this.websocketBase = websocketBase;\n    }\n\n    /**\n     * Query current exchange trading rules, rate limits, and symbol information.\n     * Weight: 20\n     *\n     * @summary WebSocket Exchange information\n     * @param {ExchangeInfoRequest} requestParameters Request parameters.\n     * @returns {Promise<ExchangeInfoResponse>}\n     * @memberof GeneralApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/general-requests#exchange-information Binance API Documentation}\n     */\n    public exchangeInfo(\n        requestParameters: ExchangeInfoRequest = {}\n    ): Promise<WebsocketApiResponse<ExchangeInfoResponse>> {\n        return this.websocketBase.sendMessage<ExchangeInfoResponse>(\n            '/exchangeInfo'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Test connectivity to the WebSocket API.\n     * Weight: 1\n     *\n     * @summary WebSocket Test connectivity\n     * @param {PingRequest} requestParameters Request parameters.\n     * @returns {Promise<PingResponse>}\n     * @memberof GeneralApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/general-requests#test-connectivity Binance API Documentation}\n     */\n    public ping(requestParameters: PingRequest = {}): Promise<WebsocketApiResponse<PingResponse>> {\n        return this.websocketBase.sendMessage<PingResponse>(\n            '/ping'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Test connectivity to the WebSocket API and get the current server time.\n     * Weight: 1\n     *\n     * @summary WebSocket Check server time\n     * @param {TimeRequest} requestParameters Request parameters.\n     * @returns {Promise<TimeResponse>}\n     * @memberof GeneralApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/general-requests#check-server-time Binance API Documentation}\n     */\n    public time(requestParameters: TimeRequest = {}): Promise<WebsocketApiResponse<TimeResponse>> {\n        return this.websocketBase.sendMessage<TimeResponse>(\n            '/time'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n}\n\nexport enum ExchangeInfoSymbolStatusEnum {\n    TRADING = 'TRADING',\n    END_OF_DAY = 'END_OF_DAY',\n    HALT = 'HALT',\n    BREAK = 'BREAK',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n","/**\n * Binance Spot WebSocket API\n *\n * OpenAPI Specifications for the Binance Spot WebSocket API\n *\n * API documents:\n * - [Github web-socket-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md)\n * - [General API information for web-socket-api on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { WebsocketAPIBase, WebsocketApiResponse, WebsocketSendMsgOptions } from '@binance/common';\nimport type {\n    AvgPriceResponse,\n    DepthResponse,\n    KlinesResponse,\n    Ticker24hrResponse,\n    TickerBookResponse,\n    TickerPriceResponse,\n    TickerResponse,\n    TickerTradingDayResponse,\n    TradesAggregateResponse,\n    TradesHistoricalResponse,\n    TradesRecentResponse,\n    UiKlinesResponse,\n} from '../types';\n\n/**\n * MarketApi - interface\n *\n * @interface MarketApi\n */\nexport interface MarketApiInterface {\n    /**\n     * Get current average price for a symbol.\n     * Weight: 2\n     *\n     * @summary WebSocket Current average price\n     * @param {AvgPriceRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<AvgPriceResponse>}\n     * @memberof MarketApiInterface\n     */\n    avgPrice(requestParameters: AvgPriceRequest): Promise<WebsocketApiResponse<AvgPriceResponse>>;\n\n    /**\n     * Get current order book.\n     *\n     * Note that this request returns limited market depth.\n     *\n     * If you need to continuously monitor order book updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@depth<levels>`\n     * `<symbol>@depth`\n     *\n     * You can use `depth` request together with `<symbol>@depth` streams to [maintain a local order book](web-socket-streams.md#how-to-manage-a-local-order-book-correctly).\n     * Weight: Adjusted based on the limit:\n     *\n     * |  Limit    | Weight |\n     * |:---------:|:------:|\n     * |     1–100 |      5 |\n     * |   101–500 |      25|\n     * |  501–1000 |     50 |\n     * | 1001–5000 |     250 |\n     *\n     * @summary WebSocket Order book\n     * @param {DepthRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<DepthResponse>}\n     * @memberof MarketApiInterface\n     */\n    depth(requestParameters: DepthRequest): Promise<WebsocketApiResponse<DepthResponse>>;\n\n    /**\n     * Get klines (candlestick bars).\n     *\n     * Klines are uniquely identified by their open & close time.\n     *\n     * If you need access to real-time kline updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@kline_<interval>`\n     *\n     * If you need historical kline data,\n     * please consider using [data.binance.vision](https://github.com/binance/binance-public-data/#klines).\n     * Weight: 2\n     *\n     * @summary WebSocket Klines\n     * @param {KlinesRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<KlinesResponse>}\n     * @memberof MarketApiInterface\n     */\n    klines(requestParameters: KlinesRequest): Promise<WebsocketApiResponse<KlinesResponse>>;\n\n    /**\n     * Get rolling window price change statistics with a custom window.\n     *\n     * This request is similar to `ticker.24hr`,\n     * but statistics are computed on demand using the arbitrary window you specify.\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Symbols | Weight |\n     * |:-------:|:------:|\n     * |    1–50 | 4 per symbol |\n     * |  51–100 |    200 |\n     *\n     * @summary WebSocket Rolling window price change statistics\n     * @param {TickerRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<TickerResponse>}\n     * @memberof MarketApiInterface\n     */\n    ticker(requestParameters?: TickerRequest): Promise<WebsocketApiResponse<TickerResponse>>;\n\n    /**\n     * Get 24-hour rolling window price change statistics.\n     *\n     * If you need to continuously monitor trading statistics, please consider using WebSocket Streams:\n     *\n     * `<symbol>@ticker` or `!ticker@arr`\n     * `<symbol>@miniTicker` or `!miniTicker@arr`\n     *\n     * If you need different window sizes,\n     * use the `ticker` request.\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Symbols     | Weight |\n     * |:-----------:|:------:|\n     * |        1–20 |      2 |\n     * |      21–100 |     40 |\n     * | 101 or more |     80 |\n     * | all symbols |     80 |\n     *\n     * @summary WebSocket 24hr ticker price change statistics\n     * @param {Ticker24hrRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<Ticker24hrResponse>}\n     * @memberof MarketApiInterface\n     */\n    ticker24hr(\n        requestParameters?: Ticker24hrRequest\n    ): Promise<WebsocketApiResponse<Ticker24hrResponse>>;\n\n    /**\n     * Get the current best price and quantity on the order book.\n     *\n     * If you need access to real-time order book ticker updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@bookTicker`\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Parameter | Weight |\n     * | --------- |:------:|\n     * | `symbol`  |      2 |\n     * | `symbols` |      4 |\n     * | none      |      4 |\n     *\n     * @summary WebSocket Symbol order book ticker\n     * @param {TickerBookRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<TickerBookResponse>}\n     * @memberof MarketApiInterface\n     */\n    tickerBook(\n        requestParameters?: TickerBookRequest\n    ): Promise<WebsocketApiResponse<TickerBookResponse>>;\n\n    /**\n     * Get the latest market price for a symbol.\n     *\n     * If you need access to real-time price updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@aggTrade`\n     * `<symbol>@trade`\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Parameter | Weight |\n     * | --------- |:------:|\n     * | `symbol`  |      2 |\n     * | `symbols` |      4 |\n     * | none      |      4 |\n     *\n     * @summary WebSocket Symbol price ticker\n     * @param {TickerPriceRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<TickerPriceResponse>}\n     * @memberof MarketApiInterface\n     */\n    tickerPrice(\n        requestParameters?: TickerPriceRequest\n    ): Promise<WebsocketApiResponse<TickerPriceResponse>>;\n\n    /**\n     * Price change statistics for a trading day.\n     * Weight: 4 for each requested <tt>symbol</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n     *\n     * @summary WebSocket Trading Day Ticker\n     * @param {TickerTradingDayRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<TickerTradingDayResponse>}\n     * @memberof MarketApiInterface\n     */\n    tickerTradingDay(\n        requestParameters?: TickerTradingDayRequest\n    ): Promise<WebsocketApiResponse<TickerTradingDayResponse>>;\n\n    /**\n     * Get aggregate trades.\n     *\n     * An *aggregate trade* (aggtrade) represents one or more individual trades.\n     * Trades that fill at the same time, from the same taker order, with the same price –\n     * those trades are collected into an aggregate trade with total quantity of the individual trades.\n     *\n     * If you need access to real-time trading activity, please consider using WebSocket Streams:\n     *\n     * `<symbol>@aggTrade`\n     *\n     * If you need historical aggregate trade data,\n     * please consider using [data.binance.vision](https://github.com/binance/binance-public-data/#aggtrades).\n     * Weight: 4\n     *\n     * @summary WebSocket Aggregate trades\n     * @param {TradesAggregateRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<TradesAggregateResponse>}\n     * @memberof MarketApiInterface\n     */\n    tradesAggregate(\n        requestParameters: TradesAggregateRequest\n    ): Promise<WebsocketApiResponse<TradesAggregateResponse>>;\n\n    /**\n     * Get historical trades.\n     * Weight: 25\n     *\n     * @summary WebSocket Historical trades\n     * @param {TradesHistoricalRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<TradesHistoricalResponse>}\n     * @memberof MarketApiInterface\n     */\n    tradesHistorical(\n        requestParameters: TradesHistoricalRequest\n    ): Promise<WebsocketApiResponse<TradesHistoricalResponse>>;\n\n    /**\n     * Get recent trades.\n     *\n     * If you need access to real-time trading activity, please consider using WebSocket Streams:\n     *\n     * `<symbol>@trade`\n     * Weight: 25\n     *\n     * @summary WebSocket Recent trades\n     * @param {TradesRecentRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<TradesRecentResponse>}\n     * @memberof MarketApiInterface\n     */\n    tradesRecent(\n        requestParameters: TradesRecentRequest\n    ): Promise<WebsocketApiResponse<TradesRecentResponse>>;\n\n    /**\n     * Get klines (candlestick bars) optimized for presentation.\n     *\n     * This request is similar to `klines`, having the same parameters and response.\n     * `uiKlines` return modified kline data, optimized for presentation of candlestick charts.\n     * Weight: 2\n     *\n     * @summary WebSocket UI Klines\n     * @param {UiKlinesRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<UiKlinesResponse>}\n     * @memberof MarketApiInterface\n     */\n    uiKlines(requestParameters: UiKlinesRequest): Promise<WebsocketApiResponse<UiKlinesResponse>>;\n}\n\n/**\n * Request parameters for avgPrice operation in MarketApi.\n * @interface AvgPriceRequest\n */\nexport interface AvgPriceRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiAvgPrice\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiAvgPrice\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for depth operation in MarketApi.\n * @interface DepthRequest\n */\nexport interface DepthRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiDepth\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiDepth\n     */\n    readonly id?: string;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof MarketApiDepth\n     */\n    readonly limit?: number;\n}\n\n/**\n * Request parameters for klines operation in MarketApi.\n * @interface KlinesRequest\n */\nexport interface KlinesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiKlines\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'1s' | '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '6h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M'}\n     * @memberof MarketApiKlines\n     */\n    readonly interval: KlinesIntervalEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiKlines\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof MarketApiKlines\n     */\n    readonly startTime?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof MarketApiKlines\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 0 (UTC)\n     * @type {string}\n     * @memberof MarketApiKlines\n     */\n    readonly timeZone?: string;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof MarketApiKlines\n     */\n    readonly limit?: number;\n}\n\n/**\n * Request parameters for ticker operation in MarketApi.\n * @interface TickerRequest\n */\nexport interface TickerRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiTicker\n     */\n    readonly id?: string;\n\n    /**\n     * Describe a single symbol\n     * @type {string}\n     * @memberof MarketApiTicker\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTicker\n     */\n    readonly symbols?: Array<string>;\n\n    /**\n     *\n     * @type {'FULL' | 'MINI'}\n     * @memberof MarketApiTicker\n     */\n    readonly type?: TickerTypeEnum;\n\n    /**\n     *\n     * @type {'1m' | '2m' | '3m' | '4m' | '5m' | '6m' | '7m' | '8m' | '9m' | '10m' | '11m' | '12m' | '13m' | '14m' | '15m' | '16m' | '17m' | '18m' | '19m' | '20m' | '21m' | '22m' | '23m' | '24m' | '25m' | '26m' | '27m' | '28m' | '29m' | '30m' | '31m' | '32m' | '33m' | '34m' | '35m' | '36m' | '37m' | '38m' | '39m' | '40m' | '41m' | '42m' | '43m' | '44m' | '45m' | '46m' | '47m' | '48m' | '49m' | '50m' | '51m' | '52m' | '53m' | '54m' | '55m' | '56m' | '57m' | '58m' | '59m' | '1h' | '2h' | '3h' | '4h' | '5h' | '6h' | '7h' | '8h' | '9h' | '10h' | '11h' | '12h' | '13h' | '14h' | '15h' | '16h' | '17h' | '18h' | '19h' | '20h' | '21h' | '22h' | '23h' | '1d' | '2d' | '3d' | '4d' | '5d' | '6d'}\n     * @memberof MarketApiTicker\n     */\n    readonly windowSize?: TickerWindowSizeEnum;\n}\n\n/**\n * Request parameters for ticker24hr operation in MarketApi.\n * @interface Ticker24hrRequest\n */\nexport interface Ticker24hrRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiTicker24hr\n     */\n    readonly id?: string;\n\n    /**\n     * Describe a single symbol\n     * @type {string}\n     * @memberof MarketApiTicker24hr\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTicker24hr\n     */\n    readonly symbols?: Array<string>;\n\n    /**\n     *\n     * @type {'FULL' | 'MINI'}\n     * @memberof MarketApiTicker24hr\n     */\n    readonly type?: Ticker24hrTypeEnum;\n}\n\n/**\n * Request parameters for tickerBook operation in MarketApi.\n * @interface TickerBookRequest\n */\nexport interface TickerBookRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiTickerBook\n     */\n    readonly id?: string;\n\n    /**\n     * Describe a single symbol\n     * @type {string}\n     * @memberof MarketApiTickerBook\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTickerBook\n     */\n    readonly symbols?: Array<string>;\n}\n\n/**\n * Request parameters for tickerPrice operation in MarketApi.\n * @interface TickerPriceRequest\n */\nexport interface TickerPriceRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiTickerPrice\n     */\n    readonly id?: string;\n\n    /**\n     * Describe a single symbol\n     * @type {string}\n     * @memberof MarketApiTickerPrice\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTickerPrice\n     */\n    readonly symbols?: Array<string>;\n}\n\n/**\n * Request parameters for tickerTradingDay operation in MarketApi.\n * @interface TickerTradingDayRequest\n */\nexport interface TickerTradingDayRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiTickerTradingDay\n     */\n    readonly id?: string;\n\n    /**\n     * Describe a single symbol\n     * @type {string}\n     * @memberof MarketApiTickerTradingDay\n     */\n    readonly symbol?: string;\n\n    /**\n     * List of symbols to query\n     * @type {Array<string>}\n     * @memberof MarketApiTickerTradingDay\n     */\n    readonly symbols?: Array<string>;\n\n    /**\n     * Default: 0 (UTC)\n     * @type {string}\n     * @memberof MarketApiTickerTradingDay\n     */\n    readonly timeZone?: string;\n\n    /**\n     *\n     * @type {'FULL' | 'MINI'}\n     * @memberof MarketApiTickerTradingDay\n     */\n    readonly type?: TickerTradingDayTypeEnum;\n}\n\n/**\n * Request parameters for tradesAggregate operation in MarketApi.\n * @interface TradesAggregateRequest\n */\nexport interface TradesAggregateRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiTradesAggregate\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiTradesAggregate\n     */\n    readonly id?: string;\n\n    /**\n     * Aggregate trade ID to begin at\n     * @type {number}\n     * @memberof MarketApiTradesAggregate\n     */\n    readonly fromId?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof MarketApiTradesAggregate\n     */\n    readonly startTime?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof MarketApiTradesAggregate\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof MarketApiTradesAggregate\n     */\n    readonly limit?: number;\n}\n\n/**\n * Request parameters for tradesHistorical operation in MarketApi.\n * @interface TradesHistoricalRequest\n */\nexport interface TradesHistoricalRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiTradesHistorical\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiTradesHistorical\n     */\n    readonly id?: string;\n\n    /**\n     * Aggregate trade ID to begin at\n     * @type {number}\n     * @memberof MarketApiTradesHistorical\n     */\n    readonly fromId?: number;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof MarketApiTradesHistorical\n     */\n    readonly limit?: number;\n}\n\n/**\n * Request parameters for tradesRecent operation in MarketApi.\n * @interface TradesRecentRequest\n */\nexport interface TradesRecentRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiTradesRecent\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiTradesRecent\n     */\n    readonly id?: string;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof MarketApiTradesRecent\n     */\n    readonly limit?: number;\n}\n\n/**\n * Request parameters for uiKlines operation in MarketApi.\n * @interface UiKlinesRequest\n */\nexport interface UiKlinesRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof MarketApiUiKlines\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'1s' | '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '6h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M'}\n     * @memberof MarketApiUiKlines\n     */\n    readonly interval: UiKlinesIntervalEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof MarketApiUiKlines\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof MarketApiUiKlines\n     */\n    readonly startTime?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof MarketApiUiKlines\n     */\n    readonly endTime?: number;\n\n    /**\n     * Default: 0 (UTC)\n     * @type {string}\n     * @memberof MarketApiUiKlines\n     */\n    readonly timeZone?: string;\n\n    /**\n     * Default: 100; Maximum: 5000\n     * @type {number}\n     * @memberof MarketApiUiKlines\n     */\n    readonly limit?: number;\n}\n\n/**\n * MarketApi - object-oriented interface\n * @class MarketApi\n * @extends {WebsocketAPIBase}\n */\nexport class MarketApi implements MarketApiInterface {\n    private readonly websocketBase: WebsocketAPIBase;\n\n    constructor(websocketBase: WebsocketAPIBase) {\n        this.websocketBase = websocketBase;\n    }\n\n    /**\n     * Get current average price for a symbol.\n     * Weight: 2\n     *\n     * @summary WebSocket Current average price\n     * @param {AvgPriceRequest} requestParameters Request parameters.\n     * @returns {Promise<AvgPriceResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#current-average-price Binance API Documentation}\n     */\n    public avgPrice(\n        requestParameters: AvgPriceRequest\n    ): Promise<WebsocketApiResponse<AvgPriceResponse>> {\n        return this.websocketBase.sendMessage<AvgPriceResponse>(\n            '/avgPrice'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get current order book.\n     *\n     * Note that this request returns limited market depth.\n     *\n     * If you need to continuously monitor order book updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@depth<levels>`\n     * `<symbol>@depth`\n     *\n     * You can use `depth` request together with `<symbol>@depth` streams to [maintain a local order book](web-socket-streams.md#how-to-manage-a-local-order-book-correctly).\n     * Weight: Adjusted based on the limit:\n     *\n     * |  Limit    | Weight |\n     * |:---------:|:------:|\n     * |     1–100 |      5 |\n     * |   101–500 |      25|\n     * |  501–1000 |     50 |\n     * | 1001–5000 |     250 |\n     *\n     * @summary WebSocket Order book\n     * @param {DepthRequest} requestParameters Request parameters.\n     * @returns {Promise<DepthResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#order-book Binance API Documentation}\n     */\n    public depth(requestParameters: DepthRequest): Promise<WebsocketApiResponse<DepthResponse>> {\n        return this.websocketBase.sendMessage<DepthResponse>(\n            '/depth'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get klines (candlestick bars).\n     *\n     * Klines are uniquely identified by their open & close time.\n     *\n     * If you need access to real-time kline updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@kline_<interval>`\n     *\n     * If you need historical kline data,\n     * please consider using [data.binance.vision](https://github.com/binance/binance-public-data/#klines).\n     * Weight: 2\n     *\n     * @summary WebSocket Klines\n     * @param {KlinesRequest} requestParameters Request parameters.\n     * @returns {Promise<KlinesResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#klines Binance API Documentation}\n     */\n    public klines(requestParameters: KlinesRequest): Promise<WebsocketApiResponse<KlinesResponse>> {\n        return this.websocketBase.sendMessage<KlinesResponse>(\n            '/klines'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get rolling window price change statistics with a custom window.\n     *\n     * This request is similar to `ticker.24hr`,\n     * but statistics are computed on demand using the arbitrary window you specify.\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Symbols | Weight |\n     * |:-------:|:------:|\n     * |    1–50 | 4 per symbol |\n     * |  51–100 |    200 |\n     *\n     * @summary WebSocket Rolling window price change statistics\n     * @param {TickerRequest} requestParameters Request parameters.\n     * @returns {Promise<TickerResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#rolling-window-price-change-statistics Binance API Documentation}\n     */\n    public ticker(\n        requestParameters: TickerRequest = {}\n    ): Promise<WebsocketApiResponse<TickerResponse>> {\n        return this.websocketBase.sendMessage<TickerResponse>(\n            '/ticker'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get 24-hour rolling window price change statistics.\n     *\n     * If you need to continuously monitor trading statistics, please consider using WebSocket Streams:\n     *\n     * `<symbol>@ticker` or `!ticker@arr`\n     * `<symbol>@miniTicker` or `!miniTicker@arr`\n     *\n     * If you need different window sizes,\n     * use the `ticker` request.\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Symbols     | Weight |\n     * |:-----------:|:------:|\n     * |        1–20 |      2 |\n     * |      21–100 |     40 |\n     * | 101 or more |     80 |\n     * | all symbols |     80 |\n     *\n     * @summary WebSocket 24hr ticker price change statistics\n     * @param {Ticker24hrRequest} requestParameters Request parameters.\n     * @returns {Promise<Ticker24hrResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#24hr-ticker-price-change-statistics Binance API Documentation}\n     */\n    public ticker24hr(\n        requestParameters: Ticker24hrRequest = {}\n    ): Promise<WebsocketApiResponse<Ticker24hrResponse>> {\n        return this.websocketBase.sendMessage<Ticker24hrResponse>(\n            '/ticker.24hr'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get the current best price and quantity on the order book.\n     *\n     * If you need access to real-time order book ticker updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@bookTicker`\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Parameter | Weight |\n     * | --------- |:------:|\n     * | `symbol`  |      2 |\n     * | `symbols` |      4 |\n     * | none      |      4 |\n     *\n     * @summary WebSocket Symbol order book ticker\n     * @param {TickerBookRequest} requestParameters Request parameters.\n     * @returns {Promise<TickerBookResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#symbol-order-book-ticker Binance API Documentation}\n     */\n    public tickerBook(\n        requestParameters: TickerBookRequest = {}\n    ): Promise<WebsocketApiResponse<TickerBookResponse>> {\n        return this.websocketBase.sendMessage<TickerBookResponse>(\n            '/ticker.book'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get the latest market price for a symbol.\n     *\n     * If you need access to real-time price updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@aggTrade`\n     * `<symbol>@trade`\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Parameter | Weight |\n     * | --------- |:------:|\n     * | `symbol`  |      2 |\n     * | `symbols` |      4 |\n     * | none      |      4 |\n     *\n     * @summary WebSocket Symbol price ticker\n     * @param {TickerPriceRequest} requestParameters Request parameters.\n     * @returns {Promise<TickerPriceResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#symbol-price-ticker Binance API Documentation}\n     */\n    public tickerPrice(\n        requestParameters: TickerPriceRequest = {}\n    ): Promise<WebsocketApiResponse<TickerPriceResponse>> {\n        return this.websocketBase.sendMessage<TickerPriceResponse>(\n            '/ticker.price'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Price change statistics for a trading day.\n     * Weight: 4 for each requested <tt>symbol</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n     *\n     * @summary WebSocket Trading Day Ticker\n     * @param {TickerTradingDayRequest} requestParameters Request parameters.\n     * @returns {Promise<TickerTradingDayResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#trading-day-ticker Binance API Documentation}\n     */\n    public tickerTradingDay(\n        requestParameters: TickerTradingDayRequest = {}\n    ): Promise<WebsocketApiResponse<TickerTradingDayResponse>> {\n        return this.websocketBase.sendMessage<TickerTradingDayResponse>(\n            '/ticker.tradingDay'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get aggregate trades.\n     *\n     * An *aggregate trade* (aggtrade) represents one or more individual trades.\n     * Trades that fill at the same time, from the same taker order, with the same price –\n     * those trades are collected into an aggregate trade with total quantity of the individual trades.\n     *\n     * If you need access to real-time trading activity, please consider using WebSocket Streams:\n     *\n     * `<symbol>@aggTrade`\n     *\n     * If you need historical aggregate trade data,\n     * please consider using [data.binance.vision](https://github.com/binance/binance-public-data/#aggtrades).\n     * Weight: 4\n     *\n     * @summary WebSocket Aggregate trades\n     * @param {TradesAggregateRequest} requestParameters Request parameters.\n     * @returns {Promise<TradesAggregateResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#aggregate-trades Binance API Documentation}\n     */\n    public tradesAggregate(\n        requestParameters: TradesAggregateRequest\n    ): Promise<WebsocketApiResponse<TradesAggregateResponse>> {\n        return this.websocketBase.sendMessage<TradesAggregateResponse>(\n            '/trades.aggregate'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get historical trades.\n     * Weight: 25\n     *\n     * @summary WebSocket Historical trades\n     * @param {TradesHistoricalRequest} requestParameters Request parameters.\n     * @returns {Promise<TradesHistoricalResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#historical-trades Binance API Documentation}\n     */\n    public tradesHistorical(\n        requestParameters: TradesHistoricalRequest\n    ): Promise<WebsocketApiResponse<TradesHistoricalResponse>> {\n        return this.websocketBase.sendMessage<TradesHistoricalResponse>(\n            '/trades.historical'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get recent trades.\n     *\n     * If you need access to real-time trading activity, please consider using WebSocket Streams:\n     *\n     * `<symbol>@trade`\n     * Weight: 25\n     *\n     * @summary WebSocket Recent trades\n     * @param {TradesRecentRequest} requestParameters Request parameters.\n     * @returns {Promise<TradesRecentResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#recent-trades Binance API Documentation}\n     */\n    public tradesRecent(\n        requestParameters: TradesRecentRequest\n    ): Promise<WebsocketApiResponse<TradesRecentResponse>> {\n        return this.websocketBase.sendMessage<TradesRecentResponse>(\n            '/trades.recent'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Get klines (candlestick bars) optimized for presentation.\n     *\n     * This request is similar to `klines`, having the same parameters and response.\n     * `uiKlines` return modified kline data, optimized for presentation of candlestick charts.\n     * Weight: 2\n     *\n     * @summary WebSocket UI Klines\n     * @param {UiKlinesRequest} requestParameters Request parameters.\n     * @returns {Promise<UiKlinesResponse>}\n     * @memberof MarketApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#ui-klines Binance API Documentation}\n     */\n    public uiKlines(\n        requestParameters: UiKlinesRequest\n    ): Promise<WebsocketApiResponse<UiKlinesResponse>> {\n        return this.websocketBase.sendMessage<UiKlinesResponse>(\n            '/uiKlines'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n}\n\nexport enum KlinesIntervalEnum {\n    INTERVAL_1s = '1s',\n    INTERVAL_1m = '1m',\n    INTERVAL_3m = '3m',\n    INTERVAL_5m = '5m',\n    INTERVAL_15m = '15m',\n    INTERVAL_30m = '30m',\n    INTERVAL_1h = '1h',\n    INTERVAL_2h = '2h',\n    INTERVAL_4h = '4h',\n    INTERVAL_6h = '6h',\n    INTERVAL_8h = '8h',\n    INTERVAL_12h = '12h',\n    INTERVAL_1d = '1d',\n    INTERVAL_3d = '3d',\n    INTERVAL_1w = '1w',\n    INTERVAL_1M = '1M',\n}\n\nexport enum TickerTypeEnum {\n    FULL = 'FULL',\n    MINI = 'MINI',\n}\n\nexport enum TickerWindowSizeEnum {\n    WINDOW_SIZE_1m = '1m',\n    WINDOW_SIZE_2m = '2m',\n    WINDOW_SIZE_3m = '3m',\n    WINDOW_SIZE_4m = '4m',\n    WINDOW_SIZE_5m = '5m',\n    WINDOW_SIZE_6m = '6m',\n    WINDOW_SIZE_7m = '7m',\n    WINDOW_SIZE_8m = '8m',\n    WINDOW_SIZE_9m = '9m',\n    WINDOW_SIZE_10m = '10m',\n    WINDOW_SIZE_11m = '11m',\n    WINDOW_SIZE_12m = '12m',\n    WINDOW_SIZE_13m = '13m',\n    WINDOW_SIZE_14m = '14m',\n    WINDOW_SIZE_15m = '15m',\n    WINDOW_SIZE_16m = '16m',\n    WINDOW_SIZE_17m = '17m',\n    WINDOW_SIZE_18m = '18m',\n    WINDOW_SIZE_19m = '19m',\n    WINDOW_SIZE_20m = '20m',\n    WINDOW_SIZE_21m = '21m',\n    WINDOW_SIZE_22m = '22m',\n    WINDOW_SIZE_23m = '23m',\n    WINDOW_SIZE_24m = '24m',\n    WINDOW_SIZE_25m = '25m',\n    WINDOW_SIZE_26m = '26m',\n    WINDOW_SIZE_27m = '27m',\n    WINDOW_SIZE_28m = '28m',\n    WINDOW_SIZE_29m = '29m',\n    WINDOW_SIZE_30m = '30m',\n    WINDOW_SIZE_31m = '31m',\n    WINDOW_SIZE_32m = '32m',\n    WINDOW_SIZE_33m = '33m',\n    WINDOW_SIZE_34m = '34m',\n    WINDOW_SIZE_35m = '35m',\n    WINDOW_SIZE_36m = '36m',\n    WINDOW_SIZE_37m = '37m',\n    WINDOW_SIZE_38m = '38m',\n    WINDOW_SIZE_39m = '39m',\n    WINDOW_SIZE_40m = '40m',\n    WINDOW_SIZE_41m = '41m',\n    WINDOW_SIZE_42m = '42m',\n    WINDOW_SIZE_43m = '43m',\n    WINDOW_SIZE_44m = '44m',\n    WINDOW_SIZE_45m = '45m',\n    WINDOW_SIZE_46m = '46m',\n    WINDOW_SIZE_47m = '47m',\n    WINDOW_SIZE_48m = '48m',\n    WINDOW_SIZE_49m = '49m',\n    WINDOW_SIZE_50m = '50m',\n    WINDOW_SIZE_51m = '51m',\n    WINDOW_SIZE_52m = '52m',\n    WINDOW_SIZE_53m = '53m',\n    WINDOW_SIZE_54m = '54m',\n    WINDOW_SIZE_55m = '55m',\n    WINDOW_SIZE_56m = '56m',\n    WINDOW_SIZE_57m = '57m',\n    WINDOW_SIZE_58m = '58m',\n    WINDOW_SIZE_59m = '59m',\n    WINDOW_SIZE_1h = '1h',\n    WINDOW_SIZE_2h = '2h',\n    WINDOW_SIZE_3h = '3h',\n    WINDOW_SIZE_4h = '4h',\n    WINDOW_SIZE_5h = '5h',\n    WINDOW_SIZE_6h = '6h',\n    WINDOW_SIZE_7h = '7h',\n    WINDOW_SIZE_8h = '8h',\n    WINDOW_SIZE_9h = '9h',\n    WINDOW_SIZE_10h = '10h',\n    WINDOW_SIZE_11h = '11h',\n    WINDOW_SIZE_12h = '12h',\n    WINDOW_SIZE_13h = '13h',\n    WINDOW_SIZE_14h = '14h',\n    WINDOW_SIZE_15h = '15h',\n    WINDOW_SIZE_16h = '16h',\n    WINDOW_SIZE_17h = '17h',\n    WINDOW_SIZE_18h = '18h',\n    WINDOW_SIZE_19h = '19h',\n    WINDOW_SIZE_20h = '20h',\n    WINDOW_SIZE_21h = '21h',\n    WINDOW_SIZE_22h = '22h',\n    WINDOW_SIZE_23h = '23h',\n    WINDOW_SIZE_1d = '1d',\n    WINDOW_SIZE_2d = '2d',\n    WINDOW_SIZE_3d = '3d',\n    WINDOW_SIZE_4d = '4d',\n    WINDOW_SIZE_5d = '5d',\n    WINDOW_SIZE_6d = '6d',\n}\n\nexport enum Ticker24hrTypeEnum {\n    FULL = 'FULL',\n    MINI = 'MINI',\n}\n\nexport enum TickerTradingDayTypeEnum {\n    FULL = 'FULL',\n    MINI = 'MINI',\n}\n\nexport enum UiKlinesIntervalEnum {\n    INTERVAL_1s = '1s',\n    INTERVAL_1m = '1m',\n    INTERVAL_3m = '3m',\n    INTERVAL_5m = '5m',\n    INTERVAL_15m = '15m',\n    INTERVAL_30m = '30m',\n    INTERVAL_1h = '1h',\n    INTERVAL_2h = '2h',\n    INTERVAL_4h = '4h',\n    INTERVAL_6h = '6h',\n    INTERVAL_8h = '8h',\n    INTERVAL_12h = '12h',\n    INTERVAL_1d = '1d',\n    INTERVAL_3d = '3d',\n    INTERVAL_1w = '1w',\n    INTERVAL_1M = '1M',\n}\n","/**\n * Binance Spot WebSocket API\n *\n * OpenAPI Specifications for the Binance Spot WebSocket API\n *\n * API documents:\n * - [Github web-socket-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md)\n * - [General API information for web-socket-api on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { WebsocketAPIBase, WebsocketApiResponse, WebsocketSendMsgOptions } from '@binance/common';\nimport type {\n    OpenOrdersCancelAllResponse,\n    OrderAmendKeepPriorityResponse,\n    OrderCancelReplaceResponse,\n    OrderCancelResponse,\n    OrderListCancelResponse,\n    OrderListPlaceOcoResponse,\n    OrderListPlaceOtoResponse,\n    OrderListPlaceOtocoResponse,\n    OrderListPlaceResponse,\n    OrderPlaceResponse,\n    OrderTestResponse,\n    SorOrderPlaceResponse,\n    SorOrderTestResponse,\n} from '../types';\n\n/**\n * TradeApi - interface\n *\n * @interface TradeApi\n */\nexport interface TradeApiInterface {\n    /**\n     * Cancel all open orders on a symbol.\n     * This includes orders that are part of an order list.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel open orders\n     * @param {OpenOrdersCancelAllRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OpenOrdersCancelAllResponse>}\n     * @memberof TradeApiInterface\n     */\n    openOrdersCancelAll(\n        requestParameters: OpenOrdersCancelAllRequest\n    ): Promise<WebsocketApiResponse<OpenOrdersCancelAllResponse>>;\n\n    /**\n     * Reduce the quantity of an existing open order.\n     *\n     * This adds 0 orders to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [Order Amend Keep Priority FAQ](faqs/order_amend_keep_priority.md) to learn more.\n     * Weight: 4\n     *\n     * @summary WebSocket Order Amend Keep Priority\n     * @param {OrderAmendKeepPriorityRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderAmendKeepPriorityResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderAmendKeepPriority(\n        requestParameters: OrderAmendKeepPriorityRequest\n    ): Promise<WebsocketApiResponse<OrderAmendKeepPriorityResponse>>;\n\n    /**\n     * Cancel an active order.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel order\n     * @param {OrderCancelRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderCancelResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderCancel(\n        requestParameters: OrderCancelRequest\n    ): Promise<WebsocketApiResponse<OrderCancelResponse>>;\n\n    /**\n     * Cancel an existing order and immediately place a new order instead of the canceled one.\n     *\n     * A new order that was not attempted (i.e. when `newOrderResult: NOT_ATTEMPTED`), will still increase the unfilled order count by 1.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel and replace order\n     * @param {OrderCancelReplaceRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderCancelReplaceResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderCancelReplace(\n        requestParameters: OrderCancelReplaceRequest\n    ): Promise<WebsocketApiResponse<OrderCancelReplaceResponse>>;\n\n    /**\n     * Cancel an active order list.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel Order list\n     * @param {OrderListCancelRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderListCancelResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderListCancel(\n        requestParameters: OrderListCancelRequest\n    ): Promise<WebsocketApiResponse<OrderListCancelResponse>>;\n\n    /**\n     * Send in a new one-cancels-the-other (OCO) pair:\n     * `LIMIT_MAKER` + `STOP_LOSS`/`STOP_LOSS_LIMIT` orders (called *legs*),\n     * where activation of one order immediately cancels the other.\n     *\n     * This adds 1 order to `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter\n     * Weight: 1\n     *\n     * Unfilled Order Count: 1\n     *\n     * @summary WebSocket Place new OCO - Deprecated\n     * @param {OrderListPlaceRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderListPlaceResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderListPlace(\n        requestParameters: OrderListPlaceRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceResponse>>;\n\n    /**\n     * Send in an one-cancels-the-other (OCO) pair, where activation of one order immediately cancels the other.\n     *\n     * An OCO has 2 orders called the **above order** and **below order**.\n     * One of the orders must be a `LIMIT_MAKER/TAKE_PROFIT/TAKE_PROFIT_LIMIT` order and the other must be `STOP_LOSS` or `STOP_LOSS_LIMIT` order.\n     * Price restrictions:\n     * If the OCO is on the `SELL` side:\n     * `LIMIT_MAKER/TAKE_PROFIT_LIMIT` `price` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n     * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * If the OCO is on the `BUY` side:\n     * `LIMIT_MAKER` `price` < Last Traded Price < `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n     * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * OCOs add **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary WebSocket Place new Order list - OCO\n     * @param {OrderListPlaceOcoRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderListPlaceOcoResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderListPlaceOco(\n        requestParameters: OrderListPlaceOcoRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceOcoResponse>>;\n\n    /**\n     * Places an OTO.\n     *\n     * An OTO (One-Triggers-the-Other) is an order list comprised of 2 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The second order is called the **pending order**. It can be any order type except for `MARKET` orders using parameter `quoteOrderQty`. The pending order is only placed on the order book when the working order gets **fully filled**.\n     * If either the working order or the pending order is cancelled individually, the other order in the order list will also be canceled or expired.\n     * When the order list is placed, if the working order gets **immediately fully filled**, the placement response will show the working order as `FILLED` but the pending order will still appear as `PENDING_NEW`. You need to query the status of the pending order again to see its updated status.\n     * OTOs add **2 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary WebSocket Place new Order list - OTO\n     * @param {OrderListPlaceOtoRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderListPlaceOtoResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderListPlaceOto(\n        requestParameters: OrderListPlaceOtoRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceOtoResponse>>;\n\n    /**\n     * Place an OTOCO.\n     *\n     * An OTOCO (One-Triggers-One-Cancels-the-Other) is an order list comprised of 3 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The behavior of the working order is the same as the [OTO](#place-new-order-list---oto-trade).\n     * OTOCO has 2 pending orders (pending above and pending below), forming an OCO pair. The pending orders are only placed on the order book when the working order gets **fully filled**.\n     * The rules of the pending above and pending below follow the same rules as the [Order list OCO](#new-order-list---oco-trade).\n     * OTOCOs add **3 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 3\n     *\n     * @summary WebSocket Place new Order list - OTOCO\n     * @param {OrderListPlaceOtocoRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderListPlaceOtocoResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderListPlaceOtoco(\n        requestParameters: OrderListPlaceOtocoRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceOtocoResponse>>;\n\n    /**\n     * Send in a new order.\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * @summary WebSocket Place new order\n     * @param {OrderPlaceRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderPlaceResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderPlace(\n        requestParameters: OrderPlaceRequest\n    ): Promise<WebsocketApiResponse<OrderPlaceResponse>>;\n\n    /**\n     * Test order placement.\n     *\n     * Validates new order parameters and verifies your signature\n     * but does not send the order into the matching engine.\n     * Weight: |Condition| Request Weight|\n     * |------------           | ------------ |\n     * |Without `computeCommissionRates`| 1|\n     * |With `computeCommissionRates`|20|\n     *\n     * @summary WebSocket Test new order\n     * @param {OrderTestRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<OrderTestResponse>}\n     * @memberof TradeApiInterface\n     */\n    orderTest(\n        requestParameters?: OrderTestRequest\n    ): Promise<WebsocketApiResponse<OrderTestResponse>>;\n\n    /**\n     * Places an order using smart order routing (SOR).\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [SOR FAQ](../faqs/sor_faq.md) to learn more.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 1\n     *\n     * @summary WebSocket Place new order using SOR\n     * @param {SorOrderPlaceRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<SorOrderPlaceResponse>}\n     * @memberof TradeApiInterface\n     */\n    sorOrderPlace(\n        requestParameters: SorOrderPlaceRequest\n    ): Promise<WebsocketApiResponse<SorOrderPlaceResponse>>;\n\n    /**\n     * Test new order creation and signature/recvWindow using smart order routing (SOR).\n     * Creates and validates a new order but does not send it into the matching engine.\n     * Weight: |Condition                       | Request Weight|\n     * |------------                    | ------------ |\n     * |Without `computeCommissionRates`| 1            |\n     * |With `computeCommissionRates`   |20            |\n     *\n     * @summary WebSocket Test new order using SOR\n     * @param {SorOrderTestRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<SorOrderTestResponse>}\n     * @memberof TradeApiInterface\n     */\n    sorOrderTest(\n        requestParameters?: SorOrderTestRequest\n    ): Promise<WebsocketApiResponse<SorOrderTestResponse>>;\n}\n\n/**\n * Request parameters for openOrdersCancelAll operation in TradeApi.\n * @interface OpenOrdersCancelAllRequest\n */\nexport interface OpenOrdersCancelAllRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOpenOrdersCancelAll\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOpenOrdersCancelAll\n     */\n    readonly id?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOpenOrdersCancelAll\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderAmendKeepPriority operation in TradeApi.\n * @interface OrderAmendKeepPriorityRequest\n */\nexport interface OrderAmendKeepPriorityRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly symbol: string;\n\n    /**\n     * `newQty` must be greater than 0 and less than the order's quantity.\n     * @type {number}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly newQty: number;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly id?: string;\n\n    /**\n     * `orderId`or`origClientOrderId`mustbesent\n     * @type {number}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly orderId?: number;\n\n    /**\n     * `orderId`or`origClientOrderId`mustbesent\n     * @type {string}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly origClientOrderId?: string;\n\n    /**\n     * The new client order ID for the order after being amended. <br> If not sent, one will be randomly generated. <br> It is possible to reuse the current clientOrderId by sending it as the `newClientOrderId`.\n     * @type {string}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderAmendKeepPriority\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderCancel operation in TradeApi.\n * @interface OrderCancelRequest\n */\nexport interface OrderCancelRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderCancel\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderCancel\n     */\n    readonly id?: string;\n\n    /**\n     * Cancel order by orderId\n     * @type {number}\n     * @memberof TradeApiOrderCancel\n     */\n    readonly orderId?: number;\n\n    /**\n     * `orderId`or`origClientOrderId`mustbesent\n     * @type {string}\n     * @memberof TradeApiOrderCancel\n     */\n    readonly origClientOrderId?: string;\n\n    /**\n     * The new client order ID for the order after being amended. <br> If not sent, one will be randomly generated. <br> It is possible to reuse the current clientOrderId by sending it as the `newClientOrderId`.\n     * @type {string}\n     * @memberof TradeApiOrderCancel\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     *\n     * @type {'ONLY_NEW' | 'NEW' | 'ONLY_PARTIALLY_FILLED' | 'PARTIALLY_FILLED'}\n     * @memberof TradeApiOrderCancel\n     */\n    readonly cancelRestrictions?: OrderCancelCancelRestrictionsEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderCancel\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderCancelReplace operation in TradeApi.\n * @interface OrderCancelReplaceRequest\n */\nexport interface OrderCancelReplaceRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'STOP_ON_FAILURE' | 'ALLOW_FAILURE'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelReplaceMode: OrderCancelReplaceCancelReplaceModeEnum;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly side: OrderCancelReplaceSideEnum;\n\n    /**\n     *\n     * @type {'MARKET' | 'LIMIT' | 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly type: OrderCancelReplaceTypeEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly id?: string;\n\n    /**\n     * Cancel order by orderId\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelOrderId?: number;\n\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelOrigClientOrderId?: string;\n\n    /**\n     * New ID for the canceled order. Automatically generated if not sent\n     * @type {string}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelNewClientOrderId?: string;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly timeInForce?: OrderCancelReplaceTimeInForceEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly price?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly quantity?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly quoteOrderQty?: number;\n\n    /**\n     * The new client order ID for the order after being amended. <br> If not sent, one will be randomly generated. <br> It is possible to reuse the current clientOrderId by sending it as the `newClientOrderId`.\n     * @type {string}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly newOrderRespType?: OrderCancelReplaceNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly stopPrice?: number;\n\n    /**\n     * See Trailing Stop order FAQ\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly trailingDelta?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly icebergQty?: number;\n\n    /**\n     * Arbitrary numeric value identifying the order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly strategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the order strategy.\n     * Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly strategyType?: number;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly selfTradePreventionMode?: OrderCancelReplaceSelfTradePreventionModeEnum;\n\n    /**\n     *\n     * @type {'ONLY_NEW' | 'NEW' | 'ONLY_PARTIALLY_FILLED' | 'PARTIALLY_FILLED'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly cancelRestrictions?: OrderCancelReplaceCancelRestrictionsEnum;\n\n    /**\n     *\n     * @type {'DO_NOTHING' | 'CANCEL_ONLY'}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly orderRateLimitExceededMode?: OrderCancelReplaceOrderRateLimitExceededModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderCancelReplace\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderListCancel operation in TradeApi.\n * @interface OrderListCancelRequest\n */\nexport interface OrderListCancelRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListCancel\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderListCancel\n     */\n    readonly id?: string;\n\n    /**\n     * Cancel order list by orderListId\n     * @type {number}\n     * @memberof TradeApiOrderListCancel\n     */\n    readonly orderListId?: number;\n\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListCancel\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     * The new client order ID for the order after being amended. <br> If not sent, one will be randomly generated. <br> It is possible to reuse the current clientOrderId by sending it as the `newClientOrderId`.\n     * @type {string}\n     * @memberof TradeApiOrderListCancel\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderListCancel\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderListPlace operation in TradeApi.\n * @interface OrderListPlaceRequest\n */\nexport interface OrderListPlaceRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly side: OrderListPlaceSideEnum;\n\n    /**\n     * Price for the limit order\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly price: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly quantity: number;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     * Arbitrary unique ID among open orders for the limit order. Automatically generated if not sent\n     * @type {string}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly limitClientOrderId?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly limitIcebergQty?: number;\n\n    /**\n     * Arbitrary numeric value identifying the limit order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly limitStrategyId?: number;\n\n    /**\n     * <p>Arbitrary numeric value identifying the limit order strategy.</p><p>Values smaller than `1000000` are reserved and cannot be used.</p>\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly limitStrategyType?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly stopPrice?: number;\n\n    /**\n     * See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md)\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly trailingDelta?: number;\n\n    /**\n     * Arbitrary unique ID among open orders for the stop order. Automatically generated if not sent\n     * @type {string}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly stopClientOrderId?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly stopLimitPrice?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'FOK' | 'IOC'}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly stopLimitTimeInForce?: OrderListPlaceStopLimitTimeInForceEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly stopIcebergQty?: number;\n\n    /**\n     * Arbitrary numeric value identifying the stop order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly stopStrategyId?: number;\n\n    /**\n     * <p>Arbitrary numeric value identifying the stop order strategy.</p><p>Values smaller than `1000000` are reserved and cannot be used.</p>\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly stopStrategyType?: number;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly newOrderRespType?: OrderListPlaceNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly selfTradePreventionMode?: OrderListPlaceSelfTradePreventionModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderListPlace\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderListPlaceOco operation in TradeApi.\n * @interface OrderListPlaceOcoRequest\n */\nexport interface OrderListPlaceOcoRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly side: OrderListPlaceOcoSideEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly quantity: number;\n\n    /**\n     *\n     * @type {'STOP_LOSS_LIMIT' | 'STOP_LOSS' | 'LIMIT_MAKER' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly aboveType: OrderListPlaceOcoAboveTypeEnum;\n\n    /**\n     *\n     * @type {'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly belowType: OrderListPlaceOcoBelowTypeEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     * Arbitrary unique ID among open orders for the above order. Automatically generated if not sent\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly aboveClientOrderId?: string;\n\n    /**\n     * Note that this can only be used if `aboveTimeInForce` is `GTC`.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly aboveIcebergQty?: number;\n\n    /**\n     * Can be used if `aboveType` is `STOP_LOSS_LIMIT` , `LIMIT_MAKER`, or `TAKE_PROFIT_LIMIT` to specify the limit price.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly abovePrice?: number;\n\n    /**\n     * Can be used if `aboveType` is `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, `TAKE_PROFIT_LIMIT`. <br>Either `aboveStopPrice` or `aboveTrailingDelta` or both, must be specified.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly aboveStopPrice?: number;\n\n    /**\n     * See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly aboveTrailingDelta?: number;\n\n    /**\n     * Required if `aboveType` is `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT`.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly aboveTimeInForce?: number;\n\n    /**\n     * Arbitrary numeric value identifying the above order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly aboveStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the above order strategy. <br>Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly aboveStrategyType?: number;\n\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly belowClientOrderId?: string;\n\n    /**\n     * Note that this can only be used if `belowTimeInForce` is `GTC`.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly belowIcebergQty?: number;\n\n    /**\n     * Can be used if `belowType` is `STOP_LOSS_LIMIT` , `LIMIT_MAKER`, or `TAKE_PROFIT_LIMIT` to specify the limit price.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly belowPrice?: number;\n\n    /**\n     * Can be used if `belowType` is `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT` or `TAKE_PROFIT_LIMIT`. <br>Either `belowStopPrice` or `belowTrailingDelta` or both, must be specified.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly belowStopPrice?: number;\n\n    /**\n     * See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md).\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly belowTrailingDelta?: number;\n\n    /**\n     *\n     * @type {'belowType' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly belowTimeInForce?: OrderListPlaceOcoBelowTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the below order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly belowStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the below order strategy. <br>Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly belowStrategyType?: number;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly newOrderRespType?: OrderListPlaceOcoNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly selfTradePreventionMode?: OrderListPlaceOcoSelfTradePreventionModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOco\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderListPlaceOto operation in TradeApi.\n * @interface OrderListPlaceOtoRequest\n */\nexport interface OrderListPlaceOtoRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'LIMIT' | 'LIMIT_MAKER'}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly workingType: OrderListPlaceOtoWorkingTypeEnum;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly workingSide: OrderListPlaceOtoWorkingSideEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly workingPrice: number;\n\n    /**\n     * Sets the quantity for the working order.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly workingQuantity: number;\n\n    /**\n     *\n     * @type {'LIMIT' | 'MARKET' | 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER'}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingType: OrderListPlaceOtoPendingTypeEnum;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingSide: OrderListPlaceOtoPendingSideEnum;\n\n    /**\n     * Sets the quantity for the pending order.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingQuantity: number;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly newOrderRespType?: OrderListPlaceOtoNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly selfTradePreventionMode?: OrderListPlaceOtoSelfTradePreventionModeEnum;\n\n    /**\n     * Arbitrary unique ID among open orders for the working order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly workingClientOrderId?: string;\n\n    /**\n     * This can only be used if `workingTimeInForce` is `GTC`, or if `workingType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly workingIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly workingTimeInForce?: OrderListPlaceOtoWorkingTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the working order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly workingStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the working order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly workingStrategyType?: number;\n\n    /**\n     * Arbitrary unique ID among open orders for the pending order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingClientOrderId?: string;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingPrice?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingStopPrice?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingTrailingDelta?: number;\n\n    /**\n     * This can only be used if `pendingTimeInForce` is `GTC`, or if `pendingType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingTimeInForce?: OrderListPlaceOtoPendingTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the pending order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the pending order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly pendingStrategyType?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOto\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderListPlaceOtoco operation in TradeApi.\n * @interface OrderListPlaceOtocoRequest\n */\nexport interface OrderListPlaceOtocoRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'LIMIT' | 'LIMIT_MAKER'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly workingType: OrderListPlaceOtocoWorkingTypeEnum;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly workingSide: OrderListPlaceOtocoWorkingSideEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly workingPrice: number;\n\n    /**\n     * Sets the quantity for the working order.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly workingQuantity: number;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingSide: OrderListPlaceOtocoPendingSideEnum;\n\n    /**\n     * Sets the quantity for the pending order.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingQuantity: number;\n\n    /**\n     *\n     * @type {'STOP_LOSS_LIMIT' | 'STOP_LOSS' | 'LIMIT_MAKER' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingAboveType: OrderListPlaceOtocoPendingAboveTypeEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly listClientOrderId?: string;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly newOrderRespType?: OrderListPlaceOtocoNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly selfTradePreventionMode?: OrderListPlaceOtocoSelfTradePreventionModeEnum;\n\n    /**\n     * Arbitrary unique ID among open orders for the working order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly workingClientOrderId?: string;\n\n    /**\n     * This can only be used if `workingTimeInForce` is `GTC`, or if `workingType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly workingIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly workingTimeInForce?: OrderListPlaceOtocoWorkingTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the working order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly workingStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the working order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly workingStrategyType?: number;\n\n    /**\n     * Arbitrary unique ID among open orders for the pending above order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingAboveClientOrderId?: string;\n\n    /**\n     * Can be used if `pendingAboveType` is `STOP_LOSS_LIMIT` , `LIMIT_MAKER`, or `TAKE_PROFIT_LIMIT` to specify the limit price.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingAbovePrice?: number;\n\n    /**\n     * Can be used if `pendingAboveType` is `STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, `TAKE_PROFIT_LIMIT`\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingAboveStopPrice?: number;\n\n    /**\n     * See [Trailing Stop FAQ](faqs/trailing-stop-faq.md)\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingAboveTrailingDelta?: number;\n\n    /**\n     * This can only be used if `pendingAboveTimeInForce` is `GTC` or if `pendingAboveType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingAboveIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingAboveTimeInForce?: OrderListPlaceOtocoPendingAboveTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the pending above order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingAboveStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the pending above order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingAboveStrategyType?: number;\n\n    /**\n     *\n     * @type {'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingBelowType?: OrderListPlaceOtocoPendingBelowTypeEnum;\n\n    /**\n     * Arbitrary unique ID among open orders for the pending below order.<br> Automatically generated if not sent.\n     * @type {string}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingBelowClientOrderId?: string;\n\n    /**\n     * Can be used if `pendingBelowType` is `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT` to specify the limit price.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingBelowPrice?: number;\n\n    /**\n     * Can be used if `pendingBelowType` is `STOP_LOSS`, `STOP_LOSS_LIMIT, TAKE_PROFIT or TAKE_PROFIT_LIMIT`. <br>Either `pendingBelowStopPrice` or `pendingBelowTrailingDelta` or both, must be specified.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingBelowStopPrice?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingBelowTrailingDelta?: number;\n\n    /**\n     * This can only be used if `pendingBelowTimeInForce` is `GTC`, or if `pendingBelowType` is `LIMIT_MAKER`.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingBelowIcebergQty?: number;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK'}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingBelowTimeInForce?: OrderListPlaceOtocoPendingBelowTimeInForceEnum;\n\n    /**\n     * Arbitrary numeric value identifying the pending below order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingBelowStrategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the pending below order strategy. <br> Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly pendingBelowStrategyType?: number;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderListPlaceOtoco\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderPlace operation in TradeApi.\n * @interface OrderPlaceRequest\n */\nexport interface OrderPlaceRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly side: OrderPlaceSideEnum;\n\n    /**\n     *\n     * @type {'MARKET' | 'LIMIT' | 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly type: OrderPlaceTypeEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly timeInForce?: OrderPlaceTimeInForceEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly price?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly quantity?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly quoteOrderQty?: number;\n\n    /**\n     * The new client order ID for the order after being amended. <br> If not sent, one will be randomly generated. <br> It is possible to reuse the current clientOrderId by sending it as the `newClientOrderId`.\n     * @type {string}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly newOrderRespType?: OrderPlaceNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly stopPrice?: number;\n\n    /**\n     * See [Trailing Stop order FAQ](faqs/trailing-stop-faq.md)\n     * @type {number}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly trailingDelta?: number;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly icebergQty?: number;\n\n    /**\n     * Arbitrary numeric value identifying the order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly strategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the order strategy.\n     * Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly strategyType?: number;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly selfTradePreventionMode?: OrderPlaceSelfTradePreventionModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiOrderPlace\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for orderTest operation in TradeApi.\n * @interface OrderTestRequest\n */\nexport interface OrderTestRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiOrderTest\n     */\n    readonly id?: string;\n\n    /**\n     * Default: `false`\n     * @type {boolean}\n     * @memberof TradeApiOrderTest\n     */\n    readonly computeCommissionRates?: boolean;\n}\n\n/**\n * Request parameters for sorOrderPlace operation in TradeApi.\n * @interface SorOrderPlaceRequest\n */\nexport interface SorOrderPlaceRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'BUY' | 'SELL'}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly side: SorOrderPlaceSideEnum;\n\n    /**\n     *\n     * @type {'MARKET' | 'LIMIT' | 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly type: SorOrderPlaceTypeEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly quantity: number;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly id?: string;\n\n    /**\n     *\n     * @type {'GTC' | 'IOC' | 'FOK' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly timeInForce?: SorOrderPlaceTimeInForceEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly price?: number;\n\n    /**\n     * The new client order ID for the order after being amended. <br> If not sent, one will be randomly generated. <br> It is possible to reuse the current clientOrderId by sending it as the `newClientOrderId`.\n     * @type {string}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly newClientOrderId?: string;\n\n    /**\n     *\n     * @type {'ACK' | 'RESULT' | 'FULL' | 'MARKET' | 'LIMIT'}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly newOrderRespType?: SorOrderPlaceNewOrderRespTypeEnum;\n\n    /**\n     *\n     * @type {number}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly icebergQty?: number;\n\n    /**\n     * Arbitrary numeric value identifying the order within an order strategy.\n     * @type {number}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly strategyId?: number;\n\n    /**\n     * Arbitrary numeric value identifying the order strategy.\n     * Values smaller than 1000000 are reserved and cannot be used.\n     * @type {number}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly strategyType?: number;\n\n    /**\n     *\n     * @type {'NONE' | 'EXPIRE_TAKER' | 'EXPIRE_MAKER' | 'EXPIRE_BOTH' | 'DECREMENT' | 'NON_REPRESENTABLE'}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly selfTradePreventionMode?: SorOrderPlaceSelfTradePreventionModeEnum;\n\n    /**\n     * The value cannot be greater than `60000`\n     * @type {number}\n     * @memberof TradeApiSorOrderPlace\n     */\n    readonly recvWindow?: number;\n}\n\n/**\n * Request parameters for sorOrderTest operation in TradeApi.\n * @interface SorOrderTestRequest\n */\nexport interface SorOrderTestRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof TradeApiSorOrderTest\n     */\n    readonly id?: string;\n\n    /**\n     * Default: `false`\n     * @type {boolean}\n     * @memberof TradeApiSorOrderTest\n     */\n    readonly computeCommissionRates?: boolean;\n}\n\n/**\n * TradeApi - object-oriented interface\n * @class TradeApi\n * @extends {WebsocketAPIBase}\n */\nexport class TradeApi implements TradeApiInterface {\n    private readonly websocketBase: WebsocketAPIBase;\n\n    constructor(websocketBase: WebsocketAPIBase) {\n        this.websocketBase = websocketBase;\n    }\n\n    /**\n     * Cancel all open orders on a symbol.\n     * This includes orders that are part of an order list.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel open orders\n     * @param {OpenOrdersCancelAllRequest} requestParameters Request parameters.\n     * @returns {Promise<OpenOrdersCancelAllResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#cancel-open-orders-trade Binance API Documentation}\n     */\n    public openOrdersCancelAll(\n        requestParameters: OpenOrdersCancelAllRequest\n    ): Promise<WebsocketApiResponse<OpenOrdersCancelAllResponse>> {\n        return this.websocketBase.sendMessage<OpenOrdersCancelAllResponse>(\n            '/openOrders.cancelAll'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Reduce the quantity of an existing open order.\n     *\n     * This adds 0 orders to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [Order Amend Keep Priority FAQ](faqs/order_amend_keep_priority.md) to learn more.\n     * Weight: 4\n     *\n     * @summary WebSocket Order Amend Keep Priority\n     * @param {OrderAmendKeepPriorityRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderAmendKeepPriorityResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#order-amend-keep-priority-trade Binance API Documentation}\n     */\n    public orderAmendKeepPriority(\n        requestParameters: OrderAmendKeepPriorityRequest\n    ): Promise<WebsocketApiResponse<OrderAmendKeepPriorityResponse>> {\n        return this.websocketBase.sendMessage<OrderAmendKeepPriorityResponse>(\n            '/order.amend.keepPriority'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Cancel an active order.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel order\n     * @param {OrderCancelRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderCancelResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#cancel-order-trade Binance API Documentation}\n     */\n    public orderCancel(\n        requestParameters: OrderCancelRequest\n    ): Promise<WebsocketApiResponse<OrderCancelResponse>> {\n        return this.websocketBase.sendMessage<OrderCancelResponse>(\n            '/order.cancel'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Cancel an existing order and immediately place a new order instead of the canceled one.\n     *\n     * A new order that was not attempted (i.e. when `newOrderResult: NOT_ATTEMPTED`), will still increase the unfilled order count by 1.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel and replace order\n     * @param {OrderCancelReplaceRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderCancelReplaceResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#cancel-and-replace-order-trade Binance API Documentation}\n     */\n    public orderCancelReplace(\n        requestParameters: OrderCancelReplaceRequest\n    ): Promise<WebsocketApiResponse<OrderCancelReplaceResponse>> {\n        return this.websocketBase.sendMessage<OrderCancelReplaceResponse>(\n            '/order.cancelReplace'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Cancel an active order list.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel Order list\n     * @param {OrderListCancelRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderListCancelResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#cancel-order-list-trade Binance API Documentation}\n     */\n    public orderListCancel(\n        requestParameters: OrderListCancelRequest\n    ): Promise<WebsocketApiResponse<OrderListCancelResponse>> {\n        return this.websocketBase.sendMessage<OrderListCancelResponse>(\n            '/orderList.cancel'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Send in a new one-cancels-the-other (OCO) pair:\n     * `LIMIT_MAKER` + `STOP_LOSS`/`STOP_LOSS_LIMIT` orders (called *legs*),\n     * where activation of one order immediately cancels the other.\n     *\n     * This adds 1 order to `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter\n     * Weight: 1\n     *\n     * Unfilled Order Count: 1\n     *\n     * @summary WebSocket Place new OCO - Deprecated\n     * @param {OrderListPlaceRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderListPlaceResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-oco---deprecated-trade Binance API Documentation}\n     */\n    public orderListPlace(\n        requestParameters: OrderListPlaceRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceResponse>> {\n        return this.websocketBase.sendMessage<OrderListPlaceResponse>(\n            '/orderList.place'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Send in an one-cancels-the-other (OCO) pair, where activation of one order immediately cancels the other.\n     *\n     * An OCO has 2 orders called the **above order** and **below order**.\n     * One of the orders must be a `LIMIT_MAKER/TAKE_PROFIT/TAKE_PROFIT_LIMIT` order and the other must be `STOP_LOSS` or `STOP_LOSS_LIMIT` order.\n     * Price restrictions:\n     * If the OCO is on the `SELL` side:\n     * `LIMIT_MAKER/TAKE_PROFIT_LIMIT` `price` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n     * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * If the OCO is on the `BUY` side:\n     * `LIMIT_MAKER` `price` < Last Traded Price < `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n     * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * OCOs add **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary WebSocket Place new Order list - OCO\n     * @param {OrderListPlaceOcoRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderListPlaceOcoResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-list---oco-trade Binance API Documentation}\n     */\n    public orderListPlaceOco(\n        requestParameters: OrderListPlaceOcoRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceOcoResponse>> {\n        return this.websocketBase.sendMessage<OrderListPlaceOcoResponse>(\n            '/orderList.place.oco'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Places an OTO.\n     *\n     * An OTO (One-Triggers-the-Other) is an order list comprised of 2 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The second order is called the **pending order**. It can be any order type except for `MARKET` orders using parameter `quoteOrderQty`. The pending order is only placed on the order book when the working order gets **fully filled**.\n     * If either the working order or the pending order is cancelled individually, the other order in the order list will also be canceled or expired.\n     * When the order list is placed, if the working order gets **immediately fully filled**, the placement response will show the working order as `FILLED` but the pending order will still appear as `PENDING_NEW`. You need to query the status of the pending order again to see its updated status.\n     * OTOs add **2 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary WebSocket Place new Order list - OTO\n     * @param {OrderListPlaceOtoRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderListPlaceOtoResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-list---oto-trade Binance API Documentation}\n     */\n    public orderListPlaceOto(\n        requestParameters: OrderListPlaceOtoRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceOtoResponse>> {\n        return this.websocketBase.sendMessage<OrderListPlaceOtoResponse>(\n            '/orderList.place.oto'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Place an OTOCO.\n     *\n     * An OTOCO (One-Triggers-One-Cancels-the-Other) is an order list comprised of 3 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The behavior of the working order is the same as the [OTO](#place-new-order-list---oto-trade).\n     * OTOCO has 2 pending orders (pending above and pending below), forming an OCO pair. The pending orders are only placed on the order book when the working order gets **fully filled**.\n     * The rules of the pending above and pending below follow the same rules as the [Order list OCO](#new-order-list---oco-trade).\n     * OTOCOs add **3 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 3\n     *\n     * @summary WebSocket Place new Order list - OTOCO\n     * @param {OrderListPlaceOtocoRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderListPlaceOtocoResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-list---otoco-trade Binance API Documentation}\n     */\n    public orderListPlaceOtoco(\n        requestParameters: OrderListPlaceOtocoRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceOtocoResponse>> {\n        return this.websocketBase.sendMessage<OrderListPlaceOtocoResponse>(\n            '/orderList.place.otoco'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Send in a new order.\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * @summary WebSocket Place new order\n     * @param {OrderPlaceRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderPlaceResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-trade Binance API Documentation}\n     */\n    public orderPlace(\n        requestParameters: OrderPlaceRequest\n    ): Promise<WebsocketApiResponse<OrderPlaceResponse>> {\n        return this.websocketBase.sendMessage<OrderPlaceResponse>(\n            '/order.place'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Test order placement.\n     *\n     * Validates new order parameters and verifies your signature\n     * but does not send the order into the matching engine.\n     * Weight: |Condition| Request Weight|\n     * |------------           | ------------ |\n     * |Without `computeCommissionRates`| 1|\n     * |With `computeCommissionRates`|20|\n     *\n     * @summary WebSocket Test new order\n     * @param {OrderTestRequest} requestParameters Request parameters.\n     * @returns {Promise<OrderTestResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#test-new-order-trade Binance API Documentation}\n     */\n    public orderTest(\n        requestParameters: OrderTestRequest = {}\n    ): Promise<WebsocketApiResponse<OrderTestResponse>> {\n        return this.websocketBase.sendMessage<OrderTestResponse>(\n            '/order.test'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Places an order using smart order routing (SOR).\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [SOR FAQ](../faqs/sor_faq.md) to learn more.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 1\n     *\n     * @summary WebSocket Place new order using SOR\n     * @param {SorOrderPlaceRequest} requestParameters Request parameters.\n     * @returns {Promise<SorOrderPlaceResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-using-sor-trade Binance API Documentation}\n     */\n    public sorOrderPlace(\n        requestParameters: SorOrderPlaceRequest\n    ): Promise<WebsocketApiResponse<SorOrderPlaceResponse>> {\n        return this.websocketBase.sendMessage<SorOrderPlaceResponse>(\n            '/sor.order.place'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n\n    /**\n     * Test new order creation and signature/recvWindow using smart order routing (SOR).\n     * Creates and validates a new order but does not send it into the matching engine.\n     * Weight: |Condition                       | Request Weight|\n     * |------------                    | ------------ |\n     * |Without `computeCommissionRates`| 1            |\n     * |With `computeCommissionRates`   |20            |\n     *\n     * @summary WebSocket Test new order using SOR\n     * @param {SorOrderTestRequest} requestParameters Request parameters.\n     * @returns {Promise<SorOrderTestResponse>}\n     * @memberof TradeApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#test-new-order-using-sor-trade Binance API Documentation}\n     */\n    public sorOrderTest(\n        requestParameters: SorOrderTestRequest = {}\n    ): Promise<WebsocketApiResponse<SorOrderTestResponse>> {\n        return this.websocketBase.sendMessage<SorOrderTestResponse>(\n            '/sor.order.test'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: true, withApiKey: false }\n        );\n    }\n}\n\nexport enum OrderCancelCancelRestrictionsEnum {\n    ONLY_NEW = 'ONLY_NEW',\n    NEW = 'NEW',\n    ONLY_PARTIALLY_FILLED = 'ONLY_PARTIALLY_FILLED',\n    PARTIALLY_FILLED = 'PARTIALLY_FILLED',\n}\n\nexport enum OrderCancelReplaceCancelReplaceModeEnum {\n    STOP_ON_FAILURE = 'STOP_ON_FAILURE',\n    ALLOW_FAILURE = 'ALLOW_FAILURE',\n}\n\nexport enum OrderCancelReplaceSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderCancelReplaceTypeEnum {\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderCancelReplaceTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderCancelReplaceNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderCancelReplaceSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderCancelReplaceCancelRestrictionsEnum {\n    ONLY_NEW = 'ONLY_NEW',\n    NEW = 'NEW',\n    ONLY_PARTIALLY_FILLED = 'ONLY_PARTIALLY_FILLED',\n    PARTIALLY_FILLED = 'PARTIALLY_FILLED',\n}\n\nexport enum OrderCancelReplaceOrderRateLimitExceededModeEnum {\n    DO_NOTHING = 'DO_NOTHING',\n    CANCEL_ONLY = 'CANCEL_ONLY',\n}\n\nexport enum OrderListPlaceSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListPlaceStopLimitTimeInForceEnum {\n    GTC = 'GTC',\n    FOK = 'FOK',\n    IOC = 'IOC',\n}\n\nexport enum OrderListPlaceNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderListPlaceSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderListPlaceOcoSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListPlaceOcoAboveTypeEnum {\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListPlaceOcoBelowTypeEnum {\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListPlaceOcoBelowTimeInForceEnum {\n    belowType = 'belowType',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListPlaceOcoNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderListPlaceOcoSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderListPlaceOtoWorkingTypeEnum {\n    LIMIT = 'LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n}\n\nexport enum OrderListPlaceOtoWorkingSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListPlaceOtoPendingTypeEnum {\n    LIMIT = 'LIMIT',\n    MARKET = 'MARKET',\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n}\n\nexport enum OrderListPlaceOtoPendingSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListPlaceOtoNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderListPlaceOtoSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderListPlaceOtoWorkingTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderListPlaceOtoPendingTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderListPlaceOtocoWorkingTypeEnum {\n    LIMIT = 'LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n}\n\nexport enum OrderListPlaceOtocoWorkingSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListPlaceOtocoPendingSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderListPlaceOtocoPendingAboveTypeEnum {\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListPlaceOtocoNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderListPlaceOtocoSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderListPlaceOtocoWorkingTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderListPlaceOtocoPendingAboveTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderListPlaceOtocoPendingBelowTypeEnum {\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n}\n\nexport enum OrderListPlaceOtocoPendingBelowTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n}\n\nexport enum OrderPlaceSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum OrderPlaceTypeEnum {\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderPlaceTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum OrderPlaceNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum OrderPlaceSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum SorOrderPlaceSideEnum {\n    BUY = 'BUY',\n    SELL = 'SELL',\n}\n\nexport enum SorOrderPlaceTypeEnum {\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n    STOP_LOSS = 'STOP_LOSS',\n    STOP_LOSS_LIMIT = 'STOP_LOSS_LIMIT',\n    TAKE_PROFIT = 'TAKE_PROFIT',\n    TAKE_PROFIT_LIMIT = 'TAKE_PROFIT_LIMIT',\n    LIMIT_MAKER = 'LIMIT_MAKER',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum SorOrderPlaceTimeInForceEnum {\n    GTC = 'GTC',\n    IOC = 'IOC',\n    FOK = 'FOK',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n\nexport enum SorOrderPlaceNewOrderRespTypeEnum {\n    ACK = 'ACK',\n    RESULT = 'RESULT',\n    FULL = 'FULL',\n    MARKET = 'MARKET',\n    LIMIT = 'LIMIT',\n}\n\nexport enum SorOrderPlaceSelfTradePreventionModeEnum {\n    NONE = 'NONE',\n    EXPIRE_TAKER = 'EXPIRE_TAKER',\n    EXPIRE_MAKER = 'EXPIRE_MAKER',\n    EXPIRE_BOTH = 'EXPIRE_BOTH',\n    DECREMENT = 'DECREMENT',\n    NON_REPRESENTABLE = 'NON_REPRESENTABLE',\n}\n","/**\n * Binance Spot WebSocket API\n *\n * OpenAPI Specifications for the Binance Spot WebSocket API\n *\n * API documents:\n * - [Github web-socket-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md)\n * - [General API information for web-socket-api on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { WebsocketAPIBase, WebsocketApiResponse, WebsocketSendMsgOptions } from '@binance/common';\nimport type {\n    UserDataStreamPingResponse,\n    UserDataStreamStartResponse,\n    UserDataStreamStopResponse,\n    UserDataStreamSubscribeResponse,\n    UserDataStreamUnsubscribeResponse,\n} from '../types';\n\n/**\n * UserDataStreamApi - interface\n *\n * @interface UserDataStreamApi\n */\nexport interface UserDataStreamApiInterface {\n    /**\n     * Ping a user data stream to keep it alive.\n     *\n     * User data streams close automatically after 60 minutes,\n     * even if you're listening to them on WebSocket Streams.\n     * In order to keep the stream open, you have to regularly send pings using the `userDataStream.ping` request.\n     *\n     * It is recommended to send a ping once every 30 minutes.\n     * Weight: 2\n     *\n     * @summary WebSocket Ping user data stream\n     * @param {UserDataStreamPingRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<UserDataStreamPingResponse>}\n     * @memberof UserDataStreamApiInterface\n     */\n    userDataStreamPing(\n        requestParameters: UserDataStreamPingRequest\n    ): Promise<WebsocketApiResponse<UserDataStreamPingResponse>>;\n\n    /**\n     * Start a new user data stream.\n     * Weight: 2\n     *\n     * @summary WebSocket Start user data stream\n     * @param {UserDataStreamStartRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<UserDataStreamStartResponse>}\n     * @memberof UserDataStreamApiInterface\n     */\n    userDataStreamStart(\n        requestParameters?: UserDataStreamStartRequest\n    ): Promise<WebsocketApiResponse<UserDataStreamStartResponse>>;\n\n    /**\n     * Explicitly stop and close the user data stream.\n     * Weight: 2\n     *\n     * @summary WebSocket Stop user data stream\n     * @param {UserDataStreamStopRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<UserDataStreamStopResponse>}\n     * @memberof UserDataStreamApiInterface\n     */\n    userDataStreamStop(\n        requestParameters: UserDataStreamStopRequest\n    ): Promise<WebsocketApiResponse<UserDataStreamStopResponse>>;\n\n    /**\n     * Subscribe to the User Data Stream in the current WebSocket connection.\n     * Weight: 2\n     *\n     * @summary WebSocket Subscribe to User Data Stream\n     * @param {UserDataStreamSubscribeRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<UserDataStreamSubscribeResponse>}\n     * @memberof UserDataStreamApiInterface\n     */\n    userDataStreamSubscribe(\n        requestParameters?: UserDataStreamSubscribeRequest\n    ): Promise<WebsocketApiResponse<UserDataStreamSubscribeResponse>>;\n\n    /**\n     * Stop listening to the User Data Stream in the current WebSocket connection.\n     * Weight: 2\n     *\n     * @summary WebSocket Unsubscribe from User Data Stream\n     * @param {UserDataStreamUnsubscribeRequest} requestParameters Request parameters.\n     *\n     * @returns {Promise<UserDataStreamUnsubscribeResponse>}\n     * @memberof UserDataStreamApiInterface\n     */\n    userDataStreamUnsubscribe(\n        requestParameters?: UserDataStreamUnsubscribeRequest\n    ): Promise<WebsocketApiResponse<UserDataStreamUnsubscribeResponse>>;\n}\n\n/**\n * Request parameters for userDataStreamPing operation in UserDataStreamApi.\n * @interface UserDataStreamPingRequest\n */\nexport interface UserDataStreamPingRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof UserDataStreamApiUserDataStreamPing\n     */\n    readonly listenKey: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof UserDataStreamApiUserDataStreamPing\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for userDataStreamStart operation in UserDataStreamApi.\n * @interface UserDataStreamStartRequest\n */\nexport interface UserDataStreamStartRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof UserDataStreamApiUserDataStreamStart\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for userDataStreamStop operation in UserDataStreamApi.\n * @interface UserDataStreamStopRequest\n */\nexport interface UserDataStreamStopRequest {\n    /**\n     *\n     * @type {string}\n     * @memberof UserDataStreamApiUserDataStreamStop\n     */\n    readonly listenKey: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof UserDataStreamApiUserDataStreamStop\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for userDataStreamSubscribe operation in UserDataStreamApi.\n * @interface UserDataStreamSubscribeRequest\n */\nexport interface UserDataStreamSubscribeRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof UserDataStreamApiUserDataStreamSubscribe\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for userDataStreamUnsubscribe operation in UserDataStreamApi.\n * @interface UserDataStreamUnsubscribeRequest\n */\nexport interface UserDataStreamUnsubscribeRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof UserDataStreamApiUserDataStreamUnsubscribe\n     */\n    readonly id?: string;\n}\n\n/**\n * UserDataStreamApi - object-oriented interface\n * @class UserDataStreamApi\n * @extends {WebsocketAPIBase}\n */\nexport class UserDataStreamApi implements UserDataStreamApiInterface {\n    private readonly websocketBase: WebsocketAPIBase;\n\n    constructor(websocketBase: WebsocketAPIBase) {\n        this.websocketBase = websocketBase;\n    }\n\n    /**\n     * Ping a user data stream to keep it alive.\n     *\n     * User data streams close automatically after 60 minutes,\n     * even if you're listening to them on WebSocket Streams.\n     * In order to keep the stream open, you have to regularly send pings using the `userDataStream.ping` request.\n     *\n     * It is recommended to send a ping once every 30 minutes.\n     * Weight: 2\n     *\n     * @summary WebSocket Ping user data stream\n     * @param {UserDataStreamPingRequest} requestParameters Request parameters.\n     * @returns {Promise<UserDataStreamPingResponse>}\n     * @memberof UserDataStreamApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#ping-user-data-stream-user_stream Binance API Documentation}\n     */\n    public userDataStreamPing(\n        requestParameters: UserDataStreamPingRequest\n    ): Promise<WebsocketApiResponse<UserDataStreamPingResponse>> {\n        return this.websocketBase.sendMessage<UserDataStreamPingResponse>(\n            '/userDataStream.ping'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: true }\n        );\n    }\n\n    /**\n     * Start a new user data stream.\n     * Weight: 2\n     *\n     * @summary WebSocket Start user data stream\n     * @param {UserDataStreamStartRequest} requestParameters Request parameters.\n     * @returns {Promise<UserDataStreamStartResponse>}\n     * @memberof UserDataStreamApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#start-user-data-stream-user_stream Binance API Documentation}\n     */\n    public userDataStreamStart(\n        requestParameters: UserDataStreamStartRequest = {}\n    ): Promise<WebsocketApiResponse<UserDataStreamStartResponse>> {\n        return this.websocketBase.sendMessage<UserDataStreamStartResponse>(\n            '/userDataStream.start'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: true }\n        );\n    }\n\n    /**\n     * Explicitly stop and close the user data stream.\n     * Weight: 2\n     *\n     * @summary WebSocket Stop user data stream\n     * @param {UserDataStreamStopRequest} requestParameters Request parameters.\n     * @returns {Promise<UserDataStreamStopResponse>}\n     * @memberof UserDataStreamApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#stop-user-data-stream-user_stream Binance API Documentation}\n     */\n    public userDataStreamStop(\n        requestParameters: UserDataStreamStopRequest\n    ): Promise<WebsocketApiResponse<UserDataStreamStopResponse>> {\n        return this.websocketBase.sendMessage<UserDataStreamStopResponse>(\n            '/userDataStream.stop'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: true }\n        );\n    }\n\n    /**\n     * Subscribe to the User Data Stream in the current WebSocket connection.\n     * Weight: 2\n     *\n     * @summary WebSocket Subscribe to User Data Stream\n     * @param {UserDataStreamSubscribeRequest} requestParameters Request parameters.\n     * @returns {Promise<UserDataStreamSubscribeResponse>}\n     * @memberof UserDataStreamApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#subscribe-to-user-data-stream-user_stream Binance API Documentation}\n     */\n    public userDataStreamSubscribe(\n        requestParameters: UserDataStreamSubscribeRequest = {}\n    ): Promise<WebsocketApiResponse<UserDataStreamSubscribeResponse>> {\n        return this.websocketBase.sendMessage<UserDataStreamSubscribeResponse>(\n            '/userDataStream.subscribe'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n\n    /**\n     * Stop listening to the User Data Stream in the current WebSocket connection.\n     * Weight: 2\n     *\n     * @summary WebSocket Unsubscribe from User Data Stream\n     * @param {UserDataStreamUnsubscribeRequest} requestParameters Request parameters.\n     * @returns {Promise<UserDataStreamUnsubscribeResponse>}\n     * @memberof UserDataStreamApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#unsubscribe-from-user-data-stream-user_stream Binance API Documentation}\n     */\n    public userDataStreamUnsubscribe(\n        requestParameters: UserDataStreamUnsubscribeRequest = {}\n    ): Promise<WebsocketApiResponse<UserDataStreamUnsubscribeResponse>> {\n        return this.websocketBase.sendMessage<UserDataStreamUnsubscribeResponse>(\n            '/userDataStream.unsubscribe'.slice(1),\n            requestParameters as unknown as WebsocketSendMsgOptions,\n            { isSigned: false, withApiKey: false }\n        );\n    }\n}\n","/**\n * Binance Spot WebSocket API\n *\n * OpenAPI Specifications for the Binance Spot WebSocket API\n *\n * API documents:\n * - [Github web-socket-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md)\n * - [General API information for web-socket-api on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { WebsocketAPIBase, ConfigurationWebsocketAPI } from '@binance/common';\nimport { WebsocketAPIConnection } from './websocket-api-connection';\n\nexport class WebsocketAPI {\n    private configuration: ConfigurationWebsocketAPI;\n\n    constructor(configuration: ConfigurationWebsocketAPI) {\n        this.configuration = configuration;\n    }\n\n    /**\n     * Connects to the Binance WebSocket API and returns a `WebsocketAPIConnection` instance.\n     *\n     * @param {object} [options] - Optional connection options.\n     * @param {string} [options.mode='single'] - The connection mode, either 'single' or 'pool'. Overrides the `mode` property in the configuration.\n     * @param {number} [options.poolSize=1] - The number of connections to use in pool mode. Overrides the `poolSize` property in the configuration.\n     * @returns {Promise<WebsocketAPIConnection>} - A promise that resolves to a `WebsocketAPIConnection` instance.\n     */\n    async connect({\n        mode,\n        poolSize,\n    }: { mode?: 'single' | 'pool'; poolSize?: number } = {}): Promise<WebsocketAPIConnection> {\n        const websocketBase = new WebsocketAPIBase({\n            ...this.configuration,\n            ...(mode && { mode }),\n            ...(poolSize && { poolSize }),\n        });\n        const websocketAPIConnection = new WebsocketAPIConnection(websocketBase);\n        await websocketBase.connect();\n        return websocketAPIConnection;\n    }\n}\n","/**\n * Binance Spot WebSocket API\n *\n * OpenAPI Specifications for the Binance Spot WebSocket API\n *\n * API documents:\n * - [Github web-socket-api documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-api.md)\n * - [General API information for web-socket-api on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-api/general-api-information)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {\n    WebsocketAPIBase,\n    WebsocketSendMsgOptions,\n    WebsocketApiResponse,\n    WebsocketStream,\n    createStreamHandler,\n    randomString,\n} from '@binance/common';\nimport { AccountApi } from './modules/account-api';\nimport { AuthApi } from './modules/auth-api';\nimport { GeneralApi } from './modules/general-api';\nimport { MarketApi } from './modules/market-api';\nimport { TradeApi } from './modules/trade-api';\nimport { UserDataStreamApi } from './modules/user-data-stream-api';\n\nimport type {\n    AccountCommissionRequest,\n    AccountRateLimitsOrdersRequest,\n    AccountStatusRequest,\n    AllOrderListsRequest,\n    AllOrdersRequest,\n    MyAllocationsRequest,\n    MyPreventedMatchesRequest,\n    MyTradesRequest,\n    OpenOrderListsStatusRequest,\n    OpenOrdersStatusRequest,\n    OrderAmendmentsRequest,\n    OrderListStatusRequest,\n    OrderStatusRequest,\n} from './modules/account-api';\nimport type {\n    SessionLogonRequest,\n    SessionLogoutRequest,\n    SessionStatusRequest,\n} from './modules/auth-api';\nimport type { ExchangeInfoRequest, PingRequest, TimeRequest } from './modules/general-api';\nimport type {\n    AvgPriceRequest,\n    DepthRequest,\n    KlinesRequest,\n    TickerRequest,\n    Ticker24hrRequest,\n    TickerBookRequest,\n    TickerPriceRequest,\n    TickerTradingDayRequest,\n    TradesAggregateRequest,\n    TradesHistoricalRequest,\n    TradesRecentRequest,\n    UiKlinesRequest,\n} from './modules/market-api';\nimport type {\n    OpenOrdersCancelAllRequest,\n    OrderAmendKeepPriorityRequest,\n    OrderCancelRequest,\n    OrderCancelReplaceRequest,\n    OrderListCancelRequest,\n    OrderListPlaceRequest,\n    OrderListPlaceOcoRequest,\n    OrderListPlaceOtoRequest,\n    OrderListPlaceOtocoRequest,\n    OrderPlaceRequest,\n    OrderTestRequest,\n    SorOrderPlaceRequest,\n    SorOrderTestRequest,\n} from './modules/trade-api';\nimport type {\n    UserDataStreamPingRequest,\n    UserDataStreamStartRequest,\n    UserDataStreamStopRequest,\n    UserDataStreamSubscribeRequest,\n    UserDataStreamUnsubscribeRequest,\n} from './modules/user-data-stream-api';\n\nimport type {\n    AccountCommissionResponse,\n    AccountRateLimitsOrdersResponse,\n    AccountStatusResponse,\n    AllOrderListsResponse,\n    AllOrdersResponse,\n    MyAllocationsResponse,\n    MyPreventedMatchesResponse,\n    MyTradesResponse,\n    OpenOrderListsStatusResponse,\n    OpenOrdersStatusResponse,\n    OrderAmendmentsResponse,\n    OrderListStatusResponse,\n    OrderStatusResponse,\n} from './types';\nimport type { SessionLogonResponse, SessionLogoutResponse, SessionStatusResponse } from './types';\nimport type { ExchangeInfoResponse, PingResponse, TimeResponse } from './types';\nimport type {\n    AvgPriceResponse,\n    DepthResponse,\n    KlinesResponse,\n    TickerResponse,\n    Ticker24hrResponse,\n    TickerBookResponse,\n    TickerPriceResponse,\n    TickerTradingDayResponse,\n    TradesAggregateResponse,\n    TradesHistoricalResponse,\n    TradesRecentResponse,\n    UiKlinesResponse,\n} from './types';\nimport type {\n    OpenOrdersCancelAllResponse,\n    OrderAmendKeepPriorityResponse,\n    OrderCancelResponse,\n    OrderCancelReplaceResponse,\n    OrderListCancelResponse,\n    OrderListPlaceResponse,\n    OrderListPlaceOcoResponse,\n    OrderListPlaceOtoResponse,\n    OrderListPlaceOtocoResponse,\n    OrderPlaceResponse,\n    OrderTestResponse,\n    SorOrderPlaceResponse,\n    SorOrderTestResponse,\n} from './types';\nimport type {\n    UserDataStreamPingResponse,\n    UserDataStreamStartResponse,\n    UserDataStreamStopResponse,\n    UserDataStreamSubscribeResponse,\n    UserDataStreamUnsubscribeResponse,\n} from './types';\n\nexport class WebsocketAPIConnection {\n    private websocketBase: WebsocketAPIBase;\n    private accountApi: AccountApi;\n    private authApi: AuthApi;\n    private generalApi: GeneralApi;\n    private marketApi: MarketApi;\n    private tradeApi: TradeApi;\n    private userDataStreamApi: UserDataStreamApi;\n\n    constructor(websocketBase: WebsocketAPIBase) {\n        this.websocketBase = websocketBase;\n        this.accountApi = new AccountApi(websocketBase);\n        this.authApi = new AuthApi(websocketBase);\n        this.generalApi = new GeneralApi(websocketBase);\n        this.marketApi = new MarketApi(websocketBase);\n        this.tradeApi = new TradeApi(websocketBase);\n        this.userDataStreamApi = new UserDataStreamApi(websocketBase);\n    }\n\n    on(\n        event: 'open' | 'message' | 'error' | 'close' | 'ping' | 'pong',\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        listener: (...args: any[]) => void\n    ) {\n        this.websocketBase.on(event, listener);\n    }\n\n    off(\n        event: 'open' | 'message' | 'error' | 'close' | 'ping' | 'pong',\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        listener: (...args: any[]) => void\n    ) {\n        this.websocketBase.off(event, listener);\n    }\n\n    /**\n     * Disconnects from the WebSocket server.\n     * If there is no active connection, a warning is logged.\n     * Otherwise, all connections in the connection pool are closed gracefully,\n     * and a message is logged indicating that the connection has been disconnected.\n     * @returns A Promise that resolves when all connections have been closed.\n     * @throws Error if the WebSocket client is not set.\n     */\n    disconnect() {\n        return this.websocketBase.disconnect();\n    }\n\n    /**\n     * Checks if the WebSocket connection is currently open.\n     * @returns `true` if the connection is open, `false` otherwise.\n     */\n    isConnected() {\n        return this.websocketBase.isConnected();\n    }\n\n    /**\n     * Sends a ping message to all connected Websocket servers in the pool.\n     * If no connections are ready, a warning is logged.\n     * For each active connection, the ping message is sent, and debug logs provide details.\n     * @throws Error if a Websocket client is not set for a connection.\n     */\n    pingServer() {\n        this.websocketBase.pingServer();\n    }\n\n    /**\n     * Sends an unsigned message to the WebSocket server\n     * @param method The API method to call\n     * @param payload Message parameters and options\n     * @returns Promise that resolves with the server response\n     * @throws Error if not connected\n     */\n    sendMessage(method: string, payload: WebsocketSendMsgOptions = {}) {\n        return this.websocketBase.sendMessage(method, payload);\n    }\n\n    /**\n     * Sends a signed message to the WebSocket server with authentication\n     * @param method The API method to call\n     * @param payload Message parameters and options\n     * @returns Promise that resolves with the server response\n     * @throws Error if not connected\n     */\n    sendSignedMessage(method: string, payload: WebsocketSendMsgOptions = {}) {\n        return this.websocketBase.sendMessage(method, payload, { isSigned: true });\n    }\n\n    /**\n     * Get current account commission rates.\n     * Weight: 20\n     *\n     * @summary WebSocket Account Commission Rates\n     * @param {AccountCommissionRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<AccountCommissionResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-commission-rates-user_data Binance API Documentation}\n     */\n    accountCommission(\n        requestParameters: AccountCommissionRequest\n    ): Promise<WebsocketApiResponse<AccountCommissionResponse>> {\n        return this.accountApi.accountCommission(requestParameters);\n    }\n\n    /**\n     * Query your current unfilled order count for all intervals.\n     * Weight: 40\n     *\n     * @summary WebSocket Unfilled Order Count\n     * @param {AccountRateLimitsOrdersRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<AccountRateLimitsOrdersResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#unfilled-order-count-user_data Binance API Documentation}\n     */\n    accountRateLimitsOrders(\n        requestParameters: AccountRateLimitsOrdersRequest = {}\n    ): Promise<WebsocketApiResponse<AccountRateLimitsOrdersResponse>> {\n        return this.accountApi.accountRateLimitsOrders(requestParameters);\n    }\n\n    /**\n     * Query information about your account.\n     * Weight: 20\n     *\n     * @summary WebSocket Account information\n     * @param {AccountStatusRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<AccountStatusResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-information-user_data Binance API Documentation}\n     */\n    accountStatus(\n        requestParameters: AccountStatusRequest = {}\n    ): Promise<WebsocketApiResponse<AccountStatusResponse>> {\n        return this.accountApi.accountStatus(requestParameters);\n    }\n\n    /**\n     * Query information about all your order lists, filtered by time range.\n     * Weight: 20\n     *\n     * @summary WebSocket Account order list history\n     * @param {AllOrderListsRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<AllOrderListsResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-order-list-history-user_data Binance API Documentation}\n     */\n    allOrderLists(\n        requestParameters: AllOrderListsRequest = {}\n    ): Promise<WebsocketApiResponse<AllOrderListsResponse>> {\n        return this.accountApi.allOrderLists(requestParameters);\n    }\n\n    /**\n     * Query information about all your orders – active, canceled, filled – filtered by time range.\n     * Weight: 20\n     *\n     * @summary WebSocket Account order history\n     * @param {AllOrdersRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<AllOrdersResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-order-history-user_data Binance API Documentation}\n     */\n    allOrders(\n        requestParameters: AllOrdersRequest\n    ): Promise<WebsocketApiResponse<AllOrdersResponse>> {\n        return this.accountApi.allOrders(requestParameters);\n    }\n\n    /**\n     * Retrieves allocations resulting from SOR order placement.\n     * Weight: 20\n     *\n     * @summary WebSocket Account allocations\n     * @param {MyAllocationsRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<MyAllocationsResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-allocations-user_data Binance API Documentation}\n     */\n    myAllocations(\n        requestParameters: MyAllocationsRequest\n    ): Promise<WebsocketApiResponse<MyAllocationsResponse>> {\n        return this.accountApi.myAllocations(requestParameters);\n    }\n\n    /**\n     * Displays the list of orders that were expired due to STP.\n     *\n     * These are the combinations supported:\n     *\n     * `symbol` + `preventedMatchId`\n     * `symbol` + `orderId`\n     * `symbol` + `orderId` + `fromPreventedMatchId` (`limit` will default to 500)\n     * `symbol` + `orderId` + `fromPreventedMatchId` + `limit`\n     * Weight: Case                            | Weight\n     * ----                            | -----\n     * If `symbol` is invalid          | 2\n     * Querying by `preventedMatchId`  | 2\n     * Querying by `orderId`           | 20\n     *\n     * @summary WebSocket Account prevented matches\n     * @param {MyPreventedMatchesRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<MyPreventedMatchesResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-prevented-matches-user_data Binance API Documentation}\n     */\n    myPreventedMatches(\n        requestParameters: MyPreventedMatchesRequest\n    ): Promise<WebsocketApiResponse<MyPreventedMatchesResponse>> {\n        return this.accountApi.myPreventedMatches(requestParameters);\n    }\n\n    /**\n     * Query information about all your trades, filtered by time range.\n     * Weight: Condition| Weight|\n     * ---| ---\n     * |Without orderId|20|\n     * |With orderId|5|\n     *\n     * @summary WebSocket Account trade history\n     * @param {MyTradesRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<MyTradesResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#account-trade-history-user_data Binance API Documentation}\n     */\n    myTrades(requestParameters: MyTradesRequest): Promise<WebsocketApiResponse<MyTradesResponse>> {\n        return this.accountApi.myTrades(requestParameters);\n    }\n\n    /**\n     * Query execution status of all open order lists.\n     *\n     * If you need to continuously monitor order status updates, please consider using WebSocket Streams:\n     *\n     * `userDataStream.start` request\n     * `executionReport` user data stream event\n     * Weight: 6\n     *\n     * @summary WebSocket Current open Order lists\n     * @param {OpenOrderListsStatusRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OpenOrderListsStatusResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#current-open-order-lists-user_data Binance API Documentation}\n     */\n    openOrderListsStatus(\n        requestParameters: OpenOrderListsStatusRequest = {}\n    ): Promise<WebsocketApiResponse<OpenOrderListsStatusResponse>> {\n        return this.accountApi.openOrderListsStatus(requestParameters);\n    }\n\n    /**\n     * Query execution status of all open orders.\n     *\n     * If you need to continuously monitor order status updates, please consider using WebSocket Streams:\n     *\n     * `userDataStream.start` request\n     * `executionReport` user data stream event\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Parameter | Weight |\n     * | --------- | ------ |\n     * | `symbol`  |      6 |\n     * | none      |     80 |\n     *\n     * @summary WebSocket Current open orders\n     * @param {OpenOrdersStatusRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OpenOrdersStatusResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#current-open-orders-user_data Binance API Documentation}\n     */\n    openOrdersStatus(\n        requestParameters: OpenOrdersStatusRequest = {}\n    ): Promise<WebsocketApiResponse<OpenOrdersStatusResponse>> {\n        return this.accountApi.openOrdersStatus(requestParameters);\n    }\n\n    /**\n     * Queries all amendments of a single order.\n     * Weight: 4\n     *\n     * @summary WebSocket Query Order Amendments\n     * @param {OrderAmendmentsRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderAmendmentsResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#query-order-amendments-user_data Binance API Documentation}\n     */\n    orderAmendments(\n        requestParameters: OrderAmendmentsRequest\n    ): Promise<WebsocketApiResponse<OrderAmendmentsResponse>> {\n        return this.accountApi.orderAmendments(requestParameters);\n    }\n\n    /**\n     * Check execution status of an Order list.\n     *\n     * For execution status of individual orders, use `order.status`.\n     * Weight: 4\n     *\n     * @summary WebSocket Query Order list\n     * @param {OrderListStatusRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderListStatusResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#query-order-list-user_data Binance API Documentation}\n     */\n    orderListStatus(\n        requestParameters: OrderListStatusRequest = {}\n    ): Promise<WebsocketApiResponse<OrderListStatusResponse>> {\n        return this.accountApi.orderListStatus(requestParameters);\n    }\n\n    /**\n     * Check execution status of an order.\n     * Weight: 4\n     *\n     * @summary WebSocket Query order\n     * @param {OrderStatusRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderStatusResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/account-requests#query-order-user_data Binance API Documentation}\n     */\n    orderStatus(\n        requestParameters: OrderStatusRequest\n    ): Promise<WebsocketApiResponse<OrderStatusResponse>> {\n        return this.accountApi.orderStatus(requestParameters);\n    }\n\n    /**\n     * Authenticate WebSocket connection using the provided API key.\n     *\n     * After calling `session.logon`, you can omit `apiKey` and `signature` parameters for future requests that require them.\n     *\n     * Note that only one API key can be authenticated.\n     * Calling `session.logon` multiple times changes the current authenticated API key.\n     * Weight: 2\n     *\n     * @summary WebSocket Log in with API key\n     * @param {SessionLogonRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<SessionLogonResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/authentication-requests#log-in-with-api-key-signed Binance API Documentation}\n     */\n    sessionLogon(\n        requestParameters: SessionLogonRequest = {}\n    ): Promise<WebsocketApiResponse<SessionLogonResponse>> {\n        return this.authApi.sessionLogon(requestParameters);\n    }\n\n    /**\n     * Forget the API key previously authenticated.\n     * If the connection is not authenticated, this request does nothing.\n     *\n     * Note that the WebSocket connection stays open after `session.logout` request.\n     * You can continue using the connection,\n     * but now you will have to explicitly provide the `apiKey` and `signature` parameters where needed.\n     * Weight: 2\n     *\n     * @summary WebSocket Log out of the session\n     * @param {SessionLogoutRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<SessionLogoutResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/authentication-requests#log-out-of-the-session Binance API Documentation}\n     */\n    sessionLogout(\n        requestParameters: SessionLogoutRequest = {}\n    ): Promise<WebsocketApiResponse<SessionLogoutResponse>> {\n        return this.authApi.sessionLogout(requestParameters);\n    }\n\n    /**\n     * Query the status of the WebSocket connection,\n     * inspecting which API key (if any) is used to authorize requests.\n     * Weight: 2\n     *\n     * @summary WebSocket Query session status\n     * @param {SessionStatusRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<SessionStatusResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/authentication-requests#query-session-status Binance API Documentation}\n     */\n    sessionStatus(\n        requestParameters: SessionStatusRequest = {}\n    ): Promise<WebsocketApiResponse<SessionStatusResponse>> {\n        return this.authApi.sessionStatus(requestParameters);\n    }\n\n    /**\n     * Query current exchange trading rules, rate limits, and symbol information.\n     * Weight: 20\n     *\n     * @summary WebSocket Exchange information\n     * @param {ExchangeInfoRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<ExchangeInfoResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/general-requests#exchange-information Binance API Documentation}\n     */\n    exchangeInfo(\n        requestParameters: ExchangeInfoRequest = {}\n    ): Promise<WebsocketApiResponse<ExchangeInfoResponse>> {\n        return this.generalApi.exchangeInfo(requestParameters);\n    }\n\n    /**\n     * Test connectivity to the WebSocket API.\n     * Weight: 1\n     *\n     * @summary WebSocket Test connectivity\n     * @param {PingRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<PingResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/general-requests#test-connectivity Binance API Documentation}\n     */\n    ping(requestParameters: PingRequest = {}): Promise<WebsocketApiResponse<PingResponse>> {\n        return this.generalApi.ping(requestParameters);\n    }\n\n    /**\n     * Test connectivity to the WebSocket API and get the current server time.\n     * Weight: 1\n     *\n     * @summary WebSocket Check server time\n     * @param {TimeRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<TimeResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/general-requests#check-server-time Binance API Documentation}\n     */\n    time(requestParameters: TimeRequest = {}): Promise<WebsocketApiResponse<TimeResponse>> {\n        return this.generalApi.time(requestParameters);\n    }\n\n    /**\n     * Get current average price for a symbol.\n     * Weight: 2\n     *\n     * @summary WebSocket Current average price\n     * @param {AvgPriceRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<AvgPriceResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#current-average-price Binance API Documentation}\n     */\n    avgPrice(requestParameters: AvgPriceRequest): Promise<WebsocketApiResponse<AvgPriceResponse>> {\n        return this.marketApi.avgPrice(requestParameters);\n    }\n\n    /**\n     * Get current order book.\n     *\n     * Note that this request returns limited market depth.\n     *\n     * If you need to continuously monitor order book updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@depth<levels>`\n     * `<symbol>@depth`\n     *\n     * You can use `depth` request together with `<symbol>@depth` streams to [maintain a local order book](web-socket-streams.md#how-to-manage-a-local-order-book-correctly).\n     * Weight: Adjusted based on the limit:\n     *\n     * |  Limit    | Weight |\n     * |:---------:|:------:|\n     * |     1–100 |      5 |\n     * |   101–500 |      25|\n     * |  501–1000 |     50 |\n     * | 1001–5000 |     250 |\n     *\n     * @summary WebSocket Order book\n     * @param {DepthRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<DepthResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#order-book Binance API Documentation}\n     */\n    depth(requestParameters: DepthRequest): Promise<WebsocketApiResponse<DepthResponse>> {\n        return this.marketApi.depth(requestParameters);\n    }\n\n    /**\n     * Get klines (candlestick bars).\n     *\n     * Klines are uniquely identified by their open & close time.\n     *\n     * If you need access to real-time kline updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@kline_<interval>`\n     *\n     * If you need historical kline data,\n     * please consider using [data.binance.vision](https://github.com/binance/binance-public-data/#klines).\n     * Weight: 2\n     *\n     * @summary WebSocket Klines\n     * @param {KlinesRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<KlinesResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#klines Binance API Documentation}\n     */\n    klines(requestParameters: KlinesRequest): Promise<WebsocketApiResponse<KlinesResponse>> {\n        return this.marketApi.klines(requestParameters);\n    }\n\n    /**\n     * Get rolling window price change statistics with a custom window.\n     *\n     * This request is similar to `ticker.24hr`,\n     * but statistics are computed on demand using the arbitrary window you specify.\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Symbols | Weight |\n     * |:-------:|:------:|\n     * |    1–50 | 4 per symbol |\n     * |  51–100 |    200 |\n     *\n     * @summary WebSocket Rolling window price change statistics\n     * @param {TickerRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<TickerResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#rolling-window-price-change-statistics Binance API Documentation}\n     */\n    ticker(requestParameters: TickerRequest = {}): Promise<WebsocketApiResponse<TickerResponse>> {\n        return this.marketApi.ticker(requestParameters);\n    }\n\n    /**\n     * Get 24-hour rolling window price change statistics.\n     *\n     * If you need to continuously monitor trading statistics, please consider using WebSocket Streams:\n     *\n     * `<symbol>@ticker` or `!ticker@arr`\n     * `<symbol>@miniTicker` or `!miniTicker@arr`\n     *\n     * If you need different window sizes,\n     * use the `ticker` request.\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Symbols     | Weight |\n     * |:-----------:|:------:|\n     * |        1–20 |      2 |\n     * |      21–100 |     40 |\n     * | 101 or more |     80 |\n     * | all symbols |     80 |\n     *\n     * @summary WebSocket 24hr ticker price change statistics\n     * @param {Ticker24hrRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<Ticker24hrResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#24hr-ticker-price-change-statistics Binance API Documentation}\n     */\n    ticker24hr(\n        requestParameters: Ticker24hrRequest = {}\n    ): Promise<WebsocketApiResponse<Ticker24hrResponse>> {\n        return this.marketApi.ticker24hr(requestParameters);\n    }\n\n    /**\n     * Get the current best price and quantity on the order book.\n     *\n     * If you need access to real-time order book ticker updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@bookTicker`\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Parameter | Weight |\n     * | --------- |:------:|\n     * | `symbol`  |      2 |\n     * | `symbols` |      4 |\n     * | none      |      4 |\n     *\n     * @summary WebSocket Symbol order book ticker\n     * @param {TickerBookRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<TickerBookResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#symbol-order-book-ticker Binance API Documentation}\n     */\n    tickerBook(\n        requestParameters: TickerBookRequest = {}\n    ): Promise<WebsocketApiResponse<TickerBookResponse>> {\n        return this.marketApi.tickerBook(requestParameters);\n    }\n\n    /**\n     * Get the latest market price for a symbol.\n     *\n     * If you need access to real-time price updates, please consider using WebSocket Streams:\n     *\n     * `<symbol>@aggTrade`\n     * `<symbol>@trade`\n     * Weight: Adjusted based on the number of requested symbols:\n     *\n     * | Parameter | Weight |\n     * | --------- |:------:|\n     * | `symbol`  |      2 |\n     * | `symbols` |      4 |\n     * | none      |      4 |\n     *\n     * @summary WebSocket Symbol price ticker\n     * @param {TickerPriceRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<TickerPriceResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#symbol-price-ticker Binance API Documentation}\n     */\n    tickerPrice(\n        requestParameters: TickerPriceRequest = {}\n    ): Promise<WebsocketApiResponse<TickerPriceResponse>> {\n        return this.marketApi.tickerPrice(requestParameters);\n    }\n\n    /**\n     * Price change statistics for a trading day.\n     * Weight: 4 for each requested <tt>symbol</tt>. <br/><br/> The weight for this request will cap at 200 once the number of `symbols` in the request is more than 50.\n     *\n     * @summary WebSocket Trading Day Ticker\n     * @param {TickerTradingDayRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<TickerTradingDayResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#trading-day-ticker Binance API Documentation}\n     */\n    tickerTradingDay(\n        requestParameters: TickerTradingDayRequest = {}\n    ): Promise<WebsocketApiResponse<TickerTradingDayResponse>> {\n        return this.marketApi.tickerTradingDay(requestParameters);\n    }\n\n    /**\n     * Get aggregate trades.\n     *\n     * An *aggregate trade* (aggtrade) represents one or more individual trades.\n     * Trades that fill at the same time, from the same taker order, with the same price –\n     * those trades are collected into an aggregate trade with total quantity of the individual trades.\n     *\n     * If you need access to real-time trading activity, please consider using WebSocket Streams:\n     *\n     * `<symbol>@aggTrade`\n     *\n     * If you need historical aggregate trade data,\n     * please consider using [data.binance.vision](https://github.com/binance/binance-public-data/#aggtrades).\n     * Weight: 4\n     *\n     * @summary WebSocket Aggregate trades\n     * @param {TradesAggregateRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<TradesAggregateResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#aggregate-trades Binance API Documentation}\n     */\n    tradesAggregate(\n        requestParameters: TradesAggregateRequest\n    ): Promise<WebsocketApiResponse<TradesAggregateResponse>> {\n        return this.marketApi.tradesAggregate(requestParameters);\n    }\n\n    /**\n     * Get historical trades.\n     * Weight: 25\n     *\n     * @summary WebSocket Historical trades\n     * @param {TradesHistoricalRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<TradesHistoricalResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#historical-trades Binance API Documentation}\n     */\n    tradesHistorical(\n        requestParameters: TradesHistoricalRequest\n    ): Promise<WebsocketApiResponse<TradesHistoricalResponse>> {\n        return this.marketApi.tradesHistorical(requestParameters);\n    }\n\n    /**\n     * Get recent trades.\n     *\n     * If you need access to real-time trading activity, please consider using WebSocket Streams:\n     *\n     * `<symbol>@trade`\n     * Weight: 25\n     *\n     * @summary WebSocket Recent trades\n     * @param {TradesRecentRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<TradesRecentResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#recent-trades Binance API Documentation}\n     */\n    tradesRecent(\n        requestParameters: TradesRecentRequest\n    ): Promise<WebsocketApiResponse<TradesRecentResponse>> {\n        return this.marketApi.tradesRecent(requestParameters);\n    }\n\n    /**\n     * Get klines (candlestick bars) optimized for presentation.\n     *\n     * This request is similar to `klines`, having the same parameters and response.\n     * `uiKlines` return modified kline data, optimized for presentation of candlestick charts.\n     * Weight: 2\n     *\n     * @summary WebSocket UI Klines\n     * @param {UiKlinesRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<UiKlinesResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/market-data-requests#ui-klines Binance API Documentation}\n     */\n    uiKlines(requestParameters: UiKlinesRequest): Promise<WebsocketApiResponse<UiKlinesResponse>> {\n        return this.marketApi.uiKlines(requestParameters);\n    }\n\n    /**\n     * Cancel all open orders on a symbol.\n     * This includes orders that are part of an order list.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel open orders\n     * @param {OpenOrdersCancelAllRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OpenOrdersCancelAllResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#cancel-open-orders-trade Binance API Documentation}\n     */\n    openOrdersCancelAll(\n        requestParameters: OpenOrdersCancelAllRequest\n    ): Promise<WebsocketApiResponse<OpenOrdersCancelAllResponse>> {\n        return this.tradeApi.openOrdersCancelAll(requestParameters);\n    }\n\n    /**\n     * Reduce the quantity of an existing open order.\n     *\n     * This adds 0 orders to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [Order Amend Keep Priority FAQ](faqs/order_amend_keep_priority.md) to learn more.\n     * Weight: 4\n     *\n     * @summary WebSocket Order Amend Keep Priority\n     * @param {OrderAmendKeepPriorityRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderAmendKeepPriorityResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#order-amend-keep-priority-trade Binance API Documentation}\n     */\n    orderAmendKeepPriority(\n        requestParameters: OrderAmendKeepPriorityRequest\n    ): Promise<WebsocketApiResponse<OrderAmendKeepPriorityResponse>> {\n        return this.tradeApi.orderAmendKeepPriority(requestParameters);\n    }\n\n    /**\n     * Cancel an active order.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel order\n     * @param {OrderCancelRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderCancelResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#cancel-order-trade Binance API Documentation}\n     */\n    orderCancel(\n        requestParameters: OrderCancelRequest\n    ): Promise<WebsocketApiResponse<OrderCancelResponse>> {\n        return this.tradeApi.orderCancel(requestParameters);\n    }\n\n    /**\n     * Cancel an existing order and immediately place a new order instead of the canceled one.\n     *\n     * A new order that was not attempted (i.e. when `newOrderResult: NOT_ATTEMPTED`), will still increase the unfilled order count by 1.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel and replace order\n     * @param {OrderCancelReplaceRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderCancelReplaceResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#cancel-and-replace-order-trade Binance API Documentation}\n     */\n    orderCancelReplace(\n        requestParameters: OrderCancelReplaceRequest\n    ): Promise<WebsocketApiResponse<OrderCancelReplaceResponse>> {\n        return this.tradeApi.orderCancelReplace(requestParameters);\n    }\n\n    /**\n     * Cancel an active order list.\n     * Weight: 1\n     *\n     * @summary WebSocket Cancel Order list\n     * @param {OrderListCancelRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderListCancelResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#cancel-order-list-trade Binance API Documentation}\n     */\n    orderListCancel(\n        requestParameters: OrderListCancelRequest\n    ): Promise<WebsocketApiResponse<OrderListCancelResponse>> {\n        return this.tradeApi.orderListCancel(requestParameters);\n    }\n\n    /**\n     * Send in a new one-cancels-the-other (OCO) pair:\n     * `LIMIT_MAKER` + `STOP_LOSS`/`STOP_LOSS_LIMIT` orders (called *legs*),\n     * where activation of one order immediately cancels the other.\n     *\n     * This adds 1 order to `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter\n     * Weight: 1\n     *\n     * Unfilled Order Count: 1\n     *\n     * @summary WebSocket Place new OCO - Deprecated\n     * @param {OrderListPlaceRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderListPlaceResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-oco---deprecated-trade Binance API Documentation}\n     */\n    orderListPlace(\n        requestParameters: OrderListPlaceRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceResponse>> {\n        return this.tradeApi.orderListPlace(requestParameters);\n    }\n\n    /**\n     * Send in an one-cancels-the-other (OCO) pair, where activation of one order immediately cancels the other.\n     *\n     * An OCO has 2 orders called the **above order** and **below order**.\n     * One of the orders must be a `LIMIT_MAKER/TAKE_PROFIT/TAKE_PROFIT_LIMIT` order and the other must be `STOP_LOSS` or `STOP_LOSS_LIMIT` order.\n     * Price restrictions:\n     * If the OCO is on the `SELL` side:\n     * `LIMIT_MAKER/TAKE_PROFIT_LIMIT` `price` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n     * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * If the OCO is on the `BUY` side:\n     * `LIMIT_MAKER` `price` < Last Traded Price < `STOP_LOSS/STOP_LOSS_LIMIT` `stopPrice`\n     * `TAKE_PROFIT stopPrice` > Last Traded Price > `STOP_LOSS/STOP_LOSS_LIMIT stopPrice`\n     * OCOs add **2 orders** to the `EXCHANGE_MAX_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary WebSocket Place new Order list - OCO\n     * @param {OrderListPlaceOcoRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderListPlaceOcoResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-list---oco-trade Binance API Documentation}\n     */\n    orderListPlaceOco(\n        requestParameters: OrderListPlaceOcoRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceOcoResponse>> {\n        return this.tradeApi.orderListPlaceOco(requestParameters);\n    }\n\n    /**\n     * Places an OTO.\n     *\n     * An OTO (One-Triggers-the-Other) is an order list comprised of 2 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The second order is called the **pending order**. It can be any order type except for `MARKET` orders using parameter `quoteOrderQty`. The pending order is only placed on the order book when the working order gets **fully filled**.\n     * If either the working order or the pending order is cancelled individually, the other order in the order list will also be canceled or expired.\n     * When the order list is placed, if the working order gets **immediately fully filled**, the placement response will show the working order as `FILLED` but the pending order will still appear as `PENDING_NEW`. You need to query the status of the pending order again to see its updated status.\n     * OTOs add **2 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 2\n     *\n     * @summary WebSocket Place new Order list - OTO\n     * @param {OrderListPlaceOtoRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderListPlaceOtoResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-list---oto-trade Binance API Documentation}\n     */\n    orderListPlaceOto(\n        requestParameters: OrderListPlaceOtoRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceOtoResponse>> {\n        return this.tradeApi.orderListPlaceOto(requestParameters);\n    }\n\n    /**\n     * Place an OTOCO.\n     *\n     * An OTOCO (One-Triggers-One-Cancels-the-Other) is an order list comprised of 3 orders.\n     * The first order is called the **working order** and must be `LIMIT` or `LIMIT_MAKER`. Initially, only the working order goes on the order book.\n     * The behavior of the working order is the same as the [OTO](#place-new-order-list---oto-trade).\n     * OTOCO has 2 pending orders (pending above and pending below), forming an OCO pair. The pending orders are only placed on the order book when the working order gets **fully filled**.\n     * The rules of the pending above and pending below follow the same rules as the [Order list OCO](#new-order-list---oco-trade).\n     * OTOCOs add **3 orders** to the `EXCHANGE_MAX_NUM_ORDERS` filter and `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 3\n     *\n     * @summary WebSocket Place new Order list - OTOCO\n     * @param {OrderListPlaceOtocoRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderListPlaceOtocoResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-list---otoco-trade Binance API Documentation}\n     */\n    orderListPlaceOtoco(\n        requestParameters: OrderListPlaceOtocoRequest\n    ): Promise<WebsocketApiResponse<OrderListPlaceOtocoResponse>> {\n        return this.tradeApi.orderListPlaceOtoco(requestParameters);\n    }\n\n    /**\n     * Send in a new order.\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     * Weight: 1\n     *\n     * @summary WebSocket Place new order\n     * @param {OrderPlaceRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderPlaceResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-trade Binance API Documentation}\n     */\n    orderPlace(\n        requestParameters: OrderPlaceRequest\n    ): Promise<WebsocketApiResponse<OrderPlaceResponse>> {\n        return this.tradeApi.orderPlace(requestParameters);\n    }\n\n    /**\n     * Test order placement.\n     *\n     * Validates new order parameters and verifies your signature\n     * but does not send the order into the matching engine.\n     * Weight: |Condition| Request Weight|\n     * |------------           | ------------ |\n     * |Without `computeCommissionRates`| 1|\n     * |With `computeCommissionRates`|20|\n     *\n     * @summary WebSocket Test new order\n     * @param {OrderTestRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<OrderTestResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#test-new-order-trade Binance API Documentation}\n     */\n    orderTest(\n        requestParameters: OrderTestRequest = {}\n    ): Promise<WebsocketApiResponse<OrderTestResponse>> {\n        return this.tradeApi.orderTest(requestParameters);\n    }\n\n    /**\n     * Places an order using smart order routing (SOR).\n     *\n     * This adds 1 order to the `EXCHANGE_MAX_ORDERS` filter and the `MAX_NUM_ORDERS` filter.\n     *\n     * Read [SOR FAQ](../faqs/sor_faq.md) to learn more.\n     * Weight: 1\n     *\n     * Unfilled Order Count: 1\n     *\n     * @summary WebSocket Place new order using SOR\n     * @param {SorOrderPlaceRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<SorOrderPlaceResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#place-new-order-using-sor-trade Binance API Documentation}\n     */\n    sorOrderPlace(\n        requestParameters: SorOrderPlaceRequest\n    ): Promise<WebsocketApiResponse<SorOrderPlaceResponse>> {\n        return this.tradeApi.sorOrderPlace(requestParameters);\n    }\n\n    /**\n     * Test new order creation and signature/recvWindow using smart order routing (SOR).\n     * Creates and validates a new order but does not send it into the matching engine.\n     * Weight: |Condition                       | Request Weight|\n     * |------------                    | ------------ |\n     * |Without `computeCommissionRates`| 1            |\n     * |With `computeCommissionRates`   |20            |\n     *\n     * @summary WebSocket Test new order using SOR\n     * @param {SorOrderTestRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<SorOrderTestResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/trading-requests#test-new-order-using-sor-trade Binance API Documentation}\n     */\n    sorOrderTest(\n        requestParameters: SorOrderTestRequest = {}\n    ): Promise<WebsocketApiResponse<SorOrderTestResponse>> {\n        return this.tradeApi.sorOrderTest(requestParameters);\n    }\n\n    /**\n     * Ping a user data stream to keep it alive.\n     *\n     * User data streams close automatically after 60 minutes,\n     * even if you're listening to them on WebSocket Streams.\n     * In order to keep the stream open, you have to regularly send pings using the `userDataStream.ping` request.\n     *\n     * It is recommended to send a ping once every 30 minutes.\n     * Weight: 2\n     *\n     * @summary WebSocket Ping user data stream\n     * @param {UserDataStreamPingRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<UserDataStreamPingResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#ping-user-data-stream-user_stream Binance API Documentation}\n     */\n    userDataStreamPing(\n        requestParameters: UserDataStreamPingRequest\n    ): Promise<WebsocketApiResponse<UserDataStreamPingResponse>> {\n        return this.userDataStreamApi.userDataStreamPing(requestParameters);\n    }\n\n    /**\n     * Start a new user data stream.\n     * Weight: 2\n     *\n     * @summary WebSocket Start user data stream\n     * @param {UserDataStreamStartRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<UserDataStreamStartResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#start-user-data-stream-user_stream Binance API Documentation}\n     */\n    userDataStreamStart(\n        requestParameters: UserDataStreamStartRequest = {}\n    ): Promise<WebsocketApiResponse<UserDataStreamStartResponse>> {\n        return this.userDataStreamApi.userDataStreamStart(requestParameters);\n    }\n\n    /**\n     * Explicitly stop and close the user data stream.\n     * Weight: 2\n     *\n     * @summary WebSocket Stop user data stream\n     * @param {UserDataStreamStopRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<UserDataStreamStopResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#stop-user-data-stream-user_stream Binance API Documentation}\n     */\n    userDataStreamStop(\n        requestParameters: UserDataStreamStopRequest\n    ): Promise<WebsocketApiResponse<UserDataStreamStopResponse>> {\n        return this.userDataStreamApi.userDataStreamStop(requestParameters);\n    }\n\n    /**\n     * Subscribe to the User Data Stream in the current WebSocket connection.\n     * Weight: 2\n     *\n     * @summary WebSocket Subscribe to User Data Stream\n     * @param {UserDataStreamSubscribeRequest} requestParameters Request parameters.\n     * @param {string} [id] Optional custom stream identifier.\n     * @returns Promise<{response: WebsocketApiResponse<UserDataStreamSubscribeResponse>, stream: WebsocketStream<object>}>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#subscribe-to-user-data-stream-user_stream Binance API Documentation}\n     */\n    userDataStreamSubscribe(\n        requestParameters: UserDataStreamSubscribeRequest = {},\n        id?: string\n    ): Promise<{\n        response: WebsocketApiResponse<UserDataStreamSubscribeResponse>;\n        stream: WebsocketStream<object>;\n    }> {\n        return this.userDataStreamApi\n            .userDataStreamSubscribe(requestParameters)\n            .then((response) => {\n                const identifier = id || randomString();\n                const stream = createStreamHandler<object>(this.websocketBase, identifier);\n                return { response, stream };\n            })\n            .catch((error) => {\n                throw error;\n            });\n    }\n\n    /**\n     * Stop listening to the User Data Stream in the current WebSocket connection.\n     * Weight: 2\n     *\n     * @summary WebSocket Unsubscribe from User Data Stream\n     * @param {UserDataStreamUnsubscribeRequest} requestParameters Request parameters.\n     * @returns Promise<WebsocketApiResponse<UserDataStreamUnsubscribeResponse>>\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/websocket-api/user-Data-Stream-requests#unsubscribe-from-user-data-stream-user_stream Binance API Documentation}\n     */\n    userDataStreamUnsubscribe(\n        requestParameters: UserDataStreamUnsubscribeRequest = {}\n    ): Promise<WebsocketApiResponse<UserDataStreamUnsubscribeResponse>> {\n        return this.userDataStreamApi.userDataStreamUnsubscribe(requestParameters);\n    }\n}\n","/**\n * Binance Spot WebSocket Streams\n *\n * OpenAPI Specifications for the Binance Spot WebSocket Streams\n *\n * API documents:\n * - [Github web-socket-streams documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-streams.md)\n * - [General API information for web-socket-streams on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport * from './types';\nexport * from './modules';\nexport * from './websocket-streams';\nexport * from './websocket-streams-connection';\n","/**\n * Binance Spot WebSocket Streams\n *\n * OpenAPI Specifications for the Binance Spot WebSocket Streams\n *\n * API documents:\n * - [Github web-socket-streams documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-streams.md)\n * - [General API information for web-socket-streams on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport {\n    WebsocketStreamsBase,\n    WebsocketStream,\n    assertParamExists,\n    replaceWebsocketStreamsPlaceholders,\n    createStreamHandler,\n} from '@binance/common';\nimport type {\n    AggTradeResponse,\n    AllMarketRollingWindowTickerResponse,\n    AllMiniTickerResponse,\n    AllTickerResponse,\n    AvgPriceResponse,\n    BookTickerResponse,\n    DiffBookDepthResponse,\n    KlineOffsetResponse,\n    KlineResponse,\n    MiniTickerResponse,\n    PartialBookDepthResponse,\n    RollingWindowTickerResponse,\n    TickerResponse,\n    TradeResponse,\n} from '../types';\n\nconst WebSocketStreamsApiParamCreator = function () {\n    return {\n        /**\n         * The Aggregate Trade Streams push trade information that is aggregated for a single taker order.\n         *\n         * @summary WebSocket Aggregate Trade Streams\n         * @param {string} symbol Symbol to query\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        aggTrade: (symbol: string, id?: string): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('aggTrade', 'symbol', symbol);\n\n            return replaceWebsocketStreamsPlaceholders('/<symbol>@aggTrade'.slice(1), {\n                symbol,\n                id,\n            });\n        },\n        /**\n         * Rolling window ticker statistics for all market symbols, computed over multiple windows.\n         * Note that only tickers that have changed will be present in the array.\n         *\n         * @summary WebSocket All Market Rolling Window Statistics Streams\n         * @param {AllMarketRollingWindowTickerWindowSizeEnum} windowSize\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        allMarketRollingWindowTicker: (\n            windowSize: AllMarketRollingWindowTickerWindowSizeEnum,\n            id?: string\n        ): string => {\n            // verify required parameter 'windowSize' is not null or undefined\n            assertParamExists('allMarketRollingWindowTicker', 'windowSize', windowSize);\n\n            return replaceWebsocketStreamsPlaceholders('/!ticker_<windowSize>@arr'.slice(1), {\n                windowSize,\n                id,\n            });\n        },\n        /**\n         * 24hr rolling window mini-ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. Note that only tickers that have changed will be present in the array.\n         *\n         * @summary WebSocket All Market Mini Tickers Stream\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        allMiniTicker: (id?: string): string => {\n            return replaceWebsocketStreamsPlaceholders('/!miniTicker@arr'.slice(1), { id });\n        },\n        /**\n         * 24hr rolling window ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. Note that only tickers that have changed will be present in the array.\n         *\n         * @summary WebSocket All Market Tickers Stream\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        allTicker: (id?: string): string => {\n            return replaceWebsocketStreamsPlaceholders('/!ticker@arr'.slice(1), { id });\n        },\n        /**\n         * Average price streams push changes in the average price over a fixed time interval.\n         *\n         * @summary WebSocket Average Price\n         * @param {string} symbol Symbol to query\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        avgPrice: (symbol: string, id?: string): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('avgPrice', 'symbol', symbol);\n\n            return replaceWebsocketStreamsPlaceholders('/<symbol>@avgPrice'.slice(1), {\n                symbol,\n                id,\n            });\n        },\n        /**\n         * Pushes any update to the best bid or ask's price or quantity in real-time for a specified symbol.\n         * Multiple `<symbol>@bookTicker` streams can be subscribed to over one connection.\n         *\n         * @summary WebSocket Individual Symbol Book Ticker Streams\n         * @param {string} symbol Symbol to query\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        bookTicker: (symbol: string, id?: string): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('bookTicker', 'symbol', symbol);\n\n            return replaceWebsocketStreamsPlaceholders('/<symbol>@bookTicker'.slice(1), {\n                symbol,\n                id,\n            });\n        },\n        /**\n         * Order book price and quantity depth updates used to locally manage an order book.\n         *\n         * @summary WebSocket Diff. Depth Stream\n         * @param {string} symbol Symbol to query\n         * @param {string} [id] Unique WebSocket request ID.\n         * @param {string} [updateSpeed] 1000ms or 100ms\n         *\n         * @throws {RequiredError}\n         */\n        diffBookDepth: (symbol: string, id?: string, updateSpeed?: string): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('diffBookDepth', 'symbol', symbol);\n\n            return replaceWebsocketStreamsPlaceholders('/<symbol>@depth@<updateSpeed>'.slice(1), {\n                symbol,\n                id,\n                updateSpeed,\n            });\n        },\n        /**\n         * The Kline/Candlestick Stream push updates to the current klines/candlestick every second in `UTC+0` timezone\n         *\n         * <a id=\"kline-intervals\"></a>\n         *\n         * @summary WebSocket Kline/Candlestick Streams for UTC\n         * @param {string} symbol Symbol to query\n         * @param {KlineIntervalEnum} interval\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        kline: (symbol: string, interval: KlineIntervalEnum, id?: string): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('kline', 'symbol', symbol);\n            // verify required parameter 'interval' is not null or undefined\n            assertParamExists('kline', 'interval', interval);\n\n            return replaceWebsocketStreamsPlaceholders('/<symbol>@kline_<interval>'.slice(1), {\n                symbol,\n                interval,\n                id,\n            });\n        },\n        /**\n         * The Kline/Candlestick Stream push updates to the current klines/candlestick every second in `UTC+8` timezone\n         *\n         * @summary WebSocket Kline/Candlestick Streams with timezone offset\n         * @param {string} symbol Symbol to query\n         * @param {KlineOffsetIntervalEnum} interval\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        klineOffset: (symbol: string, interval: KlineOffsetIntervalEnum, id?: string): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('klineOffset', 'symbol', symbol);\n            // verify required parameter 'interval' is not null or undefined\n            assertParamExists('klineOffset', 'interval', interval);\n\n            return replaceWebsocketStreamsPlaceholders(\n                '/<symbol>@kline_<interval>@+08:00'.slice(1),\n                { symbol, interval, id }\n            );\n        },\n        /**\n         * 24hr rolling window mini-ticker statistics. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.\n         *\n         * @summary WebSocket Individual Symbol Mini Ticker Stream\n         * @param {string} symbol Symbol to query\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        miniTicker: (symbol: string, id?: string): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('miniTicker', 'symbol', symbol);\n\n            return replaceWebsocketStreamsPlaceholders('/<symbol>@miniTicker'.slice(1), {\n                symbol,\n                id,\n            });\n        },\n        /**\n         * Top **\\<levels\\>** bids and asks, pushed every second. Valid **\\<levels\\>** are 5, 10, or 20.\n         *\n         * @summary WebSocket Partial Book Depth Streams\n         * @param {string} symbol Symbol to query\n         * @param {PartialBookDepthLevelsEnum} levels\n         * @param {string} [id] Unique WebSocket request ID.\n         * @param {string} [updateSpeed] 1000ms or 100ms\n         *\n         * @throws {RequiredError}\n         */\n        partialBookDepth: (\n            symbol: string,\n            levels: PartialBookDepthLevelsEnum,\n            id?: string,\n            updateSpeed?: string\n        ): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('partialBookDepth', 'symbol', symbol);\n            // verify required parameter 'levels' is not null or undefined\n            assertParamExists('partialBookDepth', 'levels', levels);\n\n            return replaceWebsocketStreamsPlaceholders(\n                '/<symbol>@depth<levels>@<updateSpeed>'.slice(1),\n                { symbol, levels, id, updateSpeed }\n            );\n        },\n        /**\n         * Rolling window ticker statistics for a single symbol, computed over multiple windows.\n         *\n         * @summary WebSocket Individual Symbol Rolling Window Statistics Streams\n         * @param {string} symbol Symbol to query\n         * @param {RollingWindowTickerWindowSizeEnum} windowSize\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        rollingWindowTicker: (\n            symbol: string,\n            windowSize: RollingWindowTickerWindowSizeEnum,\n            id?: string\n        ): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('rollingWindowTicker', 'symbol', symbol);\n            // verify required parameter 'windowSize' is not null or undefined\n            assertParamExists('rollingWindowTicker', 'windowSize', windowSize);\n\n            return replaceWebsocketStreamsPlaceholders('/<symbol>@ticker_<windowSize>'.slice(1), {\n                symbol,\n                windowSize,\n                id,\n            });\n        },\n        /**\n         * 24hr rolling window ticker statistics for a single symbol. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.\n         *\n         * @summary WebSocket Individual Symbol Ticker Streams\n         * @param {string} symbol Symbol to query\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        ticker: (symbol: string, id?: string): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('ticker', 'symbol', symbol);\n\n            return replaceWebsocketStreamsPlaceholders('/<symbol>@ticker'.slice(1), { symbol, id });\n        },\n        /**\n         * The Trade Streams push raw trade information; each trade has a unique buyer and seller.\n         *\n         * @summary WebSocket Trade Streams\n         * @param {string} symbol Symbol to query\n         * @param {string} [id] Unique WebSocket request ID.\n         *\n         * @throws {RequiredError}\n         */\n        trade: (symbol: string, id?: string): string => {\n            // verify required parameter 'symbol' is not null or undefined\n            assertParamExists('trade', 'symbol', symbol);\n\n            return replaceWebsocketStreamsPlaceholders('/<symbol>@trade'.slice(1), { symbol, id });\n        },\n    };\n};\n\n/**\n * WebSocketStreamsApi - interface\n * @interface WebSocketStreamsApi\n */\nexport interface WebSocketStreamsApiInterface {\n    /**\n     * The Aggregate Trade Streams push trade information that is aggregated for a single taker order.\n     *\n     * @summary WebSocket Aggregate Trade Streams\n     * @param {AggTradeRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<AggTradeResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    aggTrade(requestParameters: AggTradeRequest): WebsocketStream<AggTradeResponse>;\n\n    /**\n     * Rolling window ticker statistics for all market symbols, computed over multiple windows.\n     * Note that only tickers that have changed will be present in the array.\n     *\n     * @summary WebSocket All Market Rolling Window Statistics Streams\n     * @param {AllMarketRollingWindowTickerRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<AllMarketRollingWindowTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    allMarketRollingWindowTicker(\n        requestParameters: AllMarketRollingWindowTickerRequest\n    ): WebsocketStream<AllMarketRollingWindowTickerResponse>;\n\n    /**\n     * 24hr rolling window mini-ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. Note that only tickers that have changed will be present in the array.\n     *\n     * @summary WebSocket All Market Mini Tickers Stream\n     * @param {AllMiniTickerRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<AllMiniTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    allMiniTicker(requestParameters?: AllMiniTickerRequest): WebsocketStream<AllMiniTickerResponse>;\n\n    /**\n     * 24hr rolling window ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. Note that only tickers that have changed will be present in the array.\n     *\n     * @summary WebSocket All Market Tickers Stream\n     * @param {AllTickerRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<AllTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    allTicker(requestParameters?: AllTickerRequest): WebsocketStream<AllTickerResponse>;\n\n    /**\n     * Average price streams push changes in the average price over a fixed time interval.\n     *\n     * @summary WebSocket Average Price\n     * @param {AvgPriceRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<AvgPriceResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    avgPrice(requestParameters: AvgPriceRequest): WebsocketStream<AvgPriceResponse>;\n\n    /**\n     * Pushes any update to the best bid or ask's price or quantity in real-time for a specified symbol.\n     * Multiple `<symbol>@bookTicker` streams can be subscribed to over one connection.\n     *\n     * @summary WebSocket Individual Symbol Book Ticker Streams\n     * @param {BookTickerRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<BookTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    bookTicker(requestParameters: BookTickerRequest): WebsocketStream<BookTickerResponse>;\n\n    /**\n     * Order book price and quantity depth updates used to locally manage an order book.\n     *\n     * @summary WebSocket Diff. Depth Stream\n     * @param {DiffBookDepthRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<DiffBookDepthResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    diffBookDepth(requestParameters: DiffBookDepthRequest): WebsocketStream<DiffBookDepthResponse>;\n\n    /**\n     * The Kline/Candlestick Stream push updates to the current klines/candlestick every second in `UTC+0` timezone\n     *\n     * <a id=\"kline-intervals\"></a>\n     *\n     * @summary WebSocket Kline/Candlestick Streams for UTC\n     * @param {KlineRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<KlineResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    kline(requestParameters: KlineRequest): WebsocketStream<KlineResponse>;\n\n    /**\n     * The Kline/Candlestick Stream push updates to the current klines/candlestick every second in `UTC+8` timezone\n     *\n     * @summary WebSocket Kline/Candlestick Streams with timezone offset\n     * @param {KlineOffsetRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<KlineOffsetResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    klineOffset(requestParameters: KlineOffsetRequest): WebsocketStream<KlineOffsetResponse>;\n\n    /**\n     * 24hr rolling window mini-ticker statistics. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.\n     *\n     * @summary WebSocket Individual Symbol Mini Ticker Stream\n     * @param {MiniTickerRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<MiniTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    miniTicker(requestParameters: MiniTickerRequest): WebsocketStream<MiniTickerResponse>;\n\n    /**\n     * Top **\\<levels\\>** bids and asks, pushed every second. Valid **\\<levels\\>** are 5, 10, or 20.\n     *\n     * @summary WebSocket Partial Book Depth Streams\n     * @param {PartialBookDepthRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<PartialBookDepthResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    partialBookDepth(\n        requestParameters: PartialBookDepthRequest\n    ): WebsocketStream<PartialBookDepthResponse>;\n\n    /**\n     * Rolling window ticker statistics for a single symbol, computed over multiple windows.\n     *\n     * @summary WebSocket Individual Symbol Rolling Window Statistics Streams\n     * @param {RollingWindowTickerRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<RollingWindowTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    rollingWindowTicker(\n        requestParameters: RollingWindowTickerRequest\n    ): WebsocketStream<RollingWindowTickerResponse>;\n\n    /**\n     * 24hr rolling window ticker statistics for a single symbol. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.\n     *\n     * @summary WebSocket Individual Symbol Ticker Streams\n     * @param {TickerRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<TickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    ticker(requestParameters: TickerRequest): WebsocketStream<TickerResponse>;\n\n    /**\n     * The Trade Streams push raw trade information; each trade has a unique buyer and seller.\n     *\n     * @summary WebSocket Trade Streams\n     * @param {TradeRequest} requestParameters Request parameters.\n     *\n     * @returns {WebsocketStream<TradeResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApiInterface\n     */\n    trade(requestParameters: TradeRequest): WebsocketStream<TradeResponse>;\n}\n\n/**\n * Request parameters for aggTrade operation in WebSocketStreamsApi.\n * @interface AggTradeRequest\n */\nexport interface AggTradeRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiAggTrade\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiAggTrade\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for allMarketRollingWindowTicker operation in WebSocketStreamsApi.\n * @interface AllMarketRollingWindowTickerRequest\n */\nexport interface AllMarketRollingWindowTickerRequest {\n    /**\n     *\n     * @type {'1h' | '4h' | '1d'}\n     * @memberof WebSocketStreamsApiAllMarketRollingWindowTicker\n     */\n    readonly windowSize: AllMarketRollingWindowTickerWindowSizeEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiAllMarketRollingWindowTicker\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for allMiniTicker operation in WebSocketStreamsApi.\n * @interface AllMiniTickerRequest\n */\nexport interface AllMiniTickerRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiAllMiniTicker\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for allTicker operation in WebSocketStreamsApi.\n * @interface AllTickerRequest\n */\nexport interface AllTickerRequest {\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiAllTicker\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for avgPrice operation in WebSocketStreamsApi.\n * @interface AvgPriceRequest\n */\nexport interface AvgPriceRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiAvgPrice\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiAvgPrice\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for bookTicker operation in WebSocketStreamsApi.\n * @interface BookTickerRequest\n */\nexport interface BookTickerRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiBookTicker\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiBookTicker\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for diffBookDepth operation in WebSocketStreamsApi.\n * @interface DiffBookDepthRequest\n */\nexport interface DiffBookDepthRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiDiffBookDepth\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiDiffBookDepth\n     */\n    readonly id?: string;\n\n    /**\n     * 1000ms or 100ms\n     * @type {string}\n     * @memberof WebSocketStreamsApiDiffBookDepth\n     */\n    readonly updateSpeed?: string;\n}\n\n/**\n * Request parameters for kline operation in WebSocketStreamsApi.\n * @interface KlineRequest\n */\nexport interface KlineRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiKline\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'1s' | '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '6h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M'}\n     * @memberof WebSocketStreamsApiKline\n     */\n    readonly interval: KlineIntervalEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiKline\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for klineOffset operation in WebSocketStreamsApi.\n * @interface KlineOffsetRequest\n */\nexport interface KlineOffsetRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiKlineOffset\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'1s' | '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '6h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M'}\n     * @memberof WebSocketStreamsApiKlineOffset\n     */\n    readonly interval: KlineOffsetIntervalEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiKlineOffset\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for miniTicker operation in WebSocketStreamsApi.\n * @interface MiniTickerRequest\n */\nexport interface MiniTickerRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiMiniTicker\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiMiniTicker\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for partialBookDepth operation in WebSocketStreamsApi.\n * @interface PartialBookDepthRequest\n */\nexport interface PartialBookDepthRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiPartialBookDepth\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'5' | '10' | '20'}\n     * @memberof WebSocketStreamsApiPartialBookDepth\n     */\n    readonly levels: PartialBookDepthLevelsEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiPartialBookDepth\n     */\n    readonly id?: string;\n\n    /**\n     * 1000ms or 100ms\n     * @type {string}\n     * @memberof WebSocketStreamsApiPartialBookDepth\n     */\n    readonly updateSpeed?: string;\n}\n\n/**\n * Request parameters for rollingWindowTicker operation in WebSocketStreamsApi.\n * @interface RollingWindowTickerRequest\n */\nexport interface RollingWindowTickerRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiRollingWindowTicker\n     */\n    readonly symbol: string;\n\n    /**\n     *\n     * @type {'1h' | '4h' | '1d'}\n     * @memberof WebSocketStreamsApiRollingWindowTicker\n     */\n    readonly windowSize: RollingWindowTickerWindowSizeEnum;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiRollingWindowTicker\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for ticker operation in WebSocketStreamsApi.\n * @interface TickerRequest\n */\nexport interface TickerRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiTicker\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiTicker\n     */\n    readonly id?: string;\n}\n\n/**\n * Request parameters for trade operation in WebSocketStreamsApi.\n * @interface TradeRequest\n */\nexport interface TradeRequest {\n    /**\n     * Symbol to query\n     * @type {string}\n     * @memberof WebSocketStreamsApiTrade\n     */\n    readonly symbol: string;\n\n    /**\n     * Unique WebSocket request ID.\n     * @type {string}\n     * @memberof WebSocketStreamsApiTrade\n     */\n    readonly id?: string;\n}\n\n/**\n * WebSocketStreamsApi - interface\n * @class WebSocketStreamsApi\n * @extends {WebsocketStreamsBase}\n */\nexport class WebSocketStreamsApi implements WebSocketStreamsApiInterface {\n    private readonly websocketBase: WebsocketStreamsBase;\n    private localVarParamCreator;\n\n    constructor(websocketBase: WebsocketStreamsBase) {\n        this.websocketBase = websocketBase;\n        this.localVarParamCreator = WebSocketStreamsApiParamCreator();\n    }\n\n    /**\n     * The Aggregate Trade Streams push trade information that is aggregated for a single taker order.\n     *\n     * @summary WebSocket Aggregate Trade Streams\n     * @param {AggTradeRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AggTradeResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#aggregate-trade-streams Binance API Documentation}\n     */\n    public aggTrade(requestParameters: AggTradeRequest): WebsocketStream<AggTradeResponse> {\n        const stream = this.localVarParamCreator.aggTrade(\n            requestParameters?.symbol,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<AggTradeResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * Rolling window ticker statistics for all market symbols, computed over multiple windows.\n     * Note that only tickers that have changed will be present in the array.\n     *\n     * @summary WebSocket All Market Rolling Window Statistics Streams\n     * @param {AllMarketRollingWindowTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AllMarketRollingWindowTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-rolling-window-statistics-streams Binance API Documentation}\n     */\n    public allMarketRollingWindowTicker(\n        requestParameters: AllMarketRollingWindowTickerRequest\n    ): WebsocketStream<AllMarketRollingWindowTickerResponse> {\n        const stream = this.localVarParamCreator.allMarketRollingWindowTicker(\n            requestParameters?.windowSize,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<AllMarketRollingWindowTickerResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * 24hr rolling window mini-ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. Note that only tickers that have changed will be present in the array.\n     *\n     * @summary WebSocket All Market Mini Tickers Stream\n     * @param {AllMiniTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AllMiniTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-mini-tickers-stream Binance API Documentation}\n     */\n    public allMiniTicker(\n        requestParameters: AllMiniTickerRequest = {}\n    ): WebsocketStream<AllMiniTickerResponse> {\n        const stream = this.localVarParamCreator.allMiniTicker(requestParameters?.id);\n\n        return createStreamHandler<AllMiniTickerResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * 24hr rolling window ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. Note that only tickers that have changed will be present in the array.\n     *\n     * @summary WebSocket All Market Tickers Stream\n     * @param {AllTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AllTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-tickers-stream Binance API Documentation}\n     */\n    public allTicker(requestParameters: AllTickerRequest = {}): WebsocketStream<AllTickerResponse> {\n        const stream = this.localVarParamCreator.allTicker(requestParameters?.id);\n\n        return createStreamHandler<AllTickerResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * Average price streams push changes in the average price over a fixed time interval.\n     *\n     * @summary WebSocket Average Price\n     * @param {AvgPriceRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AvgPriceResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#average-price Binance API Documentation}\n     */\n    public avgPrice(requestParameters: AvgPriceRequest): WebsocketStream<AvgPriceResponse> {\n        const stream = this.localVarParamCreator.avgPrice(\n            requestParameters?.symbol,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<AvgPriceResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * Pushes any update to the best bid or ask's price or quantity in real-time for a specified symbol.\n     * Multiple `<symbol>@bookTicker` streams can be subscribed to over one connection.\n     *\n     * @summary WebSocket Individual Symbol Book Ticker Streams\n     * @param {BookTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<BookTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-book-ticker-streams Binance API Documentation}\n     */\n    public bookTicker(requestParameters: BookTickerRequest): WebsocketStream<BookTickerResponse> {\n        const stream = this.localVarParamCreator.bookTicker(\n            requestParameters?.symbol,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<BookTickerResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * Order book price and quantity depth updates used to locally manage an order book.\n     *\n     * @summary WebSocket Diff. Depth Stream\n     * @param {DiffBookDepthRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<DiffBookDepthResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#diff-depth-stream Binance API Documentation}\n     */\n    public diffBookDepth(\n        requestParameters: DiffBookDepthRequest\n    ): WebsocketStream<DiffBookDepthResponse> {\n        const stream = this.localVarParamCreator.diffBookDepth(\n            requestParameters?.symbol,\n            requestParameters?.id,\n            requestParameters?.updateSpeed\n        );\n\n        return createStreamHandler<DiffBookDepthResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * The Kline/Candlestick Stream push updates to the current klines/candlestick every second in `UTC+0` timezone\n     *\n     * <a id=\"kline-intervals\"></a>\n     *\n     * @summary WebSocket Kline/Candlestick Streams for UTC\n     * @param {KlineRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<KlineResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#klinecandlestick-streams-for-utc Binance API Documentation}\n     */\n    public kline(requestParameters: KlineRequest): WebsocketStream<KlineResponse> {\n        const stream = this.localVarParamCreator.kline(\n            requestParameters?.symbol,\n            requestParameters?.interval,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<KlineResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * The Kline/Candlestick Stream push updates to the current klines/candlestick every second in `UTC+8` timezone\n     *\n     * @summary WebSocket Kline/Candlestick Streams with timezone offset\n     * @param {KlineOffsetRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<KlineOffsetResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#klinecandlestick-streams-with-timezone-offset Binance API Documentation}\n     */\n    public klineOffset(\n        requestParameters: KlineOffsetRequest\n    ): WebsocketStream<KlineOffsetResponse> {\n        const stream = this.localVarParamCreator.klineOffset(\n            requestParameters?.symbol,\n            requestParameters?.interval,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<KlineOffsetResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * 24hr rolling window mini-ticker statistics. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.\n     *\n     * @summary WebSocket Individual Symbol Mini Ticker Stream\n     * @param {MiniTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<MiniTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-mini-ticker-stream Binance API Documentation}\n     */\n    public miniTicker(requestParameters: MiniTickerRequest): WebsocketStream<MiniTickerResponse> {\n        const stream = this.localVarParamCreator.miniTicker(\n            requestParameters?.symbol,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<MiniTickerResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * Top **\\<levels\\>** bids and asks, pushed every second. Valid **\\<levels\\>** are 5, 10, or 20.\n     *\n     * @summary WebSocket Partial Book Depth Streams\n     * @param {PartialBookDepthRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<PartialBookDepthResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#partial-book-depth-streams Binance API Documentation}\n     */\n    public partialBookDepth(\n        requestParameters: PartialBookDepthRequest\n    ): WebsocketStream<PartialBookDepthResponse> {\n        const stream = this.localVarParamCreator.partialBookDepth(\n            requestParameters?.symbol,\n            requestParameters?.levels,\n            requestParameters?.id,\n            requestParameters?.updateSpeed\n        );\n\n        return createStreamHandler<PartialBookDepthResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * Rolling window ticker statistics for a single symbol, computed over multiple windows.\n     *\n     * @summary WebSocket Individual Symbol Rolling Window Statistics Streams\n     * @param {RollingWindowTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<RollingWindowTickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-rolling-window-statistics-streams Binance API Documentation}\n     */\n    public rollingWindowTicker(\n        requestParameters: RollingWindowTickerRequest\n    ): WebsocketStream<RollingWindowTickerResponse> {\n        const stream = this.localVarParamCreator.rollingWindowTicker(\n            requestParameters?.symbol,\n            requestParameters?.windowSize,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<RollingWindowTickerResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * 24hr rolling window ticker statistics for a single symbol. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.\n     *\n     * @summary WebSocket Individual Symbol Ticker Streams\n     * @param {TickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<TickerResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-ticker-streams Binance API Documentation}\n     */\n    public ticker(requestParameters: TickerRequest): WebsocketStream<TickerResponse> {\n        const stream = this.localVarParamCreator.ticker(\n            requestParameters?.symbol,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<TickerResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n\n    /**\n     * The Trade Streams push raw trade information; each trade has a unique buyer and seller.\n     *\n     * @summary WebSocket Trade Streams\n     * @param {TradeRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<TradeResponse>}\n     * @throws {RequiredError}\n     * @memberof WebSocketStreamsApi\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#trade-streams Binance API Documentation}\n     */\n    public trade(requestParameters: TradeRequest): WebsocketStream<TradeResponse> {\n        const stream = this.localVarParamCreator.trade(\n            requestParameters?.symbol,\n            requestParameters?.id\n        );\n\n        return createStreamHandler<TradeResponse>(\n            this.websocketBase,\n            stream,\n            requestParameters?.id\n        );\n    }\n}\n\nexport enum AllMarketRollingWindowTickerWindowSizeEnum {\n    WINDOW_SIZE_1h = '1h',\n    WINDOW_SIZE_4h = '4h',\n    WINDOW_SIZE_1d = '1d',\n}\n\nexport enum KlineIntervalEnum {\n    INTERVAL_1s = '1s',\n    INTERVAL_1m = '1m',\n    INTERVAL_3m = '3m',\n    INTERVAL_5m = '5m',\n    INTERVAL_15m = '15m',\n    INTERVAL_30m = '30m',\n    INTERVAL_1h = '1h',\n    INTERVAL_2h = '2h',\n    INTERVAL_4h = '4h',\n    INTERVAL_6h = '6h',\n    INTERVAL_8h = '8h',\n    INTERVAL_12h = '12h',\n    INTERVAL_1d = '1d',\n    INTERVAL_3d = '3d',\n    INTERVAL_1w = '1w',\n    INTERVAL_1M = '1M',\n}\n\nexport enum KlineOffsetIntervalEnum {\n    INTERVAL_1s = '1s',\n    INTERVAL_1m = '1m',\n    INTERVAL_3m = '3m',\n    INTERVAL_5m = '5m',\n    INTERVAL_15m = '15m',\n    INTERVAL_30m = '30m',\n    INTERVAL_1h = '1h',\n    INTERVAL_2h = '2h',\n    INTERVAL_4h = '4h',\n    INTERVAL_6h = '6h',\n    INTERVAL_8h = '8h',\n    INTERVAL_12h = '12h',\n    INTERVAL_1d = '1d',\n    INTERVAL_3d = '3d',\n    INTERVAL_1w = '1w',\n    INTERVAL_1M = '1M',\n}\n\nexport enum PartialBookDepthLevelsEnum {\n    LEVELS_5 = '5',\n    LEVELS_10 = '10',\n    LEVELS_20 = '20',\n}\n\nexport enum RollingWindowTickerWindowSizeEnum {\n    WINDOW_SIZE_1h = '1h',\n    WINDOW_SIZE_4h = '4h',\n    WINDOW_SIZE_1d = '1d',\n}\n","/**\n * Binance Spot WebSocket Streams\n *\n * OpenAPI Specifications for the Binance Spot WebSocket Streams\n *\n * API documents:\n * - [Github web-socket-streams documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-streams.md)\n * - [General API information for web-socket-streams on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { ConfigurationWebsocketStreams, WebsocketStreamsBase } from '@binance/common';\nimport { WebsocketStreamsConnection } from './websocket-streams-connection';\n\nexport class WebsocketStreams {\n    private configuration: ConfigurationWebsocketStreams;\n\n    constructor(configuration: ConfigurationWebsocketStreams) {\n        this.configuration = configuration;\n    }\n\n    /**\n     * Connects to the Binance WebSocket streams and returns a `WebsocketStreamsConnection` instance.\n     *\n     * @param {object} [options] - Optional connection options.\n     * @param {string|string[]} [options.stream] - The stream(s) to connect to.\n     * @param {'single'|'pool'} [options.mode] - The connection mode, either 'single' or 'pool'. Overwrite the `mode` option in the configuration.\n     * @param {number} [options.poolSize] - The number of connections to use in pool mode. Overwrite the `poolSize` option in the configuration.\n     * @returns {Promise<WebsocketStreamsConnection>} - A promise that resolves to a `WebsocketStreamsConnection` instance.\n     */\n    async connect({\n        stream,\n        mode,\n        poolSize,\n    }: {\n        stream?: string | string[];\n        mode?: 'single' | 'pool';\n        poolSize?: number;\n    } = {}): Promise<WebsocketStreamsConnection> {\n        const websocketBase = new WebsocketStreamsBase({\n            ...this.configuration,\n            ...(mode && { mode }),\n            ...(poolSize && { poolSize }),\n        });\n        const websocketStreamsConnection = new WebsocketStreamsConnection(websocketBase);\n        await websocketBase.connect(stream);\n        return websocketStreamsConnection;\n    }\n}\n","/**\n * Binance Spot WebSocket Streams\n *\n * OpenAPI Specifications for the Binance Spot WebSocket Streams\n *\n * API documents:\n * - [Github web-socket-streams documentation file](https://github.com/binance/binance-spot-api-docs/blob/master/web-socket-streams.md)\n * - [General API information for web-socket-streams on website](https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams)\n *\n *\n * The version of the OpenAPI document: 1.0.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { WebsocketStreamsBase, WebsocketStream, createStreamHandler } from '@binance/common';\nimport { WebSocketStreamsApi } from './modules/web-socket-streams-api';\n\nimport type {\n    AggTradeRequest,\n    AllMarketRollingWindowTickerRequest,\n    AllMiniTickerRequest,\n    AllTickerRequest,\n    AvgPriceRequest,\n    BookTickerRequest,\n    DiffBookDepthRequest,\n    KlineRequest,\n    KlineOffsetRequest,\n    MiniTickerRequest,\n    PartialBookDepthRequest,\n    RollingWindowTickerRequest,\n    TickerRequest,\n    TradeRequest,\n} from './modules/web-socket-streams-api';\n\nimport type {\n    AggTradeResponse,\n    AllMarketRollingWindowTickerResponse,\n    AllMiniTickerResponse,\n    AllTickerResponse,\n    AvgPriceResponse,\n    BookTickerResponse,\n    DiffBookDepthResponse,\n    KlineResponse,\n    KlineOffsetResponse,\n    MiniTickerResponse,\n    PartialBookDepthResponse,\n    RollingWindowTickerResponse,\n    TickerResponse,\n    TradeResponse,\n} from './types';\n\nexport class WebsocketStreamsConnection {\n    private websocketBase: WebsocketStreamsBase;\n    private webSocketStreamsApi: WebSocketStreamsApi;\n\n    constructor(websocketBase: WebsocketStreamsBase) {\n        this.websocketBase = websocketBase;\n        this.webSocketStreamsApi = new WebSocketStreamsApi(websocketBase);\n    }\n\n    /**\n     * Adds an event listener for the specified WebSocket event.\n     * @param event - The WebSocket event to listen for, such as 'open', 'message', 'error', 'close', 'ping', or 'pong'.\n     * @param listener - The callback function to be executed when the event is triggered. The function can accept any number of arguments.\n     */\n    on(\n        event: 'open' | 'message' | 'error' | 'close' | 'ping' | 'pong',\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        listener: (...args: any[]) => void\n    ) {\n        this.websocketBase.on(event, listener);\n    }\n\n    /**\n     * Removes an event listener for the specified WebSocket event.\n     * @param event - The WebSocket event to stop listening for, such as 'open', 'message', 'error', 'close', 'ping', or 'pong'.\n     * @param listener - The callback function that was previously added as the event listener.\n     */\n    off(\n        event: 'open' | 'message' | 'error' | 'close' | 'ping' | 'pong',\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        listener: (...args: any[]) => void\n    ) {\n        this.websocketBase.off(event, listener);\n    }\n\n    /**\n     * Disconnects from the WebSocket server.\n     * If there is no active connection, a warning is logged.\n     * Otherwise, all connections in the connection pool are closed gracefully,\n     * and a message is logged indicating that the connection has been disconnected.\n     * @returns A Promise that resolves when all connections have been closed.\n     * @throws Error if the WebSocket client is not set.\n     */\n    disconnect(): Promise<void> {\n        return this.websocketBase.disconnect();\n    }\n\n    /**\n     * Checks if the WebSocket connection is currently open.\n     * @returns `true` if the connection is open, `false` otherwise.\n     */\n    isConnected(): boolean {\n        return this.websocketBase.isConnected();\n    }\n\n    /**\n     * Sends a ping message to all connected Websocket servers in the pool.\n     * If no connections are ready, a warning is logged.\n     * For each active connection, the ping message is sent, and debug logs provide details.\n     * @throws Error if a Websocket client is not set for a connection.\n     */\n    pingServer(): void {\n        this.websocketBase.pingServer();\n    }\n\n    /**\n     * Subscribes to one or multiple WebSocket streams\n     * Handles both single and pool modes\n     * @param stream Single stream name or array of stream names to subscribe to\n     * @param id Optional subscription ID\n     * @returns void\n     */\n    subscribe(stream: string | string[], id?: string): void {\n        this.websocketBase.subscribe(stream, id);\n    }\n\n    /**\n     * Unsubscribes from one or multiple WebSocket streams\n     * Handles both single and pool modes\n     * @param stream Single stream name or array of stream names to unsubscribe from\n     * @param id Optional unsubscription ID\n     * @returns void\n     */\n    unsubscribe(stream: string | string[], id?: string): void {\n        this.websocketBase.unsubscribe(stream, id);\n    }\n\n    /**\n     * Checks if the WebSocket connection is subscribed to the specified stream.\n     * @param stream The name of the WebSocket stream to check.\n     * @returns `true` if the connection is subscribed to the stream, `false` otherwise.\n     */\n    isSubscribed(stream: string): boolean {\n        return this.websocketBase.isSubscribed(stream);\n    }\n\n    /**\n     * Subscribes to the user data WebSocket stream using the provided listen key.\n     * @param listenKey - The listen key for the user data WebSocket stream.\n     * @param id - Optional user data stream ID\n     * @returns A WebSocket stream handler for the user data stream.\n     */\n    userData(listenKey: string, id?: string): WebsocketStream<object> {\n        return createStreamHandler<object>(this.websocketBase, listenKey, id);\n    }\n\n    /**\n     * The Aggregate Trade Streams push trade information that is aggregated for a single taker order.\n     *\n     * @summary WebSocket Aggregate Trade Streams\n     * @param {AggTradeRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AggTradeResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#aggregate-trade-streams Binance API Documentation}\n     */\n    aggTrade(requestParameters: AggTradeRequest): WebsocketStream<AggTradeResponse> {\n        return this.webSocketStreamsApi.aggTrade(requestParameters);\n    }\n\n    /**\n     * Rolling window ticker statistics for all market symbols, computed over multiple windows.\n     * Note that only tickers that have changed will be present in the array.\n     *\n     * @summary WebSocket All Market Rolling Window Statistics Streams\n     * @param {AllMarketRollingWindowTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AllMarketRollingWindowTickerResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-rolling-window-statistics-streams Binance API Documentation}\n     */\n    allMarketRollingWindowTicker(\n        requestParameters: AllMarketRollingWindowTickerRequest\n    ): WebsocketStream<AllMarketRollingWindowTickerResponse> {\n        return this.webSocketStreamsApi.allMarketRollingWindowTicker(requestParameters);\n    }\n\n    /**\n     * 24hr rolling window mini-ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. Note that only tickers that have changed will be present in the array.\n     *\n     * @summary WebSocket All Market Mini Tickers Stream\n     * @param {AllMiniTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AllMiniTickerResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-mini-tickers-stream Binance API Documentation}\n     */\n    allMiniTicker(\n        requestParameters: AllMiniTickerRequest = {}\n    ): WebsocketStream<AllMiniTickerResponse> {\n        return this.webSocketStreamsApi.allMiniTicker(requestParameters);\n    }\n\n    /**\n     * 24hr rolling window ticker statistics for all symbols that changed in an array. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs. Note that only tickers that have changed will be present in the array.\n     *\n     * @summary WebSocket All Market Tickers Stream\n     * @param {AllTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AllTickerResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#all-market-tickers-stream Binance API Documentation}\n     */\n    allTicker(requestParameters: AllTickerRequest = {}): WebsocketStream<AllTickerResponse> {\n        return this.webSocketStreamsApi.allTicker(requestParameters);\n    }\n\n    /**\n     * Average price streams push changes in the average price over a fixed time interval.\n     *\n     * @summary WebSocket Average Price\n     * @param {AvgPriceRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<AvgPriceResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#average-price Binance API Documentation}\n     */\n    avgPrice(requestParameters: AvgPriceRequest): WebsocketStream<AvgPriceResponse> {\n        return this.webSocketStreamsApi.avgPrice(requestParameters);\n    }\n\n    /**\n     * Pushes any update to the best bid or ask's price or quantity in real-time for a specified symbol.\n     * Multiple `<symbol>@bookTicker` streams can be subscribed to over one connection.\n     *\n     * @summary WebSocket Individual Symbol Book Ticker Streams\n     * @param {BookTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<BookTickerResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-book-ticker-streams Binance API Documentation}\n     */\n    bookTicker(requestParameters: BookTickerRequest): WebsocketStream<BookTickerResponse> {\n        return this.webSocketStreamsApi.bookTicker(requestParameters);\n    }\n\n    /**\n     * Order book price and quantity depth updates used to locally manage an order book.\n     *\n     * @summary WebSocket Diff. Depth Stream\n     * @param {DiffBookDepthRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<DiffBookDepthResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#diff-depth-stream Binance API Documentation}\n     */\n    diffBookDepth(requestParameters: DiffBookDepthRequest): WebsocketStream<DiffBookDepthResponse> {\n        return this.webSocketStreamsApi.diffBookDepth(requestParameters);\n    }\n\n    /**\n     * The Kline/Candlestick Stream push updates to the current klines/candlestick every second in `UTC+0` timezone\n     *\n     * <a id=\"kline-intervals\"></a>\n     *\n     * @summary WebSocket Kline/Candlestick Streams for UTC\n     * @param {KlineRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<KlineResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#klinecandlestick-streams-for-utc Binance API Documentation}\n     */\n    kline(requestParameters: KlineRequest): WebsocketStream<KlineResponse> {\n        return this.webSocketStreamsApi.kline(requestParameters);\n    }\n\n    /**\n     * The Kline/Candlestick Stream push updates to the current klines/candlestick every second in `UTC+8` timezone\n     *\n     * @summary WebSocket Kline/Candlestick Streams with timezone offset\n     * @param {KlineOffsetRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<KlineOffsetResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#klinecandlestick-streams-with-timezone-offset Binance API Documentation}\n     */\n    klineOffset(requestParameters: KlineOffsetRequest): WebsocketStream<KlineOffsetResponse> {\n        return this.webSocketStreamsApi.klineOffset(requestParameters);\n    }\n\n    /**\n     * 24hr rolling window mini-ticker statistics. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.\n     *\n     * @summary WebSocket Individual Symbol Mini Ticker Stream\n     * @param {MiniTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<MiniTickerResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-mini-ticker-stream Binance API Documentation}\n     */\n    miniTicker(requestParameters: MiniTickerRequest): WebsocketStream<MiniTickerResponse> {\n        return this.webSocketStreamsApi.miniTicker(requestParameters);\n    }\n\n    /**\n     * Top **\\<levels\\>** bids and asks, pushed every second. Valid **\\<levels\\>** are 5, 10, or 20.\n     *\n     * @summary WebSocket Partial Book Depth Streams\n     * @param {PartialBookDepthRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<PartialBookDepthResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#partial-book-depth-streams Binance API Documentation}\n     */\n    partialBookDepth(\n        requestParameters: PartialBookDepthRequest\n    ): WebsocketStream<PartialBookDepthResponse> {\n        return this.webSocketStreamsApi.partialBookDepth(requestParameters);\n    }\n\n    /**\n     * Rolling window ticker statistics for a single symbol, computed over multiple windows.\n     *\n     * @summary WebSocket Individual Symbol Rolling Window Statistics Streams\n     * @param {RollingWindowTickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<RollingWindowTickerResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-rolling-window-statistics-streams Binance API Documentation}\n     */\n    rollingWindowTicker(\n        requestParameters: RollingWindowTickerRequest\n    ): WebsocketStream<RollingWindowTickerResponse> {\n        return this.webSocketStreamsApi.rollingWindowTicker(requestParameters);\n    }\n\n    /**\n     * 24hr rolling window ticker statistics for a single symbol. These are NOT the statistics of the UTC day, but a 24hr rolling window for the previous 24hrs.\n     *\n     * @summary WebSocket Individual Symbol Ticker Streams\n     * @param {TickerRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<TickerResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#individual-symbol-ticker-streams Binance API Documentation}\n     */\n    ticker(requestParameters: TickerRequest): WebsocketStream<TickerResponse> {\n        return this.webSocketStreamsApi.ticker(requestParameters);\n    }\n\n    /**\n     * The Trade Streams push raw trade information; each trade has a unique buyer and seller.\n     *\n     * @summary WebSocket Trade Streams\n     * @param {TradeRequest} requestParameters Request parameters.\n     * @returns {WebsocketStream<TradeResponse>}\n     * @throws {RequiredError}\n     * @see {@link https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams#trade-streams Binance API Documentation}\n     */\n    trade(requestParameters: TradeRequest): WebsocketStream<TradeResponse> {\n        return this.webSocketStreamsApi.trade(requestParameters);\n    }\n}\n","export { Spot, ConfigurationSpot } from './spot';\nexport * as SpotRestAPI from './rest-api';\nexport * as SpotWebsocketAPI from './websocket-api';\nexport * as SpotWebsocketStreams from './websocket-streams';\n\nexport {\n    TimeUnit,\n    SPOT_REST_API_PROD_URL,\n    SPOT_REST_API_TESTNET_URL,\n    SPOT_WS_API_PROD_URL,\n    SPOT_WS_API_TESTNET_URL,\n    SPOT_WS_STREAMS_PROD_URL,\n    SPOT_WS_STREAMS_TESTNET_URL,\n    ConnectorClientError,\n    RequiredError,\n    UnauthorizedError,\n    ForbiddenError,\n    TooManyRequestsError,\n    RateLimitBanError,\n    ServerError,\n    NetworkError,\n    NotFoundError,\n    BadRequestError,\n} from '@binance/common';\n"],"mappings":"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AAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AAxFT,SAAAA;AAAA,GAAA;AA2FL,IAAK,iBAAL,kBAAKC,oBAAL;AACH,EAAAA,gBAAA,UAAO;AACP,EAAAA,gBAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,qBAAL,kBAAKC,wBAAL;AACH,EAAAA,oBAAA,UAAO;AACP,EAAAA,oBAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,2BAAL,kBAAKC,8BAAL;AACH,EAAAA,0BAAA,UAAO;AACP,EAAAA,0BAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,uBAAL,kBAAKC,0BAAL;AACH,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AAhBN,SAAAA;AAAA,GAAA;;;AC3xDZ;AAAA,EAII,qBAAAC;AAAA,EACA,eAAAC;AAAA,OAEG;AAoBP,IAAM,4BAA4B,SAAU,eAAqC;AAC7E,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYH,kBAAkB,OAAO,QAAgB,eAA8C;AAEnF,MAAAD,mBAAkB,oBAAoB,UAAU,MAAM;AAEtD,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAeA,aAAa,OACT,QACA,SACA,mBACA,kBACA,oBACA,eACuB;AAEvB,MAAAA,mBAAkB,eAAe,UAAU,MAAM;AAEjD,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,YAAY,UAAa,YAAY,MAAM;AAC3C,+BAAuB,SAAS,IAAI;AAAA,MACxC;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcA,iBAAiB,OACb,QACA,aACA,mBACA,kBACA,eACuB;AAEvB,MAAAA,mBAAkB,mBAAmB,UAAU,MAAM;AAErD,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA2BA,UAAU,OACN,QACA,MACA,MACA,aACA,UACA,eACA,OACA,kBACA,YACA,cACA,WACA,eACA,YACA,kBACA,yBACA,eACuB;AAEvB,MAAAA,mBAAkB,YAAY,UAAU,MAAM;AAE9C,MAAAA,mBAAkB,YAAY,QAAQ,IAAI;AAE1C,MAAAA,mBAAkB,YAAY,QAAQ,IAAI;AAE1C,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,SAAS,UAAa,SAAS,MAAM;AACrC,+BAAuB,MAAM,IAAI;AAAA,MACrC;AAEA,UAAI,SAAS,UAAa,SAAS,MAAM;AACrC,+BAAuB,MAAM,IAAI;AAAA,MACrC;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,aAAa,UAAa,aAAa,MAAM;AAC7C,+BAAuB,UAAU,IAAI;AAAA,MACzC;AAEA,UAAI,kBAAkB,UAAa,kBAAkB,MAAM;AACvD,+BAAuB,eAAe,IAAI;AAAA,MAC9C;AAEA,UAAI,UAAU,UAAa,UAAU,MAAM;AACvC,+BAAuB,OAAO,IAAI;AAAA,MACtC;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI,iBAAiB,UAAa,iBAAiB,MAAM;AACrD,+BAAuB,cAAc,IAAI;AAAA,MAC7C;AAEA,UAAI,cAAc,UAAa,cAAc,MAAM;AAC/C,+BAAuB,WAAW,IAAI;AAAA,MAC1C;AAEA,UAAI,kBAAkB,UAAa,kBAAkB,MAAM;AACvD,+BAAuB,eAAe,IAAI;AAAA,MAC9C;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAmBA,wBAAwB,OACpB,QACA,QACA,SACA,mBACA,kBACA,eACuB;AAEvB,MAAAA,mBAAkB,0BAA0B,UAAU,MAAM;AAE5D,MAAAA,mBAAkB,0BAA0B,UAAU,MAAM;AAE5D,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,YAAY,UAAa,YAAY,MAAM;AAC3C,+BAAuB,SAAS,IAAI;AAAA,MACxC;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAmCA,oBAAoB,OAChB,QACA,MACA,MACA,mBACA,aACA,UACA,eACA,OACA,wBACA,yBACA,eACA,kBACA,YACA,cACA,WACA,eACA,YACA,kBACA,yBACA,oBACA,4BACA,eACuB;AAEvB,MAAAA,mBAAkB,sBAAsB,UAAU,MAAM;AAExD,MAAAA,mBAAkB,sBAAsB,QAAQ,IAAI;AAEpD,MAAAA,mBAAkB,sBAAsB,QAAQ,IAAI;AAEpD,MAAAA,mBAAkB,sBAAsB,qBAAqB,iBAAiB;AAE9E,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,SAAS,UAAa,SAAS,MAAM;AACrC,+BAAuB,MAAM,IAAI;AAAA,MACrC;AAEA,UAAI,SAAS,UAAa,SAAS,MAAM;AACrC,+BAAuB,MAAM,IAAI;AAAA,MACrC;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,aAAa,UAAa,aAAa,MAAM;AAC7C,+BAAuB,UAAU,IAAI;AAAA,MACzC;AAEA,UAAI,kBAAkB,UAAa,kBAAkB,MAAM;AACvD,+BAAuB,eAAe,IAAI;AAAA,MAC9C;AAEA,UAAI,UAAU,UAAa,UAAU,MAAM;AACvC,+BAAuB,OAAO,IAAI;AAAA,MACtC;AAEA,UAAI,2BAA2B,UAAa,2BAA2B,MAAM;AACzE,+BAAuB,wBAAwB,IAAI;AAAA,MACvD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,kBAAkB,UAAa,kBAAkB,MAAM;AACvD,+BAAuB,eAAe,IAAI;AAAA,MAC9C;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI,iBAAiB,UAAa,iBAAiB,MAAM;AACrD,+BAAuB,cAAc,IAAI;AAAA,MAC7C;AAEA,UAAI,cAAc,UAAa,cAAc,MAAM;AAC/C,+BAAuB,WAAW,IAAI;AAAA,MAC1C;AAEA,UAAI,kBAAkB,UAAa,kBAAkB,MAAM;AACvD,+BAAuB,eAAe,IAAI;AAAA,MAC9C;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,+BAA+B,UAAa,+BAA+B,MAAM;AACjF,+BAAuB,4BAA4B,IAAI;AAAA,MAC3D;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA+CA,cAAc,OACV,QACA,MACA,UACA,WACA,WACA,mBACA,oBACA,iBACA,YACA,gBACA,oBACA,kBACA,iBACA,mBACA,oBACA,iBACA,YACA,gBACA,oBACA,kBACA,iBACA,mBACA,kBACA,yBACA,eACuB;AAEvB,MAAAA,mBAAkB,gBAAgB,UAAU,MAAM;AAElD,MAAAA,mBAAkB,gBAAgB,QAAQ,IAAI;AAE9C,MAAAA,mBAAkB,gBAAgB,YAAY,QAAQ;AAEtD,MAAAA,mBAAkB,gBAAgB,aAAa,SAAS;AAExD,MAAAA,mBAAkB,gBAAgB,aAAa,SAAS;AAExD,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,SAAS,UAAa,SAAS,MAAM;AACrC,+BAAuB,MAAM,IAAI;AAAA,MACrC;AAEA,UAAI,aAAa,UAAa,aAAa,MAAM;AAC7C,+BAAuB,UAAU,IAAI;AAAA,MACzC;AAEA,UAAI,cAAc,UAAa,cAAc,MAAM;AAC/C,+BAAuB,WAAW,IAAI;AAAA,MAC1C;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI,mBAAmB,UAAa,mBAAmB,MAAM;AACzD,+BAAuB,gBAAgB,IAAI;AAAA,MAC/C;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,cAAc,UAAa,cAAc,MAAM;AAC/C,+BAAuB,WAAW,IAAI;AAAA,MAC1C;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI,mBAAmB,UAAa,mBAAmB,MAAM;AACzD,+BAAuB,gBAAgB,IAAI;AAAA,MAC/C;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA2CA,cAAc,OACV,QACA,aACA,aACA,cACA,iBACA,aACA,aACA,iBACA,mBACA,kBACA,yBACA,sBACA,mBACA,oBACA,mBACA,qBACA,sBACA,cACA,kBACA,sBACA,mBACA,oBACA,mBACA,qBACA,eACuB;AAEvB,MAAAA,mBAAkB,gBAAgB,UAAU,MAAM;AAElD,MAAAA,mBAAkB,gBAAgB,eAAe,WAAW;AAE5D,MAAAA,mBAAkB,gBAAgB,eAAe,WAAW;AAE5D,MAAAA,mBAAkB,gBAAgB,gBAAgB,YAAY;AAE9D,MAAAA,mBAAkB,gBAAgB,mBAAmB,eAAe;AAEpE,MAAAA,mBAAkB,gBAAgB,eAAe,WAAW;AAE5D,MAAAA,mBAAkB,gBAAgB,eAAe,WAAW;AAE5D,MAAAA,mBAAkB,gBAAgB,mBAAmB,eAAe;AAEpE,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,yBAAyB,UAAa,yBAAyB,MAAM;AACrE,+BAAuB,sBAAsB,IAAI;AAAA,MACrD;AAEA,UAAI,iBAAiB,UAAa,iBAAiB,MAAM;AACrD,+BAAuB,cAAc,IAAI;AAAA,MAC7C;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,wBAAwB,UAAa,wBAAwB,MAAM;AACnE,+BAAuB,qBAAqB,IAAI;AAAA,MACpD;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,yBAAyB,UAAa,yBAAyB,MAAM;AACrE,+BAAuB,sBAAsB,IAAI;AAAA,MACrD;AAEA,UAAI,iBAAiB,UAAa,iBAAiB,MAAM;AACrD,+BAAuB,cAAc,IAAI;AAAA,MAC7C;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,yBAAyB,UAAa,yBAAyB,MAAM;AACrE,+BAAuB,sBAAsB,IAAI;AAAA,MACrD;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,wBAAwB,UAAa,wBAAwB,MAAM;AACnE,+BAAuB,qBAAqB,IAAI;AAAA,MACpD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoDA,gBAAgB,OACZ,QACA,aACA,aACA,cACA,iBACA,aACA,iBACA,kBACA,mBACA,kBACA,yBACA,sBACA,mBACA,oBACA,mBACA,qBACA,2BACA,mBACA,uBACA,2BACA,wBACA,yBACA,wBACA,0BACA,kBACA,2BACA,mBACA,uBACA,2BACA,wBACA,yBACA,wBACA,0BACA,eACuB;AAEvB,MAAAA,mBAAkB,kBAAkB,UAAU,MAAM;AAEpD,MAAAA,mBAAkB,kBAAkB,eAAe,WAAW;AAE9D,MAAAA,mBAAkB,kBAAkB,eAAe,WAAW;AAE9D,MAAAA,mBAAkB,kBAAkB,gBAAgB,YAAY;AAEhE,MAAAA,mBAAkB,kBAAkB,mBAAmB,eAAe;AAEtE,MAAAA,mBAAkB,kBAAkB,eAAe,WAAW;AAE9D,MAAAA,mBAAkB,kBAAkB,mBAAmB,eAAe;AAEtE,MAAAA,mBAAkB,kBAAkB,oBAAoB,gBAAgB;AAExE,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,yBAAyB,UAAa,yBAAyB,MAAM;AACrE,+BAAuB,sBAAsB,IAAI;AAAA,MACrD;AAEA,UAAI,iBAAiB,UAAa,iBAAiB,MAAM;AACrD,+BAAuB,cAAc,IAAI;AAAA,MAC7C;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,wBAAwB,UAAa,wBAAwB,MAAM;AACnE,+BAAuB,qBAAqB,IAAI;AAAA,MACpD;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,8BAA8B,UAAa,8BAA8B,MAAM;AAC/E,+BAAuB,2BAA2B,IAAI;AAAA,MAC1D;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,0BAA0B,UAAa,0BAA0B,MAAM;AACvE,+BAAuB,uBAAuB,IAAI;AAAA,MACtD;AAEA,UAAI,8BAA8B,UAAa,8BAA8B,MAAM;AAC/E,+BAAuB,2BAA2B,IAAI;AAAA,MAC1D;AAEA,UAAI,2BAA2B,UAAa,2BAA2B,MAAM;AACzE,+BAAuB,wBAAwB,IAAI;AAAA,MACvD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,2BAA2B,UAAa,2BAA2B,MAAM;AACzE,+BAAuB,wBAAwB,IAAI;AAAA,MACvD;AAEA,UAAI,6BAA6B,UAAa,6BAA6B,MAAM;AAC7E,+BAAuB,0BAA0B,IAAI;AAAA,MACzD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,8BAA8B,UAAa,8BAA8B,MAAM;AAC/E,+BAAuB,2BAA2B,IAAI;AAAA,MAC1D;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,0BAA0B,UAAa,0BAA0B,MAAM;AACvE,+BAAuB,uBAAuB,IAAI;AAAA,MACtD;AAEA,UAAI,8BAA8B,UAAa,8BAA8B,MAAM;AAC/E,+BAAuB,2BAA2B,IAAI;AAAA,MAC1D;AAEA,UAAI,2BAA2B,UAAa,2BAA2B,MAAM;AACzE,+BAAuB,wBAAwB,IAAI;AAAA,MACvD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,2BAA2B,UAAa,2BAA2B,MAAM;AACzE,+BAAuB,wBAAwB,IAAI;AAAA,MACvD;AAEA,UAAI,6BAA6B,UAAa,6BAA6B,MAAM;AAC7E,+BAAuB,0BAA0B,IAAI;AAAA,MACzD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAuCA,UAAU,OACN,QACA,MACA,UACA,OACA,WACA,mBACA,oBACA,iBACA,mBACA,iBACA,eACA,mBACA,gBACA,kBACA,gBACA,gBACA,sBACA,kBACA,yBACA,eACuB;AAEvB,MAAAA,mBAAkB,YAAY,UAAU,MAAM;AAE9C,MAAAA,mBAAkB,YAAY,QAAQ,IAAI;AAE1C,MAAAA,mBAAkB,YAAY,YAAY,QAAQ;AAElD,MAAAA,mBAAkB,YAAY,SAAS,KAAK;AAE5C,MAAAA,mBAAkB,YAAY,aAAa,SAAS;AAEpD,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,SAAS,UAAa,SAAS,MAAM;AACrC,+BAAuB,MAAM,IAAI;AAAA,MACrC;AAEA,UAAI,aAAa,UAAa,aAAa,MAAM;AAC7C,+BAAuB,UAAU,IAAI;AAAA,MACzC;AAEA,UAAI,uBAAuB,UAAa,uBAAuB,MAAM;AACjE,+BAAuB,oBAAoB,IAAI;AAAA,MACnD;AAEA,UAAI,UAAU,UAAa,UAAU,MAAM;AACvC,+BAAuB,OAAO,IAAI;AAAA,MACtC;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,oBAAoB,UAAa,oBAAoB,MAAM;AAC3D,+BAAuB,iBAAiB,IAAI;AAAA,MAChD;AAEA,UAAI,kBAAkB,UAAa,kBAAkB,MAAM;AACvD,+BAAuB,eAAe,IAAI;AAAA,MAC9C;AAEA,UAAI,sBAAsB,UAAa,sBAAsB,MAAM;AAC/D,+BAAuB,mBAAmB,IAAI;AAAA,MAClD;AAEA,UAAI,cAAc,UAAa,cAAc,MAAM;AAC/C,+BAAuB,WAAW,IAAI;AAAA,MAC1C;AAEA,UAAI,mBAAmB,UAAa,mBAAmB,MAAM;AACzD,+BAAuB,gBAAgB,IAAI;AAAA,MAC/C;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,mBAAmB,UAAa,mBAAmB,MAAM;AACzD,+BAAuB,gBAAgB,IAAI;AAAA,MAC/C;AAEA,UAAI,mBAAmB,UAAa,mBAAmB,MAAM;AACzD,+BAAuB,gBAAgB,IAAI;AAAA,MAC/C;AAEA,UAAI,yBAAyB,UAAa,yBAAyB,MAAM;AACrE,+BAAuB,sBAAsB,IAAI;AAAA,MACrD;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcA,WAAW,OAAO,2BAA2D;AACzE,YAAM,yBAAkD,CAAC;AAEzD,UAAI,2BAA2B,UAAa,2BAA2B,MAAM;AACzE,+BAAuB,wBAAwB,IAAI;AAAA,MACvD;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA4BA,UAAU,OACN,QACA,MACA,MACA,UACA,aACA,OACA,kBACA,YACA,cACA,YACA,kBACA,yBACA,eACuB;AAEvB,MAAAA,mBAAkB,YAAY,UAAU,MAAM;AAE9C,MAAAA,mBAAkB,YAAY,QAAQ,IAAI;AAE1C,MAAAA,mBAAkB,YAAY,QAAQ,IAAI;AAE1C,MAAAA,mBAAkB,YAAY,YAAY,QAAQ;AAElD,YAAM,yBAAkD,CAAC;AAEzD,UAAI,WAAW,UAAa,WAAW,MAAM;AACzC,+BAAuB,QAAQ,IAAI;AAAA,MACvC;AAEA,UAAI,SAAS,UAAa,SAAS,MAAM;AACrC,+BAAuB,MAAM,IAAI;AAAA,MACrC;AAEA,UAAI,SAAS,UAAa,SAAS,MAAM;AACrC,+BAAuB,MAAM,IAAI;AAAA,MACrC;AAEA,UAAI,gBAAgB,UAAa,gBAAgB,MAAM;AACnD,+BAAuB,aAAa,IAAI;AAAA,MAC5C;AAEA,UAAI,aAAa,UAAa,aAAa,MAAM;AAC7C,+BAAuB,UAAU,IAAI;AAAA,MACzC;AAEA,UAAI,UAAU,UAAa,UAAU,MAAM;AACvC,+BAAuB,OAAO,IAAI;AAAA,MACtC;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI,iBAAiB,UAAa,iBAAiB,MAAM;AACrD,+BAAuB,cAAc,IAAI;AAAA,MAC7C;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI,qBAAqB,UAAa,qBAAqB,MAAM;AAC7D,+BAAuB,kBAAkB,IAAI;AAAA,MACjD;AAEA,UAAI,4BAA4B,UAAa,4BAA4B,MAAM;AAC3E,+BAAuB,yBAAyB,IAAI;AAAA,MACxD;AAEA,UAAI,eAAe,UAAa,eAAe,MAAM;AACjD,+BAAuB,YAAY,IAAI;AAAA,MAC3C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcA,cAAc,OAAO,2BAA2D;AAC5E,YAAM,yBAAkD,CAAC;AAEzD,UAAI,2BAA2B,UAAa,2BAA2B,MAAM;AACzE,+BAAuB,wBAAwB,IAAI;AAAA,MACvD;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA,EACJ;AACJ;AA8gDO,IAAM,WAAN,MAA4C;AAAA,EAI/C,YAAY,eAAqC;AAC7C,SAAK,gBAAgB;AACrB,SAAK,4BAA4B,0BAA0B,aAAa;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAa,iBACT,mBACkD;AAClD,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOC;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAa,YACT,mBAC6C;AAC7C,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAa,gBACT,mBACiD;AACjD,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAa,SACT,mBAC0C;AAC1C,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAa,uBACT,mBACwD;AACxD,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAa,mBACT,mBACoD;AACpD,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BA,MAAa,aACT,mBAC8C;AAC9C,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,MAAa,aACT,mBAC8C;AAC9C,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,MAAa,eACT,mBACgD;AAChD,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,MAAa,SACT,mBAC0C;AAC1C,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAa,UACT,oBAAsC,CAAC,GACI;AAC3C,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAa,SACT,mBAC0C;AAC1C,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAa,aACT,oBAAyC,CAAC,GACI;AAC9C,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,KAAK;AAAA,IACrB;AAAA,EACJ;AACJ;AAEO,IAAK,oCAAL,kBAAKC,uCAAL;AACH,EAAAA,mCAAA,cAAW;AACX,EAAAA,mCAAA,SAAM;AACN,EAAAA,mCAAA,2BAAwB;AACxB,EAAAA,mCAAA,sBAAmB;AAJX,SAAAA;AAAA,GAAA;AAOL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,YAAS;AACT,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,eAAY;AACZ,EAAAA,kBAAA,qBAAkB;AAClB,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,uBAAoB;AACpB,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,uBAAoB;AARZ,SAAAA;AAAA,GAAA;AAWL,IAAK,0BAAL,kBAAKC,6BAAL;AACH,EAAAA,yBAAA,SAAM;AACN,EAAAA,yBAAA,SAAM;AACN,EAAAA,yBAAA,SAAM;AACN,EAAAA,yBAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;AAOL,IAAK,+BAAL,kBAAKC,kCAAL;AACH,EAAAA,8BAAA,SAAM;AACN,EAAAA,8BAAA,YAAS;AACT,EAAAA,8BAAA,UAAO;AACP,EAAAA,8BAAA,YAAS;AACT,EAAAA,8BAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,sCAAL,kBAAKC,yCAAL;AACH,EAAAA,qCAAA,UAAO;AACP,EAAAA,qCAAA,kBAAe;AACf,EAAAA,qCAAA,kBAAe;AACf,EAAAA,qCAAA,iBAAc;AACd,EAAAA,qCAAA,eAAY;AACZ,EAAAA,qCAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,6BAAL,kBAAKC,gCAAL;AACH,EAAAA,4BAAA,SAAM;AACN,EAAAA,4BAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,6BAAL,kBAAKC,gCAAL;AACH,EAAAA,4BAAA,YAAS;AACT,EAAAA,4BAAA,WAAQ;AACR,EAAAA,4BAAA,eAAY;AACZ,EAAAA,4BAAA,qBAAkB;AAClB,EAAAA,4BAAA,iBAAc;AACd,EAAAA,4BAAA,uBAAoB;AACpB,EAAAA,4BAAA,iBAAc;AACd,EAAAA,4BAAA,uBAAoB;AARZ,SAAAA;AAAA,GAAA;AAWL,IAAK,0CAAL,kBAAKC,6CAAL;AACH,EAAAA,yCAAA,qBAAkB;AAClB,EAAAA,yCAAA,mBAAgB;AAFR,SAAAA;AAAA,GAAA;AAKL,IAAK,oCAAL,kBAAKC,uCAAL;AACH,EAAAA,mCAAA,SAAM;AACN,EAAAA,mCAAA,SAAM;AACN,EAAAA,mCAAA,SAAM;AACN,EAAAA,mCAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;AAOL,IAAK,yCAAL,kBAAKC,4CAAL;AACH,EAAAA,wCAAA,SAAM;AACN,EAAAA,wCAAA,YAAS;AACT,EAAAA,wCAAA,UAAO;AACP,EAAAA,wCAAA,YAAS;AACT,EAAAA,wCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,gDAAL,kBAAKC,mDAAL;AACH,EAAAA,+CAAA,UAAO;AACP,EAAAA,+CAAA,kBAAe;AACf,EAAAA,+CAAA,kBAAe;AACf,EAAAA,+CAAA,iBAAc;AACd,EAAAA,+CAAA,eAAY;AACZ,EAAAA,+CAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,2CAAL,kBAAKC,8CAAL;AACH,EAAAA,0CAAA,cAAW;AACX,EAAAA,0CAAA,SAAM;AACN,EAAAA,0CAAA,2BAAwB;AACxB,EAAAA,0CAAA,sBAAmB;AAJX,SAAAA;AAAA,GAAA;AAOL,IAAK,mDAAL,kBAAKC,sDAAL;AACH,EAAAA,kDAAA,gBAAa;AACb,EAAAA,kDAAA,iBAAc;AAFN,SAAAA;AAAA,GAAA;AAKL,IAAK,uBAAL,kBAAKC,0BAAL;AACH,EAAAA,sBAAA,SAAM;AACN,EAAAA,sBAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,4BAAL,kBAAKC,+BAAL;AACH,EAAAA,2BAAA,qBAAkB;AAClB,EAAAA,2BAAA,eAAY;AACZ,EAAAA,2BAAA,iBAAc;AACd,EAAAA,2BAAA,iBAAc;AACd,EAAAA,2BAAA,uBAAoB;AALZ,SAAAA;AAAA,GAAA;AAQL,IAAK,4BAAL,kBAAKC,+BAAL;AACH,EAAAA,2BAAA,eAAY;AACZ,EAAAA,2BAAA,qBAAkB;AAClB,EAAAA,2BAAA,iBAAc;AACd,EAAAA,2BAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;AAOL,IAAK,mCAAL,kBAAKC,sCAAL;AACH,EAAAA,kCAAA,eAAY;AACZ,EAAAA,kCAAA,qBAAkB;AAClB,EAAAA,kCAAA,uBAAoB;AAHZ,SAAAA;AAAA,GAAA;AAML,IAAK,mCAAL,kBAAKC,sCAAL;AACH,EAAAA,kCAAA,SAAM;AACN,EAAAA,kCAAA,YAAS;AACT,EAAAA,kCAAA,UAAO;AACP,EAAAA,kCAAA,YAAS;AACT,EAAAA,kCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,0CAAL,kBAAKC,6CAAL;AACH,EAAAA,yCAAA,UAAO;AACP,EAAAA,yCAAA,kBAAe;AACf,EAAAA,yCAAA,kBAAe;AACf,EAAAA,yCAAA,iBAAc;AACd,EAAAA,yCAAA,eAAY;AACZ,EAAAA,yCAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,8BAAL,kBAAKC,iCAAL;AACH,EAAAA,6BAAA,WAAQ;AACR,EAAAA,6BAAA,iBAAc;AAFN,SAAAA;AAAA,GAAA;AAKL,IAAK,8BAAL,kBAAKC,iCAAL;AACH,EAAAA,6BAAA,SAAM;AACN,EAAAA,6BAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,8BAAL,kBAAKC,iCAAL;AACH,EAAAA,6BAAA,WAAQ;AACR,EAAAA,6BAAA,YAAS;AACT,EAAAA,6BAAA,eAAY;AACZ,EAAAA,6BAAA,qBAAkB;AAClB,EAAAA,6BAAA,iBAAc;AACd,EAAAA,6BAAA,uBAAoB;AACpB,EAAAA,6BAAA,iBAAc;AAPN,SAAAA;AAAA,GAAA;AAUL,IAAK,8BAAL,kBAAKC,iCAAL;AACH,EAAAA,6BAAA,SAAM;AACN,EAAAA,6BAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,mCAAL,kBAAKC,sCAAL;AACH,EAAAA,kCAAA,SAAM;AACN,EAAAA,kCAAA,YAAS;AACT,EAAAA,kCAAA,UAAO;AACP,EAAAA,kCAAA,YAAS;AACT,EAAAA,kCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,0CAAL,kBAAKC,6CAAL;AACH,EAAAA,yCAAA,UAAO;AACP,EAAAA,yCAAA,kBAAe;AACf,EAAAA,yCAAA,kBAAe;AACf,EAAAA,yCAAA,iBAAc;AACd,EAAAA,yCAAA,eAAY;AACZ,EAAAA,yCAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,qCAAL,kBAAKC,wCAAL;AACH,EAAAA,oCAAA,SAAM;AACN,EAAAA,oCAAA,SAAM;AACN,EAAAA,oCAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,qCAAL,kBAAKC,wCAAL;AACH,EAAAA,oCAAA,SAAM;AACN,EAAAA,oCAAA,SAAM;AACN,EAAAA,oCAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,gCAAL,kBAAKC,mCAAL;AACH,EAAAA,+BAAA,WAAQ;AACR,EAAAA,+BAAA,iBAAc;AAFN,SAAAA;AAAA,GAAA;AAKL,IAAK,gCAAL,kBAAKC,mCAAL;AACH,EAAAA,+BAAA,SAAM;AACN,EAAAA,+BAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,gCAAL,kBAAKC,mCAAL;AACH,EAAAA,+BAAA,SAAM;AACN,EAAAA,+BAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,qCAAL,kBAAKC,wCAAL;AACH,EAAAA,oCAAA,qBAAkB;AAClB,EAAAA,oCAAA,eAAY;AACZ,EAAAA,oCAAA,iBAAc;AACd,EAAAA,oCAAA,iBAAc;AACd,EAAAA,oCAAA,uBAAoB;AALZ,SAAAA;AAAA,GAAA;AAQL,IAAK,qCAAL,kBAAKC,wCAAL;AACH,EAAAA,oCAAA,SAAM;AACN,EAAAA,oCAAA,YAAS;AACT,EAAAA,oCAAA,UAAO;AACP,EAAAA,oCAAA,YAAS;AACT,EAAAA,oCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,4CAAL,kBAAKC,+CAAL;AACH,EAAAA,2CAAA,UAAO;AACP,EAAAA,2CAAA,kBAAe;AACf,EAAAA,2CAAA,kBAAe;AACf,EAAAA,2CAAA,iBAAc;AACd,EAAAA,2CAAA,eAAY;AACZ,EAAAA,2CAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,uCAAL,kBAAKC,0CAAL;AACH,EAAAA,sCAAA,SAAM;AACN,EAAAA,sCAAA,SAAM;AACN,EAAAA,sCAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,4CAAL,kBAAKC,+CAAL;AACH,EAAAA,2CAAA,SAAM;AACN,EAAAA,2CAAA,SAAM;AACN,EAAAA,2CAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,qCAAL,kBAAKC,wCAAL;AACH,EAAAA,oCAAA,eAAY;AACZ,EAAAA,oCAAA,qBAAkB;AAClB,EAAAA,oCAAA,iBAAc;AACd,EAAAA,oCAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;AAOL,IAAK,4CAAL,kBAAKC,+CAAL;AACH,EAAAA,2CAAA,SAAM;AACN,EAAAA,2CAAA,SAAM;AACN,EAAAA,2CAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,mCAAL,kBAAKC,sCAAL;AACH,EAAAA,kCAAA,SAAM;AACN,EAAAA,kCAAA,SAAM;AACN,EAAAA,kCAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,+BAAL,kBAAKC,kCAAL;AACH,EAAAA,8BAAA,SAAM;AACN,EAAAA,8BAAA,YAAS;AACT,EAAAA,8BAAA,UAAO;AACP,EAAAA,8BAAA,YAAS;AACT,EAAAA,8BAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,sCAAL,kBAAKC,yCAAL;AACH,EAAAA,qCAAA,UAAO;AACP,EAAAA,qCAAA,kBAAe;AACf,EAAAA,qCAAA,kBAAe;AACf,EAAAA,qCAAA,iBAAc;AACd,EAAAA,qCAAA,eAAY;AACZ,EAAAA,qCAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,SAAM;AACN,EAAAA,kBAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,YAAS;AACT,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,eAAY;AACZ,EAAAA,kBAAA,qBAAkB;AAClB,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,uBAAoB;AACpB,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,uBAAoB;AARZ,SAAAA;AAAA,GAAA;AAWL,IAAK,0BAAL,kBAAKC,6BAAL;AACH,EAAAA,yBAAA,SAAM;AACN,EAAAA,yBAAA,SAAM;AACN,EAAAA,yBAAA,SAAM;AACN,EAAAA,yBAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;AAOL,IAAK,+BAAL,kBAAKC,kCAAL;AACH,EAAAA,8BAAA,SAAM;AACN,EAAAA,8BAAA,YAAS;AACT,EAAAA,8BAAA,UAAO;AACP,EAAAA,8BAAA,YAAS;AACT,EAAAA,8BAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,sCAAL,kBAAKC,yCAAL;AACH,EAAAA,qCAAA,UAAO;AACP,EAAAA,qCAAA,kBAAe;AACf,EAAAA,qCAAA,kBAAe;AACf,EAAAA,qCAAA,iBAAc;AACd,EAAAA,qCAAA,eAAY;AACZ,EAAAA,qCAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;;;ACv5HZ;AAAA,EAII,qBAAAC;AAAA,EACA,eAAAC;AAAA,OAEG;AAMP,IAAM,qCAAqC,SAAU,eAAqC;AACtF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUH,sBAAsB,OAAO,cAA4C;AAErE,MAAAD,mBAAkB,wBAAwB,aAAa,SAAS;AAEhE,YAAM,yBAAkD,CAAC;AAEzD,UAAI,cAAc,UAAa,cAAc,MAAM;AAC/C,+BAAuB,WAAW,IAAI;AAAA,MAC1C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,mBAAmB,YAAkC;AACjD,YAAM,yBAAkD,CAAC;AAEzD,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,mBAAmB,OAAO,cAA4C;AAElE,MAAAA,mBAAkB,qBAAqB,aAAa,SAAS;AAE7D,YAAM,yBAAkD,CAAC;AAEzD,UAAI,cAAc,UAAa,cAAc,MAAM;AAC/C,+BAAuB,WAAW,IAAI;AAAA,MAC1C;AAEA,UAAI;AACJ,UAAI,cAAc,cAAe,aAAY,cAAc;AAE3D,aAAO;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,MACd;AAAA,IACJ;AAAA,EACJ;AACJ;AAyEO,IAAM,oBAAN,MAA8D;AAAA,EAIjE,YAAY,eAAqC;AAC7C,SAAK,gBAAgB;AACrB,SAAK,4BAA4B,mCAAmC,aAAa;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAa,qBACT,mBAC8B;AAC9B,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,IACvB;AACA,WAAOC;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,MAAM;AAAA,IACtB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,oBAAyE;AAClF,UAAM,oBAAoB,MAAM,KAAK,0BAA0B,kBAAkB;AACjF,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,MAAM;AAAA,IACtB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAa,kBACT,mBAC8B;AAC9B,UAAM,oBAAoB,MAAM,KAAK,0BAA0B;AAAA,MAC3D,mBAAmB;AAAA,IACvB;AACA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,EAAE,UAAU,MAAM;AAAA,IACtB;AAAA,EACJ;AACJ;;;AC5PA,SAAgD,eAAAC,oBAA6B;AAwGtE,IAAM,UAAN,MAAc;AAAA,EAQjB,YAAY,eAAqC;AAC7C,SAAK,gBAAgB;AACrB,SAAK,aAAa,IAAI,WAAW,aAAa;AAC9C,SAAK,aAAa,IAAI,WAAW,aAAa;AAC9C,SAAK,YAAY,IAAI,UAAU,aAAa;AAC5C,SAAK,WAAW,IAAI,SAAS,aAAa;AAC1C,SAAK,oBAAoB,IAAI,kBAAkB,aAAa;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,YACI,UACA,QACA,SAAkC,CAAC,GACnC,WAAqB,KAAK,eAAe,UACd;AAC3B,WAAOC,aAAe,KAAK,eAAe,UAAU,QAAQ,QAAQ,QAAQ;AAAA,EAChF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,kBACI,UACA,QACA,SAAkC,CAAC,GACnC,WAAqB,KAAK,eAAe,UACd;AAC3B,WAAOA,aAAe,KAAK,eAAe,UAAU,QAAQ,QAAQ,UAAU;AAAA,MAC1E,UAAU;AAAA,IACd,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,kBACI,mBACmD;AACnD,WAAO,KAAK,WAAW,kBAAkB,iBAAiB;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,aACI,oBAAyC,CAAC,GACI;AAC9C,WAAO,KAAK,WAAW,aAAa,iBAAiB;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,UAAU,mBAAkF;AACxF,WAAO,KAAK,WAAW,UAAU,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,WACI,oBAAuC,CAAC,GACI;AAC5C,WAAO,KAAK,WAAW,WAAW,iBAAiB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,cACI,oBAA0C,CAAC,GACI;AAC/C,WAAO,KAAK,WAAW,cAAc,iBAAiB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,SAAS,mBAAgF;AACrF,WAAO,KAAK,WAAW,SAAS,iBAAiB;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,aACI,oBAAyC,CAAC,GACI;AAC9C,WAAO,KAAK,WAAW,aAAa,iBAAiB;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,cACI,mBAC+C;AAC/C,WAAO,KAAK,WAAW,cAAc,iBAAiB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,mBACI,mBACoD;AACpD,WAAO,KAAK,WAAW,mBAAmB,iBAAiB;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,SAAS,mBAAgF;AACrF,WAAO,KAAK,WAAW,SAAS,iBAAiB;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,cACI,oBAA0C,CAAC,GACI;AAC/C,WAAO,KAAK,WAAW,cAAc,iBAAiB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,gBACI,mBACiD;AACjD,WAAO,KAAK,WAAW,gBAAgB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,eACI,oBAA2C,CAAC,GACI;AAChD,WAAO,KAAK,WAAW,eAAe,iBAAiB;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,aACI,oBAAyC,CAAC,GACI;AAC9C,WAAO,KAAK,WAAW,aAAa,iBAAiB;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAuC;AACnC,WAAO,KAAK,WAAW,KAAK;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAA+C;AAC3C,WAAO,KAAK,WAAW,KAAK;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,UAAU,mBAAkF;AACxF,WAAO,KAAK,UAAU,UAAU,iBAAiB;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,SAAS,mBAAgF;AACrF,WAAO,KAAK,UAAU,SAAS,iBAAiB;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAM,mBAA0E;AAC5E,WAAO,KAAK,UAAU,MAAM,iBAAiB;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,UAAU,mBAAkF;AACxF,WAAO,KAAK,UAAU,UAAU,iBAAiB;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,iBACI,mBACkD;AAClD,WAAO,KAAK,UAAU,iBAAiB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,OAAO,mBAA4E;AAC/E,WAAO,KAAK,UAAU,OAAO,iBAAiB;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAO,oBAAmC,CAAC,GAA6C;AACpF,WAAO,KAAK,UAAU,OAAO,iBAAiB;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgDA,WACI,oBAAuC,CAAC,GACI;AAC5C,WAAO,KAAK,UAAU,WAAW,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoCA,iBACI,oBAA6C,CAAC,GACI;AAClD,WAAO,KAAK,UAAU,iBAAiB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoCA,YACI,oBAAwC,CAAC,GACI;AAC7C,WAAO,KAAK,UAAU,YAAY,iBAAiB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,iBACI,oBAA6C,CAAC,GACI;AAClD,WAAO,KAAK,UAAU,iBAAiB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,SAAS,mBAAgF;AACrF,WAAO,KAAK,UAAU,SAAS,iBAAiB;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,iBACI,mBACkD;AAClD,WAAO,KAAK,SAAS,iBAAiB,iBAAiB;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,YACI,mBAC6C;AAC7C,WAAO,KAAK,SAAS,YAAY,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,gBACI,mBACiD;AACjD,WAAO,KAAK,SAAS,gBAAgB,iBAAiB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,SAAS,mBAAgF;AACrF,WAAO,KAAK,SAAS,SAAS,iBAAiB;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,uBACI,mBACwD;AACxD,WAAO,KAAK,SAAS,uBAAuB,iBAAiB;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,mBACI,mBACoD;AACpD,WAAO,KAAK,SAAS,mBAAmB,iBAAiB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBA,aACI,mBAC8C;AAC9C,WAAO,KAAK,SAAS,aAAa,iBAAiB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,aACI,mBAC8C;AAC9C,WAAO,KAAK,SAAS,aAAa,iBAAiB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,eACI,mBACgD;AAChD,WAAO,KAAK,SAAS,eAAe,iBAAiB;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,SAAS,mBAAgF;AACrF,WAAO,KAAK,SAAS,SAAS,iBAAiB;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,UACI,oBAAsC,CAAC,GACI;AAC3C,WAAO,KAAK,SAAS,UAAU,iBAAiB;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,SAAS,mBAAgF;AACrF,WAAO,KAAK,SAAS,SAAS,iBAAiB;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,aACI,oBAAyC,CAAC,GACI;AAC9C,WAAO,KAAK,SAAS,aAAa,iBAAiB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,qBACI,mBAC8B;AAC9B,WAAO,KAAK,kBAAkB,qBAAqB,iBAAiB;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,oBAAyE;AACrE,WAAO,KAAK,kBAAkB,kBAAkB;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,kBAAkB,mBAA6E;AAC3F,WAAO,KAAK,kBAAkB,kBAAkB,iBAAiB;AAAA,EACrE;AACJ;;;ACz/BA;AAAA;AAAA,oBAAAC;AAAA,EAAA;AAAA,sCAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA;AAAA,iDAAAC;AAAA,EAAA,gDAAAC;AAAA,EAAA,8CAAAC;AAAA,EAAA,wDAAAC;AAAA,EAAA,qDAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,yCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA;AAAA;AAAA;;;ACywBO,IAAMC,cAAN,MAAgD;AAAA,EAGnD,YAAY,eAAiC;AACzC,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,kBACH,mBACwD;AACxD,WAAO,KAAK,cAAc;AAAA,MACtB,sBAAsB,MAAM,CAAC;AAAA,MAC7B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,wBACH,oBAAoD,CAAC,GACS;AAC9D,WAAO,KAAK,cAAc;AAAA,MACtB,6BAA6B,MAAM,CAAC;AAAA,MACpC;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,cACH,oBAA0C,CAAC,GACS;AACpD,WAAO,KAAK,cAAc;AAAA,MACtB,kBAAkB,MAAM,CAAC;AAAA,MACzB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,cACH,oBAA0C,CAAC,GACS;AACpD,WAAO,KAAK,cAAc;AAAA,MACtB,iBAAiB,MAAM,CAAC;AAAA,MACxB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,UACH,mBACgD;AAChD,WAAO,KAAK,cAAc;AAAA,MACtB,aAAa,MAAM,CAAC;AAAA,MACpB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,cACH,mBACoD;AACpD,WAAO,KAAK,cAAc;AAAA,MACtB,iBAAiB,MAAM,CAAC;AAAA,MACxB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBO,mBACH,mBACyD;AACzD,WAAO,KAAK,cAAc;AAAA,MACtB,sBAAsB,MAAM,CAAC;AAAA,MAC7B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,SACH,mBAC+C;AAC/C,WAAO,KAAK,cAAc;AAAA,MACtB,YAAY,MAAM,CAAC;AAAA,MACnB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBO,qBACH,oBAAiD,CAAC,GACS;AAC3D,WAAO,KAAK,cAAc;AAAA,MACtB,yBAAyB,MAAM,CAAC;AAAA,MAChC;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBO,iBACH,oBAA6C,CAAC,GACS;AACvD,WAAO,KAAK,cAAc;AAAA,MACtB,qBAAqB,MAAM,CAAC;AAAA,MAC5B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,gBACH,mBACsD;AACtD,WAAO,KAAK,cAAc;AAAA,MACtB,oBAAoB,MAAM,CAAC;AAAA,MAC3B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,gBACH,oBAA4C,CAAC,GACS;AACtD,WAAO,KAAK,cAAc;AAAA,MACtB,oBAAoB,MAAM,CAAC;AAAA,MAC3B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,YACH,mBACkD;AAClD,WAAO,KAAK,cAAc;AAAA,MACtB,gBAAgB,MAAM,CAAC;AAAA,MACvB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AACJ;;;AC96BO,IAAM,UAAN,MAA0C;AAAA,EAG7C,YAAY,eAAiC;AACzC,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBO,aACH,oBAAyC,CAAC,GACS;AACnD,WAAO,KAAK,cAAc;AAAA,MACtB,iBAAiB,MAAM,CAAC;AAAA,MACxB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBO,cACH,oBAA0C,CAAC,GACS;AACpD,WAAO,KAAK,cAAc;AAAA,MACtB,kBAAkB,MAAM,CAAC;AAAA,MACzB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaO,cACH,oBAA0C,CAAC,GACS;AACpD,WAAO,KAAK,cAAc;AAAA,MACtB,kBAAkB,MAAM,CAAC;AAAA,MACzB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AACJ;;;AChEO,IAAMC,cAAN,MAAgD;AAAA,EAGnD,YAAY,eAAiC;AACzC,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,aACH,oBAAyC,CAAC,GACS;AACnD,WAAO,KAAK,cAAc;AAAA,MACtB,gBAAgB,MAAM,CAAC;AAAA,MACvB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,KAAK,oBAAiC,CAAC,GAAgD;AAC1F,WAAO,KAAK,cAAc;AAAA,MACtB,QAAQ,MAAM,CAAC;AAAA,MACf;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,KAAK,oBAAiC,CAAC,GAAgD;AAC1F,WAAO,KAAK,cAAc;AAAA,MACtB,QAAQ,MAAM,CAAC;AAAA,MACf;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AACJ;AAEO,IAAKC,gCAAL,kBAAKA,kCAAL;AACH,EAAAA,8BAAA,aAAU;AACV,EAAAA,8BAAA,gBAAa;AACb,EAAAA,8BAAA,UAAO;AACP,EAAAA,8BAAA,WAAQ;AACR,EAAAA,8BAAA,uBAAoB;AALZ,SAAAA;AAAA,oCAAA;;;ACsgBL,IAAMC,aAAN,MAA8C;AAAA,EAGjD,YAAY,eAAiC;AACzC,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,SACH,mBAC+C;AAC/C,WAAO,KAAK,cAAc;AAAA,MACtB,YAAY,MAAM,CAAC;AAAA,MACnB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4BO,MAAM,mBAA+E;AACxF,WAAO,KAAK,cAAc;AAAA,MACtB,SAAS,MAAM,CAAC;AAAA,MAChB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBO,OAAO,mBAAiF;AAC3F,WAAO,KAAK,cAAc;AAAA,MACtB,UAAU,MAAM,CAAC;AAAA,MACjB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBO,OACH,oBAAmC,CAAC,GACS;AAC7C,WAAO,KAAK,cAAc;AAAA,MACtB,UAAU,MAAM,CAAC;AAAA,MACjB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2BO,WACH,oBAAuC,CAAC,GACS;AACjD,WAAO,KAAK,cAAc;AAAA,MACtB,eAAe,MAAM,CAAC;AAAA,MACtB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBO,WACH,oBAAuC,CAAC,GACS;AACjD,WAAO,KAAK,cAAc;AAAA,MACtB,eAAe,MAAM,CAAC;AAAA,MACtB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBO,YACH,oBAAwC,CAAC,GACS;AAClD,WAAO,KAAK,cAAc;AAAA,MACtB,gBAAgB,MAAM,CAAC;AAAA,MACvB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,iBACH,oBAA6C,CAAC,GACS;AACvD,WAAO,KAAK,cAAc;AAAA,MACtB,qBAAqB,MAAM,CAAC;AAAA,MAC5B;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBO,gBACH,mBACsD;AACtD,WAAO,KAAK,cAAc;AAAA,MACtB,oBAAoB,MAAM,CAAC;AAAA,MAC3B;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,iBACH,mBACuD;AACvD,WAAO,KAAK,cAAc;AAAA,MACtB,qBAAqB,MAAM,CAAC;AAAA,MAC5B;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBO,aACH,mBACmD;AACnD,WAAO,KAAK,cAAc;AAAA,MACtB,iBAAiB,MAAM,CAAC;AAAA,MACxB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeO,SACH,mBAC+C;AAC/C,WAAO,KAAK,cAAc;AAAA,MACtB,YAAY,MAAM,CAAC;AAAA,MACnB;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AACJ;AAEO,IAAKC,sBAAL,kBAAKA,wBAAL;AACH,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,kBAAe;AACf,EAAAA,oBAAA,kBAAe;AACf,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,kBAAe;AACf,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,iBAAc;AAhBN,SAAAA;AAAA,0BAAA;AAmBL,IAAKC,kBAAL,kBAAKA,oBAAL;AACH,EAAAA,gBAAA,UAAO;AACP,EAAAA,gBAAA,UAAO;AAFC,SAAAA;AAAA,sBAAA;AAKL,IAAKC,wBAAL,kBAAKA,0BAAL;AACH,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,qBAAkB;AAClB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AACjB,EAAAA,sBAAA,oBAAiB;AAxFT,SAAAA;AAAA,4BAAA;AA2FL,IAAKC,sBAAL,kBAAKA,wBAAL;AACH,EAAAA,oBAAA,UAAO;AACP,EAAAA,oBAAA,UAAO;AAFC,SAAAA;AAAA,0BAAA;AAKL,IAAKC,4BAAL,kBAAKA,8BAAL;AACH,EAAAA,0BAAA,UAAO;AACP,EAAAA,0BAAA,UAAO;AAFC,SAAAA;AAAA,gCAAA;AAKL,IAAKC,wBAAL,kBAAKA,0BAAL;AACH,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AAhBN,SAAAA;AAAA,4BAAA;;;ACggBL,IAAMC,YAAN,MAA4C;AAAA,EAG/C,YAAY,eAAiC;AACzC,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaO,oBACH,mBAC0D;AAC1D,WAAO,KAAK,cAAc;AAAA,MACtB,wBAAwB,MAAM,CAAC;AAAA,MAC/B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBO,uBACH,mBAC6D;AAC7D,WAAO,KAAK,cAAc;AAAA,MACtB,4BAA4B,MAAM,CAAC;AAAA,MACnC;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,YACH,mBACkD;AAClD,WAAO,KAAK,cAAc;AAAA,MACtB,gBAAgB,MAAM,CAAC;AAAA,MACvB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,mBACH,mBACyD;AACzD,WAAO,KAAK,cAAc;AAAA,MACtB,uBAAuB,MAAM,CAAC;AAAA,MAC9B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,gBACH,mBACsD;AACtD,WAAO,KAAK,cAAc;AAAA,MACtB,oBAAoB,MAAM,CAAC;AAAA,MAC3B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBO,eACH,mBACqD;AACrD,WAAO,KAAK,cAAc;AAAA,MACtB,mBAAmB,MAAM,CAAC;AAAA,MAC1B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBO,kBACH,mBACwD;AACxD,WAAO,KAAK,cAAc;AAAA,MACtB,uBAAuB,MAAM,CAAC;AAAA,MAC9B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBO,kBACH,mBACwD;AACxD,WAAO,KAAK,cAAc;AAAA,MACtB,uBAAuB,MAAM,CAAC;AAAA,MAC9B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBO,oBACH,mBAC0D;AAC1D,WAAO,KAAK,cAAc;AAAA,MACtB,yBAAyB,MAAM,CAAC;AAAA,MAChC;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,WACH,mBACiD;AACjD,WAAO,KAAK,cAAc;AAAA,MACtB,eAAe,MAAM,CAAC;AAAA,MACtB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBO,UACH,oBAAsC,CAAC,GACS;AAChD,WAAO,KAAK,cAAc;AAAA,MACtB,cAAc,MAAM,CAAC;AAAA,MACrB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBO,cACH,mBACoD;AACpD,WAAO,KAAK,cAAc;AAAA,MACtB,mBAAmB,MAAM,CAAC;AAAA,MAC1B;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBO,aACH,oBAAyC,CAAC,GACS;AACnD,WAAO,KAAK,cAAc;AAAA,MACtB,kBAAkB,MAAM,CAAC;AAAA,MACzB;AAAA,MACA,EAAE,UAAU,MAAM,YAAY,MAAM;AAAA,IACxC;AAAA,EACJ;AACJ;AAEO,IAAK,oCAAL,kBAAKC,uCAAL;AACH,EAAAA,mCAAA,cAAW;AACX,EAAAA,mCAAA,SAAM;AACN,EAAAA,mCAAA,2BAAwB;AACxB,EAAAA,mCAAA,sBAAmB;AAJX,SAAAA;AAAA,GAAA;AAOL,IAAKC,2CAAL,kBAAKA,6CAAL;AACH,EAAAA,yCAAA,qBAAkB;AAClB,EAAAA,yCAAA,mBAAgB;AAFR,SAAAA;AAAA,+CAAA;AAKL,IAAKC,8BAAL,kBAAKA,gCAAL;AACH,EAAAA,4BAAA,SAAM;AACN,EAAAA,4BAAA,UAAO;AAFC,SAAAA;AAAA,kCAAA;AAKL,IAAKC,8BAAL,kBAAKA,gCAAL;AACH,EAAAA,4BAAA,YAAS;AACT,EAAAA,4BAAA,WAAQ;AACR,EAAAA,4BAAA,eAAY;AACZ,EAAAA,4BAAA,qBAAkB;AAClB,EAAAA,4BAAA,iBAAc;AACd,EAAAA,4BAAA,uBAAoB;AACpB,EAAAA,4BAAA,iBAAc;AACd,EAAAA,4BAAA,uBAAoB;AARZ,SAAAA;AAAA,kCAAA;AAWL,IAAKC,qCAAL,kBAAKA,uCAAL;AACH,EAAAA,mCAAA,SAAM;AACN,EAAAA,mCAAA,SAAM;AACN,EAAAA,mCAAA,SAAM;AACN,EAAAA,mCAAA,uBAAoB;AAJZ,SAAAA;AAAA,yCAAA;AAOL,IAAKC,0CAAL,kBAAKA,4CAAL;AACH,EAAAA,wCAAA,SAAM;AACN,EAAAA,wCAAA,YAAS;AACT,EAAAA,wCAAA,UAAO;AACP,EAAAA,wCAAA,YAAS;AACT,EAAAA,wCAAA,WAAQ;AALA,SAAAA;AAAA,8CAAA;AAQL,IAAKC,iDAAL,kBAAKA,mDAAL;AACH,EAAAA,+CAAA,UAAO;AACP,EAAAA,+CAAA,kBAAe;AACf,EAAAA,+CAAA,kBAAe;AACf,EAAAA,+CAAA,iBAAc;AACd,EAAAA,+CAAA,eAAY;AACZ,EAAAA,+CAAA,uBAAoB;AANZ,SAAAA;AAAA,qDAAA;AASL,IAAKC,4CAAL,kBAAKA,8CAAL;AACH,EAAAA,0CAAA,cAAW;AACX,EAAAA,0CAAA,SAAM;AACN,EAAAA,0CAAA,2BAAwB;AACxB,EAAAA,0CAAA,sBAAmB;AAJX,SAAAA;AAAA,gDAAA;AAOL,IAAKC,oDAAL,kBAAKA,sDAAL;AACH,EAAAA,kDAAA,gBAAa;AACb,EAAAA,kDAAA,iBAAc;AAFN,SAAAA;AAAA,wDAAA;AAKL,IAAK,yBAAL,kBAAKC,4BAAL;AACH,EAAAA,wBAAA,SAAM;AACN,EAAAA,wBAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,yCAAL,kBAAKC,4CAAL;AACH,EAAAA,wCAAA,SAAM;AACN,EAAAA,wCAAA,SAAM;AACN,EAAAA,wCAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,qCAAL,kBAAKC,wCAAL;AACH,EAAAA,oCAAA,SAAM;AACN,EAAAA,oCAAA,YAAS;AACT,EAAAA,oCAAA,UAAO;AACP,EAAAA,oCAAA,YAAS;AACT,EAAAA,oCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,4CAAL,kBAAKC,+CAAL;AACH,EAAAA,2CAAA,UAAO;AACP,EAAAA,2CAAA,kBAAe;AACf,EAAAA,2CAAA,kBAAe;AACf,EAAAA,2CAAA,iBAAc;AACd,EAAAA,2CAAA,eAAY;AACZ,EAAAA,2CAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,4BAAL,kBAAKC,+BAAL;AACH,EAAAA,2BAAA,SAAM;AACN,EAAAA,2BAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,iCAAL,kBAAKC,oCAAL;AACH,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,eAAY;AACZ,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,uBAAoB;AALZ,SAAAA;AAAA,GAAA;AAQL,IAAK,iCAAL,kBAAKC,oCAAL;AACH,EAAAA,gCAAA,eAAY;AACZ,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;AAOL,IAAK,wCAAL,kBAAKC,2CAAL;AACH,EAAAA,uCAAA,eAAY;AACZ,EAAAA,uCAAA,qBAAkB;AAClB,EAAAA,uCAAA,uBAAoB;AAHZ,SAAAA;AAAA,GAAA;AAML,IAAK,wCAAL,kBAAKC,2CAAL;AACH,EAAAA,uCAAA,SAAM;AACN,EAAAA,uCAAA,YAAS;AACT,EAAAA,uCAAA,UAAO;AACP,EAAAA,uCAAA,YAAS;AACT,EAAAA,uCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,+CAAL,kBAAKC,kDAAL;AACH,EAAAA,8CAAA,UAAO;AACP,EAAAA,8CAAA,kBAAe;AACf,EAAAA,8CAAA,kBAAe;AACf,EAAAA,8CAAA,iBAAc;AACd,EAAAA,8CAAA,eAAY;AACZ,EAAAA,8CAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,mCAAL,kBAAKC,sCAAL;AACH,EAAAA,kCAAA,WAAQ;AACR,EAAAA,kCAAA,iBAAc;AAFN,SAAAA;AAAA,GAAA;AAKL,IAAK,mCAAL,kBAAKC,sCAAL;AACH,EAAAA,kCAAA,SAAM;AACN,EAAAA,kCAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,mCAAL,kBAAKC,sCAAL;AACH,EAAAA,kCAAA,WAAQ;AACR,EAAAA,kCAAA,YAAS;AACT,EAAAA,kCAAA,eAAY;AACZ,EAAAA,kCAAA,qBAAkB;AAClB,EAAAA,kCAAA,iBAAc;AACd,EAAAA,kCAAA,uBAAoB;AACpB,EAAAA,kCAAA,iBAAc;AAPN,SAAAA;AAAA,GAAA;AAUL,IAAK,mCAAL,kBAAKC,sCAAL;AACH,EAAAA,kCAAA,SAAM;AACN,EAAAA,kCAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,wCAAL,kBAAKC,2CAAL;AACH,EAAAA,uCAAA,SAAM;AACN,EAAAA,uCAAA,YAAS;AACT,EAAAA,uCAAA,UAAO;AACP,EAAAA,uCAAA,YAAS;AACT,EAAAA,uCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,+CAAL,kBAAKC,kDAAL;AACH,EAAAA,8CAAA,UAAO;AACP,EAAAA,8CAAA,kBAAe;AACf,EAAAA,8CAAA,kBAAe;AACf,EAAAA,8CAAA,iBAAc;AACd,EAAAA,8CAAA,eAAY;AACZ,EAAAA,8CAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,0CAAL,kBAAKC,6CAAL;AACH,EAAAA,yCAAA,SAAM;AACN,EAAAA,yCAAA,SAAM;AACN,EAAAA,yCAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,0CAAL,kBAAKC,6CAAL;AACH,EAAAA,yCAAA,SAAM;AACN,EAAAA,yCAAA,SAAM;AACN,EAAAA,yCAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,qCAAL,kBAAKC,wCAAL;AACH,EAAAA,oCAAA,WAAQ;AACR,EAAAA,oCAAA,iBAAc;AAFN,SAAAA;AAAA,GAAA;AAKL,IAAK,qCAAL,kBAAKC,wCAAL;AACH,EAAAA,oCAAA,SAAM;AACN,EAAAA,oCAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,qCAAL,kBAAKC,wCAAL;AACH,EAAAA,oCAAA,SAAM;AACN,EAAAA,oCAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,0CAAL,kBAAKC,6CAAL;AACH,EAAAA,yCAAA,qBAAkB;AAClB,EAAAA,yCAAA,eAAY;AACZ,EAAAA,yCAAA,iBAAc;AACd,EAAAA,yCAAA,iBAAc;AACd,EAAAA,yCAAA,uBAAoB;AALZ,SAAAA;AAAA,GAAA;AAQL,IAAK,0CAAL,kBAAKC,6CAAL;AACH,EAAAA,yCAAA,SAAM;AACN,EAAAA,yCAAA,YAAS;AACT,EAAAA,yCAAA,UAAO;AACP,EAAAA,yCAAA,YAAS;AACT,EAAAA,yCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,iDAAL,kBAAKC,oDAAL;AACH,EAAAA,gDAAA,UAAO;AACP,EAAAA,gDAAA,kBAAe;AACf,EAAAA,gDAAA,kBAAe;AACf,EAAAA,gDAAA,iBAAc;AACd,EAAAA,gDAAA,eAAY;AACZ,EAAAA,gDAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,4CAAL,kBAAKC,+CAAL;AACH,EAAAA,2CAAA,SAAM;AACN,EAAAA,2CAAA,SAAM;AACN,EAAAA,2CAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,iDAAL,kBAAKC,oDAAL;AACH,EAAAA,gDAAA,SAAM;AACN,EAAAA,gDAAA,SAAM;AACN,EAAAA,gDAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,0CAAL,kBAAKC,6CAAL;AACH,EAAAA,yCAAA,eAAY;AACZ,EAAAA,yCAAA,qBAAkB;AAClB,EAAAA,yCAAA,iBAAc;AACd,EAAAA,yCAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;AAOL,IAAK,iDAAL,kBAAKC,oDAAL;AACH,EAAAA,gDAAA,SAAM;AACN,EAAAA,gDAAA,SAAM;AACN,EAAAA,gDAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;AAML,IAAK,qBAAL,kBAAKC,wBAAL;AACH,EAAAA,oBAAA,SAAM;AACN,EAAAA,oBAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,qBAAL,kBAAKC,wBAAL;AACH,EAAAA,oBAAA,YAAS;AACT,EAAAA,oBAAA,WAAQ;AACR,EAAAA,oBAAA,eAAY;AACZ,EAAAA,oBAAA,qBAAkB;AAClB,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,uBAAoB;AACpB,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,uBAAoB;AARZ,SAAAA;AAAA,GAAA;AAWL,IAAK,4BAAL,kBAAKC,+BAAL;AACH,EAAAA,2BAAA,SAAM;AACN,EAAAA,2BAAA,SAAM;AACN,EAAAA,2BAAA,SAAM;AACN,EAAAA,2BAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;AAOL,IAAK,iCAAL,kBAAKC,oCAAL;AACH,EAAAA,gCAAA,SAAM;AACN,EAAAA,gCAAA,YAAS;AACT,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,YAAS;AACT,EAAAA,gCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,wCAAL,kBAAKC,2CAAL;AACH,EAAAA,uCAAA,UAAO;AACP,EAAAA,uCAAA,kBAAe;AACf,EAAAA,uCAAA,kBAAe;AACf,EAAAA,uCAAA,iBAAc;AACd,EAAAA,uCAAA,eAAY;AACZ,EAAAA,uCAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;AASL,IAAK,wBAAL,kBAAKC,2BAAL;AACH,EAAAA,uBAAA,SAAM;AACN,EAAAA,uBAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,wBAAL,kBAAKC,2BAAL;AACH,EAAAA,uBAAA,YAAS;AACT,EAAAA,uBAAA,WAAQ;AACR,EAAAA,uBAAA,eAAY;AACZ,EAAAA,uBAAA,qBAAkB;AAClB,EAAAA,uBAAA,iBAAc;AACd,EAAAA,uBAAA,uBAAoB;AACpB,EAAAA,uBAAA,iBAAc;AACd,EAAAA,uBAAA,uBAAoB;AARZ,SAAAA;AAAA,GAAA;AAWL,IAAK,+BAAL,kBAAKC,kCAAL;AACH,EAAAA,8BAAA,SAAM;AACN,EAAAA,8BAAA,SAAM;AACN,EAAAA,8BAAA,SAAM;AACN,EAAAA,8BAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;AAOL,IAAK,oCAAL,kBAAKC,uCAAL;AACH,EAAAA,mCAAA,SAAM;AACN,EAAAA,mCAAA,YAAS;AACT,EAAAA,mCAAA,UAAO;AACP,EAAAA,mCAAA,YAAS;AACT,EAAAA,mCAAA,WAAQ;AALA,SAAAA;AAAA,GAAA;AAQL,IAAK,2CAAL,kBAAKC,8CAAL;AACH,EAAAA,0CAAA,UAAO;AACP,EAAAA,0CAAA,kBAAe;AACf,EAAAA,0CAAA,kBAAe;AACf,EAAAA,0CAAA,iBAAc;AACd,EAAAA,0CAAA,eAAY;AACZ,EAAAA,0CAAA,uBAAoB;AANZ,SAAAA;AAAA,GAAA;;;AC5mEL,IAAMC,qBAAN,MAA8D;AAAA,EAGjE,YAAY,eAAiC;AACzC,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBO,mBACH,mBACyD;AACzD,WAAO,KAAK,cAAc;AAAA,MACtB,uBAAuB,MAAM,CAAC;AAAA,MAC9B;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,KAAK;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,oBACH,oBAAgD,CAAC,GACS;AAC1D,WAAO,KAAK,cAAc;AAAA,MACtB,wBAAwB,MAAM,CAAC;AAAA,MAC/B;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,KAAK;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,mBACH,mBACyD;AACzD,WAAO,KAAK,cAAc;AAAA,MACtB,uBAAuB,MAAM,CAAC;AAAA,MAC9B;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,KAAK;AAAA,IACxC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,wBACH,oBAAoD,CAAC,GACS;AAC9D,WAAO,KAAK,cAAc;AAAA,MACtB,4BAA4B,MAAM,CAAC;AAAA,MACnC;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,0BACH,oBAAsD,CAAC,GACS;AAChE,WAAO,KAAK,cAAc;AAAA,MACtB,8BAA8B,MAAM,CAAC;AAAA,MACrC;AAAA,MACA,EAAE,UAAU,OAAO,YAAY,MAAM;AAAA,IACzC;AAAA,EACJ;AACJ;;;AChSA,SAAS,oBAAAC,yBAAmD;;;ACA5D;AAAA,EAKI;AAAA,EACA;AAAA,OACG;AAwHA,IAAM,yBAAN,MAA6B;AAAA,EAShC,YAAY,eAAiC;AACzC,SAAK,gBAAgB;AACrB,SAAK,aAAa,IAAIC,YAAW,aAAa;AAC9C,SAAK,UAAU,IAAI,QAAQ,aAAa;AACxC,SAAK,aAAa,IAAIC,YAAW,aAAa;AAC9C,SAAK,YAAY,IAAIC,WAAU,aAAa;AAC5C,SAAK,WAAW,IAAIC,UAAS,aAAa;AAC1C,SAAK,oBAAoB,IAAIC,mBAAkB,aAAa;AAAA,EAChE;AAAA,EAEA,GACI,OAEA,UACF;AACE,SAAK,cAAc,GAAG,OAAO,QAAQ;AAAA,EACzC;AAAA,EAEA,IACI,OAEA,UACF;AACE,SAAK,cAAc,IAAI,OAAO,QAAQ;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,aAAa;AACT,WAAO,KAAK,cAAc,WAAW;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc;AACV,WAAO,KAAK,cAAc,YAAY;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa;AACT,SAAK,cAAc,WAAW;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,YAAY,QAAgB,UAAmC,CAAC,GAAG;AAC/D,WAAO,KAAK,cAAc,YAAY,QAAQ,OAAO;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,kBAAkB,QAAgB,UAAmC,CAAC,GAAG;AACrE,WAAO,KAAK,cAAc,YAAY,QAAQ,SAAS,EAAE,UAAU,KAAK,CAAC;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,kBACI,mBACwD;AACxD,WAAO,KAAK,WAAW,kBAAkB,iBAAiB;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,wBACI,oBAAoD,CAAC,GACS;AAC9D,WAAO,KAAK,WAAW,wBAAwB,iBAAiB;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,cACI,oBAA0C,CAAC,GACS;AACpD,WAAO,KAAK,WAAW,cAAc,iBAAiB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,cACI,oBAA0C,CAAC,GACS;AACpD,WAAO,KAAK,WAAW,cAAc,iBAAiB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,UACI,mBACgD;AAChD,WAAO,KAAK,WAAW,UAAU,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,cACI,mBACoD;AACpD,WAAO,KAAK,WAAW,cAAc,iBAAiB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,mBACI,mBACyD;AACzD,WAAO,KAAK,WAAW,mBAAmB,iBAAiB;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,SAAS,mBAAqF;AAC1F,WAAO,KAAK,WAAW,SAAS,iBAAiB;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,qBACI,oBAAiD,CAAC,GACS;AAC3D,WAAO,KAAK,WAAW,qBAAqB,iBAAiB;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,iBACI,oBAA6C,CAAC,GACS;AACvD,WAAO,KAAK,WAAW,iBAAiB,iBAAiB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,gBACI,mBACsD;AACtD,WAAO,KAAK,WAAW,gBAAgB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,gBACI,oBAA4C,CAAC,GACS;AACtD,WAAO,KAAK,WAAW,gBAAgB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,YACI,mBACkD;AAClD,WAAO,KAAK,WAAW,YAAY,iBAAiB;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,aACI,oBAAyC,CAAC,GACS;AACnD,WAAO,KAAK,QAAQ,aAAa,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,cACI,oBAA0C,CAAC,GACS;AACpD,WAAO,KAAK,QAAQ,cAAc,iBAAiB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,cACI,oBAA0C,CAAC,GACS;AACpD,WAAO,KAAK,QAAQ,cAAc,iBAAiB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,aACI,oBAAyC,CAAC,GACS;AACnD,WAAO,KAAK,WAAW,aAAa,iBAAiB;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,KAAK,oBAAiC,CAAC,GAAgD;AACnF,WAAO,KAAK,WAAW,KAAK,iBAAiB;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,KAAK,oBAAiC,CAAC,GAAgD;AACnF,WAAO,KAAK,WAAW,KAAK,iBAAiB;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,SAAS,mBAAqF;AAC1F,WAAO,KAAK,UAAU,SAAS,iBAAiB;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2BA,MAAM,mBAA+E;AACjF,WAAO,KAAK,UAAU,MAAM,iBAAiB;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,OAAO,mBAAiF;AACpF,WAAO,KAAK,UAAU,OAAO,iBAAiB;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,oBAAmC,CAAC,GAAkD;AACzF,WAAO,KAAK,UAAU,OAAO,iBAAiB;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BA,WACI,oBAAuC,CAAC,GACS;AACjD,WAAO,KAAK,UAAU,WAAW,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,WACI,oBAAuC,CAAC,GACS;AACjD,WAAO,KAAK,UAAU,WAAW,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,YACI,oBAAwC,CAAC,GACS;AAClD,WAAO,KAAK,UAAU,YAAY,iBAAiB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,iBACI,oBAA6C,CAAC,GACS;AACvD,WAAO,KAAK,UAAU,iBAAiB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,gBACI,mBACsD;AACtD,WAAO,KAAK,UAAU,gBAAgB,iBAAiB;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,iBACI,mBACuD;AACvD,WAAO,KAAK,UAAU,iBAAiB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,aACI,mBACmD;AACnD,WAAO,KAAK,UAAU,aAAa,iBAAiB;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,SAAS,mBAAqF;AAC1F,WAAO,KAAK,UAAU,SAAS,iBAAiB;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,oBACI,mBAC0D;AAC1D,WAAO,KAAK,SAAS,oBAAoB,iBAAiB;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,uBACI,mBAC6D;AAC7D,WAAO,KAAK,SAAS,uBAAuB,iBAAiB;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,YACI,mBACkD;AAClD,WAAO,KAAK,SAAS,YAAY,iBAAiB;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,mBACI,mBACyD;AACzD,WAAO,KAAK,SAAS,mBAAmB,iBAAiB;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,gBACI,mBACsD;AACtD,WAAO,KAAK,SAAS,gBAAgB,iBAAiB;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,eACI,mBACqD;AACrD,WAAO,KAAK,SAAS,eAAe,iBAAiB;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBA,kBACI,mBACwD;AACxD,WAAO,KAAK,SAAS,kBAAkB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,kBACI,mBACwD;AACxD,WAAO,KAAK,SAAS,kBAAkB,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,oBACI,mBAC0D;AAC1D,WAAO,KAAK,SAAS,oBAAoB,iBAAiB;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,WACI,mBACiD;AACjD,WAAO,KAAK,SAAS,WAAW,iBAAiB;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,UACI,oBAAsC,CAAC,GACS;AAChD,WAAO,KAAK,SAAS,UAAU,iBAAiB;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,cACI,mBACoD;AACpD,WAAO,KAAK,SAAS,cAAc,iBAAiB;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,aACI,oBAAyC,CAAC,GACS;AACnD,WAAO,KAAK,SAAS,aAAa,iBAAiB;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,mBACI,mBACyD;AACzD,WAAO,KAAK,kBAAkB,mBAAmB,iBAAiB;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,oBACI,oBAAgD,CAAC,GACS;AAC1D,WAAO,KAAK,kBAAkB,oBAAoB,iBAAiB;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,mBACI,mBACyD;AACzD,WAAO,KAAK,kBAAkB,mBAAmB,iBAAiB;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,wBACI,oBAAoD,CAAC,GACrD,IAID;AACC,WAAO,KAAK,kBACP,wBAAwB,iBAAiB,EACzC,KAAK,CAAC,aAAa;AAChB,YAAM,aAAa,MAAM,aAAa;AACtC,YAAM,SAAS,oBAA4B,KAAK,eAAe,UAAU;AACzE,aAAO,EAAE,UAAU,OAAO;AAAA,IAC9B,CAAC,EACA,MAAM,CAAC,UAAU;AACd,YAAM;AAAA,IACV,CAAC;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,0BACI,oBAAsD,CAAC,GACS;AAChE,WAAO,KAAK,kBAAkB,0BAA0B,iBAAiB;AAAA,EAC7E;AACJ;;;ADpnCO,IAAM,eAAN,MAAmB;AAAA,EAGtB,YAAY,eAA0C;AAClD,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,EACJ,IAAqD,CAAC,GAAoC;AACtF,UAAM,gBAAgB,IAAIC,kBAAiB;AAAA,MACvC,GAAG,KAAK;AAAA,MACR,GAAI,QAAQ,EAAE,KAAK;AAAA,MACnB,GAAI,YAAY,EAAE,SAAS;AAAA,IAC/B,CAAC;AACD,UAAM,yBAAyB,IAAI,uBAAuB,aAAa;AACvE,UAAM,cAAc,QAAQ;AAC5B,WAAO;AAAA,EACX;AACJ;;;AEjDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACkBA;AAAA,EAGI,qBAAAC;AAAA,EACA;AAAA,EACA,uBAAAC;AAAA,OACG;AAkBP,IAAM,kCAAkC,WAAY;AAChD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUH,UAAU,CAAC,QAAgB,OAAwB;AAE/C,MAAAD,mBAAkB,YAAY,UAAU,MAAM;AAE9C,aAAO,oCAAoC,qBAAqB,MAAM,CAAC,GAAG;AAAA,QACtE;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWA,8BAA8B,CAC1B,YACA,OACS;AAET,MAAAA,mBAAkB,gCAAgC,cAAc,UAAU;AAE1E,aAAO,oCAAoC,4BAA4B,MAAM,CAAC,GAAG;AAAA,QAC7E;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,eAAe,CAAC,OAAwB;AACpC,aAAO,oCAAoC,mBAAmB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;AAAA,IAClF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,WAAW,CAAC,OAAwB;AAChC,aAAO,oCAAoC,eAAe,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;AAAA,IAC9E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,UAAU,CAAC,QAAgB,OAAwB;AAE/C,MAAAA,mBAAkB,YAAY,UAAU,MAAM;AAE9C,aAAO,oCAAoC,qBAAqB,MAAM,CAAC,GAAG;AAAA,QACtE;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWA,YAAY,CAAC,QAAgB,OAAwB;AAEjD,MAAAA,mBAAkB,cAAc,UAAU,MAAM;AAEhD,aAAO,oCAAoC,uBAAuB,MAAM,CAAC,GAAG;AAAA,QACxE;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWA,eAAe,CAAC,QAAgB,IAAa,gBAAiC;AAE1E,MAAAA,mBAAkB,iBAAiB,UAAU,MAAM;AAEnD,aAAO,oCAAoC,gCAAgC,MAAM,CAAC,GAAG;AAAA,QACjF;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaA,OAAO,CAAC,QAAgB,UAA6B,OAAwB;AAEzE,MAAAA,mBAAkB,SAAS,UAAU,MAAM;AAE3C,MAAAA,mBAAkB,SAAS,YAAY,QAAQ;AAE/C,aAAO,oCAAoC,6BAA6B,MAAM,CAAC,GAAG;AAAA,QAC9E;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWA,aAAa,CAAC,QAAgB,UAAmC,OAAwB;AAErF,MAAAA,mBAAkB,eAAe,UAAU,MAAM;AAEjD,MAAAA,mBAAkB,eAAe,YAAY,QAAQ;AAErD,aAAO;AAAA,QACH,oCAAoC,MAAM,CAAC;AAAA,QAC3C,EAAE,QAAQ,UAAU,GAAG;AAAA,MAC3B;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,YAAY,CAAC,QAAgB,OAAwB;AAEjD,MAAAA,mBAAkB,cAAc,UAAU,MAAM;AAEhD,aAAO,oCAAoC,uBAAuB,MAAM,CAAC,GAAG;AAAA,QACxE;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYA,kBAAkB,CACd,QACA,QACA,IACA,gBACS;AAET,MAAAA,mBAAkB,oBAAoB,UAAU,MAAM;AAEtD,MAAAA,mBAAkB,oBAAoB,UAAU,MAAM;AAEtD,aAAO;AAAA,QACH,wCAAwC,MAAM,CAAC;AAAA,QAC/C,EAAE,QAAQ,QAAQ,IAAI,YAAY;AAAA,MACtC;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWA,qBAAqB,CACjB,QACA,YACA,OACS;AAET,MAAAA,mBAAkB,uBAAuB,UAAU,MAAM;AAEzD,MAAAA,mBAAkB,uBAAuB,cAAc,UAAU;AAEjE,aAAO,oCAAoC,gCAAgC,MAAM,CAAC,GAAG;AAAA,QACjF;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,QAAQ,CAAC,QAAgB,OAAwB;AAE7C,MAAAA,mBAAkB,UAAU,UAAU,MAAM;AAE5C,aAAO,oCAAoC,mBAAmB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC;AAAA,IAC1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,OAAO,CAAC,QAAgB,OAAwB;AAE5C,MAAAA,mBAAkB,SAAS,UAAU,MAAM;AAE3C,aAAO,oCAAoC,kBAAkB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC;AAAA,IACzF;AAAA,EACJ;AACJ;AAmfO,IAAM,sBAAN,MAAkE;AAAA,EAIrE,YAAY,eAAqC;AAC7C,SAAK,gBAAgB;AACrB,SAAK,uBAAuB,gCAAgC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,SAAS,mBAAuE;AACnF,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOC;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaO,6BACH,mBACqD;AACrD,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,cACH,oBAA0C,CAAC,GACL;AACtC,UAAM,SAAS,KAAK,qBAAqB,cAAc,mBAAmB,EAAE;AAE5E,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,UAAU,oBAAsC,CAAC,GAAuC;AAC3F,UAAM,SAAS,KAAK,qBAAqB,UAAU,mBAAmB,EAAE;AAExE,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,SAAS,mBAAuE;AACnF,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaO,WAAW,mBAA2E;AACzF,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,cACH,mBACsC;AACtC,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,MAAM,mBAAiE;AAC1E,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,YACH,mBACoC;AACpC,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,WAAW,mBAA2E;AACzF,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,iBACH,mBACyC;AACzC,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,oBACH,mBAC4C;AAC5C,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,OAAO,mBAAmE;AAC7E,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,MAAM,mBAAiE;AAC1E,UAAM,SAAS,KAAK,qBAAqB;AAAA,MACrC,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,IACvB;AAEA,WAAOA;AAAA,MACH,KAAK;AAAA,MACL;AAAA,MACA,mBAAmB;AAAA,IACvB;AAAA,EACJ;AACJ;AAEO,IAAK,6CAAL,kBAAKC,gDAAL;AACH,EAAAA,4CAAA,oBAAiB;AACjB,EAAAA,4CAAA,oBAAiB;AACjB,EAAAA,4CAAA,oBAAiB;AAHT,SAAAA;AAAA,GAAA;AAML,IAAK,oBAAL,kBAAKC,uBAAL;AACH,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,iBAAc;AAhBN,SAAAA;AAAA,GAAA;AAmBL,IAAK,0BAAL,kBAAKC,6BAAL;AACH,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,kBAAe;AACf,EAAAA,yBAAA,kBAAe;AACf,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,kBAAe;AACf,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AACd,EAAAA,yBAAA,iBAAc;AAhBN,SAAAA;AAAA,GAAA;AAmBL,IAAK,6BAAL,kBAAKC,gCAAL;AACH,EAAAA,4BAAA,cAAW;AACX,EAAAA,4BAAA,eAAY;AACZ,EAAAA,4BAAA,eAAY;AAHJ,SAAAA;AAAA,GAAA;AAML,IAAK,oCAAL,kBAAKC,uCAAL;AACH,EAAAA,mCAAA,oBAAiB;AACjB,EAAAA,mCAAA,oBAAiB;AACjB,EAAAA,mCAAA,oBAAiB;AAHT,SAAAA;AAAA,GAAA;;;ACrqCZ,SAAwC,wBAAAC,6BAA4B;;;ACApE,SAAgD,uBAAAC,4BAA2B;AAqCpE,IAAM,6BAAN,MAAiC;AAAA,EAIpC,YAAY,eAAqC;AAC7C,SAAK,gBAAgB;AACrB,SAAK,sBAAsB,IAAI,oBAAoB,aAAa;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,GACI,OAEA,UACF;AACE,SAAK,cAAc,GAAG,OAAO,QAAQ;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IACI,OAEA,UACF;AACE,SAAK,cAAc,IAAI,OAAO,QAAQ;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,aAA4B;AACxB,WAAO,KAAK,cAAc,WAAW;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAuB;AACnB,WAAO,KAAK,cAAc,YAAY;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAmB;AACf,SAAK,cAAc,WAAW;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAU,QAA2B,IAAmB;AACpD,SAAK,cAAc,UAAU,QAAQ,EAAE;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,YAAY,QAA2B,IAAmB;AACtD,SAAK,cAAc,YAAY,QAAQ,EAAE;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,QAAyB;AAClC,WAAO,KAAK,cAAc,aAAa,MAAM;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,WAAmB,IAAsC;AAC9D,WAAOC,qBAA4B,KAAK,eAAe,WAAW,EAAE;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,SAAS,mBAAuE;AAC5E,WAAO,KAAK,oBAAoB,SAAS,iBAAiB;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,6BACI,mBACqD;AACrD,WAAO,KAAK,oBAAoB,6BAA6B,iBAAiB;AAAA,EAClF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,cACI,oBAA0C,CAAC,GACL;AACtC,WAAO,KAAK,oBAAoB,cAAc,iBAAiB;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,UAAU,oBAAsC,CAAC,GAAuC;AACpF,WAAO,KAAK,oBAAoB,UAAU,iBAAiB;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,SAAS,mBAAuE;AAC5E,WAAO,KAAK,oBAAoB,SAAS,iBAAiB;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,WAAW,mBAA2E;AAClF,WAAO,KAAK,oBAAoB,WAAW,iBAAiB;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,cAAc,mBAAiF;AAC3F,WAAO,KAAK,oBAAoB,cAAc,iBAAiB;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,mBAAiE;AACnE,WAAO,KAAK,oBAAoB,MAAM,iBAAiB;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,YAAY,mBAA6E;AACrF,WAAO,KAAK,oBAAoB,YAAY,iBAAiB;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,WAAW,mBAA2E;AAClF,WAAO,KAAK,oBAAoB,WAAW,iBAAiB;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,iBACI,mBACyC;AACzC,WAAO,KAAK,oBAAoB,iBAAiB,iBAAiB;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,oBACI,mBAC4C;AAC5C,WAAO,KAAK,oBAAoB,oBAAoB,iBAAiB;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,mBAAmE;AACtE,WAAO,KAAK,oBAAoB,OAAO,iBAAiB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,mBAAiE;AACnE,WAAO,KAAK,oBAAoB,MAAM,iBAAiB;AAAA,EAC3D;AACJ;;;AD7UO,IAAM,mBAAN,MAAuB;AAAA,EAG1B,YAAY,eAA8C;AACtD,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAII,CAAC,GAAwC;AACzC,UAAM,gBAAgB,IAAIC,sBAAqB;AAAA,MAC3C,GAAG,KAAK;AAAA,MACR,GAAI,QAAQ,EAAE,KAAK;AAAA,MACnB,GAAI,YAAY,EAAE,SAAS;AAAA,IAC/B,CAAC;AACD,UAAM,6BAA6B,IAAI,2BAA2B,aAAa;AAC/E,UAAM,cAAc,QAAQ,MAAM;AAClC,WAAO;AAAA,EACX;AACJ;;;ApBnCO,IAAM,OAAN,MAAW;AAAA,EAKd,YAAY,QAA2B;AACnC,UAAM,YAAY,eAAe,MAAM,OAAO;AAE9C,QAAI,QAAQ,sBAAsB;AAC9B,YAAM,gBAAgB,IAAIC;AAAA,QACtB,OAAO;AAAA,MACX;AAGA,oBAAc,WAAW,cAAc,YAAY;AACnD,oBAAc,cAAc,cAAc,eAAe,CAAC;AAC1D,oBAAc,YAAY,UAAU;AAAA,QAChC,GAAI,cAAc,YAAY,WAAW,CAAC;AAAA,QAC1C,cAAc;AAAA,MAClB;AACA,WAAK,UAAU,IAAI,QAAQ,aAAa;AAAA,IAC5C;AACA,QAAI,QAAQ,2BAA2B;AACnC,YAAM,qBAAqB,IAAIC;AAAA,QAC3B,OAAO;AAAA,MACX;AAGA,yBAAmB,QAAQ,mBAAmB,SAAS;AACvD,yBAAmB,YAAY;AAC/B,WAAK,eAAe,IAAI,aAAa,kBAAkB;AAAA,IAC3D;AACA,QAAI,QAAQ,+BAA+B;AACvC,YAAM,yBAAyB,IAAIC;AAAA,QAC/B,OAAO;AAAA,MACX;AAGA,6BAAuB,QAAQ,uBAAuB,SAAS;AAC/D,6BAAuB,YAAY;AACnC,WAAK,mBAAmB,IAAI,iBAAiB,sBAAsB;AAAA,IACvE;AAAA,EACJ;AACJ;;;AsB1DA;AAAA,EACI,YAAAC;AAAA,EACA,0BAAAC;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA;AAAA,EACA,4BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;","names":["ConfigurationRestAPI","ConfigurationWebsocketAPI","ConfigurationWebsocketStreams","sendRequest","ExchangeInfoSymbolStatusEnum","assertParamExists","sendRequest","KlinesIntervalEnum","TickerWindowSizeEnum","TickerTypeEnum","Ticker24hrTypeEnum","TickerTradingDayTypeEnum","UiKlinesIntervalEnum","assertParamExists","sendRequest","DeleteOrderCancelRestrictionsEnum","NewOrderSideEnum","NewOrderTypeEnum","NewOrderTimeInForceEnum","NewOrderNewOrderRespTypeEnum","NewOrderSelfTradePreventionModeEnum","OrderCancelReplaceSideEnum","OrderCancelReplaceTypeEnum","OrderCancelReplaceCancelReplaceModeEnum","OrderCancelReplaceTimeInForceEnum","OrderCancelReplaceNewOrderRespTypeEnum","OrderCancelReplaceSelfTradePreventionModeEnum","OrderCancelReplaceCancelRestrictionsEnum","OrderCancelReplaceOrderRateLimitExceededModeEnum","OrderListOcoSideEnum","OrderListOcoAboveTypeEnum","OrderListOcoBelowTypeEnum","OrderListOcoBelowTimeInForceEnum","OrderListOcoNewOrderRespTypeEnum","OrderListOcoSelfTradePreventionModeEnum","OrderListOtoWorkingTypeEnum","OrderListOtoWorkingSideEnum","OrderListOtoPendingTypeEnum","OrderListOtoPendingSideEnum","OrderListOtoNewOrderRespTypeEnum","OrderListOtoSelfTradePreventionModeEnum","OrderListOtoWorkingTimeInForceEnum","OrderListOtoPendingTimeInForceEnum","OrderListOtocoWorkingTypeEnum","OrderListOtocoWorkingSideEnum","OrderListOtocoPendingSideEnum","OrderListOtocoPendingAboveTypeEnum","OrderListOtocoNewOrderRespTypeEnum","OrderListOtocoSelfTradePreventionModeEnum","OrderListOtocoWorkingTimeInForceEnum","OrderListOtocoPendingAboveTimeInForceEnum","OrderListOtocoPendingBelowTypeEnum","OrderListOtocoPendingBelowTimeInForceEnum","OrderOcoSideEnum","OrderOcoStopLimitTimeInForceEnum","OrderOcoNewOrderRespTypeEnum","OrderOcoSelfTradePreventionModeEnum","SorOrderSideEnum","SorOrderTypeEnum","SorOrderTimeInForceEnum","SorOrderNewOrderRespTypeEnum","SorOrderSelfTradePreventionModeEnum","assertParamExists","sendRequest","sendRequest","sendRequest","AccountApi","ExchangeInfoSymbolStatusEnum","GeneralApi","KlinesIntervalEnum","MarketApi","OrderCancelReplaceCancelReplaceModeEnum","OrderCancelReplaceCancelRestrictionsEnum","OrderCancelReplaceNewOrderRespTypeEnum","OrderCancelReplaceOrderRateLimitExceededModeEnum","OrderCancelReplaceSelfTradePreventionModeEnum","OrderCancelReplaceSideEnum","OrderCancelReplaceTimeInForceEnum","OrderCancelReplaceTypeEnum","Ticker24hrTypeEnum","TickerTradingDayTypeEnum","TickerTypeEnum","TickerWindowSizeEnum","TradeApi","UiKlinesIntervalEnum","UserDataStreamApi","AccountApi","GeneralApi","ExchangeInfoSymbolStatusEnum","MarketApi","KlinesIntervalEnum","TickerTypeEnum","TickerWindowSizeEnum","Ticker24hrTypeEnum","TickerTradingDayTypeEnum","UiKlinesIntervalEnum","TradeApi","OrderCancelCancelRestrictionsEnum","OrderCancelReplaceCancelReplaceModeEnum","OrderCancelReplaceSideEnum","OrderCancelReplaceTypeEnum","OrderCancelReplaceTimeInForceEnum","OrderCancelReplaceNewOrderRespTypeEnum","OrderCancelReplaceSelfTradePreventionModeEnum","OrderCancelReplaceCancelRestrictionsEnum","OrderCancelReplaceOrderRateLimitExceededModeEnum","OrderListPlaceSideEnum","OrderListPlaceStopLimitTimeInForceEnum","OrderListPlaceNewOrderRespTypeEnum","OrderListPlaceSelfTradePreventionModeEnum","OrderListPlaceOcoSideEnum","OrderListPlaceOcoAboveTypeEnum","OrderListPlaceOcoBelowTypeEnum","OrderListPlaceOcoBelowTimeInForceEnum","OrderListPlaceOcoNewOrderRespTypeEnum","OrderListPlaceOcoSelfTradePreventionModeEnum","OrderListPlaceOtoWorkingTypeEnum","OrderListPlaceOtoWorkingSideEnum","OrderListPlaceOtoPendingTypeEnum","OrderListPlaceOtoPendingSideEnum","OrderListPlaceOtoNewOrderRespTypeEnum","OrderListPlaceOtoSelfTradePreventionModeEnum","OrderListPlaceOtoWorkingTimeInForceEnum","OrderListPlaceOtoPendingTimeInForceEnum","OrderListPlaceOtocoWorkingTypeEnum","OrderListPlaceOtocoWorkingSideEnum","OrderListPlaceOtocoPendingSideEnum","OrderListPlaceOtocoPendingAboveTypeEnum","OrderListPlaceOtocoNewOrderRespTypeEnum","OrderListPlaceOtocoSelfTradePreventionModeEnum","OrderListPlaceOtocoWorkingTimeInForceEnum","OrderListPlaceOtocoPendingAboveTimeInForceEnum","OrderListPlaceOtocoPendingBelowTypeEnum","OrderListPlaceOtocoPendingBelowTimeInForceEnum","OrderPlaceSideEnum","OrderPlaceTypeEnum","OrderPlaceTimeInForceEnum","OrderPlaceNewOrderRespTypeEnum","OrderPlaceSelfTradePreventionModeEnum","SorOrderPlaceSideEnum","SorOrderPlaceTypeEnum","SorOrderPlaceTimeInForceEnum","SorOrderPlaceNewOrderRespTypeEnum","SorOrderPlaceSelfTradePreventionModeEnum","UserDataStreamApi","WebsocketAPIBase","AccountApi","GeneralApi","MarketApi","TradeApi","UserDataStreamApi","WebsocketAPIBase","assertParamExists","createStreamHandler","AllMarketRollingWindowTickerWindowSizeEnum","KlineIntervalEnum","KlineOffsetIntervalEnum","PartialBookDepthLevelsEnum","RollingWindowTickerWindowSizeEnum","WebsocketStreamsBase","createStreamHandler","createStreamHandler","WebsocketStreamsBase","ConfigurationRestAPI","ConfigurationWebsocketAPI","ConfigurationWebsocketStreams","TimeUnit","SPOT_REST_API_PROD_URL","SPOT_WS_API_PROD_URL","SPOT_WS_STREAMS_PROD_URL"]}