@lifi/perps-types 0.0.0-preview-a5f5e3b

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.
Files changed (170) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +48 -0
  3. package/dist/cjs/acceptTerms.d.ts +20 -0
  4. package/dist/cjs/acceptTerms.d.ts.map +1 -0
  5. package/dist/cjs/acceptTerms.js +10 -0
  6. package/dist/cjs/acceptTerms.js.map +1 -0
  7. package/dist/cjs/account.d.ts +191 -0
  8. package/dist/cjs/account.d.ts.map +1 -0
  9. package/dist/cjs/account.js +3 -0
  10. package/dist/cjs/account.js.map +1 -0
  11. package/dist/cjs/action.d.ts +200 -0
  12. package/dist/cjs/action.d.ts.map +1 -0
  13. package/dist/cjs/action.js +3 -0
  14. package/dist/cjs/action.js.map +1 -0
  15. package/dist/cjs/asset.d.ts +11 -0
  16. package/dist/cjs/asset.d.ts.map +1 -0
  17. package/dist/cjs/asset.js +3 -0
  18. package/dist/cjs/asset.js.map +1 -0
  19. package/dist/cjs/enums.d.ts +148 -0
  20. package/dist/cjs/enums.d.ts.map +1 -0
  21. package/dist/cjs/enums.js +170 -0
  22. package/dist/cjs/enums.js.map +1 -0
  23. package/dist/cjs/errors.d.ts +7 -0
  24. package/dist/cjs/errors.d.ts.map +1 -0
  25. package/dist/cjs/errors.js +3 -0
  26. package/dist/cjs/errors.js.map +1 -0
  27. package/dist/cjs/index.d.ts +15 -0
  28. package/dist/cjs/index.d.ts.map +1 -0
  29. package/dist/cjs/index.js +31 -0
  30. package/dist/cjs/index.js.map +1 -0
  31. package/dist/cjs/market.d.ts +69 -0
  32. package/dist/cjs/market.d.ts.map +1 -0
  33. package/dist/cjs/market.js +3 -0
  34. package/dist/cjs/market.js.map +1 -0
  35. package/dist/cjs/meta.d.ts +17 -0
  36. package/dist/cjs/meta.d.ts.map +1 -0
  37. package/dist/cjs/meta.js +3 -0
  38. package/dist/cjs/meta.js.map +1 -0
  39. package/dist/cjs/package.json +1 -0
  40. package/dist/cjs/primitives.d.ts +3 -0
  41. package/dist/cjs/primitives.d.ts.map +1 -0
  42. package/dist/cjs/primitives.js +3 -0
  43. package/dist/cjs/primitives.js.map +1 -0
  44. package/dist/cjs/providers.d.ts +58 -0
  45. package/dist/cjs/providers.d.ts.map +1 -0
  46. package/dist/cjs/providers.js +3 -0
  47. package/dist/cjs/providers.js.map +1 -0
  48. package/dist/cjs/quote.d.ts +23 -0
  49. package/dist/cjs/quote.d.ts.map +1 -0
  50. package/dist/cjs/quote.js +3 -0
  51. package/dist/cjs/quote.js.map +1 -0
  52. package/dist/cjs/subscriptions.d.ts +77 -0
  53. package/dist/cjs/subscriptions.d.ts.map +1 -0
  54. package/dist/cjs/subscriptions.js +3 -0
  55. package/dist/cjs/subscriptions.js.map +1 -0
  56. package/dist/cjs/typedData.d.ts +23 -0
  57. package/dist/cjs/typedData.d.ts.map +1 -0
  58. package/dist/cjs/typedData.js +3 -0
  59. package/dist/cjs/typedData.js.map +1 -0
  60. package/dist/cjs/vote.d.ts +27 -0
  61. package/dist/cjs/vote.d.ts.map +1 -0
  62. package/dist/cjs/vote.js +12 -0
  63. package/dist/cjs/vote.js.map +1 -0
  64. package/dist/esm/acceptTerms.d.ts +45 -0
  65. package/dist/esm/acceptTerms.d.ts.map +1 -0
  66. package/dist/esm/acceptTerms.js +12 -0
  67. package/dist/esm/acceptTerms.js.map +1 -0
  68. package/dist/esm/account.d.ts +229 -0
  69. package/dist/esm/account.d.ts.map +1 -0
  70. package/dist/esm/account.js +2 -0
  71. package/dist/esm/account.js.map +1 -0
  72. package/dist/esm/action.d.ts +248 -0
  73. package/dist/esm/action.d.ts.map +1 -0
  74. package/dist/esm/action.js +2 -0
  75. package/dist/esm/action.js.map +1 -0
  76. package/dist/esm/asset.d.ts +25 -0
  77. package/dist/esm/asset.d.ts.map +1 -0
  78. package/dist/esm/asset.js +2 -0
  79. package/dist/esm/asset.js.map +1 -0
  80. package/dist/esm/enums.d.ts +171 -0
  81. package/dist/esm/enums.d.ts.map +1 -0
  82. package/dist/esm/enums.js +195 -0
  83. package/dist/esm/enums.js.map +1 -0
  84. package/dist/esm/errors.d.ts +8 -0
  85. package/dist/esm/errors.d.ts.map +1 -0
  86. package/dist/esm/errors.js +2 -0
  87. package/dist/esm/errors.js.map +1 -0
  88. package/dist/esm/index.d.ts +23 -0
  89. package/dist/esm/index.d.ts.map +1 -0
  90. package/dist/esm/index.js +23 -0
  91. package/dist/esm/index.js.map +1 -0
  92. package/dist/esm/market.d.ts +102 -0
  93. package/dist/esm/market.d.ts.map +1 -0
  94. package/dist/esm/market.js +2 -0
  95. package/dist/esm/market.js.map +1 -0
  96. package/dist/esm/meta.d.ts +37 -0
  97. package/dist/esm/meta.d.ts.map +1 -0
  98. package/dist/esm/meta.js +2 -0
  99. package/dist/esm/meta.js.map +1 -0
  100. package/dist/esm/package.json +1 -0
  101. package/dist/esm/primitives.d.ts +5 -0
  102. package/dist/esm/primitives.d.ts.map +1 -0
  103. package/dist/esm/primitives.js +2 -0
  104. package/dist/esm/primitives.js.map +1 -0
  105. package/dist/esm/providers.d.ts +116 -0
  106. package/dist/esm/providers.d.ts.map +1 -0
  107. package/dist/esm/providers.js +2 -0
  108. package/dist/esm/providers.js.map +1 -0
  109. package/dist/esm/quote.d.ts +47 -0
  110. package/dist/esm/quote.d.ts.map +1 -0
  111. package/dist/esm/quote.js +2 -0
  112. package/dist/esm/quote.js.map +1 -0
  113. package/dist/esm/subscriptions.d.ts +115 -0
  114. package/dist/esm/subscriptions.d.ts.map +1 -0
  115. package/dist/esm/subscriptions.js +2 -0
  116. package/dist/esm/subscriptions.js.map +1 -0
  117. package/dist/esm/typedData.d.ts +28 -0
  118. package/dist/esm/typedData.d.ts.map +1 -0
  119. package/dist/esm/typedData.js +2 -0
  120. package/dist/esm/typedData.js.map +1 -0
  121. package/dist/esm/vote.d.ts +68 -0
  122. package/dist/esm/vote.d.ts.map +1 -0
  123. package/dist/esm/vote.js +20 -0
  124. package/dist/esm/vote.js.map +1 -0
  125. package/dist/types/acceptTerms.d.ts +45 -0
  126. package/dist/types/acceptTerms.d.ts.map +1 -0
  127. package/dist/types/account.d.ts +229 -0
  128. package/dist/types/account.d.ts.map +1 -0
  129. package/dist/types/action.d.ts +248 -0
  130. package/dist/types/action.d.ts.map +1 -0
  131. package/dist/types/asset.d.ts +25 -0
  132. package/dist/types/asset.d.ts.map +1 -0
  133. package/dist/types/enums.d.ts +171 -0
  134. package/dist/types/enums.d.ts.map +1 -0
  135. package/dist/types/errors.d.ts +8 -0
  136. package/dist/types/errors.d.ts.map +1 -0
  137. package/dist/types/index.d.ts +23 -0
  138. package/dist/types/index.d.ts.map +1 -0
  139. package/dist/types/market.d.ts +102 -0
  140. package/dist/types/market.d.ts.map +1 -0
  141. package/dist/types/meta.d.ts +37 -0
  142. package/dist/types/meta.d.ts.map +1 -0
  143. package/dist/types/primitives.d.ts +5 -0
  144. package/dist/types/primitives.d.ts.map +1 -0
  145. package/dist/types/providers.d.ts +116 -0
  146. package/dist/types/providers.d.ts.map +1 -0
  147. package/dist/types/quote.d.ts +47 -0
  148. package/dist/types/quote.d.ts.map +1 -0
  149. package/dist/types/subscriptions.d.ts +115 -0
  150. package/dist/types/subscriptions.d.ts.map +1 -0
  151. package/dist/types/typedData.d.ts +28 -0
  152. package/dist/types/typedData.d.ts.map +1 -0
  153. package/dist/types/vote.d.ts +68 -0
  154. package/dist/types/vote.d.ts.map +1 -0
  155. package/package.json +49 -0
  156. package/src/acceptTerms.ts +53 -0
  157. package/src/account.ts +277 -0
  158. package/src/action.ts +292 -0
  159. package/src/asset.ts +25 -0
  160. package/src/enums.ts +205 -0
  161. package/src/errors.ts +8 -0
  162. package/src/index.ts +23 -0
  163. package/src/market.ts +132 -0
  164. package/src/meta.ts +38 -0
  165. package/src/primitives.ts +5 -0
  166. package/src/providers.ts +122 -0
  167. package/src/quote.ts +49 -0
  168. package/src/subscriptions.ts +118 -0
  169. package/src/typedData.ts +32 -0
  170. package/src/vote.ts +79 -0
