okx-api 2.0.6 → 3.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +344 -13
- package/dist/cjs/constants/funding.js.map +1 -0
- package/dist/cjs/index.d.ts +43 -0
- package/dist/cjs/index.js +64 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/{lib → dist/cjs}/rest-client.d.ts +28 -15
- package/{lib → dist/cjs}/rest-client.js +41 -68
- package/dist/cjs/rest-client.js.map +1 -0
- package/dist/cjs/types/rest/client.d.ts +36 -0
- package/{lib → dist/cjs}/types/rest/client.js.map +1 -1
- package/{lib → dist/cjs}/types/rest/request/account.d.ts +1 -1
- package/dist/cjs/types/rest/request/account.js.map +1 -0
- package/{lib → dist/cjs}/types/rest/request/block-trading.d.ts +1 -1
- package/dist/cjs/types/rest/request/block-trading.js.map +1 -0
- package/dist/cjs/types/rest/request/convert.js.map +1 -0
- package/dist/cjs/types/rest/request/copy-trading.js.map +1 -0
- package/dist/cjs/types/rest/request/funding.js.map +1 -0
- package/dist/cjs/types/rest/request/grid-trading.js.map +1 -0
- package/dist/cjs/types/rest/request/public.js.map +1 -0
- package/dist/cjs/types/rest/request/recurring-buy.js.map +1 -0
- package/{lib → dist/cjs}/types/rest/request/shared.d.ts +1 -1
- package/dist/cjs/types/rest/request/shared.js.map +1 -0
- package/dist/cjs/types/rest/request/signal-bot.js.map +1 -0
- package/dist/cjs/types/rest/request/simple-earn.js.map +1 -0
- package/dist/cjs/types/rest/request/spread-trading.js.map +1 -0
- package/dist/cjs/types/rest/request/subaccount.js.map +1 -0
- package/{lib → dist/cjs}/types/rest/request/trade.d.ts +1 -1
- package/dist/cjs/types/rest/request/trade.js.map +1 -0
- package/{lib → dist/cjs}/types/rest/response/private-account.d.ts +1 -1
- package/dist/cjs/types/rest/response/private-account.js.map +1 -0
- package/{lib → dist/cjs}/types/rest/response/private-block-trading.d.ts +1 -1
- package/dist/cjs/types/rest/response/private-block-trading.js.map +1 -0
- package/dist/cjs/types/rest/response/private-copy-trading.js.map +1 -0
- package/dist/cjs/types/rest/response/private-flexible-loan.js.map +1 -0
- package/{lib → dist/cjs}/types/rest/response/private-funding.d.ts +1 -1
- package/dist/cjs/types/rest/response/private-funding.js.map +1 -0
- package/dist/cjs/types/rest/response/private-recurring-buy.js.map +1 -0
- package/dist/cjs/types/rest/response/private-signal-bot.js.map +1 -0
- package/dist/cjs/types/rest/response/private-spread-trading.js.map +1 -0
- package/dist/cjs/types/rest/response/private-subaccount.js.map +1 -0
- package/{lib → dist/cjs}/types/rest/response/private-trade.d.ts +1 -1
- package/dist/cjs/types/rest/response/private-trade.js.map +1 -0
- package/{lib → dist/cjs}/types/rest/response/public-data.d.ts +1 -1
- package/dist/cjs/types/rest/response/public-data.js.map +1 -0
- package/{lib → dist/cjs}/types/rest/shared.d.ts +2 -2
- package/dist/cjs/types/rest/shared.js.map +1 -0
- package/dist/cjs/types/shared.d.ts +13 -0
- package/{lib → dist/cjs}/types/shared.js.map +1 -1
- package/dist/cjs/types/websockets/ws-api-request.d.ts +61 -0
- package/dist/cjs/types/websockets/ws-api-request.js +3 -0
- package/dist/cjs/types/websockets/ws-api-request.js.map +1 -0
- package/dist/cjs/types/websockets/ws-api-response.d.ts +28 -0
- package/dist/cjs/types/websockets/ws-api-response.js +3 -0
- package/dist/cjs/types/websockets/ws-api-response.js.map +1 -0
- package/dist/cjs/types/websockets/ws-api.d.ts +139 -0
- package/dist/cjs/types/websockets/ws-api.js +38 -0
- package/dist/cjs/types/websockets/ws-api.js.map +1 -0
- package/{lib/types/websockets/event.d.ts → dist/cjs/types/websockets/ws-events.d.ts} +7 -1
- package/dist/cjs/types/websockets/ws-events.js +11 -0
- package/dist/cjs/types/websockets/ws-events.js.map +1 -0
- package/dist/cjs/types/websockets/ws-general.d.ts +48 -0
- package/dist/cjs/types/websockets/ws-general.js +3 -0
- package/dist/cjs/types/websockets/ws-general.js.map +1 -0
- package/{lib/types/websockets/request.d.ts → dist/cjs/types/websockets/ws-request.d.ts} +0 -22
- package/dist/cjs/types/websockets/ws-request.js +3 -0
- package/dist/cjs/types/websockets/ws-request.js.map +1 -0
- package/{lib → dist/cjs}/util/BaseRestClient.d.ts +1 -1
- package/dist/cjs/util/BaseRestClient.js +237 -0
- package/dist/cjs/util/BaseRestClient.js.map +1 -0
- package/dist/cjs/util/BaseWSClient.d.ts +198 -0
- package/dist/cjs/util/BaseWSClient.js +770 -0
- package/dist/cjs/util/BaseWSClient.js.map +1 -0
- package/dist/cjs/util/WsStore.d.ts +75 -0
- package/dist/cjs/util/WsStore.js +303 -0
- package/dist/cjs/util/WsStore.js.map +1 -0
- package/dist/cjs/util/WsStore.types.d.ts +51 -0
- package/dist/cjs/util/WsStore.types.js +14 -0
- package/dist/cjs/util/WsStore.types.js.map +1 -0
- package/dist/cjs/util/logger.d.ts +8 -0
- package/{lib → dist/cjs}/util/logger.js +3 -11
- package/dist/cjs/util/logger.js.map +1 -0
- package/{lib → dist/cjs}/util/requestUtils.d.ts +2 -1
- package/{lib → dist/cjs}/util/requestUtils.js +13 -5
- package/dist/cjs/util/requestUtils.js.map +1 -0
- package/{lib → dist/cjs}/util/typeGuards.d.ts +4 -2
- package/{lib → dist/cjs}/util/typeGuards.js +43 -10
- package/dist/cjs/util/typeGuards.js.map +1 -0
- package/dist/cjs/util/webCryptoAPI.d.ts +15 -0
- package/dist/cjs/util/webCryptoAPI.js +82 -0
- package/dist/cjs/util/webCryptoAPI.js.map +1 -0
- package/dist/cjs/util/websocket-util.d.ts +142 -0
- package/dist/cjs/util/websocket-util.js +533 -0
- package/dist/cjs/util/websocket-util.js.map +1 -0
- package/dist/cjs/websocket-api-client.d.ts +135 -0
- package/dist/cjs/websocket-api-client.js +171 -0
- package/dist/cjs/websocket-api-client.js.map +1 -0
- package/{lib/websocket-client.d.ts → dist/cjs/websocket-client-legacy.d.ts} +16 -39
- package/dist/cjs/websocket-client-legacy.js +524 -0
- package/dist/cjs/websocket-client-legacy.js.map +1 -0
- package/dist/cjs/websocket-client.d.ts +81 -0
- package/dist/cjs/websocket-client.js +548 -0
- package/dist/cjs/websocket-client.js.map +1 -0
- package/dist/mjs/constants/funding.d.ts +139 -0
- package/dist/mjs/constants/funding.js +140 -0
- package/dist/mjs/constants/funding.js.map +1 -0
- package/dist/mjs/index.d.ts +43 -0
- package/dist/mjs/index.js +48 -0
- package/dist/mjs/index.js.map +1 -0
- package/dist/mjs/package.json +3 -0
- package/dist/mjs/rest-client.d.ts +1173 -0
- package/dist/mjs/rest-client.js +1271 -0
- package/dist/mjs/rest-client.js.map +1 -0
- package/dist/mjs/types/rest/client.d.ts +36 -0
- package/dist/mjs/types/rest/client.js +2 -0
- package/{lib/types/websockets → dist/mjs/types/rest}/client.js.map +1 -1
- package/dist/mjs/types/rest/request/account.d.ts +144 -0
- package/dist/mjs/types/rest/request/account.js +2 -0
- package/dist/mjs/types/rest/request/account.js.map +1 -0
- package/dist/mjs/types/rest/request/block-trading.d.ts +76 -0
- package/dist/mjs/types/rest/request/block-trading.js +2 -0
- package/dist/mjs/types/rest/request/block-trading.js.map +1 -0
- package/dist/mjs/types/rest/request/convert.d.ts +19 -0
- package/dist/mjs/types/rest/request/convert.js +2 -0
- package/dist/mjs/types/rest/request/convert.js.map +1 -0
- package/dist/mjs/types/rest/request/copy-trading.d.ts +117 -0
- package/dist/mjs/types/rest/request/copy-trading.js +2 -0
- package/dist/mjs/types/rest/request/copy-trading.js.map +1 -0
- package/dist/mjs/types/rest/request/funding.d.ts +43 -0
- package/dist/mjs/types/rest/request/funding.js +2 -0
- package/dist/mjs/types/rest/request/funding.js.map +1 -0
- package/dist/mjs/types/rest/request/grid-trading.d.ts +66 -0
- package/dist/mjs/types/rest/request/grid-trading.js +2 -0
- package/dist/mjs/types/rest/request/grid-trading.js.map +1 -0
- package/dist/mjs/types/rest/request/public.d.ts +55 -0
- package/dist/mjs/types/rest/request/public.js +2 -0
- package/dist/mjs/types/rest/request/public.js.map +1 -0
- package/dist/mjs/types/rest/request/recurring-buy.d.ts +28 -0
- package/dist/mjs/types/rest/request/recurring-buy.js +2 -0
- package/dist/mjs/types/rest/request/recurring-buy.js.map +1 -0
- package/dist/mjs/types/rest/request/shared.d.ts +7 -0
- package/dist/mjs/types/rest/request/shared.js +2 -0
- package/dist/mjs/types/rest/request/shared.js.map +1 -0
- package/dist/mjs/types/rest/request/signal-bot.d.ts +97 -0
- package/dist/mjs/types/rest/request/signal-bot.js +2 -0
- package/dist/mjs/types/rest/request/signal-bot.js.map +1 -0
- package/dist/mjs/types/rest/request/simple-earn.d.ts +23 -0
- package/dist/mjs/types/rest/request/simple-earn.js +2 -0
- package/dist/mjs/types/rest/request/simple-earn.js.map +1 -0
- package/dist/mjs/types/rest/request/spread-trading.d.ts +69 -0
- package/dist/mjs/types/rest/request/spread-trading.js +2 -0
- package/dist/mjs/types/rest/request/spread-trading.js.map +1 -0
- package/dist/mjs/types/rest/request/subaccount.d.ts +33 -0
- package/dist/mjs/types/rest/request/subaccount.js +2 -0
- package/dist/mjs/types/rest/request/subaccount.js.map +1 -0
- package/dist/mjs/types/rest/request/trade.d.ts +194 -0
- package/dist/mjs/types/rest/request/trade.js +2 -0
- package/dist/mjs/types/rest/request/trade.js.map +1 -0
- package/dist/mjs/types/rest/response/private-account.d.ts +448 -0
- package/dist/mjs/types/rest/response/private-account.js +2 -0
- package/dist/mjs/types/rest/response/private-account.js.map +1 -0
- package/dist/mjs/types/rest/response/private-block-trading.d.ts +124 -0
- package/dist/mjs/types/rest/response/private-block-trading.js +2 -0
- package/dist/mjs/types/rest/response/private-block-trading.js.map +1 -0
- package/dist/mjs/types/rest/response/private-copy-trading.d.ts +259 -0
- package/dist/mjs/types/rest/response/private-copy-trading.js +2 -0
- package/dist/mjs/types/rest/response/private-copy-trading.js.map +1 -0
- package/dist/mjs/types/rest/response/private-flexible-loan.d.ts +72 -0
- package/dist/mjs/types/rest/response/private-flexible-loan.js +2 -0
- package/dist/mjs/types/rest/response/private-flexible-loan.js.map +1 -0
- package/dist/mjs/types/rest/response/private-funding.d.ts +102 -0
- package/dist/mjs/types/rest/response/private-funding.js +2 -0
- package/dist/mjs/types/rest/response/private-funding.js.map +1 -0
- package/dist/mjs/types/rest/response/private-recurring-buy.d.ts +63 -0
- package/dist/mjs/types/rest/response/private-recurring-buy.js +2 -0
- package/dist/mjs/types/rest/response/private-recurring-buy.js.map +1 -0
- package/dist/mjs/types/rest/response/private-signal-bot.d.ts +22 -0
- package/dist/mjs/types/rest/response/private-signal-bot.js +2 -0
- package/dist/mjs/types/rest/response/private-signal-bot.js.map +1 -0
- package/dist/mjs/types/rest/response/private-spread-trading.d.ts +126 -0
- package/dist/mjs/types/rest/response/private-spread-trading.js +2 -0
- package/dist/mjs/types/rest/response/private-spread-trading.js.map +1 -0
- package/dist/mjs/types/rest/response/private-subaccount.d.ts +80 -0
- package/dist/mjs/types/rest/response/private-subaccount.js +2 -0
- package/dist/mjs/types/rest/response/private-subaccount.js.map +1 -0
- package/dist/mjs/types/rest/response/private-trade.d.ts +355 -0
- package/dist/mjs/types/rest/response/private-trade.js +2 -0
- package/dist/mjs/types/rest/response/private-trade.js.map +1 -0
- package/dist/mjs/types/rest/response/public-data.d.ts +174 -0
- package/dist/mjs/types/rest/response/public-data.js +2 -0
- package/dist/mjs/types/rest/response/public-data.js.map +1 -0
- package/dist/mjs/types/rest/shared.d.ts +45 -0
- package/dist/mjs/types/rest/shared.js +2 -0
- package/dist/mjs/types/rest/shared.js.map +1 -0
- package/dist/mjs/types/shared.d.ts +13 -0
- package/dist/mjs/types/shared.js +2 -0
- package/{lib/types/rest → dist/mjs/types}/shared.js.map +1 -1
- package/dist/mjs/types/websockets/ws-api-request.d.ts +61 -0
- package/dist/mjs/types/websockets/ws-api-request.js +2 -0
- package/dist/mjs/types/websockets/ws-api-request.js.map +1 -0
- package/dist/mjs/types/websockets/ws-api-response.d.ts +28 -0
- package/dist/mjs/types/websockets/ws-api-response.js +2 -0
- package/dist/mjs/types/websockets/ws-api-response.js.map +1 -0
- package/dist/mjs/types/websockets/ws-api.d.ts +139 -0
- package/dist/mjs/types/websockets/ws-api.js +35 -0
- package/dist/mjs/types/websockets/ws-api.js.map +1 -0
- package/dist/mjs/types/websockets/ws-events.d.ts +33 -0
- package/dist/mjs/types/websockets/ws-events.js +8 -0
- package/dist/mjs/types/websockets/ws-events.js.map +1 -0
- package/dist/mjs/types/websockets/ws-general.d.ts +48 -0
- package/dist/mjs/types/websockets/ws-general.js +2 -0
- package/dist/mjs/types/websockets/ws-general.js.map +1 -0
- package/dist/mjs/types/websockets/ws-request.d.ts +93 -0
- package/dist/mjs/types/websockets/ws-request.js +2 -0
- package/dist/mjs/types/websockets/ws-request.js.map +1 -0
- package/dist/mjs/util/BaseRestClient.d.ts +29 -0
- package/dist/mjs/util/BaseRestClient.js +230 -0
- package/dist/mjs/util/BaseRestClient.js.map +1 -0
- package/dist/mjs/util/BaseWSClient.d.ts +198 -0
- package/dist/mjs/util/BaseWSClient.js +763 -0
- package/dist/mjs/util/BaseWSClient.js.map +1 -0
- package/dist/mjs/util/WsStore.d.ts +75 -0
- package/dist/mjs/util/WsStore.js +298 -0
- package/dist/mjs/util/WsStore.js.map +1 -0
- package/dist/mjs/util/WsStore.types.d.ts +51 -0
- package/dist/mjs/util/WsStore.types.js +11 -0
- package/dist/mjs/util/WsStore.types.js.map +1 -0
- package/dist/mjs/util/logger.d.ts +8 -0
- package/dist/mjs/util/logger.js +14 -0
- package/dist/mjs/util/logger.js.map +1 -0
- package/dist/mjs/util/requestUtils.d.ts +8 -0
- package/dist/mjs/util/requestUtils.js +51 -0
- package/dist/mjs/util/requestUtils.js.map +1 -0
- package/dist/mjs/util/typeGuards.d.ts +19 -0
- package/dist/mjs/util/typeGuards.js +85 -0
- package/dist/mjs/util/typeGuards.js.map +1 -0
- package/dist/mjs/util/webCryptoAPI.d.ts +15 -0
- package/dist/mjs/util/webCryptoAPI.js +77 -0
- package/dist/mjs/util/webCryptoAPI.js.map +1 -0
- package/dist/mjs/util/websocket-util.d.ts +142 -0
- package/dist/mjs/util/websocket-util.js +517 -0
- package/dist/mjs/util/websocket-util.js.map +1 -0
- package/dist/mjs/websocket-api-client.d.ts +135 -0
- package/dist/mjs/websocket-api-client.js +167 -0
- package/dist/mjs/websocket-api-client.js.map +1 -0
- package/dist/mjs/websocket-client-legacy.d.ts +76 -0
- package/dist/mjs/websocket-client-legacy.js +517 -0
- package/dist/mjs/websocket-client-legacy.js.map +1 -0
- package/dist/mjs/websocket-client.d.ts +81 -0
- package/dist/mjs/websocket-client.js +544 -0
- package/dist/mjs/websocket-client.js.map +1 -0
- package/llms.txt +9266 -0
- package/package.json +30 -13
- package/index.js +0 -1
- package/lib/constants/funding.js.map +0 -1
- package/lib/constants/index.d.ts +0 -1
- package/lib/constants/index.js +0 -18
- package/lib/constants/index.js.map +0 -1
- package/lib/index.d.ts +0 -5
- package/lib/index.js +0 -22
- package/lib/index.js.map +0 -1
- package/lib/rest-client.js.map +0 -1
- package/lib/types/index.d.ts +0 -3
- package/lib/types/index.js +0 -20
- package/lib/types/index.js.map +0 -1
- package/lib/types/rest/client.d.ts +0 -20
- package/lib/types/rest/index.d.ts +0 -4
- package/lib/types/rest/index.js +0 -21
- package/lib/types/rest/index.js.map +0 -1
- package/lib/types/rest/request/account.js.map +0 -1
- package/lib/types/rest/request/announement.d.ts +0 -0
- package/lib/types/rest/request/announement.js +0 -1
- package/lib/types/rest/request/announement.js.map +0 -1
- package/lib/types/rest/request/block-trading.js.map +0 -1
- package/lib/types/rest/request/convert.js.map +0 -1
- package/lib/types/rest/request/copy-trading.js.map +0 -1
- package/lib/types/rest/request/funding.js.map +0 -1
- package/lib/types/rest/request/grid-trading.js.map +0 -1
- package/lib/types/rest/request/index.d.ts +0 -14
- package/lib/types/rest/request/index.js +0 -31
- package/lib/types/rest/request/index.js.map +0 -1
- package/lib/types/rest/request/public.js.map +0 -1
- package/lib/types/rest/request/recurring-buy.js.map +0 -1
- package/lib/types/rest/request/shared.js.map +0 -1
- package/lib/types/rest/request/signal-bot.js.map +0 -1
- package/lib/types/rest/request/simple-earn.js.map +0 -1
- package/lib/types/rest/request/spread-trading.js.map +0 -1
- package/lib/types/rest/request/subaccount.js.map +0 -1
- package/lib/types/rest/request/trade.js.map +0 -1
- package/lib/types/rest/response/index.d.ts +0 -11
- package/lib/types/rest/response/index.js +0 -28
- package/lib/types/rest/response/index.js.map +0 -1
- package/lib/types/rest/response/private-account.js.map +0 -1
- package/lib/types/rest/response/private-block-trading.js.map +0 -1
- package/lib/types/rest/response/private-copy-trading.js.map +0 -1
- package/lib/types/rest/response/private-flexible-loan.js.map +0 -1
- package/lib/types/rest/response/private-funding.js.map +0 -1
- package/lib/types/rest/response/private-recurring-buy.js.map +0 -1
- package/lib/types/rest/response/private-signal-bot.js.map +0 -1
- package/lib/types/rest/response/private-spread-trading.js.map +0 -1
- package/lib/types/rest/response/private-subaccount.js.map +0 -1
- package/lib/types/rest/response/private-trade.js.map +0 -1
- package/lib/types/rest/response/public-data.js.map +0 -1
- package/lib/types/shared.d.ts +0 -6
- package/lib/types/websockets/client.d.ts +0 -22
- package/lib/types/websockets/client.js +0 -3
- package/lib/types/websockets/event.js +0 -3
- package/lib/types/websockets/event.js.map +0 -1
- package/lib/types/websockets/index.d.ts +0 -3
- package/lib/types/websockets/index.js +0 -20
- package/lib/types/websockets/index.js.map +0 -1
- package/lib/types/websockets/request.js +0 -3
- package/lib/types/websockets/request.js.map +0 -1
- package/lib/util/BaseRestClient.js +0 -217
- package/lib/util/BaseRestClient.js.map +0 -1
- package/lib/util/WsStore.d.ts +0 -66
- package/lib/util/WsStore.js +0 -168
- package/lib/util/WsStore.js.map +0 -1
- package/lib/util/browser-support.d.ts +0 -6
- package/lib/util/browser-support.js +0 -49
- package/lib/util/browser-support.js.map +0 -1
- package/lib/util/index.d.ts +0 -4
- package/lib/util/index.js +0 -21
- package/lib/util/index.js.map +0 -1
- package/lib/util/logger.d.ts +0 -9
- package/lib/util/logger.js.map +0 -1
- package/lib/util/node-support.d.ts +0 -1
- package/lib/util/node-support.js +0 -9
- package/lib/util/node-support.js.map +0 -1
- package/lib/util/requestUtils.js.map +0 -1
- package/lib/util/typeGuards.js.map +0 -1
- package/lib/util/websocket-util.d.ts +0 -35
- package/lib/util/websocket-util.js +0 -282
- package/lib/util/websocket-util.js.map +0 -1
- package/lib/websocket-client.js +0 -472
- package/lib/websocket-client.js.map +0 -1
- /package/{lib → dist/cjs}/constants/funding.d.ts +0 -0
- /package/{lib → dist/cjs}/constants/funding.js +0 -0
- /package/{lib → dist/cjs}/types/rest/client.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/account.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/block-trading.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/convert.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/convert.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/copy-trading.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/copy-trading.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/funding.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/funding.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/grid-trading.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/grid-trading.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/public.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/public.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/recurring-buy.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/recurring-buy.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/shared.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/signal-bot.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/signal-bot.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/simple-earn.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/simple-earn.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/spread-trading.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/spread-trading.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/subaccount.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/request/subaccount.js +0 -0
- /package/{lib → dist/cjs}/types/rest/request/trade.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-account.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-block-trading.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-copy-trading.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-copy-trading.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-flexible-loan.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-flexible-loan.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-funding.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-recurring-buy.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-recurring-buy.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-signal-bot.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-signal-bot.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-spread-trading.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-spread-trading.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-subaccount.d.ts +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-subaccount.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/private-trade.js +0 -0
- /package/{lib → dist/cjs}/types/rest/response/public-data.js +0 -0
- /package/{lib → dist/cjs}/types/rest/shared.js +0 -0
- /package/{lib → dist/cjs}/types/shared.js +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { WS_KEY_MAP, WsKey } from '../../util/websocket-util.js';
|
|
2
|
+
import { OrderIdRequest } from '../rest/request/trade.js';
|
|
3
|
+
import { OrderResult } from '../rest/response/private-trade.js';
|
|
4
|
+
import { numberInString } from '../rest/shared.js';
|
|
5
|
+
import { WSAPIAmendOrderRequestV5, WSAPIAmendSpreadOrderRequestV5, WSAPICancelSpreadOrderRequestV5, WSAPIMassCancelOrdersRequestV5, WSAPIPlaceOrderRequestV5, WSAPIPlaceSpreadOrderRequestV5, WSAPISpreadMassCancelOrdersRequestV5 } from './ws-api-request.js';
|
|
6
|
+
import { WSAPICancelOrderResultV5, WSAPISpreadAmendOrderResultV5, WSAPISpreadCancelOrderResultV5, WSAPISpreadPlaceOrderResultV5 } from './ws-api-response.js';
|
|
7
|
+
import { WsAuthRequestArg, WsChannelSubUnSubRequestArg } from './ws-request.js';
|
|
8
|
+
export interface WSAPIRequestFlags {
|
|
9
|
+
/** If true, will skip auth requirement for WS API connection */
|
|
10
|
+
authIsOptional?: boolean | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Request effective deadline. Unix timestamp format in milliseconds, e.g. 1597026383085
|
|
13
|
+
*
|
|
14
|
+
* Only applies for order placement and order amend (batch commands included)
|
|
15
|
+
*/
|
|
16
|
+
expTime?: numberInString;
|
|
17
|
+
}
|
|
18
|
+
export type WSOperation = 'subscribe' | 'unsubscribe' | 'login';
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* Top level requests with args
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* request looks like this:
|
|
28
|
+
{
|
|
29
|
+
"id": "1512",
|
|
30
|
+
"op": "subscribe",
|
|
31
|
+
"args": [
|
|
32
|
+
{
|
|
33
|
+
"channel": "tickers",
|
|
34
|
+
"instId": "BTC-USDT"
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
*/
|
|
39
|
+
export interface WsRequestOperationOKX<TWSRequestArg> {
|
|
40
|
+
id: string;
|
|
41
|
+
op: WSOperation;
|
|
42
|
+
args?: TWSRequestArg[];
|
|
43
|
+
}
|
|
44
|
+
export interface WsSubRequest extends WsRequestOperationOKX<WsChannelSubUnSubRequestArg> {
|
|
45
|
+
op: 'subscribe';
|
|
46
|
+
}
|
|
47
|
+
export interface WsUnsubRequest extends WsRequestOperationOKX<WsChannelSubUnSubRequestArg> {
|
|
48
|
+
op: 'unsubscribe';
|
|
49
|
+
}
|
|
50
|
+
export interface WsAuthRequest extends WsRequestOperationOKX<WsAuthRequestArg> {
|
|
51
|
+
op: 'login';
|
|
52
|
+
}
|
|
53
|
+
export type WSAPIPrivateOperations = 'order' | 'batch-orders' | 'cancel-order' | 'batch-cancel-orders' | 'amend-order' | 'batch-amend-orders' | 'mass-cancel';
|
|
54
|
+
export type WSAPIBusinessOperations = 'sprd-order' | 'sprd-amend-order' | 'sprd-cancel-order' | 'sprd-mass-cancel';
|
|
55
|
+
export type WSAPIOperation = WSAPIPrivateOperations | WSAPIBusinessOperations;
|
|
56
|
+
export declare const WS_API_Operations: WSAPIOperation[];
|
|
57
|
+
export declare const WS_API_PRIVATE_OPERATIONS: WSAPIPrivateOperations[];
|
|
58
|
+
export declare const WS_API_BUSINESS_OPERATIONS: WSAPIBusinessOperations[];
|
|
59
|
+
export declare const WS_API_TAG_OPERATIONS: WSAPIOperation[];
|
|
60
|
+
export interface WSAPIRequestOKX<TRequestParams> {
|
|
61
|
+
id: numberInString;
|
|
62
|
+
op: WSAPIOperation;
|
|
63
|
+
expTime?: numberInString;
|
|
64
|
+
args: TRequestParams[];
|
|
65
|
+
}
|
|
66
|
+
export interface WSAPIResponse<TResponseData extends object = object, TOperation extends WSAPIOperation = WSAPIOperation> {
|
|
67
|
+
wsKey: WsKey;
|
|
68
|
+
id: numberInString;
|
|
69
|
+
op: TOperation;
|
|
70
|
+
code: numberInString;
|
|
71
|
+
msg: string;
|
|
72
|
+
data: TResponseData[];
|
|
73
|
+
inTime: numberInString;
|
|
74
|
+
outTime: numberInString;
|
|
75
|
+
}
|
|
76
|
+
export interface WSOperationLoginParams {
|
|
77
|
+
apiKey: string;
|
|
78
|
+
passphrase: string;
|
|
79
|
+
timestamp: number;
|
|
80
|
+
sign: string;
|
|
81
|
+
}
|
|
82
|
+
export type Exact<T> = {
|
|
83
|
+
[K: string]: never;
|
|
84
|
+
} & {
|
|
85
|
+
[K in keyof T]: T[K];
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* List of operations supported for this WsKey (connection)
|
|
89
|
+
*/
|
|
90
|
+
export interface WsAPIWsKeyTopicMap {
|
|
91
|
+
[WS_KEY_MAP.prodPrivate]: WSAPIPrivateOperations;
|
|
92
|
+
[WS_KEY_MAP.prodDemoPrivate]: WSAPIPrivateOperations;
|
|
93
|
+
[WS_KEY_MAP.prodBusiness]: WSAPIBusinessOperations;
|
|
94
|
+
[WS_KEY_MAP.prodDemoBusiness]: WSAPIBusinessOperations;
|
|
95
|
+
[WS_KEY_MAP.eeaLivePrivate]: WSAPIPrivateOperations;
|
|
96
|
+
[WS_KEY_MAP.eeaDemoPrivate]: WSAPIPrivateOperations;
|
|
97
|
+
[WS_KEY_MAP.usLivePrivate]: WSAPIPrivateOperations;
|
|
98
|
+
[WS_KEY_MAP.usDemoPrivate]: WSAPIPrivateOperations;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Request parameters expected per operation
|
|
102
|
+
*/
|
|
103
|
+
export interface WsAPITopicRequestParamMap {
|
|
104
|
+
order: WSAPIPlaceOrderRequestV5;
|
|
105
|
+
'batch-orders': WSAPIPlaceOrderRequestV5[];
|
|
106
|
+
'cancel-order': OrderIdRequest;
|
|
107
|
+
'batch-cancel-orders': OrderIdRequest[];
|
|
108
|
+
'amend-order': WSAPIAmendOrderRequestV5;
|
|
109
|
+
'batch-amend-orders': WSAPIAmendOrderRequestV5[];
|
|
110
|
+
'mass-cancel': WSAPIMassCancelOrdersRequestV5;
|
|
111
|
+
'sprd-order': WSAPIPlaceSpreadOrderRequestV5;
|
|
112
|
+
'sprd-amend-order': WSAPIAmendSpreadOrderRequestV5;
|
|
113
|
+
'sprd-cancel-order': WSAPICancelSpreadOrderRequestV5;
|
|
114
|
+
'sprd-mass-cancel': WSAPISpreadMassCancelOrdersRequestV5;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Response structure expected for each operation
|
|
118
|
+
*/
|
|
119
|
+
export interface WsAPIOperationResponseMap {
|
|
120
|
+
order: WSAPIResponse<[OrderResult], 'order'>;
|
|
121
|
+
'batch-orders': WSAPIResponse<OrderResult[], 'batch-orders'>;
|
|
122
|
+
'cancel-order': WSAPIResponse<[WSAPICancelOrderResultV5], 'cancel-order'>;
|
|
123
|
+
'batch-cancel-orders': WSAPIResponse<WSAPICancelOrderResultV5[], 'batch-cancel-orders'>;
|
|
124
|
+
'amend-order': WSAPIResponse<[OrderResult], 'amend-order'>;
|
|
125
|
+
'batch-amend-orders': WSAPIResponse<[OrderResult], 'batch-amend-orders'>;
|
|
126
|
+
'mass-cancel': WSAPIResponse<[{
|
|
127
|
+
result: boolean;
|
|
128
|
+
}], 'mass-cancel'>;
|
|
129
|
+
'sprd-order': WSAPIResponse<[WSAPISpreadPlaceOrderResultV5], 'sprd-order'>;
|
|
130
|
+
'sprd-amend-order': WSAPIResponse<[
|
|
131
|
+
WSAPISpreadAmendOrderResultV5
|
|
132
|
+
], 'sprd-amend-order'>;
|
|
133
|
+
'sprd-cancel-order': WSAPIResponse<[
|
|
134
|
+
WSAPISpreadCancelOrderResultV5
|
|
135
|
+
], 'sprd-cancel-order'>;
|
|
136
|
+
'sprd-mass-cancel': WSAPIResponse<[{
|
|
137
|
+
result: boolean;
|
|
138
|
+
}], 'sprd-mass-cancel'>;
|
|
139
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WS_API_TAG_OPERATIONS = exports.WS_API_BUSINESS_OPERATIONS = exports.WS_API_PRIVATE_OPERATIONS = exports.WS_API_Operations = void 0;
|
|
4
|
+
const websocket_util_js_1 = require("../../util/websocket-util.js");
|
|
5
|
+
exports.WS_API_Operations = [
|
|
6
|
+
'order',
|
|
7
|
+
'batch-orders',
|
|
8
|
+
'cancel-order',
|
|
9
|
+
'batch-cancel-orders',
|
|
10
|
+
'amend-order',
|
|
11
|
+
'batch-amend-orders',
|
|
12
|
+
'mass-cancel',
|
|
13
|
+
'sprd-order',
|
|
14
|
+
'sprd-amend-order',
|
|
15
|
+
'sprd-cancel-order',
|
|
16
|
+
'sprd-mass-cancel',
|
|
17
|
+
];
|
|
18
|
+
exports.WS_API_PRIVATE_OPERATIONS = [
|
|
19
|
+
'order',
|
|
20
|
+
'batch-orders',
|
|
21
|
+
'cancel-order',
|
|
22
|
+
'batch-cancel-orders',
|
|
23
|
+
'amend-order',
|
|
24
|
+
'batch-amend-orders',
|
|
25
|
+
'mass-cancel',
|
|
26
|
+
];
|
|
27
|
+
exports.WS_API_BUSINESS_OPERATIONS = [
|
|
28
|
+
'sprd-order',
|
|
29
|
+
'sprd-amend-order',
|
|
30
|
+
'sprd-cancel-order',
|
|
31
|
+
'sprd-mass-cancel',
|
|
32
|
+
];
|
|
33
|
+
exports.WS_API_TAG_OPERATIONS = [
|
|
34
|
+
'order',
|
|
35
|
+
'batch-orders',
|
|
36
|
+
'sprd-order',
|
|
37
|
+
];
|
|
38
|
+
//# sourceMappingURL=ws-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-api.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-api.ts"],"names":[],"mappings":";;;AAAA,oEAAiE;AAwGpD,QAAA,iBAAiB,GAAqB;IACjD,OAAO;IACP,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,aAAa;IACb,oBAAoB;IACpB,aAAa;IACb,YAAY;IACZ,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;CACnB,CAAC;AAEW,QAAA,yBAAyB,GAA6B;IACjE,OAAO;IACP,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,aAAa;IACb,oBAAoB;IACpB,aAAa;CACd,CAAC;AAEW,QAAA,0BAA0B,GAA8B;IACnE,YAAY;IACZ,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;CACnB,CAAC;AAEW,QAAA,qBAAqB,GAAqB;IACrD,OAAO;IACP,cAAc;IACd,YAAY;CACb,CAAC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import { WsChannel } from './request';
|
|
1
|
+
import { WsChannel } from './ws-request.js';
|
|
2
|
+
export interface MessageEventLike {
|
|
3
|
+
target: WebSocket;
|
|
4
|
+
type: 'message';
|
|
5
|
+
data: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function isMessageEvent(msg: unknown): msg is MessageEventLike;
|
|
2
8
|
export interface WsEvent {
|
|
3
9
|
event: 'error' | 'login' | 'subscribe' | 'unsubscribe' | 'channel-conn-count';
|
|
4
10
|
code?: string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isMessageEvent = isMessageEvent;
|
|
4
|
+
function isMessageEvent(msg) {
|
|
5
|
+
if (typeof msg !== 'object' || !msg) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const message = msg;
|
|
9
|
+
return message['type'] === 'message' && typeof message['data'] === 'string';
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ws-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-events.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-events.ts"],"names":[],"mappings":";;AAQA,wCAOC;AAPD,SAAgB,cAAc,CAAC,GAAY;IACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,GAAuB,CAAC;IACxC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { RestClientOptions } from '../rest/client.js';
|
|
2
|
+
import { APICredentials, APIMarket } from '../shared.js';
|
|
3
|
+
export interface WSClientConfigurableOptions {
|
|
4
|
+
accounts?: APICredentials[];
|
|
5
|
+
/**
|
|
6
|
+
* The API group this client should connect to:
|
|
7
|
+
* - market: 'prod' (default: connects to OKX global) https://www.okx.com/docs-v5/en/#overview-production-trading-services
|
|
8
|
+
* - market: 'EEA' // also known as "my.okx.com" https://my.okx.com/docs-v5/en/#overview-production-trading-services
|
|
9
|
+
* - market: 'US' // also known as "app.okx.com" https://app.okx.com/docs-v5/en/#overview-production-trading-services
|
|
10
|
+
*/
|
|
11
|
+
market?: APIMarket;
|
|
12
|
+
/**
|
|
13
|
+
* Set to `true` to use OKX's demo trading functionality
|
|
14
|
+
*/
|
|
15
|
+
demoTrading?: boolean;
|
|
16
|
+
disableHeartbeat?: boolean;
|
|
17
|
+
/** How often to check if the connection is alive */
|
|
18
|
+
pingInterval?: number;
|
|
19
|
+
/** How long to wait for a pong (heartbeat reply) before assuming the connection is dead */
|
|
20
|
+
pongTimeout?: number;
|
|
21
|
+
/** Delay in milliseconds before respawning the connection */
|
|
22
|
+
reconnectTimeout?: number;
|
|
23
|
+
requestOptions?: RestClientOptions;
|
|
24
|
+
wsOptions?: {
|
|
25
|
+
protocols?: string[];
|
|
26
|
+
agent?: any;
|
|
27
|
+
};
|
|
28
|
+
wsUrl?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Allows you to provide a custom "signMessage" function, e.g. to use node's much faster createHmac method
|
|
31
|
+
*
|
|
32
|
+
* Look in the examples folder for a demonstration on using node's createHmac instead.
|
|
33
|
+
*/
|
|
34
|
+
customSignMessageFn?: (message: string, secret: string) => Promise<string>;
|
|
35
|
+
}
|
|
36
|
+
export interface WebsocketClientOptions extends WSClientConfigurableOptions {
|
|
37
|
+
market: APIMarket;
|
|
38
|
+
pongTimeout: number;
|
|
39
|
+
pingInterval: number;
|
|
40
|
+
reconnectTimeout: number;
|
|
41
|
+
authPrivateConnectionsOnConnect: boolean;
|
|
42
|
+
authPrivateRequests: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Whether to use native WebSocket ping/pong frames for heartbeats
|
|
45
|
+
*/
|
|
46
|
+
useNativeHeartbeats: boolean;
|
|
47
|
+
}
|
|
48
|
+
export type WsEventInternalSrc = 'event' | 'function';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-general.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-general.ts"],"names":[],"mappings":""}
|
|
@@ -5,7 +5,6 @@ export interface WsAuthRequestArg {
|
|
|
5
5
|
sign: string;
|
|
6
6
|
}
|
|
7
7
|
export type WsTradeOp = 'order' | 'batch-orders' | 'cancel-order' | 'batch-cancel-orders' | 'amend-order' | 'batch-amend-order';
|
|
8
|
-
export type WsRequestOp = 'login' | 'subscribe' | 'unsubscribe';
|
|
9
8
|
export type WsPrivateChannel = 'account' | 'positions' | 'balance_and_position' | 'orders' | 'orders-algo' | 'algo-advance' | 'liquidation-warning' | 'account-greeks' | 'grid-orders-spot' | 'grid-orders-contract' | 'grid-orders-moon' | 'grid-positions' | 'grid-sub-orders';
|
|
10
9
|
export type WsPublicKlineChannel = 'candle1Y' | 'candle6M' | 'candle3M' | 'candle1M' | 'candle1W' | 'candle1D' | 'candle2D' | 'candle3D' | 'candle5D' | 'candle12H' | 'candle6H' | 'candle4H' | 'candle2H' | 'candle1H' | 'candle30m' | 'candle15m' | 'candle5m' | 'candle3m' | 'candle1m' | 'candle1s' | 'candle1Yutc' | 'candle3Mutc' | 'candle1Mutc' | 'candle1Wutc' | 'candle1Dutc' | 'candle2Dutc' | 'candle3Dutc' | 'candle5Dutc' | 'candle12Hutc' | 'candle6Hutc';
|
|
11
10
|
export type WsPublicMarkPriceKlineChannel = 'mark-price-candle1Y' | 'mark-price-candle6M' | 'mark-price-candle3M' | 'mark-price-candle1M' | 'mark-price-candle1W' | 'mark-price-candle1D' | 'mark-price-candle2D' | 'mark-price-candle3D' | 'mark-price-candle5D' | 'mark-price-candle12H' | 'mark-price-candle6H' | 'mark-price-candle4H' | 'mark-price-candle2H' | 'mark-price-candle1H' | 'mark-price-candle30m' | 'mark-price-candle15m' | 'mark-price-candle5m' | 'mark-price-candle3m' | 'mark-price-candle1m' | 'mark-price-candle1Yutc' | 'mark-price-candle3Mutc' | 'mark-price-candle1Mutc' | 'mark-price-candle1Wutc' | 'mark-price-candle1Dutc' | 'mark-price-candle2Dutc' | 'mark-price-candle3Dutc' | 'mark-price-candle5Dutc' | 'mark-price-candle12Hutc' | 'mark-price-candle6Hutc';
|
|
@@ -16,10 +15,6 @@ export type WsBusinessPrivateChannel = 'orders-algo' | 'algo-advance' | 'deposit
|
|
|
16
15
|
export type WsBusinessPublicChannel = WsPublicKlineChannel | WsPublicMarkPriceKlineChannel | WsPublicIndexKlineChannel;
|
|
17
16
|
export type WsBusinessChannel = WsBusinessPrivateChannel | WsBusinessPublicChannel;
|
|
18
17
|
export type WsChannel = WsPublicChannel | WsPrivateChannel | WsBusinessChannel;
|
|
19
|
-
export interface WsBaseRequest {
|
|
20
|
-
op: WsRequestOp;
|
|
21
|
-
args: any[];
|
|
22
|
-
}
|
|
23
18
|
/** Used to trigger order actions over websockets (e.g. placing & cancelling orders) */
|
|
24
19
|
export interface WsTradeBaseRequest {
|
|
25
20
|
op: WsTradeOp;
|
|
@@ -96,20 +91,3 @@ export interface WsPublicChannelArgLiquidationOrders extends WsBaseRequestArg {
|
|
|
96
91
|
instType: 'SWAP' | 'FUTURES';
|
|
97
92
|
}
|
|
98
93
|
export type WsChannelSubUnSubRequestArg = WsPrivateChannelArgTickers | WsPrivateChannelArgWithCcy | WsPrivateChannelArgWithInstFamily | WsPrivateChannelArgAlgo | WsPrivateChannelArgBalanceAndPosition | WsPrivateChannelArgGridOrders | WsPrivateChannelArgGridOther | WsPublicChannelArgInstType | WsPublicChannelArgInstId | WsPublicChannelArgInstIdOrFamily | WsPublicChannelArgOptionSummary | WsPublicChannelArgStatus | WsPublicChannelArgLiquidationOrders;
|
|
99
|
-
/**
|
|
100
|
-
*
|
|
101
|
-
* Top level requests with args
|
|
102
|
-
*
|
|
103
|
-
*/
|
|
104
|
-
export interface WsSubRequest extends WsBaseRequest {
|
|
105
|
-
op: 'subscribe';
|
|
106
|
-
args: WsChannelSubUnSubRequestArg[];
|
|
107
|
-
}
|
|
108
|
-
export interface WsUnsubRequest extends WsBaseRequest {
|
|
109
|
-
op: 'unsubscribe';
|
|
110
|
-
args: WsChannelSubUnSubRequestArg[];
|
|
111
|
-
}
|
|
112
|
-
export interface WsAuthRequest extends WsBaseRequest {
|
|
113
|
-
op: 'login';
|
|
114
|
-
args: WsAuthRequestArg[];
|
|
115
|
-
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-request.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-request.ts"],"names":[],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AxiosRequestConfig } from 'axios';
|
|
2
|
-
import { RestClientOptions } from '../types';
|
|
2
|
+
import { RestClientOptions } from '../types/rest/client.js';
|
|
3
3
|
export declare const MISSING_CREDENTIALS_ERROR = "Private endpoints require api and secret to be provided in the REST client constructor";
|
|
4
4
|
export default abstract class BaseRestClient {
|
|
5
5
|
private options;
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MISSING_CREDENTIALS_ERROR = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const https_1 = require("https");
|
|
9
|
+
const requestUtils_js_1 = require("./requestUtils.js");
|
|
10
|
+
const typeGuards_js_1 = require("./typeGuards.js");
|
|
11
|
+
const webCryptoAPI_js_1 = require("./webCryptoAPI.js");
|
|
12
|
+
// axios.interceptors.request.use((request) => {
|
|
13
|
+
// console.log(new Date(), 'Starting Request', JSON.stringify(request, null, 2));
|
|
14
|
+
// return request;
|
|
15
|
+
// });
|
|
16
|
+
// axios.interceptors.response.use((response) => {
|
|
17
|
+
// // console.log(new Date(), 'Response:', JSON.stringify(response, null, 2));
|
|
18
|
+
// console.log(
|
|
19
|
+
// new Date(),
|
|
20
|
+
// 'Response:',
|
|
21
|
+
// JSON.stringify(
|
|
22
|
+
// {
|
|
23
|
+
// data: response.data,
|
|
24
|
+
// headers: response.headers,
|
|
25
|
+
// },
|
|
26
|
+
// null,
|
|
27
|
+
// 2,
|
|
28
|
+
// ),
|
|
29
|
+
// );
|
|
30
|
+
// return response;
|
|
31
|
+
// });
|
|
32
|
+
exports.MISSING_CREDENTIALS_ERROR = 'Private endpoints require api and secret to be provided in the REST client constructor';
|
|
33
|
+
class BaseRestClient {
|
|
34
|
+
options;
|
|
35
|
+
baseUrl;
|
|
36
|
+
globalRequestOptions;
|
|
37
|
+
apiKey;
|
|
38
|
+
apiSecret;
|
|
39
|
+
apiPassphrase;
|
|
40
|
+
constructor(options = {}, requestOptions = {}) {
|
|
41
|
+
// this.environment = environment;
|
|
42
|
+
this.options = {
|
|
43
|
+
// if true, we'll throw errors if any params are undefined
|
|
44
|
+
strict_param_validation: false,
|
|
45
|
+
market: 'prod',
|
|
46
|
+
...options,
|
|
47
|
+
};
|
|
48
|
+
this.baseUrl = (0, requestUtils_js_1.getRestBaseUrl)(options.market || 'prod', options);
|
|
49
|
+
const hasOneCredential = options.apiKey || options.apiSecret || options.apiPass;
|
|
50
|
+
const hasAllCredentials = !!options.apiKey && !!options.apiSecret && !!options.apiPass;
|
|
51
|
+
// Allow empty object
|
|
52
|
+
if (hasOneCredential && !hasAllCredentials) {
|
|
53
|
+
throw new Error('API Key, Secret AND Passphrase are ALL required for private enpoints');
|
|
54
|
+
}
|
|
55
|
+
if (hasAllCredentials && !this.options.customSignMessageFn) {
|
|
56
|
+
// Provide a user friendly error message if the user is using an outdated Node.js version (where Web Crypto API is not available).
|
|
57
|
+
// A few users have been caught out by using the end-of-life Node.js v18 release.
|
|
58
|
+
(0, webCryptoAPI_js_1.checkWebCryptoAPISupported)();
|
|
59
|
+
}
|
|
60
|
+
this.globalRequestOptions = {
|
|
61
|
+
// in ms == 5 minutes by default
|
|
62
|
+
timeout: 1000 * 60 * 5,
|
|
63
|
+
// custom request options based on axios specs - see: https://github.com/axios/axios#request-config
|
|
64
|
+
...requestOptions,
|
|
65
|
+
};
|
|
66
|
+
if (!this.globalRequestOptions.headers) {
|
|
67
|
+
this.globalRequestOptions.headers = {};
|
|
68
|
+
}
|
|
69
|
+
if (options.market === 'demo') {
|
|
70
|
+
throw new Error('ERROR: to use demo trading, set the "demoTrading: true" flag in the constructor');
|
|
71
|
+
}
|
|
72
|
+
// Note: `x-simulated-trading: 1` needs to be added to the header of the Demo Trading request.
|
|
73
|
+
if (options.demoTrading) {
|
|
74
|
+
this.globalRequestOptions.headers['x-simulated-trading'] = 1;
|
|
75
|
+
}
|
|
76
|
+
this.globalRequestOptions.headers['Content-Type'] = 'application/json';
|
|
77
|
+
this.globalRequestOptions.headers['Accept'] = 'application/json';
|
|
78
|
+
// If enabled, configure a https agent with keepAlive enabled
|
|
79
|
+
if (this.options.keepAlive) {
|
|
80
|
+
// Extract existing https agent parameters, if provided, to prevent the keepAlive flag from overwriting an existing https agent completely
|
|
81
|
+
const existingHttpsAgent = this.globalRequestOptions.httpsAgent;
|
|
82
|
+
const existingAgentOptions = existingHttpsAgent?.options || {};
|
|
83
|
+
// For more advanced configuration, raise an issue on GitHub or use the "requestOptions"
|
|
84
|
+
// parameter to define a custom httpsAgent with the desired properties
|
|
85
|
+
this.globalRequestOptions.httpsAgent = new https_1.Agent({
|
|
86
|
+
...existingAgentOptions,
|
|
87
|
+
keepAlive: true,
|
|
88
|
+
keepAliveMsecs: this.options.keepAliveMsecs,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
this.apiKey = options?.apiKey;
|
|
92
|
+
this.apiSecret = options?.apiSecret;
|
|
93
|
+
this.apiPassphrase = options?.apiPass;
|
|
94
|
+
}
|
|
95
|
+
get(endpoint, params) {
|
|
96
|
+
return this._call('GET', endpoint, params, true);
|
|
97
|
+
}
|
|
98
|
+
post(endpoint, params) {
|
|
99
|
+
return this._call('POST', endpoint, params, true);
|
|
100
|
+
}
|
|
101
|
+
getPrivate(endpoint, params) {
|
|
102
|
+
return this._call('GET', endpoint, params, false);
|
|
103
|
+
}
|
|
104
|
+
postPrivate(endpoint, params) {
|
|
105
|
+
return this._call('POST', endpoint, Array.isArray(params)
|
|
106
|
+
? params.map((p) => ({ ...p, [requestUtils_js_1.programKey]: requestUtils_js_1.programId }))
|
|
107
|
+
: { ...params, [requestUtils_js_1.programKey]: requestUtils_js_1.programId }, false);
|
|
108
|
+
}
|
|
109
|
+
deletePrivate(endpoint, params) {
|
|
110
|
+
return this._call('DELETE', endpoint, params, false);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Make a HTTP request to a specific endpoint. Private endpoints are automatically signed.
|
|
114
|
+
*/
|
|
115
|
+
async _call(method, endpoint, params, isPublicApi) {
|
|
116
|
+
const options = {
|
|
117
|
+
...this.globalRequestOptions,
|
|
118
|
+
url: [this.baseUrl, endpoint].join(endpoint.startsWith('/') ? '' : '/'),
|
|
119
|
+
method: method,
|
|
120
|
+
json: true,
|
|
121
|
+
};
|
|
122
|
+
// Delete any params without value
|
|
123
|
+
if (params) {
|
|
124
|
+
for (const key in params) {
|
|
125
|
+
if (typeof params[key] === 'undefined') {
|
|
126
|
+
delete params[key];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const tsISO = new Date().toISOString();
|
|
131
|
+
const signResult = await this.signRequest(isPublicApi, tsISO, method, endpoint, params);
|
|
132
|
+
if (!options.headers) {
|
|
133
|
+
options.headers = {};
|
|
134
|
+
}
|
|
135
|
+
if (!isPublicApi) {
|
|
136
|
+
options.headers['OK-ACCESS-KEY'] = this.apiKey;
|
|
137
|
+
options.headers['OK-ACCESS-SIGN'] = signResult.sign;
|
|
138
|
+
options.headers['OK-ACCESS-TIMESTAMP'] = tsISO;
|
|
139
|
+
options.headers['OK-ACCESS-PASSPHRASE'] = this.apiPassphrase;
|
|
140
|
+
}
|
|
141
|
+
if (method === 'GET') {
|
|
142
|
+
options.params = signResult.requestBody;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
options.data = signResult.requestBody;
|
|
146
|
+
}
|
|
147
|
+
// console.log(new Date(), 'request: ', {
|
|
148
|
+
// url: options.url,
|
|
149
|
+
// method,
|
|
150
|
+
// params: signResult.requestBody,
|
|
151
|
+
// sign: signResult.sign,
|
|
152
|
+
// options,
|
|
153
|
+
// });
|
|
154
|
+
return (0, axios_1.default)(options)
|
|
155
|
+
.then((response) => {
|
|
156
|
+
// Check this is an API response without an error code.
|
|
157
|
+
// If so, resolve the nested data property, else throw the full response body
|
|
158
|
+
if ((0, typeGuards_js_1.isRawAPIResponse)(response.data) &&
|
|
159
|
+
response.status == 200 &&
|
|
160
|
+
response.data?.code === '0') {
|
|
161
|
+
return response.data.data;
|
|
162
|
+
}
|
|
163
|
+
// console.log('request: ', JSON.stringify(options, null, 2));
|
|
164
|
+
// console.log(
|
|
165
|
+
// 'bad response: ',
|
|
166
|
+
// JSON.stringify(
|
|
167
|
+
// {
|
|
168
|
+
// data: response.data,
|
|
169
|
+
// headers: response.headers,
|
|
170
|
+
// },
|
|
171
|
+
// null,
|
|
172
|
+
// 2
|
|
173
|
+
// )
|
|
174
|
+
// );
|
|
175
|
+
// Also throw if API returned error code
|
|
176
|
+
// This API error thrown by the exchange will be post-processed by the exception parser
|
|
177
|
+
throw { response };
|
|
178
|
+
})
|
|
179
|
+
.catch((e) => this.parseException(e));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Sign request
|
|
183
|
+
*/
|
|
184
|
+
async signRequest(isPublicApi, tsISO, method, endpoint, params) {
|
|
185
|
+
const res = {
|
|
186
|
+
requestBody: params,
|
|
187
|
+
method,
|
|
188
|
+
endpoint,
|
|
189
|
+
sign: '',
|
|
190
|
+
};
|
|
191
|
+
if (isPublicApi) {
|
|
192
|
+
return res;
|
|
193
|
+
}
|
|
194
|
+
if (!this.apiKey || !this.apiSecret || !this.apiPassphrase) {
|
|
195
|
+
throw new Error(exports.MISSING_CREDENTIALS_ERROR);
|
|
196
|
+
}
|
|
197
|
+
const serializedParams = (0, requestUtils_js_1.serializeParams)(params, method, this.options.strict_param_validation);
|
|
198
|
+
const message = tsISO + method + endpoint + serializedParams;
|
|
199
|
+
// console.log(new Date(), `Sign params: `, {
|
|
200
|
+
// message,
|
|
201
|
+
// secret: this.apiSecret,
|
|
202
|
+
// });
|
|
203
|
+
return {
|
|
204
|
+
...res,
|
|
205
|
+
sign: await (0, webCryptoAPI_js_1.signMessage)(message, this.apiSecret, 'base64', 'SHA-256'),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Generic handler to parse request exceptions
|
|
210
|
+
*/
|
|
211
|
+
parseException(e) {
|
|
212
|
+
if (this.options.parse_exceptions === false) {
|
|
213
|
+
throw e;
|
|
214
|
+
}
|
|
215
|
+
// Something happened in setting up the request that triggered an Error
|
|
216
|
+
if (!e.response) {
|
|
217
|
+
if (!e.request) {
|
|
218
|
+
throw e.message;
|
|
219
|
+
}
|
|
220
|
+
// request made but no response received
|
|
221
|
+
throw e;
|
|
222
|
+
}
|
|
223
|
+
// The request was made and the server responded with a status code
|
|
224
|
+
// that falls out of the range of 2xx
|
|
225
|
+
const response = e.response;
|
|
226
|
+
throw response.data;
|
|
227
|
+
// throw {
|
|
228
|
+
// status: response.status,
|
|
229
|
+
// statusText: response.statusText,
|
|
230
|
+
// data: response.data,
|
|
231
|
+
// headers: response.headers,
|
|
232
|
+
// requestOptions: this.options,
|
|
233
|
+
// };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.default = BaseRestClient;
|
|
237
|
+
//# sourceMappingURL=BaseRestClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseRestClient.js","sourceRoot":"","sources":["../../../src/util/BaseRestClient.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyE;AACzE,iCAA8B;AAI9B,uDAK2B;AAC3B,mDAAmD;AACnD,uDAA4E;AAE5E,gDAAgD;AAChD,mFAAmF;AACnF,oBAAoB;AACpB,MAAM;AAEN,kDAAkD;AAClD,gFAAgF;AAChF,iBAAiB;AACjB,kBAAkB;AAClB,mBAAmB;AACnB,sBAAsB;AACtB,UAAU;AACV,+BAA+B;AAC/B,qCAAqC;AACrC,WAAW;AACX,cAAc;AACd,WAAW;AACX,SAAS;AACT,OAAO;AACP,qBAAqB;AACrB,MAAM;AAEO,QAAA,yBAAyB,GACpC,wFAAwF,CAAC;AAS3F,MAA8B,cAAc;IAClC,OAAO,CAAoB;IAE3B,OAAO,CAAS;IAEhB,oBAAoB,CAAqB;IAEzC,MAAM,CAAqB;IAE3B,SAAS,CAAqB;IAE9B,aAAa,CAAqB;IAE1C,YACE,UAA6B,EAAE,EAC/B,iBAAqC,EAAE;QAEvC,kCAAkC;QAElC,IAAI,CAAC,OAAO,GAAG;YACb,0DAA0D;YAC1D,uBAAuB,EAAE,KAAK;YAC9B,MAAM,EAAE,MAAM;YACd,GAAG,OAAO;SACX,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAA,gCAAc,EAAC,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,OAAO,CAAC,CAAC;QAEjE,MAAM,gBAAgB,GACpB,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;QACzD,MAAM,iBAAiB,GACrB,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAE/D,qBAAqB;QACrB,IAAI,gBAAgB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;QACJ,CAAC;QAED,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC3D,kIAAkI;YAClI,iFAAiF;YACjF,IAAA,4CAA0B,GAAE,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG;YAC1B,gCAAgC;YAChC,OAAO,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC;YACtB,mGAAmG;YACnG,GAAG,cAAc;SAClB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,EAAE,CAAC;QACzC,CAAC;QAED,IAAK,OAAO,CAAC,MAAc,KAAK,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;QACJ,CAAC;QAED,+FAA+F;QAC/F,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QACvE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC;QAEjE,6DAA6D;QAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,0IAA0I;YAC1I,MAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAExC,CAAC;YACd,MAAM,oBAAoB,GAAG,kBAAkB,EAAE,OAAO,IAAI,EAAE,CAAC;YAE/D,wFAAwF;YACxF,sEAAsE;YACtE,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,aAAK,CAAC;gBAC/C,GAAG,oBAAoB;gBACvB,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,OAAO,CAAC;IACxC,CAAC;IAEM,GAAG,CAAC,QAAgB,EAAE,MAAY;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAEM,IAAI,CAAC,QAAgB,EAAE,MAAY;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAEM,UAAU,CAAC,QAAgB,EAAE,MAAY;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,MAAY;QAC/C,OAAO,IAAI,CAAC,KAAK,CACf,MAAM,EACN,QAAQ,EACR,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,4BAAU,CAAC,EAAE,2BAAS,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,4BAAU,CAAC,EAAE,2BAAS,EAAE,EAC1C,KAAK,CACN,CAAC;IACJ,CAAC;IAEM,aAAa,CAAC,QAAgB,EAAE,MAAY;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,KAAK,CACjB,MAAc,EACd,QAAgB,EAChB,MAA0B,EAC1B,WAAoB;QAEpB,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,oBAAoB;YAC5B,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACvE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;SACX,CAAC;QAEF,kCAAkC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,OAAQ,MAAc,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC;oBAChD,OAAQ,MAAc,CAAC,GAAG,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CACvC,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,MAAM,CACP,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAC/C,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;YACpD,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC;YAC/C,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/D,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC;QACxC,CAAC;QAED,yCAAyC;QACzC,oBAAoB;QACpB,UAAU;QACV,kCAAkC;QAClC,yBAAyB;QACzB,aAAa;QACb,MAAM;QAEN,OAAO,IAAA,eAAK,EAAC,OAAO,CAAC;aAClB,IAAI,CAAC,CAAC,QAA6C,EAAE,EAAE;YACtD,uDAAuD;YACvD,6EAA6E;YAC7E,IACE,IAAA,gCAAgB,EAAC,QAAQ,CAAC,IAAI,CAAC;gBAC/B,QAAQ,CAAC,MAAM,IAAI,GAAG;gBACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,EAC3B,CAAC;gBACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,CAAC;YAED,8DAA8D;YAC9D,eAAe;YACf,sBAAsB;YACtB,oBAAoB;YACpB,QAAQ;YACR,6BAA6B;YAC7B,mCAAmC;YACnC,SAAS;YACT,YAAY;YACZ,QAAQ;YACR,MAAM;YACN,KAAK;YAEL,wCAAwC;YACxC,uFAAuF;YACvF,MAAM,EAAE,QAAQ,EAAE,CAAC;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CACvB,WAAoB,EACpB,KAAa,EACb,MAAc,EACd,QAAgB,EAChB,MAAqB;QAErB,MAAM,GAAG,GAAqB;YAC5B,WAAW,EAAE,MAAM;YACnB,MAAM;YACN,QAAQ;YACR,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,iCAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAA,iCAAe,EACtC,MAAM,EACN,MAAM,EACN,IAAI,CAAC,OAAO,CAAC,uBAAuB,CACrC,CAAC;QAEF,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,gBAAgB,CAAC;QAC7D,6CAA6C;QAC7C,aAAa;QACb,4BAA4B;QAC5B,MAAM;QAEN,OAAO;YACL,GAAG,GAAG;YACN,IAAI,EAAE,MAAM,IAAA,6BAAW,EAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;SACtE,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,CAAM;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAC5C,MAAM,CAAC,CAAC;QACV,CAAC;QAED,uEAAuE;QACvE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACf,MAAM,CAAC,CAAC,OAAO,CAAC;YAClB,CAAC;YAED,wCAAwC;YACxC,MAAM,CAAC,CAAC;QACV,CAAC;QAED,mEAAmE;QACnE,qCAAqC;QACrC,MAAM,QAAQ,GAAkB,CAAC,CAAC,QAAQ,CAAC;QAC3C,MAAM,QAAQ,CAAC,IAAI,CAAC;QACpB,UAAU;QACV,6BAA6B;QAC7B,qCAAqC;QACrC,yBAAyB;QACzB,+BAA+B;QAC/B,kCAAkC;QAClC,KAAK;IACP,CAAC;CACF;AA5RD,iCA4RC"}
|