@lifi/perps-sdk 23.1.0 → 24.0.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 +85 -45
- package/dist/cjs/client/PerpsClient.d.ts +3 -2
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +16 -9
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/decimal/arithmetic.d.ts +13 -0
- package/dist/cjs/decimal/arithmetic.d.ts.map +1 -0
- package/dist/cjs/decimal/arithmetic.js +48 -0
- package/dist/cjs/decimal/arithmetic.js.map +1 -0
- package/dist/cjs/decimal/big.d.ts +0 -1
- package/dist/cjs/decimal/big.d.ts.map +1 -1
- package/dist/cjs/decimal/big.js +0 -4
- package/dist/cjs/decimal/big.js.map +1 -1
- package/dist/cjs/decimal/compare.d.ts +6 -2
- package/dist/cjs/decimal/compare.d.ts.map +1 -1
- package/dist/cjs/decimal/compare.js +15 -2
- package/dist/cjs/decimal/compare.js.map +1 -1
- package/dist/cjs/decimal/convert.d.ts +12 -6
- package/dist/cjs/decimal/convert.d.ts.map +1 -1
- package/dist/cjs/decimal/convert.js +36 -14
- package/dist/cjs/decimal/convert.js.map +1 -1
- package/dist/cjs/decimal/decimalStringToBig.d.ts +5 -0
- package/dist/cjs/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/cjs/decimal/decimalStringToBig.js +27 -0
- package/dist/cjs/decimal/decimalStringToBig.js.map +1 -0
- package/dist/cjs/decimal/format.d.ts.map +1 -1
- package/dist/cjs/decimal/format.js +70 -52
- package/dist/cjs/decimal/format.js.map +1 -1
- package/dist/cjs/decimal/parse.d.ts +4 -4
- package/dist/cjs/decimal/parse.d.ts.map +1 -1
- package/dist/cjs/decimal/parse.js +42 -25
- package/dist/cjs/decimal/parse.js.map +1 -1
- package/dist/cjs/index.d.ts +13 -11
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +64 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/math/fills.d.ts +1 -1
- package/dist/cjs/math/fills.d.ts.map +1 -1
- package/dist/cjs/math/fills.js +28 -13
- package/dist/cjs/math/fills.js.map +1 -1
- package/dist/cjs/math/order.d.ts +27 -16
- package/dist/cjs/math/order.d.ts.map +1 -1
- package/dist/cjs/math/order.js +106 -122
- package/dist/cjs/math/order.js.map +1 -1
- package/dist/cjs/math/position.d.ts +85 -35
- package/dist/cjs/math/position.d.ts.map +1 -1
- package/dist/cjs/math/position.js +88 -91
- package/dist/cjs/math/position.js.map +1 -1
- package/dist/cjs/services/getGasRecommendation.js +1 -1
- package/dist/cjs/services/getGasRecommendation.js.map +1 -1
- package/dist/cjs/services/getQuote.d.ts +1 -1
- package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/cjs/services/resolveSubscribeQuote.js +3 -2
- package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -1
- package/dist/cjs/transport/request.d.ts +1 -0
- package/dist/cjs/transport/request.d.ts.map +1 -1
- package/dist/cjs/transport/request.js +2 -2
- package/dist/cjs/transport/request.js.map +1 -1
- package/dist/cjs/types/api.d.ts +4 -0
- package/dist/cjs/types/api.d.ts.map +1 -1
- package/dist/cjs/types/provider.d.ts +9 -5
- package/dist/cjs/types/provider.d.ts.map +1 -1
- package/dist/cjs/types/withdrawal.d.ts +12 -4
- package/dist/cjs/types/withdrawal.d.ts.map +1 -1
- package/dist/cjs/utils/createSafeFunction.d.ts +2 -0
- package/dist/cjs/utils/createSafeFunction.d.ts.map +1 -0
- package/dist/cjs/utils/createSafeFunction.js +15 -0
- package/dist/cjs/utils/createSafeFunction.js.map +1 -0
- package/dist/cjs/utils/timestampToIsoString.d.ts +3 -0
- package/dist/cjs/utils/timestampToIsoString.d.ts.map +1 -0
- package/dist/cjs/utils/timestampToIsoString.js +16 -0
- package/dist/cjs/utils/timestampToIsoString.js.map +1 -0
- package/dist/cjs/utils/warnOnce.d.ts +2 -0
- package/dist/cjs/utils/warnOnce.d.ts.map +1 -1
- package/dist/cjs/utils/warnOnce.js +13 -1
- package/dist/cjs/utils/warnOnce.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/websocket/PerpsWsClient.d.ts +2 -0
- package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/cjs/websocket/PerpsWsClient.js +14 -1
- package/dist/cjs/websocket/PerpsWsClient.js.map +1 -1
- package/dist/cjs/websocket/wsLog.d.ts +2 -0
- package/dist/cjs/websocket/wsLog.d.ts.map +1 -1
- package/dist/cjs/websocket/wsLog.js +8 -0
- package/dist/cjs/websocket/wsLog.js.map +1 -1
- package/dist/cjs/wire/orderAmounts.d.ts.map +1 -1
- package/dist/cjs/wire/orderAmounts.js +6 -9
- package/dist/cjs/wire/orderAmounts.js.map +1 -1
- package/dist/cjs/wire/refuel.d.ts +4 -1
- package/dist/cjs/wire/refuel.d.ts.map +1 -1
- package/dist/cjs/wire/refuel.js +23 -6
- package/dist/cjs/wire/refuel.js.map +1 -1
- package/dist/cjs/wire/transferable.js +3 -3
- package/dist/cjs/wire/transferable.js.map +1 -1
- package/dist/cjs/wire/withdraw.d.ts.map +1 -1
- package/dist/cjs/wire/withdraw.js +3 -3
- package/dist/cjs/wire/withdraw.js.map +1 -1
- package/dist/esm/client/PerpsClient.d.ts +17 -4
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +30 -8
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/decimal/arithmetic.d.ts +84 -0
- package/dist/esm/decimal/arithmetic.d.ts.map +1 -0
- package/dist/esm/decimal/arithmetic.js +110 -0
- package/dist/esm/decimal/arithmetic.js.map +1 -0
- package/dist/esm/decimal/big.d.ts +0 -2
- package/dist/esm/decimal/big.d.ts.map +1 -1
- package/dist/esm/decimal/big.js +0 -4
- package/dist/esm/decimal/big.js.map +1 -1
- package/dist/esm/decimal/compare.d.ts +39 -5
- package/dist/esm/decimal/compare.d.ts.map +1 -1
- package/dist/esm/decimal/compare.js +45 -5
- package/dist/esm/decimal/compare.js.map +1 -1
- package/dist/esm/decimal/convert.d.ts +62 -26
- package/dist/esm/decimal/convert.d.ts.map +1 -1
- package/dist/esm/decimal/convert.js +76 -25
- package/dist/esm/decimal/convert.js.map +1 -1
- package/dist/esm/decimal/decimalStringToBig.d.ts +26 -0
- package/dist/esm/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/esm/decimal/decimalStringToBig.js +40 -0
- package/dist/esm/decimal/decimalStringToBig.js.map +1 -0
- package/dist/esm/decimal/format.d.ts +4 -1
- package/dist/esm/decimal/format.d.ts.map +1 -1
- package/dist/esm/decimal/format.js +71 -70
- package/dist/esm/decimal/format.js.map +1 -1
- package/dist/esm/decimal/parse.d.ts +22 -13
- package/dist/esm/decimal/parse.d.ts.map +1 -1
- package/dist/esm/decimal/parse.js +56 -46
- package/dist/esm/decimal/parse.js.map +1 -1
- package/dist/esm/index.d.ts +13 -11
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +9 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/math/fills.d.ts +6 -3
- package/dist/esm/math/fills.d.ts.map +1 -1
- package/dist/esm/math/fills.js +31 -16
- package/dist/esm/math/fills.js.map +1 -1
- package/dist/esm/math/order.d.ts +85 -65
- package/dist/esm/math/order.d.ts.map +1 -1
- package/dist/esm/math/order.js +158 -166
- package/dist/esm/math/order.js.map +1 -1
- package/dist/esm/math/position.d.ts +155 -98
- package/dist/esm/math/position.d.ts.map +1 -1
- package/dist/esm/math/position.js +157 -155
- package/dist/esm/math/position.js.map +1 -1
- package/dist/esm/services/getGasRecommendation.js +1 -1
- package/dist/esm/services/getGasRecommendation.js.map +1 -1
- package/dist/esm/services/getQuote.d.ts +2 -2
- package/dist/esm/services/getQuote.js +1 -1
- package/dist/esm/services/resolveSubscribeQuote.d.ts +1 -1
- package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/esm/services/resolveSubscribeQuote.js +4 -3
- package/dist/esm/services/resolveSubscribeQuote.js.map +1 -1
- package/dist/esm/transport/request.d.ts +5 -0
- package/dist/esm/transport/request.d.ts.map +1 -1
- package/dist/esm/transport/request.js +2 -2
- package/dist/esm/transport/request.js.map +1 -1
- package/dist/esm/types/api.d.ts +9 -0
- package/dist/esm/types/api.d.ts.map +1 -1
- package/dist/esm/types/provider.d.ts +26 -13
- package/dist/esm/types/provider.d.ts.map +1 -1
- package/dist/esm/types/withdrawal.d.ts +32 -7
- package/dist/esm/types/withdrawal.d.ts.map +1 -1
- package/dist/esm/utils/createSafeFunction.d.ts +9 -0
- package/dist/esm/utils/createSafeFunction.d.ts.map +1 -0
- package/dist/esm/utils/createSafeFunction.js +19 -0
- package/dist/esm/utils/createSafeFunction.js.map +1 -0
- package/dist/esm/utils/timestampToIsoString.d.ts +15 -0
- package/dist/esm/utils/timestampToIsoString.d.ts.map +1 -0
- package/dist/esm/utils/timestampToIsoString.js +24 -0
- package/dist/esm/utils/timestampToIsoString.js.map +1 -0
- package/dist/esm/utils/warnOnce.d.ts +16 -0
- package/dist/esm/utils/warnOnce.d.ts.map +1 -1
- package/dist/esm/utils/warnOnce.js +24 -0
- package/dist/esm/utils/warnOnce.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/websocket/PerpsWsClient.d.ts +7 -0
- package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/esm/websocket/PerpsWsClient.js +20 -2
- package/dist/esm/websocket/PerpsWsClient.js.map +1 -1
- package/dist/esm/websocket/wsLog.d.ts +12 -0
- package/dist/esm/websocket/wsLog.d.ts.map +1 -1
- package/dist/esm/websocket/wsLog.js +18 -0
- package/dist/esm/websocket/wsLog.js.map +1 -1
- package/dist/esm/wire/orderAmounts.d.ts.map +1 -1
- package/dist/esm/wire/orderAmounts.js +2 -2
- package/dist/esm/wire/orderAmounts.js.map +1 -1
- package/dist/esm/wire/refuel.d.ts +24 -14
- package/dist/esm/wire/refuel.d.ts.map +1 -1
- package/dist/esm/wire/refuel.js +38 -17
- package/dist/esm/wire/refuel.js.map +1 -1
- package/dist/esm/wire/transferable.js +3 -3
- package/dist/esm/wire/transferable.js.map +1 -1
- package/dist/esm/wire/withdraw.d.ts.map +1 -1
- package/dist/esm/wire/withdraw.js +3 -3
- package/dist/esm/wire/withdraw.js.map +1 -1
- package/dist/types/client/PerpsClient.d.ts +17 -4
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/decimal/arithmetic.d.ts +84 -0
- package/dist/types/decimal/arithmetic.d.ts.map +1 -0
- package/dist/types/decimal/big.d.ts +0 -2
- package/dist/types/decimal/big.d.ts.map +1 -1
- package/dist/types/decimal/compare.d.ts +39 -5
- package/dist/types/decimal/compare.d.ts.map +1 -1
- package/dist/types/decimal/convert.d.ts +62 -26
- package/dist/types/decimal/convert.d.ts.map +1 -1
- package/dist/types/decimal/decimalStringToBig.d.ts +26 -0
- package/dist/types/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/types/decimal/format.d.ts +4 -1
- package/dist/types/decimal/format.d.ts.map +1 -1
- package/dist/types/decimal/parse.d.ts +22 -13
- package/dist/types/decimal/parse.d.ts.map +1 -1
- package/dist/types/index.d.ts +13 -11
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/math/fills.d.ts +6 -3
- package/dist/types/math/fills.d.ts.map +1 -1
- package/dist/types/math/order.d.ts +85 -65
- package/dist/types/math/order.d.ts.map +1 -1
- package/dist/types/math/position.d.ts +155 -98
- package/dist/types/math/position.d.ts.map +1 -1
- package/dist/types/services/getQuote.d.ts +2 -2
- package/dist/types/services/resolveSubscribeQuote.d.ts +1 -1
- package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/types/transport/request.d.ts +5 -0
- package/dist/types/transport/request.d.ts.map +1 -1
- package/dist/types/types/api.d.ts +9 -0
- package/dist/types/types/api.d.ts.map +1 -1
- package/dist/types/types/provider.d.ts +26 -13
- package/dist/types/types/provider.d.ts.map +1 -1
- package/dist/types/types/withdrawal.d.ts +32 -7
- package/dist/types/types/withdrawal.d.ts.map +1 -1
- package/dist/types/utils/createSafeFunction.d.ts +9 -0
- package/dist/types/utils/createSafeFunction.d.ts.map +1 -0
- package/dist/types/utils/timestampToIsoString.d.ts +15 -0
- package/dist/types/utils/timestampToIsoString.d.ts.map +1 -0
- package/dist/types/utils/warnOnce.d.ts +16 -0
- package/dist/types/utils/warnOnce.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/websocket/PerpsWsClient.d.ts +7 -0
- package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/types/websocket/wsLog.d.ts +12 -0
- package/dist/types/websocket/wsLog.d.ts.map +1 -1
- package/dist/types/wire/orderAmounts.d.ts.map +1 -1
- package/dist/types/wire/refuel.d.ts +24 -14
- package/dist/types/wire/refuel.d.ts.map +1 -1
- package/dist/types/wire/withdraw.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/client/PerpsClient.ts +48 -10
- package/src/decimal/arithmetic.ts +144 -0
- package/src/decimal/big.ts +0 -5
- package/src/decimal/compare.ts +60 -10
- package/src/decimal/convert.ts +123 -44
- package/src/decimal/decimalStringToBig.ts +47 -0
- package/src/decimal/format.ts +81 -72
- package/src/decimal/parse.ts +71 -61
- package/src/index.ts +73 -10
- package/src/math/fills.ts +32 -17
- package/src/math/order.ts +261 -216
- package/src/math/position.ts +277 -194
- package/src/services/getGasRecommendation.ts +1 -1
- package/src/services/getQuote.ts +2 -2
- package/src/services/resolveSubscribeQuote.ts +4 -3
- package/src/transport/request.ts +7 -2
- package/src/types/api.ts +10 -0
- package/src/types/provider.ts +35 -13
- package/src/types/withdrawal.ts +35 -8
- package/src/utils/createSafeFunction.ts +20 -0
- package/src/utils/timestampToIsoString.ts +31 -0
- package/src/utils/warnOnce.ts +44 -0
- package/src/version.ts +1 -1
- package/src/websocket/PerpsWsClient.ts +25 -2
- package/src/websocket/wsLog.ts +31 -0
- package/src/wire/orderAmounts.ts +3 -2
- package/src/wire/refuel.ts +56 -20
- package/src/wire/transferable.ts +3 -3
- package/src/wire/withdraw.ts +3 -5
- package/dist/cjs/decimal/requireDecimal.d.ts +0 -4
- package/dist/cjs/decimal/requireDecimal.d.ts.map +0 -1
- package/dist/cjs/decimal/requireDecimal.js +0 -12
- package/dist/cjs/decimal/requireDecimal.js.map +0 -1
- package/dist/esm/decimal/requireDecimal.d.ts +0 -5
- package/dist/esm/decimal/requireDecimal.d.ts.map +0 -1
- package/dist/esm/decimal/requireDecimal.js +0 -7
- package/dist/esm/decimal/requireDecimal.js.map +0 -1
- package/dist/types/decimal/requireDecimal.d.ts +0 -5
- package/dist/types/decimal/requireDecimal.d.ts.map +0 -1
- package/src/decimal/requireDecimal.ts +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../../src/types/withdrawal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,KAAK,EACL,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../../src/types/withdrawal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,KAAK,EACL,aAAa,EACb,kBAAkB,EAClB,cAAc,EACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,SAAS,EAAE,aAAa,CAAA;IACxB;;;;OAIG;IACH,GAAG,EAAE,aAAa,CAAA;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAA;IACZ,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,SAAS,EAAE,aAAa,CAAA;IACxB;;;;OAIG;IACH,GAAG,EAAE,aAAa,CAAA;IAClB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,CAAA;IACpB,qFAAqF;IACrF,GAAG,EAAE,aAAa,CAAA;IAClB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,eAAe,CAAA;IACrB,qEAAqE;IACrE,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wrap a throwing function so that it gives `undefined` in place of a throw.
|
|
3
|
+
* The wrapper logs a warning with `name` and the error, which carries the
|
|
4
|
+
* stack trace.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare function createSafeFunction<Args extends unknown[], Result>(name: string, throwingFunction: (...args: Args) => Result): (...args: Args) => Result | undefined;
|
|
9
|
+
//# sourceMappingURL=createSafeFunction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSafeFunction.d.ts","sourceRoot":"","sources":["../../../src/utils/createSafeFunction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,EAC/D,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,GAC1C,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,SAAS,CASvC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read a venue time (epoch milliseconds or a date string) as an ISO-8601
|
|
3
|
+
* string.
|
|
4
|
+
*
|
|
5
|
+
* @throws {PerpsError} `ValidationError` when `Date` cannot read `value`.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export declare function timestampToIsoString(value: string | number): string;
|
|
9
|
+
/**
|
|
10
|
+
* {@link timestampToIsoString}, or `undefined` with a warning when it throws.
|
|
11
|
+
*
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export declare const safeTimestampToIsoString: (value: string | number) => string | undefined;
|
|
15
|
+
//# sourceMappingURL=timestampToIsoString.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timestampToIsoString.d.ts","sourceRoot":"","sources":["../../../src/utils/timestampToIsoString.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CASnE;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,gDAGpC,CAAA"}
|
|
@@ -6,4 +6,20 @@
|
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
8
|
export declare const createWarnOnce: () => ((key: string, message: string) => void);
|
|
9
|
+
/**
|
|
10
|
+
* Describe a skipped venue row. The venue value is cut to a fixed length, so
|
|
11
|
+
* a warner key built from the text stays small.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export declare const skippedRowMessage: (source: string, row: string, field: string, value: unknown, expected: string) => string;
|
|
16
|
+
/**
|
|
17
|
+
* Warn once for each provider, row, field and expected kind that a provider
|
|
18
|
+
* mapper skipped a venue row because a required field is not valid. The key
|
|
19
|
+
* holds no venue value, so a second bad value for the same field stays silent.
|
|
20
|
+
*
|
|
21
|
+
* @param expected - What the field must be. Defaults to `'decimal'`.
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare const warnSkippedVenueRow: (provider: string, row: string, field: string, value: unknown, expected?: string) => void;
|
|
9
25
|
//# sourceMappingURL=warnOnce.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warnOnce.d.ts","sourceRoot":"","sources":["../../../src/utils/warnOnce.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAexE,CAAA"}
|
|
1
|
+
{"version":3,"file":"warnOnce.d.ts","sourceRoot":"","sources":["../../../src/utils/warnOnce.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAexE,CAAA;AAID;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,EACd,KAAK,MAAM,EACX,OAAO,MAAM,EACb,OAAO,OAAO,EACd,UAAU,MAAM,KACf,MAKF,CAAA;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,EAChB,KAAK,MAAM,EACX,OAAO,MAAM,EACb,OAAO,OAAO,EACd,iBAAoB,KACnB,IAKF,CAAA"}
|
package/dist/types/version.d.ts
CHANGED
|
@@ -58,6 +58,7 @@ export declare class PerpsWsClient {
|
|
|
58
58
|
private readonly options;
|
|
59
59
|
private providers;
|
|
60
60
|
private initPromises;
|
|
61
|
+
private discovery;
|
|
61
62
|
private closed;
|
|
62
63
|
constructor(client: PerpsSDKClient, options?: PerpsWsClientOptions);
|
|
63
64
|
/**
|
|
@@ -122,5 +123,11 @@ export declare class PerpsWsClient {
|
|
|
122
123
|
private assertOpen;
|
|
123
124
|
private getOrCreateProvider;
|
|
124
125
|
private initProvider;
|
|
126
|
+
/**
|
|
127
|
+
* Shares one in-flight `/providers` request between concurrent venue
|
|
128
|
+
* inits. The slot clears on settlement, so a later init fetches fresh
|
|
129
|
+
* metadata and a rejection is never cached.
|
|
130
|
+
*/
|
|
131
|
+
private discoverProviders;
|
|
125
132
|
}
|
|
126
133
|
//# sourceMappingURL=PerpsWsClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerpsWsClient.d.ts","sourceRoot":"","sources":["../../../src/websocket/PerpsWsClient.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"PerpsWsClient.d.ts","sourceRoot":"","sources":["../../../src/websocket/PerpsWsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzE,OAAO,KAAK,EACV,oBAAoB,EAEpB,UAAU,EACV,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,MAAM,EAAE,cAAc,CAAA;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,CAAC,MAAM,EAAE,uBAAuB,GAAG,UAAU,CAAA;IAC7C,gEAAgE;IAChE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAA;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;CAChD;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,oBAAyB;IAKtE;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIzC;;;;;;OAMG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMlD;;;;;;;;;;;;OAYG;IACG,SAAS,CAAC,CAAC,SAAS,YAAY,EACpC,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,EAClD,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,IAAI,CAAC;IAOtB;;;;;;;;;;OAUG;IACG,cAAc,CAClB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC;IAatB;;;;;;;OAOG;IACH,KAAK;IASL;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIjC,OAAO,CAAC,UAAU;YASJ,mBAAmB;YAqBnB,YAAY;IA2B1B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAY1B"}
|
|
@@ -36,6 +36,18 @@ export declare const wsLog: {
|
|
|
36
36
|
* so logged at `warn`.
|
|
37
37
|
*/
|
|
38
38
|
readonly unknownMarket: (provider: string, marketId: string) => void;
|
|
39
|
+
/**
|
|
40
|
+
* A frame row or order-book level with a required field that is not valid.
|
|
41
|
+
* Only that row is skipped. Logged once at `warn` for each provider, row and
|
|
42
|
+
* field; the key holds no venue value.
|
|
43
|
+
*/
|
|
44
|
+
readonly skippedRow: (provider: string, row: string, field: string, value: unknown) => void;
|
|
45
|
+
/**
|
|
46
|
+
* A frame row the mapper rejected for a reason other than one field, such as
|
|
47
|
+
* a lifecycle state the SDK does not carry. Logged once at `warn` for each
|
|
48
|
+
* provider and row; the key holds no venue value.
|
|
49
|
+
*/
|
|
50
|
+
readonly droppedRow: (provider: string, row: string, reason: string) => void;
|
|
39
51
|
/**
|
|
40
52
|
* A background market-registry refetch rejected. Unknown-market items keep
|
|
41
53
|
* being skipped until the next cooldown-gated retry, so logged at `warn`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wsLog.d.ts","sourceRoot":"","sources":["../../../src/websocket/wsLog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wsLog.d.ts","sourceRoot":"","sources":["../../../src/websocket/wsLog.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;IAChB;;;OAGG;sCACoB,MAAM,OAAO,MAAM,KAAG,IAAI;IAGjD;;;;OAIG;wCACsB,MAAM,SAAS,OAAO,KAAG,IAAI;IAGtD;;;;;OAKG;qCACmB,MAAM,WAAW,MAAM,KAAG,IAAI;IAGpD;;;;OAIG;0CACwB,MAAM,WAAW,MAAM,SAAS,OAAO,KAAG,IAAI;IAMzE;;;;OAIG;uCACqB,MAAM,YAAY,MAAM,KAAG,IAAI;IAKvD;;;;OAIG;oCAES,MAAM,OACX,MAAM,SACJ,MAAM,SACN,OAAO,KACb,IAAI;IAMP;;;;OAIG;oCACkB,MAAM,OAAO,MAAM,UAAU,MAAM,KAAG,IAAI;IAM/D;;;OAGG;8CAC4B,MAAM,SAAS,OAAO,KAAG,IAAI;IAG5D;;;OAGG;yCAES,MAAM,gBACF,MAAM,SACb,OAAO,KACb,IAAI;CAMC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderAmounts.d.ts","sourceRoot":"","sources":["../../../src/wire/orderAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"orderAmounts.d.ts","sourceRoot":"","sources":["../../../src/wire/orderAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAK9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IACpC,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,aAAa,CAAA;CACrB;AAED,cAAc;AACd,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,aAAa,CAAA;IACrB,sEAAsE;IACtE,IAAI,EAAE,aAAa,CAAA;IACnB,qDAAqD;IACrD,QAAQ,EAAE,aAAa,CAAA;CACxB;AAUD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,GACvB,YAAY,GAAG,IAAI,CAiCrB"}
|
|
@@ -1,27 +1,37 @@
|
|
|
1
1
|
import { type DecimalString } from '@lifi/perps-types';
|
|
2
|
+
/**
|
|
3
|
+
* Headroom, in percent, that {@link calculateRefuelAmount} adds over the gas
|
|
4
|
+
* deficit to pay the refuel route's own swap and bridge fees.
|
|
5
|
+
*
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export declare const REFUEL_FEE_MARGIN_PERCENT = 20;
|
|
2
9
|
/** @public */
|
|
3
10
|
export interface RefuelAmountInput {
|
|
4
|
-
/**
|
|
5
|
-
|
|
11
|
+
/** Native gas amount the LI.FI gas suggestion recommends, in base units. */
|
|
12
|
+
recommendedAmount: DecimalString;
|
|
13
|
+
/** USD value of `recommendedAmount`. */
|
|
14
|
+
recommendedUsd: DecimalString;
|
|
15
|
+
/** Native balance the wallet holds on the recommendation's chain, in base units. */
|
|
16
|
+
nativeBalance: DecimalString;
|
|
6
17
|
/** USD price of one whole source token. */
|
|
7
18
|
priceUsd: DecimalString;
|
|
8
19
|
/** Decimals of the source token, which the result is spelled to exactly. */
|
|
9
20
|
decimals: number;
|
|
10
21
|
}
|
|
11
22
|
/**
|
|
12
|
-
* Source-token amount
|
|
13
|
-
* the
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* The quotient does not terminate for most prices, which is why this is a
|
|
18
|
-
* big.js primitive: an 18-decimal token needs a ceiling at 10^-18, far past
|
|
19
|
-
* what a `number` can carry.
|
|
23
|
+
* Source-token amount that buys the native gas the wallet lacks: the part of
|
|
24
|
+
* the recommendation above `nativeBalance`, valued pro rata on
|
|
25
|
+
* `recommendedUsd`, plus {@link REFUEL_FEE_MARGIN_PERCENT}. Rounded **up**
|
|
26
|
+
* onto the token's decimal grid so a refuel never lands short, and spelled
|
|
27
|
+
* with trailing zeros to `decimals` to seed an amount input.
|
|
20
28
|
*
|
|
21
|
-
* @returns `undefined` when
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
29
|
+
* @returns `undefined` when the wallet already holds the recommendation, or
|
|
30
|
+
* when `recommendedAmount`, `recommendedUsd` or `priceUsd` is not greater
|
|
31
|
+
* than zero: a route with nothing to refuel, not a failure.
|
|
32
|
+
* @throws {PerpsError} `ValidationError` when a base-unit field is not an
|
|
33
|
+
* integer string, a USD field is not a {@link DecimalString}, or `decimals`
|
|
34
|
+
* is not a non-negative integer.
|
|
25
35
|
* @public
|
|
26
36
|
*/
|
|
27
37
|
export declare function calculateRefuelAmount(input: RefuelAmountInput): DecimalString | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refuel.d.ts","sourceRoot":"","sources":["../../../src/wire/refuel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"refuel.d.ts","sourceRoot":"","sources":["../../../src/wire/refuel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,mBAAmB,CAAA;AAOtE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAE3C,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,iBAAiB,EAAE,aAAa,CAAA;IAChC,wCAAwC;IACxC,cAAc,EAAE,aAAa,CAAA;IAC7B,oFAAoF;IACpF,aAAa,EAAE,aAAa,CAAA;IAC5B,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAA;IACvB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAA;CACjB;AAYD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,GACvB,aAAa,GAAG,SAAS,CA8B3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../src/wire/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,CACP,mBAAmB,EACnB,WAAW,GAAG,eAAe,GAAG,eAAe,CAChD,GACA,aAAa,
|
|
1
|
+
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../src/wire/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,CACP,mBAAmB,EACnB,WAAW,GAAG,eAAe,GAAG,eAAe,CAChD,GACA,aAAa,CAOf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/perps-sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "24.0.0",
|
|
4
4
|
"description": "LI.FI Perps SDK for perpetuals trading",
|
|
5
5
|
"homepage": "https://github.com/lifinance/perps-sdk",
|
|
6
6
|
"bugs": {
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"big.js": "^7.0.1",
|
|
47
47
|
"partysocket": "^1.1.19",
|
|
48
48
|
"viem": "^2.55.18",
|
|
49
|
-
"@lifi/perps-types": "^
|
|
49
|
+
"@lifi/perps-types": "^21.0.0"
|
|
50
50
|
},
|
|
51
51
|
"publishConfig": {
|
|
52
52
|
"access": "public"
|
|
@@ -30,8 +30,9 @@ import {
|
|
|
30
30
|
PerpsSigner,
|
|
31
31
|
SigningMethod,
|
|
32
32
|
} from '@lifi/perps-types'
|
|
33
|
-
import Big from 'big.js'
|
|
34
33
|
import type { Address } from 'viem'
|
|
34
|
+
import { isDecimalStringGreaterThan } from '../decimal/compare.js'
|
|
35
|
+
import { unknownToDecimalString } from '../decimal/parse.js'
|
|
35
36
|
import { PerpsError } from '../errors/PerpsError.js'
|
|
36
37
|
import { getAssetRegistry, toAssetDisplay } from '../registry/assetRegistry.js'
|
|
37
38
|
import { getMarketRegistry } from '../registry/marketRegistry.js'
|
|
@@ -60,6 +61,7 @@ import type {
|
|
|
60
61
|
GetPortfolioHistoryParams,
|
|
61
62
|
GetSetupParams,
|
|
62
63
|
GetWithdrawableBalancesParams,
|
|
64
|
+
GetWithdrawalTypesParams,
|
|
63
65
|
GetWithdrawFlowParams,
|
|
64
66
|
ModifyOrdersParams,
|
|
65
67
|
PerpsClientOptions,
|
|
@@ -85,7 +87,11 @@ import type {
|
|
|
85
87
|
SignActionProgress,
|
|
86
88
|
SignActionsContext,
|
|
87
89
|
} from '../types/provider.js'
|
|
88
|
-
import type {
|
|
90
|
+
import type {
|
|
91
|
+
WithdrawableBalance,
|
|
92
|
+
WithdrawalSourceTypes,
|
|
93
|
+
WithdrawFlow,
|
|
94
|
+
} from '../types/withdrawal.js'
|
|
89
95
|
import { isUserFacingSetupStep } from '../utils/setupActions.js'
|
|
90
96
|
import { signTypedDataWithSigner } from '../utils/signTypedData.js'
|
|
91
97
|
import {
|
|
@@ -219,7 +225,10 @@ function assertAllSucceeded(results: ActionResult[]): void {
|
|
|
219
225
|
|
|
220
226
|
function isNonNegativeDecimal(value: string): boolean {
|
|
221
227
|
try {
|
|
222
|
-
return
|
|
228
|
+
return !isDecimalStringGreaterThan(
|
|
229
|
+
'0',
|
|
230
|
+
unknownToDecimalString(value, 'withdrawalFee', 'perps-sdk')
|
|
231
|
+
)
|
|
223
232
|
} catch {
|
|
224
233
|
return false
|
|
225
234
|
}
|
|
@@ -838,8 +847,9 @@ export class PerpsClient {
|
|
|
838
847
|
}
|
|
839
848
|
|
|
840
849
|
/**
|
|
841
|
-
* The `(asset,
|
|
842
|
-
* `params.provider`. The venue owns how its balances split across
|
|
850
|
+
* The `(asset, category)` selections `params.address` can actually withdraw
|
|
851
|
+
* at `params.provider`. The venue owns how its balances split across
|
|
852
|
+
* categories;
|
|
843
853
|
* this join adds the core `/assets` metadata — precision, L1 identity and
|
|
844
854
|
* the per-asset minimum — and drops every row the minimum rules out, plus
|
|
845
855
|
* any row whose asset the provider's registry does not carry, since without
|
|
@@ -878,22 +888,31 @@ export class PerpsClient {
|
|
|
878
888
|
}
|
|
879
889
|
const minimum = asset.minWithdrawalAmount
|
|
880
890
|
if (minimum !== undefined) {
|
|
881
|
-
let floor:
|
|
891
|
+
let floor: string
|
|
882
892
|
try {
|
|
883
|
-
floor =
|
|
893
|
+
floor = unknownToDecimalString(
|
|
894
|
+
minimum,
|
|
895
|
+
'minWithdrawalAmount',
|
|
896
|
+
'perps-sdk'
|
|
897
|
+
)
|
|
884
898
|
} catch {
|
|
885
899
|
throw new PerpsError(
|
|
886
900
|
PerpsErrorCode.SDKError,
|
|
887
901
|
`Asset '${asset.id}' field \`minWithdrawalAmount\` is not a valid decimal.`
|
|
888
902
|
)
|
|
889
903
|
}
|
|
890
|
-
if (
|
|
904
|
+
if (isDecimalStringGreaterThan(floor, row.available)) {
|
|
891
905
|
return []
|
|
892
906
|
}
|
|
893
907
|
}
|
|
894
908
|
if (row.withdrawalFee === undefined) {
|
|
895
909
|
return [
|
|
896
|
-
{
|
|
910
|
+
{
|
|
911
|
+
asset,
|
|
912
|
+
categoryId: row.categoryId,
|
|
913
|
+
available: row.available,
|
|
914
|
+
max: row.max,
|
|
915
|
+
},
|
|
897
916
|
]
|
|
898
917
|
}
|
|
899
918
|
if (!isNonNegativeDecimal(row.withdrawalFee)) {
|
|
@@ -905,7 +924,7 @@ export class PerpsClient {
|
|
|
905
924
|
return [
|
|
906
925
|
{
|
|
907
926
|
asset,
|
|
908
|
-
|
|
927
|
+
categoryId: row.categoryId,
|
|
909
928
|
available: row.available,
|
|
910
929
|
max: row.max,
|
|
911
930
|
withdrawalFee: row.withdrawalFee,
|
|
@@ -917,6 +936,25 @@ export class PerpsClient {
|
|
|
917
936
|
})
|
|
918
937
|
}
|
|
919
938
|
|
|
939
|
+
/**
|
|
940
|
+
* The withdrawal types `params.address` can choose per holding at
|
|
941
|
+
* `params.provider`, each with its cap and the `withdrawalOptions` to pass
|
|
942
|
+
* unchanged in `WithdrawalParams`.
|
|
943
|
+
*
|
|
944
|
+
* @returns `undefined` when the registered plugin declares no withdrawal
|
|
945
|
+
* types read.
|
|
946
|
+
* @throws {PerpsError} When the provider plugin is not registered, or when
|
|
947
|
+
* the plugin read fails.
|
|
948
|
+
* @public
|
|
949
|
+
*/
|
|
950
|
+
async getWithdrawalTypes(
|
|
951
|
+
params: GetWithdrawalTypesParams,
|
|
952
|
+
options?: SDKRequestOptions
|
|
953
|
+
): Promise<WithdrawalSourceTypes[] | undefined> {
|
|
954
|
+
const plugin = this.requireProvider(params.provider)
|
|
955
|
+
return plugin.getWithdrawalTypes?.({ address: params.address }, options)
|
|
956
|
+
}
|
|
957
|
+
|
|
920
958
|
/**
|
|
921
959
|
* The account's portfolio value and cumulative PnL over `params.range` at
|
|
922
960
|
* `params.provider`, read directly from the venue.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { PerpsErrorCode } from '@lifi/perps-types'
|
|
2
|
+
import type Big from 'big.js'
|
|
3
|
+
import { PerpsError } from '../errors/PerpsError.js'
|
|
4
|
+
import { createSafeFunction } from '../utils/createSafeFunction.js'
|
|
5
|
+
import { DivBig, TruncBig } from './big.js'
|
|
6
|
+
import { bigToDecimalString, decimalStringToBig } from './decimalStringToBig.js'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Exact `a + b`. Each input may carry `$`, `%`, `,` or whitespace:
|
|
10
|
+
* `addDecimalString('$4', '$6')` is `'10'`.
|
|
11
|
+
*
|
|
12
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string.
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export function addDecimalString(a: string, b: string): string {
|
|
16
|
+
return bigToDecimalString(decimalStringToBig(a).plus(decimalStringToBig(b)))
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* {@link addDecimalString}, or `undefined` with a warning when it throws.
|
|
21
|
+
*
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export const safeAddDecimalString = createSafeFunction(
|
|
25
|
+
'addDecimalString',
|
|
26
|
+
addDecimalString
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Exact `a - b`.
|
|
31
|
+
*
|
|
32
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string.
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
export function subtractDecimalString(a: string, b: string): string {
|
|
36
|
+
return bigToDecimalString(decimalStringToBig(a).minus(decimalStringToBig(b)))
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* {@link subtractDecimalString}, or `undefined` with a warning when it throws.
|
|
41
|
+
*
|
|
42
|
+
* @public
|
|
43
|
+
*/
|
|
44
|
+
export const safeSubtractDecimalString = createSafeFunction(
|
|
45
|
+
'subtractDecimalString',
|
|
46
|
+
subtractDecimalString
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Exact `a × b`.
|
|
51
|
+
*
|
|
52
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string.
|
|
53
|
+
* @public
|
|
54
|
+
*/
|
|
55
|
+
export function multiplyDecimalString(a: string, b: string): string {
|
|
56
|
+
return bigToDecimalString(decimalStringToBig(a).times(decimalStringToBig(b)))
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* {@link multiplyDecimalString}, or `undefined` with a warning when it throws.
|
|
61
|
+
*
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
export const safeMultiplyDecimalString = createSafeFunction(
|
|
65
|
+
'multiplyDecimalString',
|
|
66
|
+
multiplyDecimalString
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
function requireNonZeroDivisor(divisor: string): Big {
|
|
70
|
+
const parsed = decimalStringToBig(divisor)
|
|
71
|
+
if (parsed.eq(0)) {
|
|
72
|
+
throw new PerpsError(
|
|
73
|
+
PerpsErrorCode.ValidationError,
|
|
74
|
+
`Division by zero: divisor '${divisor}'.`
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
return parsed
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* `a ÷ b` to 40 decimal places, rounded half up.
|
|
82
|
+
*
|
|
83
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal
|
|
84
|
+
* string or `b` is zero.
|
|
85
|
+
* @public
|
|
86
|
+
*/
|
|
87
|
+
export function divideDecimalString(a: string, b: string): string {
|
|
88
|
+
const divisor = requireNonZeroDivisor(b)
|
|
89
|
+
return bigToDecimalString(new DivBig(decimalStringToBig(a)).div(divisor))
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* {@link divideDecimalString}, or `undefined` with a warning when it throws.
|
|
94
|
+
*
|
|
95
|
+
* @public
|
|
96
|
+
*/
|
|
97
|
+
export const safeDivideDecimalString = createSafeFunction(
|
|
98
|
+
'divideDecimalString',
|
|
99
|
+
divideDecimalString
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* `a ÷ b` to 40 decimal places, truncated toward zero, so a derived amount
|
|
104
|
+
* never exceeds the exact quotient.
|
|
105
|
+
*
|
|
106
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal
|
|
107
|
+
* string or `b` is zero.
|
|
108
|
+
* @public
|
|
109
|
+
*/
|
|
110
|
+
export function divideDecimalStringRoundDown(a: string, b: string): string {
|
|
111
|
+
const divisor = requireNonZeroDivisor(b)
|
|
112
|
+
return bigToDecimalString(new TruncBig(decimalStringToBig(a)).div(divisor))
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* {@link divideDecimalStringRoundDown}, or `undefined` with a warning when it
|
|
117
|
+
* throws.
|
|
118
|
+
*
|
|
119
|
+
* @public
|
|
120
|
+
*/
|
|
121
|
+
export const safeDivideDecimalStringRoundDown = createSafeFunction(
|
|
122
|
+
'divideDecimalStringRoundDown',
|
|
123
|
+
divideDecimalStringRoundDown
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Exact `|value|`.
|
|
128
|
+
*
|
|
129
|
+
* @throws {PerpsError} `ValidationError` when `value` is not a decimal string.
|
|
130
|
+
* @public
|
|
131
|
+
*/
|
|
132
|
+
export function absDecimalString(value: string): string {
|
|
133
|
+
return bigToDecimalString(decimalStringToBig(value).abs())
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* {@link absDecimalString}, or `undefined` with a warning when it throws.
|
|
138
|
+
*
|
|
139
|
+
* @public
|
|
140
|
+
*/
|
|
141
|
+
export const safeAbsDecimalString = createSafeFunction(
|
|
142
|
+
'absDecimalString',
|
|
143
|
+
absDecimalString
|
|
144
|
+
)
|
package/src/decimal/big.ts
CHANGED
|
@@ -14,8 +14,3 @@ DivBig.DP = 40
|
|
|
14
14
|
export const TruncBig = Big()
|
|
15
15
|
TruncBig.DP = 40
|
|
16
16
|
TruncBig.RM = Big.roundDown
|
|
17
|
-
|
|
18
|
-
/** True when every value is a finite number, so `new DivBig(value)` cannot throw. */
|
|
19
|
-
export function areFinite(...values: number[]): boolean {
|
|
20
|
-
return values.every(Number.isFinite)
|
|
21
|
-
}
|
package/src/decimal/compare.ts
CHANGED
|
@@ -1,17 +1,67 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { createSafeFunction } from '../utils/createSafeFunction.js'
|
|
2
|
+
import { decimalStringToBig } from './decimalStringToBig.js'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Exact `a > b` on two
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Exact `a > b` on two decimal strings, with no float rounding, so a funds
|
|
6
|
+
* gate can tell `'1.0000000000000001'` from `'1'`. The other relations follow
|
|
7
|
+
* from it: `a <= b` is `!isDecimalStringGreaterThan(a, b)`.
|
|
8
8
|
*
|
|
9
9
|
* @throws {PerpsError} `ValidationError` when either operand is not a decimal string.
|
|
10
10
|
* @public
|
|
11
11
|
*/
|
|
12
|
-
export function isDecimalStringGreaterThan(
|
|
13
|
-
a
|
|
14
|
-
b: DecimalString
|
|
15
|
-
): boolean {
|
|
16
|
-
return requireDecimal(a, 'a').gt(requireDecimal(b, 'b'))
|
|
12
|
+
export function isDecimalStringGreaterThan(a: string, b: string): boolean {
|
|
13
|
+
return decimalStringToBig(a).gt(decimalStringToBig(b))
|
|
17
14
|
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* {@link isDecimalStringGreaterThan}, or `undefined` with a warning when it
|
|
18
|
+
* throws.
|
|
19
|
+
*
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export const safeIsDecimalStringGreaterThan = createSafeFunction(
|
|
23
|
+
'isDecimalStringGreaterThan',
|
|
24
|
+
isDecimalStringGreaterThan
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Exact `value == 0`, so a flat-position check never reads `'0.0'` as
|
|
29
|
+
* non-zero.
|
|
30
|
+
*
|
|
31
|
+
* @throws {PerpsError} `ValidationError` when `value` is not a decimal string.
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
34
|
+
export function isDecimalStringZero(value: string): boolean {
|
|
35
|
+
return decimalStringToBig(value).eq(0)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* {@link isDecimalStringZero}, or `undefined` with a warning when it throws.
|
|
40
|
+
*
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
export const safeIsDecimalStringZero = createSafeFunction(
|
|
44
|
+
'isDecimalStringZero',
|
|
45
|
+
isDecimalStringZero
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Exact three-way compare for a sort: `-1` when `a < b`, `0` when equal, `1`
|
|
50
|
+
* when `a > b`.
|
|
51
|
+
*
|
|
52
|
+
* @throws {PerpsError} `ValidationError` when either operand is not a decimal string.
|
|
53
|
+
* @public
|
|
54
|
+
*/
|
|
55
|
+
export function compareDecimalStrings(a: string, b: string): -1 | 0 | 1 {
|
|
56
|
+
return decimalStringToBig(a).cmp(decimalStringToBig(b))
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* {@link compareDecimalStrings}, or `undefined` with a warning when it throws.
|
|
61
|
+
*
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
export const safeCompareDecimalStrings = createSafeFunction(
|
|
65
|
+
'compareDecimalStrings',
|
|
66
|
+
compareDecimalStrings
|
|
67
|
+
)
|