@@ -0,0 +1,69 @@
1
+ import type { Asset } from './asset.js';
2
+ export interface FundingInfo {
3
+ rate: string;
4
+ nextFundingTime: number;
5
+ }
6
+ export interface BaseMarket {
7
+ providerId: string;
8
+ id: string;
9
+ categoryId: string;
10
+ baseAsset: Asset;
11
+ quoteAsset: Asset;
12
+ szDecimals: number;
13
+ priceDecimals?: number;
14
+ markPrice: string;
15
+ volume24h?: string;
16
+ prevDayPrice?: string;
17
+ }
18
+ export interface PerpsMarket extends BaseMarket {
19
+ maxLeverage: number;
20
+ onlyIsolated: boolean;
21
+ funding: FundingInfo;
22
+ openInterest?: string;
23
+ maintenanceMarginRate?: number;
24
+ }
25
+ export interface SpotMarket extends BaseMarket {
26
+ }
27
+ export type Market = PerpsMarket | SpotMarket;
28
+ export type MarketDisplay = Pick<BaseMarket, 'providerId' | 'id' | 'categoryId' | 'baseAsset' | 'quoteAsset'>;
29
+ export interface MarketRef {
30
+ marketId: string;
31
+ categoryId: string;
32
+ }
33
+ export interface MarketsResponse {
34
+ markets: Market[];
35
+ }
36
+ export interface MarketPrice {
37
+ marketId: string;
38
+ price: string;
39
+ }
40
+ export interface PricesResponse {
41
+ prices: MarketPrice[];
42
+ }
43
+ export interface Candle {
44
+ t: number;
45
+ o: string;
46
+ h: string;
47
+ l: string;
48
+ c: string;
49
+ v: string;
50
+ }
51
+ export interface OhlcvResponse {
52
+ provider: string;
53
+ marketId: string;
54
+ interval: string;
55
+ candles: Candle[];
56
+ }
57
+ export type OhlcvInterval = '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M';
58
+ export interface OrderbookLevel {
59
+ price: string;
60
+ size: string;
61
+ }
62
+ export interface OrderbookResponse {
63
+ provider: string;
64
+ marketId: string;
65
+ bids: OrderbookLevel[];
66
+ asks: OrderbookLevel[];
67
+ timestamp: number;
68
+ }
69
+ //# sourceMappingURL=market.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../src/market.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,MAAM,CAAA;CACxB;AAGD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAElB,EAAE,EAAE,MAAM,CAAA;IAEV,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,KAAK,CAAA;IAChB,UAAU,EAAE,KAAK,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAOlB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAGD,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,WAAW,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAGD,MAAM,WAAW,UAAW,SAAQ,UAAU;CAAG;AAGjD,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;AAG7C,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,UAAU,EACV,YAAY,GAAG,IAAI,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAChE,CAAA;AAQD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAGD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAGD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB;AAGD,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAGD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAGD,MAAM,MAAM,aAAa,GACrB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAA;AAGR,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAGD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;CAClB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=market.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market.js","sourceRoot":"","sources":["../../src/market.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ export interface Notice {
2
+ timestamp: number;
3
+ title: string;
4
+ message: string;
5
+ link?: string;
6
+ }
7
+ export interface Meta {
8
+ version: string;
9
+ notices: Notice[];
10
+ }
11
+ export interface TermsAcceptanceStatus {
12
+ termsVersion: string;
13
+ content: string;
14
+ accepted: boolean;
15
+ acceptedAt?: number;
16
+ }
17
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/meta.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,MAAM;IAErB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IAEf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAMD,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAOD,MAAM,WAAW,qBAAqB;IAEpC,YAAY,EAAE,MAAM,CAAA;IAEpB,OAAO,EAAE,MAAM,CAAA;IAEf,QAAQ,EAAE,OAAO,CAAA;IAEjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/meta.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,3 @@
1
+ export type Address = `0x${string}`;
2
+ export type Hex = `0x${string}`;
3
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/primitives.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,OAAO,GAAG,KAAK,MAAM,EAAE,CAAA;AAGnC,MAAM,MAAM,GAAG,GAAG,KAAK,MAAM,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/primitives.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ import type { Asset } from './asset.js';
2
+ import type { ActionType, PerpsSigner, SigningMethod } from './enums.js';
3
+ import type { OhlcvInterval } from './market.js';
4
+ export interface ParamOption {
5
+ value: string;
6
+ label: string;
7
+ }
8
+ export interface Param {
9
+ name: string;
10
+ type: 'string';
11
+ values?: ParamOption[];
12
+ default?: ParamOption;
13
+ readOnly?: boolean;
14
+ }
15
+ export interface ProviderAction {
16
+ type: ActionType;
17
+ signers: PerpsSigner[];
18
+ signingMethod: SigningMethod;
19
+ title?: string;
20
+ description?: string;
21
+ params?: Param[];
22
+ sequence?: number;
23
+ }
24
+ export interface TradeNotice {
25
+ level: 'info' | 'warn';
26
+ message: string;
27
+ }
28
+ export interface ProviderCategory {
29
+ id: string;
30
+ logoURI?: string;
31
+ quoteAsset: Asset | null;
32
+ tradeNotice?: TradeNotice;
33
+ }
34
+ export interface Provider {
35
+ key: string;
36
+ name: string;
37
+ logoURI: string;
38
+ signingMethod: SigningMethod;
39
+ active: boolean;
40
+ setup: ProviderAction[];
41
+ options: ProviderAction[];
42
+ actions: ProviderAction[];
43
+ categories: ProviderCategory[];
44
+ wsUrl?: string;
45
+ minDepositUsd?: number;
46
+ minOrderValueUsd?: number;
47
+ minReduceOrderValueUsd?: number;
48
+ minWithdrawalUsd?: number;
49
+ depositFeeUsd?: number;
50
+ withdrawalFeeUsd?: number;
51
+ upVotes?: number;
52
+ downVotes?: number;
53
+ supportedIntervals: OhlcvInterval[];
54
+ }
55
+ export interface ProvidersResponse {
56
+ providers: Provider[];
57
+ }
58
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAGD,MAAM,WAAW,KAAK;IAEpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;IAEd,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAUD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,aAAa,EAAE,aAAa,CAAA;IAK5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAOhB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAOD,MAAM,WAAW,WAAW;IAE1B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAEtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,UAAU,EAAE,KAAK,GAAG,IAAI,CAAA;IACxB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAGD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,aAAa,CAAA;IAE5B,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,UAAU,EAAE,gBAAgB,EAAE,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,aAAa,CAAC,EAAE,MAAM,CAAA;IAKtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAMzB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAKzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAA;IAMlB,kBAAkB,EAAE,aAAa,EAAE,CAAA;CACpC;AAGD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,QAAQ,EAAE,CAAA;CACtB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import type { FeeTier } from './account.js';
2
+ import type { FundingInfo } from './market.js';
3
+ export type QuoteSide = 'buy' | 'sell';
4
+ export type TradeType = 'perps' | 'spot';
5
+ export interface Quote {
6
+ provider: string;
7
+ symbol: string;
8
+ marketId: string;
9
+ type: TradeType;
10
+ side: QuoteSide;
11
+ sizeUsd: string;
12
+ baseSize: string;
13
+ markPrice: string;
14
+ expectedFillPrice: string;
15
+ priceImpactBps: string;
16
+ feeTier: FeeTier;
17
+ isDefaultFeeTier: boolean;
18
+ feeUsd: string;
19
+ funding: FundingInfo | null;
20
+ insufficientLiquidity: boolean;
21
+ timestamp: number;
22
+ }
23
+ //# sourceMappingURL=quote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quote.d.ts","sourceRoot":"","sources":["../../src/quote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAA;AAGtC,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAYxC,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,CAAA;IAEhB,MAAM,EAAE,MAAM,CAAA;IAEd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;IAEf,OAAO,EAAE,MAAM,CAAA;IAEf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IAEjB,iBAAiB,EAAE,MAAM,CAAA;IAEzB,cAAc,EAAE,MAAM,CAAA;IAEtB,OAAO,EAAE,OAAO,CAAA;IAEhB,gBAAgB,EAAE,OAAO,CAAA;IAEzB,MAAM,EAAE,MAAM,CAAA;IAEd,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAE3B,qBAAqB,EAAE,OAAO,CAAA;IAE9B,SAAS,EAAE,MAAM,CAAA;CAClB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=quote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quote.js","sourceRoot":"","sources":["../../src/quote.ts"],"names":[],"mappings":""}
@@ -0,0 +1,77 @@
1
+ import type { Balance, Fill, OpenOrder, Position, TriggerOrder } from './account.js';
2
+ import type { Candle, OhlcvInterval, OrderbookResponse } from './market.js';
3
+ import type { Address } from './primitives.js';
4
+ export type PricesSubscription = {
5
+ channel: 'prices';
6
+ dex: string;
7
+ };
8
+ export type OrderbookSubscription = {
9
+ channel: 'orderbook';
10
+ dex: string;
11
+ marketId: string;
12
+ depth?: number;
13
+ priceStep?: number;
14
+ };
15
+ export type CandleSubscription = {
16
+ channel: 'candle';
17
+ dex: string;
18
+ marketId: string;
19
+ interval: OhlcvInterval;
20
+ };
21
+ export type OrderUpdatesSubscription = {
22
+ channel: 'orderUpdates';
23
+ dex: string;
24
+ address: Address;
25
+ };
26
+ export type FillsSubscription = {
27
+ channel: 'fills';
28
+ dex: string;
29
+ address: Address;
30
+ };
31
+ export type PositionsSubscription = {
32
+ channel: 'positions';
33
+ dex: string;
34
+ address: Address;
35
+ };
36
+ export type SpotBalancesSubscription = {
37
+ channel: 'spotBalances';
38
+ dex: string;
39
+ address: Address;
40
+ };
41
+ export type Subscription = PricesSubscription | OrderbookSubscription | CandleSubscription | OrderUpdatesSubscription | FillsSubscription | PositionsSubscription | SpotBalancesSubscription;
42
+ export type PricesEvent = {
43
+ channel: 'prices';
44
+ data: Record<string, string>;
45
+ };
46
+ export type OrderbookEvent = {
47
+ channel: 'orderbook';
48
+ data: OrderbookResponse;
49
+ };
50
+ export type CandleEvent = {
51
+ channel: 'candle';
52
+ data: Candle;
53
+ };
54
+ export type OrderUpdatesEvent = {
55
+ channel: 'orderUpdates';
56
+ data: {
57
+ openOrders: OpenOrder[];
58
+ triggerOrders: TriggerOrder[];
59
+ terminated: string[];
60
+ };
61
+ };
62
+ export type FillsEvent = {
63
+ channel: 'fills';
64
+ data: Fill[];
65
+ };
66
+ export type PositionsEvent = {
67
+ channel: 'positions';
68
+ data: Position[];
69
+ };
70
+ export type SpotBalancesEvent = {
71
+ channel: 'spotBalances';
72
+ data: (Balance & {
73
+ locked: string;
74
+ })[];
75
+ };
76
+ export type SubscriptionEvent = PricesEvent | OrderbookEvent | CandleEvent | OrderUpdatesEvent | FillsEvent | PositionsEvent | SpotBalancesEvent;
77
+ //# sourceMappingURL=subscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../src/subscriptions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../src/subscriptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import type { Address, Hex } from './primitives.js';
2
+ export interface TypedDataDomain {
3
+ name?: string;
4
+ version?: string;
5
+ chainId?: number;
6
+ verifyingContract?: Address;
7
+ salt?: Hex;
8
+ }
9
+ export interface TypedDataParameter {
10
+ name: string;
11
+ type: string;
12
+ }
13
+ export type PerpsPrimaryType = string;
14
+ export type PerpsTypedData = {
15
+ domain: TypedDataDomain;
16
+ types: Record<string, readonly TypedDataParameter[]>;
17
+ primaryType: PerpsPrimaryType;
18
+ message: Record<string, any>;
19
+ };
20
+ export type PerpsSignedTypedData = PerpsTypedData & {
21
+ signature: Hex;
22
+ };
23
+ //# sourceMappingURL=typedData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedData.d.ts","sourceRoot":"","sources":["../../src/typedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAGnD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,GAAG,CAAA;CACX;AAGD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAGD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAGrC,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAAA;IACpD,WAAW,EAAE,gBAAgB,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC7B,CAAA;AAGD,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAClD,SAAS,EAAE,GAAG,CAAA;CACf,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=typedData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedData.js","sourceRoot":"","sources":["../../src/typedData.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import type { Address } from './primitives.js';
2
+ import type { PerpsTypedData, TypedDataParameter } from './typedData.js';
3
+ export declare const META_PROVIDER = "meta";
4
+ export type MetaProvider = typeof META_PROVIDER;
5
+ export type VoteDirection = 'up' | 'down';
6
+ export type VoteType = 'provider';
7
+ export interface VoteParams {
8
+ targetProvider: string;
9
+ direction: VoteDirection;
10
+ voteType: VoteType;
11
+ }
12
+ export interface VoteMessage {
13
+ targetProvider: string;
14
+ direction: VoteDirection;
15
+ voteType: VoteType;
16
+ voter: Address;
17
+ timestamp: number;
18
+ }
19
+ export declare const voteTypeFields: readonly TypedDataParameter[];
20
+ export interface VoteTypedData extends PerpsTypedData {
21
+ primaryType: 'Vote';
22
+ types: {
23
+ Vote: readonly TypedDataParameter[];
24
+ } & PerpsTypedData['types'];
25
+ message: VoteMessage;
26
+ }
27
+ //# sourceMappingURL=vote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vote.d.ts","sourceRoot":"","sources":["../../src/vote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAQxE,eAAO,MAAM,aAAa,SAAS,CAAA;AAGnC,MAAM,MAAM,YAAY,GAAG,OAAO,aAAa,CAAA;AAM/C,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,MAAM,CAAA;AAOzC,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAA;AAUjC,MAAM,WAAW,UAAU;IAEzB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,aAAa,CAAA;IACxB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAMD,MAAM,WAAW,WAAW;IAE1B,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,aAAa,CAAA;IACxB,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IAEd,SAAS,EAAE,MAAM,CAAA;CAClB;AAOD,eAAO,MAAM,cAAc,EAAE,SAAS,kBAAkB,EAMvD,CAAA;AAOD,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE;QAAE,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAA;KAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACxE,OAAO,EAAE,WAAW,CAAA;CACrB"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.voteTypeFields = exports.META_PROVIDER = void 0;
4
+ exports.META_PROVIDER = 'meta';
5
+ exports.voteTypeFields = [
6
+ { name: 'targetProvider', type: 'string' },
7
+ { name: 'direction', type: 'string' },
8
+ { name: 'voteType', type: 'string' },
9
+ { name: 'voter', type: 'address' },
10
+ { name: 'timestamp', type: 'uint256' },
11
+ ];
12
+ //# sourceMappingURL=vote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vote.js","sourceRoot":"","sources":["../../src/vote.ts"],"names":[],"mappings":";;;AASa,QAAA,aAAa,GAAG,MAAM,CAAA;AAoDtB,QAAA,cAAc,GAAkC;IAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1C,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;CACvC,CAAA"}
@@ -0,0 +1,45 @@
1
+ import type { Address } from './primitives.js';
2
+ import type { PerpsTypedData, TypedDataParameter } from './typedData.js';
3
+ /**
4
+ * Params for an {@link "./enums.js".ActionType.META_ACCEPT_TERMS} action.
5
+ *
6
+ * Provider-independent: cast with the {@link "./vote.js".META_PROVIDER}
7
+ * sentinel in the transport `provider` field.
8
+ * @public
9
+ */
10
+ export interface AcceptTermsParams {
11
+ /** Terms-of-Service version being accepted; backend-owned, relayed verbatim. */
12
+ termsVersion: string;
13
+ }
14
+ /**
15
+ * EIP-712 message body for an `AcceptTerms`. Field order matches
16
+ * {@link acceptTermsTypeFields}.
17
+ * @public
18
+ */
19
+ export interface AcceptTermsMessage {
20
+ /** Human-readable action, e.g. `"Accept LI.FI Perps Terms of Service v3"`. */
21
+ action: string;
22
+ acceptor: Address;
23
+ termsVersion: string;
24
+ /** Unix timestamp in milliseconds. */
25
+ timestamp: number;
26
+ }
27
+ /**
28
+ * EIP-712 type member list for the `AcceptTerms` primary type. Field order is
29
+ * part of the signed digest and must match the backend's encoder.
30
+ * @public
31
+ */
32
+ export declare const acceptTermsTypeFields: readonly TypedDataParameter[];
33
+ /**
34
+ * EIP-712 typed data for a terms acceptance, as returned by `createAction` and
35
+ * signed client-side. `primaryType` is always `'AcceptTerms'`.
36
+ * @public
37
+ */
38
+ export interface AcceptTermsTypedData extends PerpsTypedData {
39
+ primaryType: 'AcceptTerms';
40
+ types: {
41
+ AcceptTerms: readonly TypedDataParameter[];
42
+ } & PerpsTypedData['types'];
43
+ message: AcceptTermsMessage;
44
+ }
45
+ //# sourceMappingURL=acceptTerms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acceptTerms.d.ts","sourceRoot":"","sources":["../../src/acceptTerms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAExE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAK9D,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,WAAW,EAAE,aAAa,CAAA;IAC1B,KAAK,EAAE;QACL,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAA;KAC3C,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,EAAE,kBAAkB,CAAA;CAC5B"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * EIP-712 type member list for the `AcceptTerms` primary type. Field order is
3
+ * part of the signed digest and must match the backend's encoder.
4
+ * @public
5
+ */
6
+ export const acceptTermsTypeFields = [
7
+ { name: 'action', type: 'string' },
8
+ { name: 'acceptor', type: 'address' },
9
+ { name: 'termsVersion', type: 'string' },
10
+ { name: 'timestamp', type: 'uint256' },
11
+ ];
12
+ //# sourceMappingURL=acceptTerms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acceptTerms.js","sourceRoot":"","sources":["../../src/acceptTerms.ts"],"names":[],"mappings":"AA6BA;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;IACrC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;CACvC,CAAA"}