@elizaos/plugin-hyperliquid-app 2.0.3-beta.6 → 2.0.3-beta.7
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/HyperliquidAppView.d.ts +4 -0
- package/dist/HyperliquidAppView.d.ts.map +1 -0
- package/dist/HyperliquidAppView.interact.d.ts +10 -0
- package/dist/HyperliquidAppView.interact.d.ts.map +1 -0
- package/dist/HyperliquidAppView.interact.js +70 -0
- package/dist/HyperliquidAppView.interact.js.map +1 -0
- package/dist/HyperliquidAppView.js +199 -0
- package/dist/HyperliquidAppView.js.map +1 -0
- package/dist/HyperliquidPositionsPanel.d.ts +12 -0
- package/dist/HyperliquidPositionsPanel.d.ts.map +1 -0
- package/dist/HyperliquidPositionsPanel.js +194 -0
- package/dist/HyperliquidPositionsPanel.js.map +1 -0
- package/dist/HyperliquidView.d.ts +14 -0
- package/dist/HyperliquidView.d.ts.map +1 -0
- package/dist/HyperliquidView.js +56 -0
- package/dist/HyperliquidView.js.map +1 -0
- package/dist/__fixtures__/contract.d.ts +5 -0
- package/dist/__fixtures__/contract.d.ts.map +1 -0
- package/dist/__fixtures__/contract.js +87 -0
- package/dist/__fixtures__/contract.js.map +1 -0
- package/dist/actions/perpetual-market.d.ts +38 -0
- package/dist/actions/perpetual-market.d.ts.map +1 -0
- package/dist/actions/perpetual-market.js +653 -0
- package/dist/actions/perpetual-market.js.map +1 -0
- package/dist/client.d.ts +9 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +15 -0
- package/dist/client.js.map +1 -0
- package/dist/components/HyperliquidSpatialView.d.ts +46 -0
- package/dist/components/HyperliquidSpatialView.d.ts.map +1 -0
- package/dist/components/HyperliquidSpatialView.js +214 -0
- package/dist/components/HyperliquidSpatialView.js.map +1 -0
- package/dist/hyperliquid-app-view-bundle.d.ts +3 -0
- package/dist/hyperliquid-app-view-bundle.d.ts.map +1 -0
- package/dist/hyperliquid-app-view-bundle.js +7 -0
- package/dist/hyperliquid-app-view-bundle.js.map +1 -0
- package/dist/hyperliquid-app.d.ts +4 -0
- package/dist/hyperliquid-app.d.ts.map +1 -0
- package/dist/hyperliquid-app.js +18 -0
- package/dist/hyperliquid-app.js.map +1 -0
- package/dist/hyperliquid-contracts.d.ts +152 -0
- package/dist/hyperliquid-contracts.d.ts.map +1 -0
- package/dist/hyperliquid-contracts.js +17 -0
- package/dist/hyperliquid-contracts.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +130 -0
- package/dist/plugin.js.map +1 -0
- package/dist/register-routes.d.ts +2 -0
- package/dist/register-routes.d.ts.map +1 -0
- package/dist/register-routes.js +6 -0
- package/dist/register-routes.js.map +1 -0
- package/dist/register-terminal-view.d.ts +15 -0
- package/dist/register-terminal-view.d.ts.map +1 -0
- package/dist/register-terminal-view.js +34 -0
- package/dist/register-terminal-view.js.map +1 -0
- package/dist/register.d.ts +2 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +17 -0
- package/dist/register.js.map +1 -0
- package/dist/routes.d.ts +25 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +485 -0
- package/dist/routes.js.map +1 -0
- package/dist/ui.d.ts +6 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +12 -0
- package/dist/ui.js.map +1 -0
- package/dist/useHyperliquidState.d.ts +20 -0
- package/dist/useHyperliquidState.d.ts.map +1 -0
- package/dist/useHyperliquidState.js +72 -0
- package/dist/useHyperliquidState.js.map +1 -0
- package/dist/views/bundle.js +463 -0
- package/dist/views/bundle.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SpatialSurface } from "@elizaos/ui/spatial";
|
|
3
|
+
import { useCallback } from "react";
|
|
4
|
+
import {
|
|
5
|
+
HyperliquidSpatialView
|
|
6
|
+
} from "./components/HyperliquidSpatialView.js";
|
|
7
|
+
import { useHyperliquidState } from "./useHyperliquidState.js";
|
|
8
|
+
function navigateHome() {
|
|
9
|
+
if (typeof window === "undefined") return;
|
|
10
|
+
window.dispatchEvent(
|
|
11
|
+
new CustomEvent("eliza:navigate:view", {
|
|
12
|
+
detail: { viewId: "home", viewPath: "/" }
|
|
13
|
+
})
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
function HyperliquidView() {
|
|
17
|
+
const { status, markets, positions, orders, loading, error, unavailable, refresh } = useHyperliquidState();
|
|
18
|
+
const onAction = useCallback(
|
|
19
|
+
(action) => {
|
|
20
|
+
switch (action) {
|
|
21
|
+
case "refresh":
|
|
22
|
+
void refresh();
|
|
23
|
+
return;
|
|
24
|
+
case "back":
|
|
25
|
+
navigateHome();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
[refresh]
|
|
30
|
+
);
|
|
31
|
+
const snapshot = {
|
|
32
|
+
status: {
|
|
33
|
+
publicReadReady: status?.publicReadReady ?? false,
|
|
34
|
+
signerReady: status?.signerReady ?? false,
|
|
35
|
+
executionReady: status?.executionReady ?? false,
|
|
36
|
+
credentialMode: status?.credentialMode ?? "none",
|
|
37
|
+
accountAddress: status?.account.address ?? null,
|
|
38
|
+
vaultReady: status?.vault.ready ?? false,
|
|
39
|
+
executionBlockedReason: status?.executionBlockedReason ?? null,
|
|
40
|
+
vaultGuidance: status?.vault.guidance ?? null
|
|
41
|
+
},
|
|
42
|
+
markets: markets?.markets ?? [],
|
|
43
|
+
positions: positions?.positions ?? [],
|
|
44
|
+
orders: orders?.orders ?? [],
|
|
45
|
+
positionsBlockedReason: positions?.readBlockedReason ?? null,
|
|
46
|
+
ordersBlockedReason: orders?.readBlockedReason ?? null,
|
|
47
|
+
unavailable,
|
|
48
|
+
loading,
|
|
49
|
+
error
|
|
50
|
+
};
|
|
51
|
+
return /* @__PURE__ */ jsx(SpatialSurface, { children: /* @__PURE__ */ jsx(HyperliquidSpatialView, { snapshot, onAction }) });
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
HyperliquidView
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=HyperliquidView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/HyperliquidView.tsx"],"sourcesContent":["/**\n * HyperliquidView — the single GUI/XR data wrapper for the Hyperliquid surface.\n *\n * It owns the live data (status + markets + the agent's own positions + open\n * orders, plus a background poll via {@link useHyperliquidState}) and renders\n * the one presentational {@link HyperliquidSpatialView} inside a\n * {@link SpatialSurface}. Omitting the `modality` prop lets `SpatialSurface`\n * auto-detect GUI vs XR via `window.__elizaXRContext`, so the SAME component\n * serves both surfaces. The TUI surface renders the same\n * `HyperliquidSpatialView` through the terminal registry (see\n * `register-terminal-view.tsx`).\n */\n\nimport { SpatialSurface } from \"@elizaos/ui/spatial\";\nimport { useCallback } from \"react\";\nimport {\n type HyperliquidSnapshot,\n HyperliquidSpatialView,\n} from \"./components/HyperliquidSpatialView.js\";\nimport { useHyperliquidState } from \"./useHyperliquidState.js\";\n\n/** Return to the apps/home surface via the navigation bus. */\nfunction navigateHome(): void {\n if (typeof window === \"undefined\") return;\n window.dispatchEvent(\n new CustomEvent(\"eliza:navigate:view\", {\n detail: { viewId: \"home\", viewPath: \"/\" },\n }),\n );\n}\n\nexport function HyperliquidView() {\n const { status, markets, positions, orders, loading, error, unavailable, refresh } =\n useHyperliquidState();\n\n const onAction = useCallback(\n (action: string) => {\n switch (action) {\n case \"refresh\":\n void refresh();\n return;\n case \"back\":\n navigateHome();\n return;\n }\n },\n [refresh],\n );\n\n const snapshot: HyperliquidSnapshot = {\n status: {\n publicReadReady: status?.publicReadReady ?? false,\n signerReady: status?.signerReady ?? false,\n executionReady: status?.executionReady ?? false,\n credentialMode: status?.credentialMode ?? \"none\",\n accountAddress: status?.account.address ?? null,\n vaultReady: status?.vault.ready ?? false,\n executionBlockedReason: status?.executionBlockedReason ?? null,\n vaultGuidance: status?.vault.guidance ?? null,\n },\n markets: markets?.markets ?? [],\n positions: positions?.positions ?? [],\n orders: orders?.orders ?? [],\n positionsBlockedReason: positions?.readBlockedReason ?? null,\n ordersBlockedReason: orders?.readBlockedReason ?? null,\n unavailable,\n loading,\n error,\n };\n\n return (\n <SpatialSurface>\n <HyperliquidSpatialView snapshot={snapshot} onAction={onAction} />\n </SpatialSurface>\n );\n}\n"],"mappings":"AAwEM;AA3DN,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAC5B;AAAA,EAEE;AAAA,OACK;AACP,SAAS,2BAA2B;AAGpC,SAAS,eAAqB;AAC5B,MAAI,OAAO,WAAW,YAAa;AACnC,SAAO;AAAA,IACL,IAAI,YAAY,uBAAuB;AAAA,MACrC,QAAQ,EAAE,QAAQ,QAAQ,UAAU,IAAI;AAAA,IAC1C,CAAC;AAAA,EACH;AACF;AAEO,SAAS,kBAAkB;AAChC,QAAM,EAAE,QAAQ,SAAS,WAAW,QAAQ,SAAS,OAAO,aAAa,QAAQ,IAC/E,oBAAoB;AAEtB,QAAM,WAAW;AAAA,IACf,CAAC,WAAmB;AAClB,cAAQ,QAAQ;AAAA,QACd,KAAK;AACH,eAAK,QAAQ;AACb;AAAA,QACF,KAAK;AACH,uBAAa;AACb;AAAA,MACJ;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,WAAgC;AAAA,IACpC,QAAQ;AAAA,MACN,iBAAiB,QAAQ,mBAAmB;AAAA,MAC5C,aAAa,QAAQ,eAAe;AAAA,MACpC,gBAAgB,QAAQ,kBAAkB;AAAA,MAC1C,gBAAgB,QAAQ,kBAAkB;AAAA,MAC1C,gBAAgB,QAAQ,QAAQ,WAAW;AAAA,MAC3C,YAAY,QAAQ,MAAM,SAAS;AAAA,MACnC,wBAAwB,QAAQ,0BAA0B;AAAA,MAC1D,eAAe,QAAQ,MAAM,YAAY;AAAA,IAC3C;AAAA,IACA,SAAS,SAAS,WAAW,CAAC;AAAA,IAC9B,WAAW,WAAW,aAAa,CAAC;AAAA,IACpC,QAAQ,QAAQ,UAAU,CAAC;AAAA,IAC3B,wBAAwB,WAAW,qBAAqB;AAAA,IACxD,qBAAqB,QAAQ,qBAAqB;AAAA,IAClD;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SACE,oBAAC,kBACC,8BAAC,0BAAuB,UAAoB,UAAoB,GAClE;AAEJ;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/__fixtures__/contract.ts"],"names":[],"mappings":"AAaA,KAAK,UAAU,GAAG,MAAM,EAAE,CAAC;AA2B3B,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAmClE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CA4BlE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
function isNonEmptyString(value) {
|
|
2
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
3
|
+
}
|
|
4
|
+
function describe(value) {
|
|
5
|
+
if (value === null) return "null";
|
|
6
|
+
if (Array.isArray(value)) return `array[${value.length}]`;
|
|
7
|
+
return typeof value;
|
|
8
|
+
}
|
|
9
|
+
function checkNumericStringOrNull(v, path, value) {
|
|
10
|
+
if (value === null) return;
|
|
11
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
12
|
+
v.push(`${path}: expected numeric-string|null, got ${describe(value)}`);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (!Number.isFinite(Number(value))) {
|
|
16
|
+
v.push(`${path}: expected a numeric string, got ${JSON.stringify(value)}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function validateMarketsResponse(value) {
|
|
20
|
+
const v = [];
|
|
21
|
+
if (typeof value !== "object" || value === null) {
|
|
22
|
+
return ["response: expected object"];
|
|
23
|
+
}
|
|
24
|
+
const r = value;
|
|
25
|
+
if (r.source !== "hyperliquid-info-meta") {
|
|
26
|
+
v.push(
|
|
27
|
+
`source: expected "hyperliquid-info-meta", got ${describe(r.source)}`
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
if (!isNonEmptyString(r.fetchedAt)) v.push("fetchedAt: expected ISO string");
|
|
31
|
+
if (!Array.isArray(r.markets)) {
|
|
32
|
+
v.push("markets: expected array");
|
|
33
|
+
return v;
|
|
34
|
+
}
|
|
35
|
+
r.markets.forEach((m, i) => {
|
|
36
|
+
const path = `markets[${i}]`;
|
|
37
|
+
if (!isNonEmptyString(m.name))
|
|
38
|
+
v.push(`${path}.name: expected non-empty string`);
|
|
39
|
+
if (typeof m.index !== "number") v.push(`${path}.index: expected number`);
|
|
40
|
+
if (typeof m.szDecimals !== "number") {
|
|
41
|
+
v.push(`${path}.szDecimals: expected number`);
|
|
42
|
+
}
|
|
43
|
+
if (m.maxLeverage !== null && typeof m.maxLeverage !== "number") {
|
|
44
|
+
v.push(`${path}.maxLeverage: expected number|null`);
|
|
45
|
+
}
|
|
46
|
+
if (typeof m.onlyIsolated !== "boolean") {
|
|
47
|
+
v.push(`${path}.onlyIsolated: expected boolean`);
|
|
48
|
+
}
|
|
49
|
+
if (typeof m.isDelisted !== "boolean") {
|
|
50
|
+
v.push(`${path}.isDelisted: expected boolean`);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return v;
|
|
54
|
+
}
|
|
55
|
+
function validateFundingResponse(value) {
|
|
56
|
+
const v = [];
|
|
57
|
+
if (typeof value !== "object" || value === null) {
|
|
58
|
+
return ["response: expected object"];
|
|
59
|
+
}
|
|
60
|
+
const r = value;
|
|
61
|
+
if (r.source !== "hyperliquid-info-meta-and-asset-ctxs") {
|
|
62
|
+
v.push(`source: unexpected ${describe(r.source)}`);
|
|
63
|
+
}
|
|
64
|
+
if (!isNonEmptyString(r.fetchedAt)) v.push("fetchedAt: expected ISO string");
|
|
65
|
+
if (!Array.isArray(r.rates)) {
|
|
66
|
+
v.push("rates: expected array");
|
|
67
|
+
return v;
|
|
68
|
+
}
|
|
69
|
+
r.rates.forEach((rate, i) => {
|
|
70
|
+
const path = `rates[${i}]`;
|
|
71
|
+
if (!isNonEmptyString(rate.coin)) v.push(`${path}.coin: expected string`);
|
|
72
|
+
if (typeof rate.index !== "number")
|
|
73
|
+
v.push(`${path}.index: expected number`);
|
|
74
|
+
checkNumericStringOrNull(v, `${path}.funding`, rate.funding);
|
|
75
|
+
if (rate.funding === null) v.push(`${path}.funding: must not be null`);
|
|
76
|
+
checkNumericStringOrNull(v, `${path}.premium`, rate.premium);
|
|
77
|
+
checkNumericStringOrNull(v, `${path}.markPx`, rate.markPx);
|
|
78
|
+
checkNumericStringOrNull(v, `${path}.oraclePx`, rate.oraclePx);
|
|
79
|
+
checkNumericStringOrNull(v, `${path}.openInterest`, rate.openInterest);
|
|
80
|
+
});
|
|
81
|
+
return v;
|
|
82
|
+
}
|
|
83
|
+
export {
|
|
84
|
+
validateFundingResponse,
|
|
85
|
+
validateMarketsResponse
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/__fixtures__/contract.ts"],"sourcesContent":["// Structural validators for the Hyperliquid BFF DTOs.\n//\n// Asserts a value produced by `handleHyperliquidRoute` is a real, contract-shaped\n// DTO. Shared by routes.contract.test.ts (recorded real replay, keyless) and\n// routes.real.test.ts (live public Info API drift check). Numeric fields from the\n// Info API arrive as strings (e.g. funding \"0.0000100312\"); the validator enforces\n// the numeric-string contract so a malformed/pre-formatted value is caught.\n\nimport type {\n HyperliquidFundingResponse,\n HyperliquidMarketsResponse,\n} from \"../hyperliquid-contracts.js\";\n\ntype Violations = string[];\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction describe(value: unknown): string {\n if (value === null) return \"null\";\n if (Array.isArray(value)) return `array[${value.length}]`;\n return typeof value;\n}\n\nfunction checkNumericStringOrNull(\n v: Violations,\n path: string,\n value: unknown,\n): void {\n if (value === null) return;\n if (typeof value !== \"string\" || value.trim() === \"\") {\n v.push(`${path}: expected numeric-string|null, got ${describe(value)}`);\n return;\n }\n if (!Number.isFinite(Number(value))) {\n v.push(`${path}: expected a numeric string, got ${JSON.stringify(value)}`);\n }\n}\n\nexport function validateMarketsResponse(value: unknown): Violations {\n const v: Violations = [];\n if (typeof value !== \"object\" || value === null) {\n return [\"response: expected object\"];\n }\n const r = value as HyperliquidMarketsResponse;\n if (r.source !== \"hyperliquid-info-meta\") {\n v.push(\n `source: expected \"hyperliquid-info-meta\", got ${describe(r.source)}`,\n );\n }\n if (!isNonEmptyString(r.fetchedAt)) v.push(\"fetchedAt: expected ISO string\");\n if (!Array.isArray(r.markets)) {\n v.push(\"markets: expected array\");\n return v;\n }\n r.markets.forEach((m, i) => {\n const path = `markets[${i}]`;\n if (!isNonEmptyString(m.name))\n v.push(`${path}.name: expected non-empty string`);\n if (typeof m.index !== \"number\") v.push(`${path}.index: expected number`);\n if (typeof m.szDecimals !== \"number\") {\n v.push(`${path}.szDecimals: expected number`);\n }\n if (m.maxLeverage !== null && typeof m.maxLeverage !== \"number\") {\n v.push(`${path}.maxLeverage: expected number|null`);\n }\n if (typeof m.onlyIsolated !== \"boolean\") {\n v.push(`${path}.onlyIsolated: expected boolean`);\n }\n if (typeof m.isDelisted !== \"boolean\") {\n v.push(`${path}.isDelisted: expected boolean`);\n }\n });\n return v;\n}\n\nexport function validateFundingResponse(value: unknown): Violations {\n const v: Violations = [];\n if (typeof value !== \"object\" || value === null) {\n return [\"response: expected object\"];\n }\n const r = value as HyperliquidFundingResponse;\n if (r.source !== \"hyperliquid-info-meta-and-asset-ctxs\") {\n v.push(`source: unexpected ${describe(r.source)}`);\n }\n if (!isNonEmptyString(r.fetchedAt)) v.push(\"fetchedAt: expected ISO string\");\n if (!Array.isArray(r.rates)) {\n v.push(\"rates: expected array\");\n return v;\n }\n r.rates.forEach((rate, i) => {\n const path = `rates[${i}]`;\n if (!isNonEmptyString(rate.coin)) v.push(`${path}.coin: expected string`);\n if (typeof rate.index !== \"number\")\n v.push(`${path}.index: expected number`);\n // funding is required numeric string; the rest are numeric-string|null.\n checkNumericStringOrNull(v, `${path}.funding`, rate.funding);\n if (rate.funding === null) v.push(`${path}.funding: must not be null`);\n checkNumericStringOrNull(v, `${path}.premium`, rate.premium);\n checkNumericStringOrNull(v, `${path}.markPx`, rate.markPx);\n checkNumericStringOrNull(v, `${path}.oraclePx`, rate.oraclePx);\n checkNumericStringOrNull(v, `${path}.openInterest`, rate.openInterest);\n });\n return v;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Action, ActionResult, HandlerCallback, HandlerOptions, IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
import { Service } from "@elizaos/core";
|
|
3
|
+
export declare const PERPETUAL_MARKET_SERVICE_TYPE: "perpetual-market";
|
|
4
|
+
declare const HYPERLIQUID_OPS: readonly ["read", "place_order"];
|
|
5
|
+
type HyperliquidOp = (typeof HYPERLIQUID_OPS)[number];
|
|
6
|
+
interface PerpetualMarketProviderMetadata {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly aliases: readonly string[];
|
|
9
|
+
readonly supportedSubactions: readonly HyperliquidOp[];
|
|
10
|
+
readonly description?: string;
|
|
11
|
+
}
|
|
12
|
+
interface PerpetualMarketProvider extends PerpetualMarketProviderMetadata {
|
|
13
|
+
execute(context: {
|
|
14
|
+
readonly options?: HandlerOptions | Record<string, unknown>;
|
|
15
|
+
readonly op: HyperliquidOp;
|
|
16
|
+
readonly callback?: HandlerCallback;
|
|
17
|
+
}): Promise<ActionResult>;
|
|
18
|
+
}
|
|
19
|
+
export declare class PerpetualMarketService extends Service {
|
|
20
|
+
static serviceType: "perpetual-market";
|
|
21
|
+
capabilityDescription: string;
|
|
22
|
+
private readonly providers;
|
|
23
|
+
private readonly aliases;
|
|
24
|
+
static start(runtime: IAgentRuntime): Promise<PerpetualMarketService>;
|
|
25
|
+
registerProvider(provider: PerpetualMarketProvider): void;
|
|
26
|
+
listProviders(): PerpetualMarketProviderMetadata[];
|
|
27
|
+
route(args: {
|
|
28
|
+
readonly target?: string;
|
|
29
|
+
readonly op: HyperliquidOp;
|
|
30
|
+
readonly options?: HandlerOptions | Record<string, unknown>;
|
|
31
|
+
readonly callback?: HandlerCallback;
|
|
32
|
+
}): Promise<ActionResult>;
|
|
33
|
+
stop(): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
export declare const perpetualMarketAction: Action;
|
|
36
|
+
export declare const hyperliquidActions: Action[];
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=perpetual-market.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perpetual-market.d.ts","sourceRoot":"","sources":["../../src/actions/perpetual-market.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EAEZ,eAAe,EACf,cAAc,EACd,aAAa,EAId,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAaxC,eAAO,MAAM,6BAA6B,EAAG,kBAA2B,CAAC;AAyEzE,QAAA,MAAM,eAAe,kCAAmC,CAAC;AACzD,KAAK,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AA2ftD,UAAU,+BAA+B;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,aAAa,EAAE,CAAC;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,UAAU,uBAAwB,SAAQ,+BAA+B;IACvE,OAAO,CAAC,OAAO,EAAE;QACf,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5D,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;KACrC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3B;AAqCD,qBAAa,sBAAuB,SAAQ,OAAO;IACjD,OAAgB,WAAW,qBAAiC;IAEnD,qBAAqB,SAC0C;IAExE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IACxE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;WAE/B,KAAK,CACzB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,sBAAsB,CAAC;IAMlC,gBAAgB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI;IAQzD,aAAa,IAAI,+BAA+B,EAAE;IAS5C,KAAK,CAAC,IAAI,EAAE;QAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;QAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;KACrC,GAAG,OAAO,CAAC,YAAY,CAAC;IAyDV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC;AAED,eAAO,MAAM,qBAAqB,EAAE,MAqGnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAA4B,CAAC"}
|