@vultisig/rujira 12.1.0 → 14.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/CHANGELOG.md +37 -0
- package/dist/client.d.ts +0 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +0 -2
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/package.json +17 -10
- package/dist/modules/perps.d.ts +0 -127
- package/dist/modules/perps.d.ts.map +0 -1
- package/dist/modules/perps.js +0 -214
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# @vultisig/rujira
|
|
2
2
|
|
|
3
|
+
## 14.0.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`c5f9c7b`](https://github.com/vultisig/vultisig-sdk/commit/c5f9c7bcac80d30f0b5e086c9e6860eaa0cf79a9)]:
|
|
8
|
+
- @vultisig/sdk@0.19.0
|
|
9
|
+
|
|
10
|
+
## 13.0.0
|
|
11
|
+
|
|
12
|
+
### Major Changes
|
|
13
|
+
|
|
14
|
+
- [#299](https://github.com/vultisig/vultisig-sdk/pull/299) [`4af5bb8`](https://github.com/vultisig/vultisig-sdk/commit/4af5bb8043da7dab15b5e1a135e5195d2dd1d7cc) Thanks [@gomesalexandre](https://github.com/gomesalexandre)! - feat(rujira)!: drop RujiraPerps
|
|
15
|
+
|
|
16
|
+
**BREAKING CHANGE.** The `RujiraPerps` module is removed. Its only
|
|
17
|
+
consumer was vultisig-mcp-ts' `src/tools/rujira/perps.ts`, which
|
|
18
|
+
[mcp-ts#36](https://github.com/vultisig/mcp-ts/pull/36) deleted
|
|
19
|
+
(commit `e5ecb58`). No known external consumers.
|
|
20
|
+
|
|
21
|
+
Removed:
|
|
22
|
+
- `RujiraPerps` class export
|
|
23
|
+
- `PerpsMarket` type export
|
|
24
|
+
- `PerpsTransactionParams` type export
|
|
25
|
+
- `client.perps` field on `RujiraClient`
|
|
26
|
+
- `@vultisig/rujira/perps` subpath export
|
|
27
|
+
|
|
28
|
+
No replacement API. Consumers that still need perps-style interactions
|
|
29
|
+
should open an issue — the module was a thin wrapper around on-chain
|
|
30
|
+
calls that can be reconstructed if there's demand.
|
|
31
|
+
|
|
32
|
+
All other Rujira surfaces (swap, orderbook, staking, ghost, deposit,
|
|
33
|
+
withdraw, discovery) are unchanged.
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- Updated dependencies [[`2018787`](https://github.com/vultisig/vultisig-sdk/commit/2018787f8101ea9a98e975c0e7477245c3f86fad), [`f52057b`](https://github.com/vultisig/vultisig-sdk/commit/f52057b4af859018d1c180fa6db9ce15e153409f)]:
|
|
38
|
+
- @vultisig/sdk@0.18.0
|
|
39
|
+
|
|
3
40
|
## 12.1.0
|
|
4
41
|
|
|
5
42
|
### Minor Changes
|
package/dist/client.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ import { RujiraAssets } from './modules/assets.js';
|
|
|
6
6
|
import { RujiraDeposit } from './modules/deposit.js';
|
|
7
7
|
import { RujiraGhost } from './modules/ghost.js';
|
|
8
8
|
import { RujiraOrderbook } from './modules/orderbook.js';
|
|
9
|
-
import { RujiraPerps } from './modules/perps.js';
|
|
10
9
|
import { RujiraRange } from './modules/range.js';
|
|
11
10
|
import { RujiraStaking } from './modules/staking.js';
|
|
12
11
|
import { RujiraSwap, type RujiraSwapOptions } from './modules/swap.js';
|
|
@@ -33,7 +32,6 @@ export declare class RujiraClient {
|
|
|
33
32
|
readonly withdraw: RujiraWithdraw;
|
|
34
33
|
readonly staking: RujiraStaking;
|
|
35
34
|
readonly ghost: RujiraGhost;
|
|
36
|
-
readonly perps: RujiraPerps;
|
|
37
35
|
readonly range: RujiraRange;
|
|
38
36
|
readonly discovery: RujiraDiscovery;
|
|
39
37
|
private queryClient;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAyB,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAG5C,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -8,7 +8,6 @@ import { RujiraAssets } from './modules/assets.js';
|
|
|
8
8
|
import { RujiraDeposit } from './modules/deposit.js';
|
|
9
9
|
import { RujiraGhost } from './modules/ghost.js';
|
|
10
10
|
import { RujiraOrderbook } from './modules/orderbook.js';
|
|
11
|
-
import { RujiraPerps } from './modules/perps.js';
|
|
12
11
|
import { RujiraRange } from './modules/range.js';
|
|
13
12
|
import { RujiraStaking } from './modules/staking.js';
|
|
14
13
|
import { RujiraSwap } from './modules/swap.js';
|
|
@@ -43,7 +42,6 @@ export class RujiraClient {
|
|
|
43
42
|
this.withdraw = new RujiraWithdraw(this);
|
|
44
43
|
this.staking = new RujiraStaking(this);
|
|
45
44
|
this.ghost = new RujiraGhost(this);
|
|
46
|
-
this.perps = new RujiraPerps(this);
|
|
47
45
|
this.range = new RujiraRange(this);
|
|
48
46
|
this.discovery = new RujiraDiscovery({
|
|
49
47
|
rpcEndpoint: this.config.rpcEndpoint,
|
package/dist/index.d.ts
CHANGED
|
@@ -38,8 +38,6 @@ export { RujiraAssets } from './modules/assets.js';
|
|
|
38
38
|
export type { GhostTransactionParams, GhostVaultInfo, GhostVaultStatus } from './modules/ghost.js';
|
|
39
39
|
export { RujiraGhost } from './modules/ghost.js';
|
|
40
40
|
export { RujiraOrderbook } from './modules/orderbook.js';
|
|
41
|
-
export type { PerpsMarket, PerpsTransactionParams } from './modules/perps.js';
|
|
42
|
-
export { RujiraPerps } from './modules/perps.js';
|
|
43
41
|
export type { RangeAnalytics, ClaimParams as RangeClaimParams, RangeConfig, CreatePositionParams as RangeCreatePositionParams, DepositParams as RangeDepositParams, FinPair as RangeFinPair, RangeMultiTransactionParams, RangePosition, RangeTransactionParams, TransferParams as RangeTransferParams, WithdrawAllParams as RangeWithdrawAllParams, WithdrawParams as RangeWithdrawParams, } from './modules/range.js';
|
|
44
42
|
export { RANGE_APR_SCALE, RANGE_CONFIG_DECIMALS, RANGE_MOIC_SCALE, RANGE_WITHDRAW_SHARE_DECIMALS, RujiraRange, } from './modules/range.js';
|
|
45
43
|
export type { StakeParams, StakeTransactionParams, StakingPosition, UnstakeParams } from './modules/staking.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,YAAY,EACV,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,UAAU,EACV,QAAQ,GACT,MAAM,kBAAkB,CAAA;AAGzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAG1B,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACtG,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,YAAY,EACV,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,UAAU,EACV,QAAQ,GACT,MAAM,kBAAkB,CAAA;AAGzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAG1B,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACtG,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,YAAY,EACV,cAAc,EACd,WAAW,IAAI,gBAAgB,EAC/B,WAAW,EACX,oBAAoB,IAAI,yBAAyB,EACjD,aAAa,IAAI,kBAAkB,EACnC,OAAO,IAAI,YAAY,EACvB,2BAA2B,EAC3B,aAAa,EACb,sBAAsB,EACtB,cAAc,IAAI,mBAAmB,EACrC,iBAAiB,IAAI,sBAAsB,EAC3C,cAAc,IAAI,mBAAmB,GACtC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,6BAA6B,EAC7B,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAC/G,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9C,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAGtE,cAAc,mBAAmB,CAAA;AAGjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -35,7 +35,6 @@ export { CclLinear, CclQuadratic, createCcl, generateCclDistribution } from './c
|
|
|
35
35
|
export { RujiraAssets } from './modules/assets.js';
|
|
36
36
|
export { RujiraGhost } from './modules/ghost.js';
|
|
37
37
|
export { RujiraOrderbook } from './modules/orderbook.js';
|
|
38
|
-
export { RujiraPerps } from './modules/perps.js';
|
|
39
38
|
export { RANGE_APR_SCALE, RANGE_CONFIG_DECIMALS, RANGE_MOIC_SCALE, RANGE_WITHDRAW_SHARE_DECIMALS, RujiraRange, } from './modules/range.js';
|
|
40
39
|
export { RujiraStaking } from './modules/staking.js';
|
|
41
40
|
export { RujiraSwap } from './modules/swap.js';
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/rujira",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "14.0.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "Rujira DEX
|
|
5
|
+
"description": "Rujira DEX SDK for Vultisig — THORChain-native swaps, limit orders, staking. Built for MPC wallets and AI agents. TypeScript, modular, self-custody.",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
@@ -26,10 +26,6 @@
|
|
|
26
26
|
"import": "./dist/modules/ghost.js",
|
|
27
27
|
"types": "./dist/modules/ghost.d.ts"
|
|
28
28
|
},
|
|
29
|
-
"./perps": {
|
|
30
|
-
"import": "./dist/modules/perps.js",
|
|
31
|
-
"types": "./dist/modules/perps.d.ts"
|
|
32
|
-
},
|
|
33
29
|
"./range": {
|
|
34
30
|
"import": "./dist/modules/range.js",
|
|
35
31
|
"types": "./dist/modules/range.d.ts"
|
|
@@ -75,12 +71,12 @@
|
|
|
75
71
|
"devDependencies": {
|
|
76
72
|
"@types/big.js": "^6.2.2",
|
|
77
73
|
"@types/node": "^25.5.0",
|
|
78
|
-
"@vultisig/sdk": "0.
|
|
74
|
+
"@vultisig/sdk": "0.19.0",
|
|
79
75
|
"typescript": "^5.9.3",
|
|
80
76
|
"vitest": "^3.0.9"
|
|
81
77
|
},
|
|
82
78
|
"peerDependencies": {
|
|
83
|
-
"@vultisig/sdk": ">=0.
|
|
79
|
+
"@vultisig/sdk": ">=0.19.0"
|
|
84
80
|
},
|
|
85
81
|
"peerDependenciesMeta": {
|
|
86
82
|
"@vultisig/sdk": {
|
|
@@ -91,10 +87,21 @@
|
|
|
91
87
|
"vultisig",
|
|
92
88
|
"rujira",
|
|
93
89
|
"thorchain",
|
|
90
|
+
"thorchain-swap",
|
|
91
|
+
"thorchain-dex",
|
|
92
|
+
"limit-order",
|
|
93
|
+
"cross-chain-swap",
|
|
94
|
+
"rune",
|
|
95
|
+
"cosmwasm",
|
|
96
|
+
"cosmos-sdk",
|
|
97
|
+
"defi-sdk",
|
|
98
|
+
"dex-sdk",
|
|
99
|
+
"mpc-wallet-sdk",
|
|
100
|
+
"ai-agent-dex",
|
|
101
|
+
"typescript-dex",
|
|
102
|
+
"defi",
|
|
94
103
|
"dex",
|
|
95
104
|
"swap",
|
|
96
|
-
"defi",
|
|
97
|
-
"cosmwasm",
|
|
98
105
|
"cosmos",
|
|
99
106
|
"crypto",
|
|
100
107
|
"wallet"
|
package/dist/modules/perps.d.ts
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Perpetual futures module for Levana perps on Rujira
|
|
3
|
-
* @module modules/perps
|
|
4
|
-
*/
|
|
5
|
-
import type { Coin } from '@cosmjs/proto-signing';
|
|
6
|
-
import type { RujiraClient } from '../client.js';
|
|
7
|
-
export type PerpsMarket = {
|
|
8
|
-
/** Market contract address */
|
|
9
|
-
address: string;
|
|
10
|
-
/** Market name (e.g. 'BTC_USDC') */
|
|
11
|
-
name: string;
|
|
12
|
-
/** Base asset (e.g. 'BTC.BTC') */
|
|
13
|
-
baseAsset: string;
|
|
14
|
-
/** Quote asset (e.g. 'ETH-USDC-...') */
|
|
15
|
-
quoteAsset: string;
|
|
16
|
-
};
|
|
17
|
-
export type PerpsTransactionParams = {
|
|
18
|
-
contractAddress: string;
|
|
19
|
-
executeMsg: object;
|
|
20
|
-
funds: Coin[];
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Levana perpetual futures module.
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```typescript
|
|
27
|
-
* const client = new RujiraClient();
|
|
28
|
-
* await client.connect();
|
|
29
|
-
*
|
|
30
|
-
* // List markets
|
|
31
|
-
* const markets = await client.perps.getMarkets();
|
|
32
|
-
*
|
|
33
|
-
* // Build open position
|
|
34
|
-
* const tx = client.perps.buildOpenPosition({
|
|
35
|
-
* market: 'thor1cyd6...',
|
|
36
|
-
* direction: 'long',
|
|
37
|
-
* leverage: '10',
|
|
38
|
-
* collateralDenom: 'eth-usdc-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
|
39
|
-
* collateralAmount: '100000000',
|
|
40
|
-
* });
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
export declare class RujiraPerps {
|
|
44
|
-
private readonly client;
|
|
45
|
-
constructor(client: RujiraClient);
|
|
46
|
-
/**
|
|
47
|
-
* Get available perps markets from GraphQL.
|
|
48
|
-
*/
|
|
49
|
-
getMarkets(): Promise<PerpsMarket[]>;
|
|
50
|
-
/**
|
|
51
|
-
* Query market status from the Levana contract.
|
|
52
|
-
*/
|
|
53
|
-
getMarketStatus(marketAddress: string): Promise<Record<string, unknown>>;
|
|
54
|
-
/**
|
|
55
|
-
* Query positions for an owner on a market.
|
|
56
|
-
*/
|
|
57
|
-
getPositions(marketAddress: string, owner: string): Promise<Record<string, unknown>>;
|
|
58
|
-
/**
|
|
59
|
-
* Query limit orders for an owner on a market.
|
|
60
|
-
*/
|
|
61
|
-
getLimitOrders(marketAddress: string, owner: string): Promise<Record<string, unknown>>;
|
|
62
|
-
/**
|
|
63
|
-
* Build open position transaction.
|
|
64
|
-
*/
|
|
65
|
-
buildOpenPosition(params: {
|
|
66
|
-
market: string;
|
|
67
|
-
direction: 'long' | 'short';
|
|
68
|
-
leverage: string;
|
|
69
|
-
collateralDenom: string;
|
|
70
|
-
collateralAmount: string;
|
|
71
|
-
takeProfit?: string;
|
|
72
|
-
stopLoss?: string;
|
|
73
|
-
}): PerpsTransactionParams;
|
|
74
|
-
/**
|
|
75
|
-
* Build close position transaction.
|
|
76
|
-
*/
|
|
77
|
-
buildClosePosition(params: {
|
|
78
|
-
market: string;
|
|
79
|
-
positionId: string;
|
|
80
|
-
}): PerpsTransactionParams;
|
|
81
|
-
/**
|
|
82
|
-
* Build update take profit transaction.
|
|
83
|
-
*/
|
|
84
|
-
buildUpdateTakeProfit(params: {
|
|
85
|
-
market: string;
|
|
86
|
-
positionId: string;
|
|
87
|
-
price: string;
|
|
88
|
-
}): PerpsTransactionParams;
|
|
89
|
-
/**
|
|
90
|
-
* Build update stop loss transaction.
|
|
91
|
-
*/
|
|
92
|
-
buildUpdateStopLoss(params: {
|
|
93
|
-
market: string;
|
|
94
|
-
positionId: string;
|
|
95
|
-
stopLoss: string | 'remove';
|
|
96
|
-
}): PerpsTransactionParams;
|
|
97
|
-
/**
|
|
98
|
-
* Build add collateral transaction.
|
|
99
|
-
*/
|
|
100
|
-
buildAddCollateral(params: {
|
|
101
|
-
market: string;
|
|
102
|
-
positionId: string;
|
|
103
|
-
denom: string;
|
|
104
|
-
amount: string;
|
|
105
|
-
}): PerpsTransactionParams;
|
|
106
|
-
/**
|
|
107
|
-
* Build place limit order transaction.
|
|
108
|
-
*/
|
|
109
|
-
buildPlaceLimitOrder(params: {
|
|
110
|
-
market: string;
|
|
111
|
-
direction: 'long' | 'short';
|
|
112
|
-
leverage: string;
|
|
113
|
-
triggerPrice: string;
|
|
114
|
-
collateralDenom: string;
|
|
115
|
-
collateralAmount: string;
|
|
116
|
-
takeProfit?: string;
|
|
117
|
-
stopLoss?: string;
|
|
118
|
-
}): PerpsTransactionParams;
|
|
119
|
-
/**
|
|
120
|
-
* Build cancel limit order transaction.
|
|
121
|
-
*/
|
|
122
|
-
buildCancelLimitOrder(params: {
|
|
123
|
-
market: string;
|
|
124
|
-
orderId: string;
|
|
125
|
-
}): PerpsTransactionParams;
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=perps.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"perps.d.ts","sourceRoot":"","sources":["../../src/modules/perps.ts"],"names":[],"mappings":"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"}
|
package/dist/modules/perps.js
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Perpetual futures module for Levana perps on Rujira
|
|
3
|
-
* @module modules/perps
|
|
4
|
-
*/
|
|
5
|
-
import { RujiraError, RujiraErrorCode, wrapError } from '../errors.js';
|
|
6
|
-
import { isPositiveBigInt, isPositiveNumber } from '../utils/format.js';
|
|
7
|
-
// GraphQL endpoint
|
|
8
|
-
const RUJIRA_GRAPHQL_URL = 'https://api.rujira.network/api/graphql';
|
|
9
|
-
const PERPS_MARKETS_QUERY = `
|
|
10
|
-
{
|
|
11
|
-
perps {
|
|
12
|
-
id
|
|
13
|
-
name
|
|
14
|
-
address
|
|
15
|
-
baseAsset { asset }
|
|
16
|
-
quoteAsset { asset }
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
`;
|
|
20
|
-
/**
|
|
21
|
-
* Levana perpetual futures module.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```typescript
|
|
25
|
-
* const client = new RujiraClient();
|
|
26
|
-
* await client.connect();
|
|
27
|
-
*
|
|
28
|
-
* // List markets
|
|
29
|
-
* const markets = await client.perps.getMarkets();
|
|
30
|
-
*
|
|
31
|
-
* // Build open position
|
|
32
|
-
* const tx = client.perps.buildOpenPosition({
|
|
33
|
-
* market: 'thor1cyd6...',
|
|
34
|
-
* direction: 'long',
|
|
35
|
-
* leverage: '10',
|
|
36
|
-
* collateralDenom: 'eth-usdc-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
|
|
37
|
-
* collateralAmount: '100000000',
|
|
38
|
-
* });
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
export class RujiraPerps {
|
|
42
|
-
constructor(client) {
|
|
43
|
-
this.client = client;
|
|
44
|
-
}
|
|
45
|
-
// --- Market Discovery ---
|
|
46
|
-
/**
|
|
47
|
-
* Get available perps markets from GraphQL.
|
|
48
|
-
*/
|
|
49
|
-
async getMarkets() {
|
|
50
|
-
try {
|
|
51
|
-
const response = await fetch(RUJIRA_GRAPHQL_URL, {
|
|
52
|
-
method: 'POST',
|
|
53
|
-
headers: { 'Content-Type': 'application/json' },
|
|
54
|
-
body: JSON.stringify({ query: PERPS_MARKETS_QUERY }),
|
|
55
|
-
});
|
|
56
|
-
if (!response.ok) {
|
|
57
|
-
throw new RujiraError(RujiraErrorCode.NETWORK_ERROR, `GraphQL request failed: ${response.status}`);
|
|
58
|
-
}
|
|
59
|
-
const json = (await response.json());
|
|
60
|
-
if (json.errors?.length) {
|
|
61
|
-
throw new RujiraError(RujiraErrorCode.NETWORK_ERROR, `GraphQL errors: ${json.errors[0].message}`);
|
|
62
|
-
}
|
|
63
|
-
return (json.data?.perps ?? []).map(m => ({
|
|
64
|
-
address: m.address,
|
|
65
|
-
name: m.name,
|
|
66
|
-
baseAsset: m.baseAsset.asset,
|
|
67
|
-
quoteAsset: m.quoteAsset.asset,
|
|
68
|
-
}));
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
throw wrapError(error);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// --- Market Queries ---
|
|
75
|
-
/**
|
|
76
|
-
* Query market status from the Levana contract.
|
|
77
|
-
*/
|
|
78
|
-
async getMarketStatus(marketAddress) {
|
|
79
|
-
try {
|
|
80
|
-
return await this.client.queryContract(marketAddress, { status: { price: null } });
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
throw wrapError(error);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Query positions for an owner on a market.
|
|
88
|
-
*/
|
|
89
|
-
async getPositions(marketAddress, owner) {
|
|
90
|
-
try {
|
|
91
|
-
return await this.client.queryContract(marketAddress, {
|
|
92
|
-
positions: { owner, start_after: null, limit: 50 },
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
throw wrapError(error);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Query limit orders for an owner on a market.
|
|
101
|
-
*/
|
|
102
|
-
async getLimitOrders(marketAddress, owner) {
|
|
103
|
-
try {
|
|
104
|
-
return await this.client.queryContract(marketAddress, {
|
|
105
|
-
limit_orders: { owner, start_after: null, limit: 50 },
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
throw wrapError(error);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// --- Position Management ---
|
|
113
|
-
/**
|
|
114
|
-
* Build open position transaction.
|
|
115
|
-
*/
|
|
116
|
-
buildOpenPosition(params) {
|
|
117
|
-
if (!params.leverage || !isPositiveNumber(params.leverage)) {
|
|
118
|
-
throw new RujiraError(RujiraErrorCode.INVALID_AMOUNT, 'Leverage must be a positive number string (e.g. "2", "1.5")');
|
|
119
|
-
}
|
|
120
|
-
if (!params.collateralAmount || !isPositiveBigInt(params.collateralAmount)) {
|
|
121
|
-
throw new RujiraError(RujiraErrorCode.INVALID_AMOUNT, 'Collateral amount must be a positive integer string');
|
|
122
|
-
}
|
|
123
|
-
return {
|
|
124
|
-
contractAddress: params.market,
|
|
125
|
-
executeMsg: {
|
|
126
|
-
open_position: {
|
|
127
|
-
slippage_assert: null,
|
|
128
|
-
leverage: params.leverage,
|
|
129
|
-
direction: params.direction,
|
|
130
|
-
stop_loss_override: params.stopLoss ?? null,
|
|
131
|
-
take_profit: params.takeProfit ?? '+Inf',
|
|
132
|
-
},
|
|
133
|
-
},
|
|
134
|
-
funds: [{ denom: params.collateralDenom, amount: params.collateralAmount }],
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Build close position transaction.
|
|
139
|
-
*/
|
|
140
|
-
buildClosePosition(params) {
|
|
141
|
-
return {
|
|
142
|
-
contractAddress: params.market,
|
|
143
|
-
executeMsg: { close_position: { id: params.positionId, slippage_assert: null } },
|
|
144
|
-
funds: [],
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Build update take profit transaction.
|
|
149
|
-
*/
|
|
150
|
-
buildUpdateTakeProfit(params) {
|
|
151
|
-
return {
|
|
152
|
-
contractAddress: params.market,
|
|
153
|
-
executeMsg: { update_position_take_profit_price: { id: params.positionId, price: params.price } },
|
|
154
|
-
funds: [],
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Build update stop loss transaction.
|
|
159
|
-
*/
|
|
160
|
-
buildUpdateStopLoss(params) {
|
|
161
|
-
return {
|
|
162
|
-
contractAddress: params.market,
|
|
163
|
-
executeMsg: { update_position_stop_loss_price: { id: params.positionId, stop_loss: params.stopLoss } },
|
|
164
|
-
funds: [],
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Build add collateral transaction.
|
|
169
|
-
*/
|
|
170
|
-
buildAddCollateral(params) {
|
|
171
|
-
if (!params.amount || !isPositiveBigInt(params.amount)) {
|
|
172
|
-
throw new RujiraError(RujiraErrorCode.INVALID_AMOUNT, 'Collateral amount must be a positive integer string');
|
|
173
|
-
}
|
|
174
|
-
return {
|
|
175
|
-
contractAddress: params.market,
|
|
176
|
-
executeMsg: { update_position_add_collateral_impact_leverage: { id: params.positionId } },
|
|
177
|
-
funds: [{ denom: params.denom, amount: params.amount }],
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Build place limit order transaction.
|
|
182
|
-
*/
|
|
183
|
-
buildPlaceLimitOrder(params) {
|
|
184
|
-
if (!params.leverage || !isPositiveNumber(params.leverage)) {
|
|
185
|
-
throw new RujiraError(RujiraErrorCode.INVALID_AMOUNT, 'Leverage must be a positive number string (e.g. "2", "1.5")');
|
|
186
|
-
}
|
|
187
|
-
if (!params.collateralAmount || !isPositiveBigInt(params.collateralAmount)) {
|
|
188
|
-
throw new RujiraError(RujiraErrorCode.INVALID_AMOUNT, 'Collateral amount must be a positive integer string');
|
|
189
|
-
}
|
|
190
|
-
return {
|
|
191
|
-
contractAddress: params.market,
|
|
192
|
-
executeMsg: {
|
|
193
|
-
place_limit_order: {
|
|
194
|
-
trigger_price: params.triggerPrice,
|
|
195
|
-
leverage: params.leverage,
|
|
196
|
-
direction: params.direction,
|
|
197
|
-
stop_loss_override: params.stopLoss ?? null,
|
|
198
|
-
take_profit: params.takeProfit ?? '+Inf',
|
|
199
|
-
},
|
|
200
|
-
},
|
|
201
|
-
funds: [{ denom: params.collateralDenom, amount: params.collateralAmount }],
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Build cancel limit order transaction.
|
|
206
|
-
*/
|
|
207
|
-
buildCancelLimitOrder(params) {
|
|
208
|
-
return {
|
|
209
|
-
contractAddress: params.market,
|
|
210
|
-
executeMsg: { cancel_limit_order: { order_id: params.orderId } },
|
|
211
|
-
funds: [],
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
}
|