@lifi/perps-sdk 4.4.2 → 6.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/dist/cjs/client/PerpsClient.d.ts +10 -2
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +14 -0
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/index.d.ts +10 -6
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +16 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/registry/marketRegistry.d.ts +2 -1
- package/dist/cjs/registry/marketRegistry.d.ts.map +1 -1
- package/dist/cjs/registry/marketRegistry.js +24 -1
- package/dist/cjs/registry/marketRegistry.js.map +1 -1
- package/dist/cjs/services/getGasRecommendation.d.ts +9 -0
- package/dist/cjs/services/getGasRecommendation.d.ts.map +1 -0
- package/dist/cjs/services/getGasRecommendation.js +10 -0
- package/dist/cjs/services/getGasRecommendation.js.map +1 -0
- package/dist/cjs/types/api.d.ts +6 -1
- package/dist/cjs/types/api.d.ts.map +1 -1
- package/dist/cjs/types/deposit.d.ts +25 -0
- package/dist/cjs/types/deposit.d.ts.map +1 -0
- package/dist/cjs/types/deposit.js +3 -0
- package/dist/cjs/types/deposit.js.map +1 -0
- package/dist/cjs/types/provider.d.ts +12 -1
- package/dist/cjs/types/provider.d.ts.map +1 -1
- package/dist/cjs/utils/calculations.d.ts +0 -5
- package/dist/cjs/utils/calculations.d.ts.map +1 -1
- package/dist/cjs/utils/calculations.js +0 -9
- package/dist/cjs/utils/calculations.js.map +1 -1
- package/dist/cjs/utils/depositAssets.d.ts +8 -0
- package/dist/cjs/utils/depositAssets.d.ts.map +1 -0
- package/dist/cjs/utils/depositAssets.js +36 -0
- package/dist/cjs/utils/depositAssets.js.map +1 -0
- package/dist/cjs/utils/transferMargin.d.ts +7 -0
- package/dist/cjs/utils/transferMargin.d.ts.map +1 -0
- package/dist/cjs/utils/transferMargin.js +52 -0
- package/dist/cjs/utils/transferMargin.js.map +1 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/client/PerpsClient.d.ts +35 -2
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +39 -0
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/index.d.ts +11 -7
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +6 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/registry/marketRegistry.d.ts +9 -1
- package/dist/esm/registry/marketRegistry.d.ts.map +1 -1
- package/dist/esm/registry/marketRegistry.js +30 -1
- package/dist/esm/registry/marketRegistry.js.map +1 -1
- package/dist/esm/services/getGasRecommendation.d.ts +31 -0
- package/dist/esm/services/getGasRecommendation.d.ts.map +1 -0
- package/dist/esm/services/getGasRecommendation.js +22 -0
- package/dist/esm/services/getGasRecommendation.js.map +1 -0
- package/dist/esm/types/api.d.ts +16 -1
- package/dist/esm/types/api.d.ts.map +1 -1
- package/dist/esm/types/deposit.d.ts +68 -0
- package/dist/esm/types/deposit.d.ts.map +1 -0
- package/dist/esm/types/deposit.js +2 -0
- package/dist/esm/types/deposit.js.map +1 -0
- package/dist/esm/types/provider.d.ts +48 -1
- package/dist/esm/types/provider.d.ts.map +1 -1
- package/dist/esm/utils/calculations.d.ts +0 -20
- package/dist/esm/utils/calculations.d.ts.map +1 -1
- package/dist/esm/utils/calculations.js +0 -23
- package/dist/esm/utils/calculations.js.map +1 -1
- package/dist/esm/utils/depositAssets.d.ts +46 -0
- package/dist/esm/utils/depositAssets.d.ts.map +1 -0
- package/dist/esm/utils/depositAssets.js +71 -0
- package/dist/esm/utils/depositAssets.js.map +1 -0
- package/dist/esm/utils/transferMargin.d.ts +24 -0
- package/dist/esm/utils/transferMargin.d.ts.map +1 -0
- package/dist/esm/utils/transferMargin.js +58 -0
- package/dist/esm/utils/transferMargin.js.map +1 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/client/PerpsClient.d.ts +35 -2
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/index.d.ts +11 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/registry/marketRegistry.d.ts +9 -1
- package/dist/types/registry/marketRegistry.d.ts.map +1 -1
- package/dist/types/services/getGasRecommendation.d.ts +31 -0
- package/dist/types/services/getGasRecommendation.d.ts.map +1 -0
- package/dist/types/types/api.d.ts +16 -1
- package/dist/types/types/api.d.ts.map +1 -1
- package/dist/types/types/deposit.d.ts +68 -0
- package/dist/types/types/deposit.d.ts.map +1 -0
- package/dist/types/types/provider.d.ts +48 -1
- package/dist/types/types/provider.d.ts.map +1 -1
- package/dist/types/utils/calculations.d.ts +0 -20
- package/dist/types/utils/calculations.d.ts.map +1 -1
- package/dist/types/utils/depositAssets.d.ts +46 -0
- package/dist/types/utils/depositAssets.d.ts.map +1 -0
- package/dist/types/utils/transferMargin.d.ts +24 -0
- package/dist/types/utils/transferMargin.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/client/PerpsClient.ts +56 -0
- package/src/index.ts +26 -6
- package/src/registry/marketRegistry.ts +45 -2
- package/src/services/getGasRecommendation.ts +45 -0
- package/src/types/api.ts +17 -0
- package/src/types/deposit.ts +75 -0
- package/src/types/provider.ts +63 -0
- package/src/utils/calculations.ts +0 -28
- package/src/utils/depositAssets.ts +77 -0
- package/src/utils/transferMargin.ts +103 -0
- package/src/version.ts +1 -1
- package/dist/cjs/utils/depositChain.d.ts +0 -6
- package/dist/cjs/utils/depositChain.d.ts.map +0 -1
- package/dist/cjs/utils/depositChain.js +0 -14
- package/dist/cjs/utils/depositChain.js.map +0 -1
- package/dist/esm/utils/depositChain.d.ts +0 -27
- package/dist/esm/utils/depositChain.d.ts.map +0 -1
- package/dist/esm/utils/depositChain.js +0 -24
- package/dist/esm/utils/depositChain.js.map +0 -1
- package/dist/types/utils/depositChain.d.ts +0 -27
- package/dist/types/utils/depositChain.d.ts.map +0 -1
- package/src/utils/depositChain.ts +0 -39
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MarginMode,
|
|
3
|
+
PerpsErrorCode,
|
|
4
|
+
type Position,
|
|
5
|
+
PositionMarginAdjustment,
|
|
6
|
+
type PositionMarginConstraints,
|
|
7
|
+
} from '@lifi/perps-types'
|
|
8
|
+
import Big from 'big.js'
|
|
9
|
+
import { PerpsError } from '../errors/PerpsError.js'
|
|
10
|
+
|
|
11
|
+
function positionAmount(value: string, field: string): Big {
|
|
12
|
+
try {
|
|
13
|
+
return new Big(value)
|
|
14
|
+
} catch {
|
|
15
|
+
throw new PerpsError(
|
|
16
|
+
PerpsErrorCode.ValidationError,
|
|
17
|
+
`Invalid decimal string on Position.${field}: '${value}'`
|
|
18
|
+
)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function constraintAmount(value: string, field: string): Big {
|
|
23
|
+
try {
|
|
24
|
+
return new Big(value)
|
|
25
|
+
} catch {
|
|
26
|
+
throw new PerpsError(
|
|
27
|
+
PerpsErrorCode.ValidationError,
|
|
28
|
+
`Invalid decimal string on PositionMarginConstraints.${field}: '${value}'`
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function requirePositive(value: Big, field: string): Big {
|
|
34
|
+
if (value.lte(0)) {
|
|
35
|
+
throw new PerpsError(
|
|
36
|
+
PerpsErrorCode.ValidationError,
|
|
37
|
+
`${field} must be greater than zero.`
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
return value
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Exact inputs for {@link removableIsolatedMargin}.
|
|
45
|
+
*
|
|
46
|
+
* @public
|
|
47
|
+
*/
|
|
48
|
+
export interface RemovableIsolatedMarginParams {
|
|
49
|
+
position: Position
|
|
50
|
+
constraints: PositionMarginConstraints
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Calculate margin that can be removed from an isolated position using the
|
|
55
|
+
* provider's exact retained-margin requirement. Position equity is allocated
|
|
56
|
+
* margin plus unrealized PnL.
|
|
57
|
+
*
|
|
58
|
+
* The result snaps down to the provider's accepted amount increment. Markets
|
|
59
|
+
* that are add-only and cross-margined positions return `'0'`.
|
|
60
|
+
*
|
|
61
|
+
* @throws {PerpsError} `ValidationError` for malformed, non-positive, or
|
|
62
|
+
* inconsistent risk inputs.
|
|
63
|
+
* @public
|
|
64
|
+
*/
|
|
65
|
+
export function removableIsolatedMargin({
|
|
66
|
+
position,
|
|
67
|
+
constraints,
|
|
68
|
+
}: RemovableIsolatedMarginParams): string {
|
|
69
|
+
if (
|
|
70
|
+
position.marginMode !== MarginMode.ISOLATED ||
|
|
71
|
+
position.market.positionMarginAdjustment !==
|
|
72
|
+
PositionMarginAdjustment.ADD_AND_REMOVE
|
|
73
|
+
) {
|
|
74
|
+
return '0'
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const marginUsed = requirePositive(
|
|
78
|
+
positionAmount(position.marginUsed, 'marginUsed'),
|
|
79
|
+
'Position.marginUsed'
|
|
80
|
+
)
|
|
81
|
+
const unrealizedPnl = positionAmount(position.unrealizedPnl, 'unrealizedPnl')
|
|
82
|
+
const minimumMargin = requirePositive(
|
|
83
|
+
constraintAmount(
|
|
84
|
+
constraints.minimumMarginRequirement,
|
|
85
|
+
'minimumMarginRequirement'
|
|
86
|
+
),
|
|
87
|
+
'PositionMarginConstraints.minimumMarginRequirement'
|
|
88
|
+
)
|
|
89
|
+
const amountIncrement = requirePositive(
|
|
90
|
+
constraintAmount(constraints.amountIncrement, 'amountIncrement'),
|
|
91
|
+
'PositionMarginConstraints.amountIncrement'
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
const removable = marginUsed.plus(unrealizedPnl).minus(minimumMargin)
|
|
95
|
+
if (removable.lte(0)) {
|
|
96
|
+
return '0'
|
|
97
|
+
}
|
|
98
|
+
return removable
|
|
99
|
+
.div(amountIncrement)
|
|
100
|
+
.round(0, Big.roundDown)
|
|
101
|
+
.times(amountIncrement)
|
|
102
|
+
.toFixed()
|
|
103
|
+
}
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/perps-sdk'
|
|
2
|
-
export const version = '
|
|
2
|
+
export const version = '6.0.0'
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AccountConfig } from '@lifi/perps-types';
|
|
2
|
-
import { ChainId } from '@lifi/types';
|
|
3
|
-
export type DepositProviderKey = AccountConfig['provider'];
|
|
4
|
-
export declare const LIFI_DEPOSIT_CHAIN_BY_PROVIDER: Partial<Record<DepositProviderKey, ChainId>>;
|
|
5
|
-
export declare function lifiDepositChainForProvider(providerKey: string): ChainId | undefined;
|
|
6
|
-
//# sourceMappingURL=depositChain.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"depositChain.d.ts","sourceRoot":"","sources":["../../../src/utils/depositChain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AASrC,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;AAS1D,eAAO,MAAM,8BAA8B,EAAE,OAAO,CAClD,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAKpC,CAAA;AASD,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,GAAG,SAAS,CAErB"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LIFI_DEPOSIT_CHAIN_BY_PROVIDER = void 0;
|
|
4
|
-
exports.lifiDepositChainForProvider = lifiDepositChainForProvider;
|
|
5
|
-
const types_1 = require("@lifi/types");
|
|
6
|
-
exports.LIFI_DEPOSIT_CHAIN_BY_PROVIDER = {
|
|
7
|
-
hyperliquid: types_1.ChainId.HPL,
|
|
8
|
-
lighter: types_1.ChainId.LTR,
|
|
9
|
-
'lighter-rh': types_1.ChainId.OUT,
|
|
10
|
-
};
|
|
11
|
-
function lifiDepositChainForProvider(providerKey) {
|
|
12
|
-
return exports.LIFI_DEPOSIT_CHAIN_BY_PROVIDER[providerKey];
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=depositChain.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"depositChain.js","sourceRoot":"","sources":["../../../src/utils/depositChain.ts"],"names":[],"mappings":";;;AAkCA,kEAIC;AArCD,uCAAqC;AAkBxB,QAAA,8BAA8B,GAEvC;IACF,WAAW,EAAE,eAAO,CAAC,GAAG;IACxB,OAAO,EAAE,eAAO,CAAC,GAAG;IACpB,YAAY,EAAE,eAAO,CAAC,GAAG;CAC1B,CAAA;AASD,SAAgB,2BAA2B,CACzC,WAAmB;IAEnB,OAAO,sCAA8B,CAAC,WAAiC,CAAC,CAAA;AAC1E,CAAC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { AccountConfig } from '@lifi/perps-types';
|
|
2
|
-
import { ChainId } from '@lifi/types';
|
|
3
|
-
/**
|
|
4
|
-
* Perps provider keys that may declare a LI.FI deposit-target chain. Absent
|
|
5
|
-
* from the map means the provider is not funded via a LI.FI swap (e.g. ondo's
|
|
6
|
-
* custodial provisioned-address deposits).
|
|
7
|
-
*
|
|
8
|
-
* @public
|
|
9
|
-
*/
|
|
10
|
-
export type DepositProviderKey = AccountConfig['provider'];
|
|
11
|
-
/**
|
|
12
|
-
* Declared single source of truth: perps provider key → the LI.FI chain a
|
|
13
|
-
* client opens the swap widget against to fund that provider. Values come from
|
|
14
|
-
* the `@lifi/types` `ChainId` enum; never hardcode the numeric ids.
|
|
15
|
-
*
|
|
16
|
-
* @public
|
|
17
|
-
*/
|
|
18
|
-
export declare const LIFI_DEPOSIT_CHAIN_BY_PROVIDER: Partial<Record<DepositProviderKey, ChainId>>;
|
|
19
|
-
/**
|
|
20
|
-
* Resolve the LI.FI deposit-target chain for a perps provider key.
|
|
21
|
-
*
|
|
22
|
-
* @returns The `@lifi/types` `ChainId`, or `undefined` for a provider key with
|
|
23
|
-
* no declared deposit chain (the `/providers` wire key is an open `string`).
|
|
24
|
-
* @public
|
|
25
|
-
*/
|
|
26
|
-
export declare function lifiDepositChainForProvider(providerKey: string): ChainId | undefined;
|
|
27
|
-
//# sourceMappingURL=depositChain.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"depositChain.d.ts","sourceRoot":"","sources":["../../../src/utils/depositChain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,OAAO,CAClD,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAKpC,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,GAAG,SAAS,CAErB"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ChainId } from '@lifi/types';
|
|
2
|
-
/**
|
|
3
|
-
* Declared single source of truth: perps provider key → the LI.FI chain a
|
|
4
|
-
* client opens the swap widget against to fund that provider. Values come from
|
|
5
|
-
* the `@lifi/types` `ChainId` enum; never hardcode the numeric ids.
|
|
6
|
-
*
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
export const LIFI_DEPOSIT_CHAIN_BY_PROVIDER = {
|
|
10
|
-
hyperliquid: ChainId.HPL,
|
|
11
|
-
lighter: ChainId.LTR,
|
|
12
|
-
'lighter-rh': ChainId.OUT,
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Resolve the LI.FI deposit-target chain for a perps provider key.
|
|
16
|
-
*
|
|
17
|
-
* @returns The `@lifi/types` `ChainId`, or `undefined` for a provider key with
|
|
18
|
-
* no declared deposit chain (the `/providers` wire key is an open `string`).
|
|
19
|
-
* @public
|
|
20
|
-
*/
|
|
21
|
-
export function lifiDepositChainForProvider(providerKey) {
|
|
22
|
-
return LIFI_DEPOSIT_CHAIN_BY_PROVIDER[providerKey];
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=depositChain.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"depositChain.js","sourceRoot":"","sources":["../../../src/utils/depositChain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAWrC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAEvC;IACF,WAAW,EAAE,OAAO,CAAC,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC,GAAG;IACpB,YAAY,EAAE,OAAO,CAAC,GAAG;CAC1B,CAAA;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,WAAmB;IAEnB,OAAO,8BAA8B,CAAC,WAAiC,CAAC,CAAA;AAC1E,CAAC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { AccountConfig } from '@lifi/perps-types';
|
|
2
|
-
import { ChainId } from '@lifi/types';
|
|
3
|
-
/**
|
|
4
|
-
* Perps provider keys that may declare a LI.FI deposit-target chain. Absent
|
|
5
|
-
* from the map means the provider is not funded via a LI.FI swap (e.g. ondo's
|
|
6
|
-
* custodial provisioned-address deposits).
|
|
7
|
-
*
|
|
8
|
-
* @public
|
|
9
|
-
*/
|
|
10
|
-
export type DepositProviderKey = AccountConfig['provider'];
|
|
11
|
-
/**
|
|
12
|
-
* Declared single source of truth: perps provider key → the LI.FI chain a
|
|
13
|
-
* client opens the swap widget against to fund that provider. Values come from
|
|
14
|
-
* the `@lifi/types` `ChainId` enum; never hardcode the numeric ids.
|
|
15
|
-
*
|
|
16
|
-
* @public
|
|
17
|
-
*/
|
|
18
|
-
export declare const LIFI_DEPOSIT_CHAIN_BY_PROVIDER: Partial<Record<DepositProviderKey, ChainId>>;
|
|
19
|
-
/**
|
|
20
|
-
* Resolve the LI.FI deposit-target chain for a perps provider key.
|
|
21
|
-
*
|
|
22
|
-
* @returns The `@lifi/types` `ChainId`, or `undefined` for a provider key with
|
|
23
|
-
* no declared deposit chain (the `/providers` wire key is an open `string`).
|
|
24
|
-
* @public
|
|
25
|
-
*/
|
|
26
|
-
export declare function lifiDepositChainForProvider(providerKey: string): ChainId | undefined;
|
|
27
|
-
//# sourceMappingURL=depositChain.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"depositChain.d.ts","sourceRoot":"","sources":["../../../src/utils/depositChain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,OAAO,CAClD,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAKpC,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,GAAG,SAAS,CAErB"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { AccountConfig } from '@lifi/perps-types'
|
|
2
|
-
import { ChainId } from '@lifi/types'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Perps provider keys that may declare a LI.FI deposit-target chain. Absent
|
|
6
|
-
* from the map means the provider is not funded via a LI.FI swap (e.g. ondo's
|
|
7
|
-
* custodial provisioned-address deposits).
|
|
8
|
-
*
|
|
9
|
-
* @public
|
|
10
|
-
*/
|
|
11
|
-
export type DepositProviderKey = AccountConfig['provider']
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Declared single source of truth: perps provider key → the LI.FI chain a
|
|
15
|
-
* client opens the swap widget against to fund that provider. Values come from
|
|
16
|
-
* the `@lifi/types` `ChainId` enum; never hardcode the numeric ids.
|
|
17
|
-
*
|
|
18
|
-
* @public
|
|
19
|
-
*/
|
|
20
|
-
export const LIFI_DEPOSIT_CHAIN_BY_PROVIDER: Partial<
|
|
21
|
-
Record<DepositProviderKey, ChainId>
|
|
22
|
-
> = {
|
|
23
|
-
hyperliquid: ChainId.HPL,
|
|
24
|
-
lighter: ChainId.LTR,
|
|
25
|
-
'lighter-rh': ChainId.OUT,
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Resolve the LI.FI deposit-target chain for a perps provider key.
|
|
30
|
-
*
|
|
31
|
-
* @returns The `@lifi/types` `ChainId`, or `undefined` for a provider key with
|
|
32
|
-
* no declared deposit chain (the `/providers` wire key is an open `string`).
|
|
33
|
-
* @public
|
|
34
|
-
*/
|
|
35
|
-
export function lifiDepositChainForProvider(
|
|
36
|
-
providerKey: string
|
|
37
|
-
): ChainId | undefined {
|
|
38
|
-
return LIFI_DEPOSIT_CHAIN_BY_PROVIDER[providerKey as DepositProviderKey]
|
|
39
|
-
}
|