@dshtrading/kit-us 0.6.0 → 0.6.2
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/lib/fundamentals.d.ts +4 -4
- package/lib/index.d.ts +5 -9
- package/lib/index.js +5 -22
- package/package.json +7 -6
- package/lib/api/lib/index.d.ts +0 -895
- package/lib/api/lib/instrument-form.d.ts +0 -1
package/lib/fundamentals.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StockFundamentals } from "@dshtrading/api";
|
|
2
2
|
//#region src/fundamentals.d.ts
|
|
3
3
|
interface UsFundamentalsOptions {
|
|
4
4
|
symbol: string;
|
|
@@ -18,11 +18,11 @@ declare function normalizeUsSymbol(input: string): string;
|
|
|
18
18
|
declare function fetchUsFundamentals(options: UsFundamentalsOptions): Promise<UsFundamentalsResult>;
|
|
19
19
|
/** 从 Yahoo Finance quoteSummary 动态拉取美股多期财务报表与指标矩阵。 */
|
|
20
20
|
declare function fetchUsFinancialMatrix(symbol: string, fetchImpl?: typeof globalThis.fetch): Promise<{
|
|
21
|
-
matrix?: FinancialReportMatrix;
|
|
22
|
-
profile?: CompanyProfile;
|
|
21
|
+
matrix?: import('@dshtrading/api').FinancialReportMatrix;
|
|
22
|
+
profile?: import('@dshtrading/api').CompanyProfile;
|
|
23
23
|
}>;
|
|
24
24
|
/** 获取完整美股基本面数据包。 */
|
|
25
|
-
declare function fetchUsFundamentalsPackage(symbol: string, fetchImpl?: typeof globalThis.fetch): Promise<FundamentalsPackage>;
|
|
25
|
+
declare function fetchUsFundamentalsPackage(symbol: string, fetchImpl?: typeof globalThis.fetch): Promise<import('@dshtrading/api').FundamentalsPackage>;
|
|
26
26
|
declare function renderUsFundamentals(result: UsFundamentalsResult, requestedSymbol: string): string;
|
|
27
27
|
//#endregion
|
|
28
28
|
export { UsFundamentalsOptions, UsFundamentalsResult, fetchUsFinancialMatrix, fetchUsFundamentals, fetchUsFundamentalsPackage, normalizeUsSymbol, renderUsFundamentals };
|
package/lib/index.d.ts
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
import { UsFundamentalsOptions, UsFundamentalsResult, fetchUsFinancialMatrix, fetchUsFundamentals, fetchUsFundamentalsPackage, normalizeUsSymbol, renderUsFundamentals } from "./fundamentals.js";
|
|
2
2
|
import { AggregateNewsOptions, AggregateNewsResult, NewsItem, NewsSource, aggregateNews, parseGoogleNewsRss, parseSecEdgarAtom } from "./news.js";
|
|
3
|
-
import Schema from "@deepseek-ai/schemastery";
|
|
4
3
|
import { SkillProvider } from "@deepseek-ai/dsh-skill";
|
|
4
|
+
import { KitConfig } from "@dshtrading/base/role-skills";
|
|
5
5
|
import { Context } from "@deepseek-ai/cordis";
|
|
6
|
+
import Schema from "@deepseek-ai/schemastery";
|
|
6
7
|
//#region src/index.d.ts
|
|
7
8
|
declare const provider: SkillProvider;
|
|
8
|
-
|
|
9
|
-
dryRun: boolean;
|
|
10
|
-
liveTrading: boolean;
|
|
11
|
-
/** 角色预设按需收窄技能面;字段缺席保持全量捆绑目录,显式空数组才表示不下发任何技能。 */
|
|
12
|
-
skills?: string[] | null;
|
|
13
|
-
}
|
|
9
|
+
type Config = KitConfig;
|
|
14
10
|
declare const Config: Schema<Config>;
|
|
15
11
|
declare const inject: string[];
|
|
16
12
|
declare const name = "dsh-trading-us-kit";
|
|
17
|
-
/**
|
|
18
|
-
declare
|
|
13
|
+
/** 白名单视图(三态语义与注册骨架见 @dshtrading/base/role-skills)。 */
|
|
14
|
+
declare const providerForSkills: (allowed?: readonly string[] | null) => SkillProvider;
|
|
19
15
|
declare function apply(ctx: Context, config: Config): void;
|
|
20
16
|
declare function createGetNewsTool(toolOptions?: {
|
|
21
17
|
getSources?: () => readonly string[] | undefined;
|
package/lib/index.js
CHANGED
|
@@ -2,9 +2,9 @@ import { aggregateNews, parseGoogleNewsRss, parseSecEdgarAtom } from "./news.js"
|
|
|
2
2
|
import { fetchUsFinancialMatrix, fetchUsFundamentals, fetchUsFundamentalsPackage, normalizeUsSymbol, renderUsFundamentals } from "./fundamentals.js";
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
-
import Schema from "@deepseek-ai/schemastery";
|
|
6
5
|
import { BUNDLED_SKILL_RANK } from "@deepseek-ai/dsh-skill";
|
|
7
6
|
import { defineTool } from "@deepseek-ai/dsh-tools";
|
|
7
|
+
import { kitConfigSchema, kitSkillMessages, registerSkillProvider, skillWhitelistView } from "@dshtrading/base/role-skills";
|
|
8
8
|
import { createGetIndicatorsTool } from "@dshtrading/indicators/tool";
|
|
9
9
|
//#region src/index.ts
|
|
10
10
|
/**
|
|
@@ -112,30 +112,13 @@ const provider = {
|
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
114
|
};
|
|
115
|
-
const Config =
|
|
116
|
-
dryRun: Schema.boolean().default(true),
|
|
117
|
-
liveTrading: Schema.boolean().default(false),
|
|
118
|
-
skills: Schema.union([Schema.array(Schema.string()), Schema.const(null)]).default(null)
|
|
119
|
-
});
|
|
115
|
+
const Config = kitConfigSchema();
|
|
120
116
|
const inject = ["skills", "tools"];
|
|
121
117
|
const name = "dsh-trading-us-kit";
|
|
122
|
-
/**
|
|
123
|
-
|
|
124
|
-
if (!allowed) return provider;
|
|
125
|
-
const unknown = allowed.filter((name) => !SKILL_CANDIDATES.some((c) => c.name === name));
|
|
126
|
-
if (unknown.length > 0) throw new Error(`[${PROVIDER_NAME}] unknown skills in whitelist: ${unknown.join(", ")}`);
|
|
127
|
-
const active = SKILL_CANDIDATES.filter((c) => allowed.includes(c.name));
|
|
128
|
-
return {
|
|
129
|
-
name: provider.name,
|
|
130
|
-
list: () => Promise.resolve(active),
|
|
131
|
-
async get(candidate, options) {
|
|
132
|
-
if (!active.some((c) => c.name === candidate.name)) throw new Error(`[${PROVIDER_NAME}] skill not in whitelist: ${candidate.name}`);
|
|
133
|
-
return provider.get(candidate, options);
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
}
|
|
118
|
+
/** 白名单视图(三态语义与注册骨架见 @dshtrading/base/role-skills)。 */
|
|
119
|
+
const providerForSkills = skillWhitelistView(provider, SKILL_CANDIDATES, kitSkillMessages(PROVIDER_NAME));
|
|
137
120
|
function apply(ctx, config) {
|
|
138
|
-
ctx
|
|
121
|
+
registerSkillProvider(ctx, config, providerForSkills);
|
|
139
122
|
const routerCtx = ctx;
|
|
140
123
|
const readNewsSources = () => (routerCtx.get?.("tradingMarketRouter", false))?.newsSources?.("us");
|
|
141
124
|
const newsTool = createGetNewsTool({ getSources: readNewsSources });
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dshtrading/kit-us",
|
|
3
3
|
"description": "US market toolkit plugin for dsh-trading: US risk checklist skill provider and US news / fundamentals tools; runs as a us-trader preset row (session-scoped)",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.2",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "./lib/index.d.ts",
|
|
@@ -18,19 +18,20 @@
|
|
|
18
18
|
],
|
|
19
19
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@dshtrading/
|
|
22
|
-
"@dshtrading/
|
|
21
|
+
"@dshtrading/base": "0.6.2",
|
|
22
|
+
"@dshtrading/indicators": "0.6.2",
|
|
23
|
+
"@dshtrading/knowledge": "0.6.2"
|
|
23
24
|
},
|
|
24
25
|
"peerDependencies": {
|
|
25
26
|
"@deepseek-ai/cordis": ">=4.0.0",
|
|
26
|
-
"@deepseek-ai/dsh-skill": ">=0.2.
|
|
27
|
-
"@deepseek-ai/dsh-tools": ">=0.2.
|
|
27
|
+
"@deepseek-ai/dsh-skill": ">=0.2.1-rc.2",
|
|
28
|
+
"@deepseek-ai/dsh-tools": ">=0.2.1-rc.2",
|
|
28
29
|
"@deepseek-ai/schemastery": ">=3.18.0"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
32
|
"tsdown": "^0.22.0",
|
|
32
33
|
"vitest": "^3.0.0",
|
|
33
|
-
"@dshtrading/api": "0.6.
|
|
34
|
+
"@dshtrading/api": "0.6.2"
|
|
34
35
|
},
|
|
35
36
|
"scripts": {
|
|
36
37
|
"build": "tsdown",
|
package/lib/api/lib/index.d.ts
DELETED
|
@@ -1,895 +0,0 @@
|
|
|
1
|
-
import "./instrument-form.js";
|
|
2
|
-
import "@deepseek-ai/cordis";
|
|
3
|
-
//#region ../api/lib/index.d.ts
|
|
4
|
-
//#region src/index.d.ts
|
|
5
|
-
/** K线周期(Binance 现货/合约 interval 词汇)。 */
|
|
6
|
-
type Interval = '1m' | '3m' | '5m' | '15m' | '30m' | '1h' | '2h' | '4h' | '6h' | '8h' | '12h' | '1d' | '3d' | '1w' | '1M';
|
|
7
|
-
/** 最新行情快照(公共数据,无需凭证)。 */
|
|
8
|
-
interface Ticker {
|
|
9
|
-
/** 交易对符号,**市场规范词汇**(docs/symbol-vocabulary.md:crypto=BTCUSDT,us=AAPL,cn=600519.SH,hk=00700.HK)。 */
|
|
10
|
-
readonly symbol: string;
|
|
11
|
-
/** 标的/公司名称(如“紫光股份”、“苹果”、“腾讯控股”;部分数据源可缺省)。 */
|
|
12
|
-
readonly name?: string;
|
|
13
|
-
/** 最新成交价。 */
|
|
14
|
-
readonly price: number;
|
|
15
|
-
/** 最优买价(部分数据源可缺省)。 */
|
|
16
|
-
readonly bid?: number;
|
|
17
|
-
/** 最优卖价(部分数据源可缺省)。 */
|
|
18
|
-
readonly ask?: number;
|
|
19
|
-
/** 24h 成交量(base 资产计)。 */
|
|
20
|
-
readonly volume?: number;
|
|
21
|
-
/** 快照时间(epoch ms)。 */
|
|
22
|
-
readonly timestamp: number;
|
|
23
|
-
/** 官方昨收(涨跌基准锚点;部分数据源可缺省,缺省时消费方退回日 K 自算)。 */
|
|
24
|
-
readonly prevClose?: number;
|
|
25
|
-
/** 相对昨收的涨跌幅(百分比,如 -0.89 表示 -0.89%;部分数据源可缺省)。 */
|
|
26
|
-
readonly changePercent?: number;
|
|
27
|
-
}
|
|
28
|
-
/** 单根 K 线。 */
|
|
29
|
-
interface Kline {
|
|
30
|
-
readonly openTime: number;
|
|
31
|
-
readonly open: number;
|
|
32
|
-
readonly high: number;
|
|
33
|
-
readonly low: number;
|
|
34
|
-
readonly close: number;
|
|
35
|
-
readonly volume: number;
|
|
36
|
-
readonly closeTime: number;
|
|
37
|
-
}
|
|
38
|
-
/** 衍生品市场指标快照(持仓量/多空比/资金费等)。 */
|
|
39
|
-
interface DerivativesData {
|
|
40
|
-
/** 交易对符号,市场规范词汇(如 BTCUSDT 或 BTCUSDT-SWAP)。 */
|
|
41
|
-
readonly symbol: string;
|
|
42
|
-
/** 数据来源(如 binance / okx)。 */
|
|
43
|
-
readonly source: string;
|
|
44
|
-
/** 未平仓合约量(Open Interest,base 币数或张数)。 */
|
|
45
|
-
readonly openInterest?: number;
|
|
46
|
-
/** 未平仓合约总价值(USD 或 quote 计价)。 */
|
|
47
|
-
readonly openInterestValue?: number;
|
|
48
|
-
/** 多空人数比(Long/Short Account Ratio)。 */
|
|
49
|
-
readonly longShortRatio?: number;
|
|
50
|
-
/** 大户持仓多空比(Top Trader Long/Short Position Ratio)。 */
|
|
51
|
-
readonly topTraderLongShortRatio?: number;
|
|
52
|
-
/** 主动买入/卖出量比(Taker Buy/Sell Volume Ratio)。 */
|
|
53
|
-
readonly takerBuySellRatio?: number;
|
|
54
|
-
/** 最新资金费率(小数,如 0.0001 表示 0.01%)。 */
|
|
55
|
-
readonly fundingRate?: number;
|
|
56
|
-
/** 预测(下一期)资金费率(小数;交易所未发布预测时缺省,issue #54)。 */
|
|
57
|
-
readonly nextFundingRate?: number;
|
|
58
|
-
/** 下一期资金费率结算时间(epoch ms,GUI 倒计时用,issue #54)。 */
|
|
59
|
-
readonly nextFundingTime?: number;
|
|
60
|
-
/** 标记价格(Mark Price,永续合约;issue #54 基差卡用)。 */
|
|
61
|
-
readonly markPrice?: number;
|
|
62
|
-
/** 指数价格(Index Price,现货指数;与 markPrice 配对计算基差)。 */
|
|
63
|
-
readonly indexPrice?: number;
|
|
64
|
-
/** 快照时间(epoch ms)。 */
|
|
65
|
-
readonly timestamp: number;
|
|
66
|
-
}
|
|
67
|
-
/** 衍生品时序数据点(资金费率历史 / OI 历史共用词汇,issue #54)。 */
|
|
68
|
-
interface DerivativesPoint {
|
|
69
|
-
/** 采样时间(epoch ms)。 */
|
|
70
|
-
readonly time: number;
|
|
71
|
-
/** 采样值(费率序列为小数费率;OI 序列单位与快照 openInterest 同语义)。 */
|
|
72
|
-
readonly value: number;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* 衍生品历史序列(GUI「衍生品」页签趋势卡用,issue #54):
|
|
76
|
-
* 资金费率历史 + 未平仓量历史,时间一律升序(旧→新,与 K 线序列同向)。
|
|
77
|
-
* 可选方法 getDerivativesHistory 的返回面;任一序列不可得时该字段缺省,
|
|
78
|
-
* 消费方按卡降级(隐藏趋势图、保留快照读数)。
|
|
79
|
-
*/
|
|
80
|
-
interface DerivativesHistory {
|
|
81
|
-
/** 交易对符号,市场规范词汇(如 BTCUSDT-SWAP)。 */
|
|
82
|
-
readonly symbol: string;
|
|
83
|
-
/** 数据来源(如 binance / okx)。 */
|
|
84
|
-
readonly source: string;
|
|
85
|
-
/** 资金费率历史(时间升序,value 为小数费率)。 */
|
|
86
|
-
readonly fundingRates?: DerivativesPoint[];
|
|
87
|
-
/** OI 历史(时间升序,value 单位与 DerivativesData.openInterest 同语义)。 */
|
|
88
|
-
readonly openInterest?: DerivativesPoint[];
|
|
89
|
-
}
|
|
90
|
-
/** 加密标的代币经济学与基本面快照。 */
|
|
91
|
-
interface CryptoFundamentals {
|
|
92
|
-
/** 规范符号或代币代码(如 BTCUSDT 或 BTC)。 */
|
|
93
|
-
readonly symbol: string;
|
|
94
|
-
/** 标的资产名称(如 Bitcoin)。 */
|
|
95
|
-
readonly name?: string;
|
|
96
|
-
/** 全球市值排名(Market Cap Rank)。 */
|
|
97
|
-
readonly rank?: number;
|
|
98
|
-
/** 流通市值(USD 计价)。 */
|
|
99
|
-
readonly marketCapUsd?: number;
|
|
100
|
-
/** 完全稀释估值(FDV,USD 计价)。 */
|
|
101
|
-
readonly fdvUsd?: number;
|
|
102
|
-
/** 流通供应量。 */
|
|
103
|
-
readonly circulatingSupply?: number;
|
|
104
|
-
/** 总供应量 / 最大供应量。 */
|
|
105
|
-
readonly totalSupply?: number;
|
|
106
|
-
/** 24h 交易量(USD 计价)。 */
|
|
107
|
-
readonly volume24hUsd?: number;
|
|
108
|
-
/** 快照时间(epoch ms)。 */
|
|
109
|
-
readonly timestamp: number;
|
|
110
|
-
}
|
|
111
|
-
/** 股票市场标的基本面与财务估值快照(US/CN/HK)。 */
|
|
112
|
-
interface StockFundamentals {
|
|
113
|
-
/** 标的规范符号(如 AAPL, 600519.SH, 00700.HK)。 */
|
|
114
|
-
readonly symbol: string;
|
|
115
|
-
/** 公司/标的名称。 */
|
|
116
|
-
readonly name?: string;
|
|
117
|
-
/** 总市值(本位币计价)。 */
|
|
118
|
-
readonly marketCap?: number;
|
|
119
|
-
/** 流通市值(A 股/港股适用)。 */
|
|
120
|
-
readonly floatMarketCap?: number;
|
|
121
|
-
/** 滚动市盈率 PE (TTM)。 */
|
|
122
|
-
readonly peTtm?: number;
|
|
123
|
-
/** 静态市盈率 PE (静)。 */
|
|
124
|
-
readonly peStatic?: number;
|
|
125
|
-
/** 动态/预测市盈率 Forward / Dynamic PE。 */
|
|
126
|
-
readonly peDynamic?: number;
|
|
127
|
-
/** 市净率 PB。 */
|
|
128
|
-
readonly pb?: number;
|
|
129
|
-
/** 市销率 PS。 */
|
|
130
|
-
readonly ps?: number;
|
|
131
|
-
/** 每股收益 EPS。 */
|
|
132
|
-
readonly eps?: number;
|
|
133
|
-
/** 每股净资产 BPS。 */
|
|
134
|
-
readonly bps?: number;
|
|
135
|
-
/** 股息率(小数,如 0.015 表示 1.5%)。 */
|
|
136
|
-
readonly dividendYield?: number;
|
|
137
|
-
/** 换手率(小数或百分比)。 */
|
|
138
|
-
readonly turnoverRate?: number;
|
|
139
|
-
/** 振幅(百分比)。 */
|
|
140
|
-
readonly amplitudePercent?: number;
|
|
141
|
-
/** 涨停价(A 股适用)。 */
|
|
142
|
-
readonly limitUpPrice?: number;
|
|
143
|
-
/** 跌停价(A 股适用)。 */
|
|
144
|
-
readonly limitDownPrice?: number;
|
|
145
|
-
/** 52 周最高价。 */
|
|
146
|
-
readonly fiftyTwoWeekHigh?: number;
|
|
147
|
-
/** 52 周最低价。 */
|
|
148
|
-
readonly fiftyTwoWeekLow?: number;
|
|
149
|
-
/** 快照时间(epoch ms)。 */
|
|
150
|
-
readonly timestamp: number;
|
|
151
|
-
}
|
|
152
|
-
/** 盘口档位(价格 + 挂单量,量单位=标的基准单位:股票股、crypto 币)。 */
|
|
153
|
-
interface OrderbookLevel {
|
|
154
|
-
readonly price: number;
|
|
155
|
-
readonly amount: number;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* 盘口快照(GUI「盘口」竖栏用,issue #39)。实现保证:bids 按价格降序(买一在前)、
|
|
159
|
-
* asks 按价格升序(卖一在前),档位数由数据源决定(沪深五档、crypto 常见 5~20 档)。
|
|
160
|
-
*/
|
|
161
|
-
interface Orderbook {
|
|
162
|
-
readonly symbol: string;
|
|
163
|
-
readonly bids: readonly OrderbookLevel[];
|
|
164
|
-
readonly asks: readonly OrderbookLevel[];
|
|
165
|
-
/** 快照时间(epoch ms)。 */
|
|
166
|
-
readonly timestamp: number;
|
|
167
|
-
}
|
|
168
|
-
/** 逐笔成交(taker 视角:side 为主动方;流水单条)。 */
|
|
169
|
-
interface TradeTick {
|
|
170
|
-
/** 交易所成交 id(字符串透传,排序稳定性由时间戳保证)。 */
|
|
171
|
-
readonly id: string;
|
|
172
|
-
readonly symbol: string;
|
|
173
|
-
readonly price: number;
|
|
174
|
-
/** 成交量(基准单位,同 OrderbookLevel.amount)。 */
|
|
175
|
-
readonly amount: number;
|
|
176
|
-
/** 主动方向:buy=主动买(外盘)、sell=主动卖(内盘);数据源缺方向时 unknown。 */
|
|
177
|
-
readonly side: 'buy' | 'sell' | 'unknown';
|
|
178
|
-
readonly timestamp: number;
|
|
179
|
-
}
|
|
180
|
-
/** 单期财务指标数值与同比变动。 */
|
|
181
|
-
interface FinancialCell {
|
|
182
|
-
/** 指标数值(如 14.18 元 或 19.02%)。 */
|
|
183
|
-
readonly value?: number;
|
|
184
|
-
/** 同比增长率(百分比,如 -3.69 表示 -3.69%,+522.77 表示 +522.77%)。 */
|
|
185
|
-
readonly changePercent?: number;
|
|
186
|
-
}
|
|
187
|
-
/** 单个财务指标行(多期序列)。 */
|
|
188
|
-
interface FinancialIndicatorRow {
|
|
189
|
-
readonly id: string;
|
|
190
|
-
readonly name: string;
|
|
191
|
-
readonly unit?: string;
|
|
192
|
-
/** 期别映射 -> 该期读数与同比(key 对应 periods 数组中的元素,如 '2025/H1')。 */
|
|
193
|
-
readonly values: Record<string, FinancialCell>;
|
|
194
|
-
}
|
|
195
|
-
/** 财务指标大类分组(如“每股指标”、“盈利能力”、“现金流量”等)。 */
|
|
196
|
-
interface FinancialReportGroup {
|
|
197
|
-
readonly id: string;
|
|
198
|
-
readonly title: string;
|
|
199
|
-
readonly rows: FinancialIndicatorRow[];
|
|
200
|
-
}
|
|
201
|
-
/** 历史多期财务报表与指标矩阵(富途牛牛同款)。 */
|
|
202
|
-
interface FinancialReportMatrix {
|
|
203
|
-
/** 币种(如 CNY / HKD / USD)。 */
|
|
204
|
-
readonly currency: string;
|
|
205
|
-
/** 最新报告期标题(如 "2026财年H1 财报")。 */
|
|
206
|
-
readonly latestReportTitle?: string;
|
|
207
|
-
/** 报告期有序列表(由远及近,如 ['2024/H1', '2024/Q3', '2024/FY', '2025/H1', '2025/Q3', '2025/FY', '2026/Q1', '2026/H1'])。 */
|
|
208
|
-
readonly periods: string[];
|
|
209
|
-
/** 分组列表。 */
|
|
210
|
-
readonly groups: FinancialReportGroup[];
|
|
211
|
-
}
|
|
212
|
-
/** 股东持股信息行。 */
|
|
213
|
-
interface ShareholderItem {
|
|
214
|
-
readonly name: string;
|
|
215
|
-
readonly shares?: number;
|
|
216
|
-
readonly ratio?: number;
|
|
217
|
-
readonly change?: string;
|
|
218
|
-
}
|
|
219
|
-
/** 公司/标的简况信息。 */
|
|
220
|
-
interface CompanyProfile {
|
|
221
|
-
readonly symbol: string;
|
|
222
|
-
readonly name?: string;
|
|
223
|
-
readonly fullName?: string;
|
|
224
|
-
readonly nameEn?: string;
|
|
225
|
-
readonly industry?: string;
|
|
226
|
-
readonly sector?: string;
|
|
227
|
-
readonly legalRepresentative?: string;
|
|
228
|
-
readonly chairman?: string;
|
|
229
|
-
readonly generalManager?: string;
|
|
230
|
-
readonly boardSecretary?: string;
|
|
231
|
-
readonly registeredCapital?: string;
|
|
232
|
-
readonly address?: string;
|
|
233
|
-
readonly businessScope?: string;
|
|
234
|
-
readonly employeeCount?: string;
|
|
235
|
-
readonly description?: string;
|
|
236
|
-
readonly listingDate?: string;
|
|
237
|
-
readonly website?: string;
|
|
238
|
-
readonly executives?: Array<{
|
|
239
|
-
name: string;
|
|
240
|
-
title: string;
|
|
241
|
-
}>;
|
|
242
|
-
}
|
|
243
|
-
/** 机构盈利预测与目标价一致预期(富途 预测)。 */
|
|
244
|
-
interface ForecastSummary {
|
|
245
|
-
readonly epsCurrentYear?: number;
|
|
246
|
-
readonly epsNextYear?: number;
|
|
247
|
-
readonly revenueGrowthAvg?: number;
|
|
248
|
-
readonly netProfitGrowthAvg?: number;
|
|
249
|
-
readonly targetPriceAvg?: number;
|
|
250
|
-
readonly buyRatingCount?: number;
|
|
251
|
-
readonly holdRatingCount?: number;
|
|
252
|
-
readonly sellRatingCount?: number;
|
|
253
|
-
readonly totalOrgs?: number;
|
|
254
|
-
readonly items?: Array<{
|
|
255
|
-
readonly year: string;
|
|
256
|
-
readonly eps: number;
|
|
257
|
-
readonly revenue: number;
|
|
258
|
-
readonly netProfit: number;
|
|
259
|
-
readonly orgCount?: number;
|
|
260
|
-
}>;
|
|
261
|
-
}
|
|
262
|
-
/** 研报精选(富途 晨星研报/券商研报)。 */
|
|
263
|
-
interface ResearchReportItem {
|
|
264
|
-
readonly id: string;
|
|
265
|
-
readonly title: string;
|
|
266
|
-
readonly orgName: string;
|
|
267
|
-
readonly author?: string;
|
|
268
|
-
readonly rating?: string;
|
|
269
|
-
readonly publishDate: string;
|
|
270
|
-
readonly summary?: string;
|
|
271
|
-
readonly url?: string;
|
|
272
|
-
}
|
|
273
|
-
/** 主营构成(富途 经营分析/主营构成)。 */
|
|
274
|
-
interface MainOperationSegment {
|
|
275
|
-
readonly segmentName: string;
|
|
276
|
-
readonly classification: 'product' | 'industry' | 'region';
|
|
277
|
-
readonly revenue: number;
|
|
278
|
-
readonly revenueRatio: number;
|
|
279
|
-
readonly grossProfit?: number;
|
|
280
|
-
readonly grossMargin?: number;
|
|
281
|
-
}
|
|
282
|
-
/** 经营效率指标(富途 经营分析/经营效率)。 */
|
|
283
|
-
interface OperatingEfficiency {
|
|
284
|
-
readonly inventoryTurnoverDays?: number;
|
|
285
|
-
readonly accountsReceivableTurnoverDays?: number;
|
|
286
|
-
readonly operatingCycleDays?: number;
|
|
287
|
-
readonly totalAssetTurnover?: number;
|
|
288
|
-
readonly netProfitMargin?: number;
|
|
289
|
-
readonly grossProfitMargin?: number;
|
|
290
|
-
readonly currentRatio?: number;
|
|
291
|
-
readonly quickRatio?: number;
|
|
292
|
-
readonly roe?: number;
|
|
293
|
-
}
|
|
294
|
-
/** 股东增减持 / 内部人交易(富途 聪明钱/股东增减持)。 */
|
|
295
|
-
interface InsiderTradeItem {
|
|
296
|
-
readonly holderName: string;
|
|
297
|
-
readonly changeType: '增持' | '减持' | '不变' | '新进' | string;
|
|
298
|
-
readonly changeShares: number;
|
|
299
|
-
readonly changeRatio?: number;
|
|
300
|
-
readonly postHoldingRatio?: number;
|
|
301
|
-
readonly date?: string;
|
|
302
|
-
readonly averagePrice?: number;
|
|
303
|
-
}
|
|
304
|
-
/** 机构持股明细(富途 聪明钱/机构持股)。 */
|
|
305
|
-
interface InstitutionalHoldingItem {
|
|
306
|
-
readonly orgName?: string;
|
|
307
|
-
readonly orgType: string;
|
|
308
|
-
readonly orgCount?: number;
|
|
309
|
-
readonly holdingShares: number;
|
|
310
|
-
readonly holdingRatio: number;
|
|
311
|
-
readonly marketCap?: number;
|
|
312
|
-
readonly change?: string;
|
|
313
|
-
readonly changeRatio?: number;
|
|
314
|
-
}
|
|
315
|
-
/** 分红派息方案(富途 公司行动/分红派息)。 */
|
|
316
|
-
interface DividendItem {
|
|
317
|
-
readonly planYear: string;
|
|
318
|
-
readonly dividendPlan: string;
|
|
319
|
-
readonly cashDividend?: number;
|
|
320
|
-
readonly exDividendDate?: string;
|
|
321
|
-
readonly dividendDate?: string;
|
|
322
|
-
readonly recordDate?: string;
|
|
323
|
-
readonly dividendYield?: number;
|
|
324
|
-
}
|
|
325
|
-
/** 股份回购方案(富途 公司行动/回购)。 */
|
|
326
|
-
interface BuybackItem {
|
|
327
|
-
readonly date: string;
|
|
328
|
-
readonly buybackAmount?: number;
|
|
329
|
-
readonly buybackShares?: number;
|
|
330
|
-
readonly priceRange?: string;
|
|
331
|
-
readonly status: string;
|
|
332
|
-
}
|
|
333
|
-
/** 拆股并股 / 送转(富途 公司行动/拆股并股)。 */
|
|
334
|
-
interface SplitItem {
|
|
335
|
-
readonly date: string;
|
|
336
|
-
readonly ratio: string;
|
|
337
|
-
readonly description: string;
|
|
338
|
-
}
|
|
339
|
-
/** 股东户数与筹码集中度(富途 聪明钱)。 */
|
|
340
|
-
interface HolderNumSummary {
|
|
341
|
-
readonly totalHolders?: number;
|
|
342
|
-
readonly totalHoldersChangeRatio?: number;
|
|
343
|
-
readonly avgFreeShares?: number;
|
|
344
|
-
readonly avgHoldAmount?: number;
|
|
345
|
-
readonly concentration?: string;
|
|
346
|
-
readonly reportDate?: string;
|
|
347
|
-
}
|
|
348
|
-
/** 集合竞价快照与强弱基准(同花顺 A 股竞价数据面)。 */
|
|
349
|
-
interface AuctionSnapshot {
|
|
350
|
-
readonly symbol: string;
|
|
351
|
-
readonly matchPrice?: number;
|
|
352
|
-
readonly matchVolume?: number;
|
|
353
|
-
readonly unmatchedVolume?: number;
|
|
354
|
-
readonly unmatchedSide?: 'buy' | 'sell';
|
|
355
|
-
readonly strengthIndex?: number;
|
|
356
|
-
readonly stage?: 'call' | 'final';
|
|
357
|
-
readonly timestamp: number;
|
|
358
|
-
}
|
|
359
|
-
/** 涨跌停池与连板天梯条目(同花顺特色短线数据面)。 */
|
|
360
|
-
interface LimitUpPoolItem {
|
|
361
|
-
readonly symbol: string;
|
|
362
|
-
readonly name: string;
|
|
363
|
-
readonly price: number;
|
|
364
|
-
readonly changePercent: number;
|
|
365
|
-
readonly limitType: 'up' | 'down' | 'broken';
|
|
366
|
-
readonly firstLimitTime?: string;
|
|
367
|
-
readonly lastLimitTime?: string;
|
|
368
|
-
readonly limitOrderVolume?: number;
|
|
369
|
-
readonly limitOrderAmount?: number;
|
|
370
|
-
readonly consecutiveBoards?: number;
|
|
371
|
-
readonly breakCount?: number;
|
|
372
|
-
readonly sectorConcept?: string;
|
|
373
|
-
}
|
|
374
|
-
/** 龙虎榜席位与机构明细条目(同花顺特色资金数据面)。 */
|
|
375
|
-
interface DragonTigerItem {
|
|
376
|
-
readonly symbol: string;
|
|
377
|
-
readonly name: string;
|
|
378
|
-
readonly closePrice: number;
|
|
379
|
-
readonly changePercent: number;
|
|
380
|
-
readonly reason: string;
|
|
381
|
-
readonly netBuyAmount: number;
|
|
382
|
-
readonly buyAmount: number;
|
|
383
|
-
readonly sellAmount: number;
|
|
384
|
-
readonly institutionalNetBuy?: number;
|
|
385
|
-
readonly topBrokers?: Array<{
|
|
386
|
-
readonly rank: number;
|
|
387
|
-
readonly brokerName: string;
|
|
388
|
-
readonly type: 'buy' | 'sell';
|
|
389
|
-
readonly buyAmount: number;
|
|
390
|
-
readonly sellAmount: number;
|
|
391
|
-
readonly isInstitutional: boolean;
|
|
392
|
-
}>;
|
|
393
|
-
readonly tradeDate: string;
|
|
394
|
-
}
|
|
395
|
-
/** 聚合基本面数据包(供 Bridge 端点向前端全量交付)。 */
|
|
396
|
-
interface FundamentalsPackage {
|
|
397
|
-
readonly market: string;
|
|
398
|
-
readonly symbol: string;
|
|
399
|
-
readonly stock?: StockFundamentals;
|
|
400
|
-
readonly crypto?: CryptoFundamentals;
|
|
401
|
-
readonly matrix?: FinancialReportMatrix;
|
|
402
|
-
readonly profile?: CompanyProfile;
|
|
403
|
-
readonly shareholders?: ShareholderItem[];
|
|
404
|
-
readonly forecast?: ForecastSummary;
|
|
405
|
-
readonly reports?: ResearchReportItem[];
|
|
406
|
-
readonly mainOperations?: MainOperationSegment[];
|
|
407
|
-
readonly efficiency?: OperatingEfficiency;
|
|
408
|
-
readonly insiderTrades?: InsiderTradeItem[];
|
|
409
|
-
readonly institutionalHoldings?: InstitutionalHoldingItem[];
|
|
410
|
-
readonly holderSummary?: HolderNumSummary;
|
|
411
|
-
readonly dividends?: DividendItem[];
|
|
412
|
-
readonly buybacks?: BuybackItem[];
|
|
413
|
-
readonly splits?: SplitItem[];
|
|
414
|
-
readonly auction?: AuctionSnapshot;
|
|
415
|
-
readonly limitUpItem?: LimitUpPoolItem;
|
|
416
|
-
readonly dragonTiger?: DragonTigerItem;
|
|
417
|
-
}
|
|
418
|
-
type PositionSide = 'long' | 'short';
|
|
419
|
-
/**
|
|
420
|
-
* 保证金模式(合约交易语义,P7):`cross` = 全仓、`isolated` = 逐仓。
|
|
421
|
-
* 现货(cash)不使用该字段——缺席即「非保证金/未设置」。
|
|
422
|
-
*/
|
|
423
|
-
type MarginMode = 'cross' | 'isolated';
|
|
424
|
-
/** 持仓快照。 */
|
|
425
|
-
interface Position {
|
|
426
|
-
readonly symbol: string;
|
|
427
|
-
readonly side: PositionSide;
|
|
428
|
-
/** 仓位数量(正数;方向由 side 表达)。合约仓位是 **base 币数**(连接器已按合约乘数 ctVal 由张换算)。 */
|
|
429
|
-
readonly size: number;
|
|
430
|
-
readonly entryPrice: number;
|
|
431
|
-
readonly markPrice?: number;
|
|
432
|
-
readonly unrealizedPnl?: number;
|
|
433
|
-
readonly leverage?: number;
|
|
434
|
-
/**
|
|
435
|
-
* 强平价(交易所回传原样透传;交易所未提供或不适用时缺席,绝不本地推算强平价——
|
|
436
|
-
* 强平口径与保证金模式、账户级保证金、维持保证金率有关,本地公式会给出错误的安全感)。
|
|
437
|
-
*/
|
|
438
|
-
readonly liquidationPrice?: number;
|
|
439
|
-
/** 维持保证金率(OKX `mgnRatio`;口径由交易所定义,原样透传,不在本地换算或反推)。 */
|
|
440
|
-
readonly marginRatio?: number;
|
|
441
|
-
/** 该仓位的保证金模式;现货持仓与交易所未提供时缺席。 */
|
|
442
|
-
readonly marginMode?: MarginMode;
|
|
443
|
-
/** 名义价值(USD,交易所口径;用于敞口核对,不参与本地风控公式)。 */
|
|
444
|
-
readonly notionalUsd?: number;
|
|
445
|
-
readonly timestamp: number;
|
|
446
|
-
}
|
|
447
|
-
type OrderSide = 'buy' | 'sell';
|
|
448
|
-
type OrderType = 'limit' | 'market';
|
|
449
|
-
type OrderStatus = 'new' | 'partially_filled' | 'filled' | 'canceled' | 'rejected' | 'expired';
|
|
450
|
-
/** 下单请求(安全闸门:dryRun 缺省视为 true)。 */
|
|
451
|
-
interface OrderRequest {
|
|
452
|
-
readonly symbol: string;
|
|
453
|
-
readonly side: OrderSide;
|
|
454
|
-
readonly type: OrderType;
|
|
455
|
-
/** **base 币数量**:合约(永续)由连接器按合约乘数换算成张,消费方恒用币数语义。 */
|
|
456
|
-
readonly quantity: number;
|
|
457
|
-
/** limit 单必填。 */
|
|
458
|
-
readonly price?: number;
|
|
459
|
-
/**
|
|
460
|
-
* 合约订单的保证金模式(缺省 `cross`)。仅对永续(`-SWAP`)有效:
|
|
461
|
-
* 现货订单只允许 cash 语义,传该字段由连接器结构化拒绝
|
|
462
|
-
* (现货逐仓/杠杆是另一个产品面,本仓未接线)。
|
|
463
|
-
* `isolated` 需先在交易所侧设好该标的的逐仓杠杆(OKX `setLeverage`)。
|
|
464
|
-
*/
|
|
465
|
-
readonly marginMode?: MarginMode;
|
|
466
|
-
/** 缺省/true 时仅模拟,不触碰交易所。实盘还受 @dshtrading/authority 的人工签署授权与 approval 约束 [S4]。 */
|
|
467
|
-
readonly dryRun?: boolean;
|
|
468
|
-
}
|
|
469
|
-
/** 订单回执/状态。 */
|
|
470
|
-
interface Order {
|
|
471
|
-
readonly id: string;
|
|
472
|
-
readonly symbol: string;
|
|
473
|
-
readonly side: OrderSide;
|
|
474
|
-
readonly type: OrderType;
|
|
475
|
-
readonly status: OrderStatus;
|
|
476
|
-
readonly price?: number;
|
|
477
|
-
readonly quantity: number;
|
|
478
|
-
readonly filledQuantity?: number;
|
|
479
|
-
/** 本次订单是否为模拟单(回执必须显式回带,防 dry-run 语义丢失)。 */
|
|
480
|
-
readonly dryRun: boolean;
|
|
481
|
-
readonly timestamp: number;
|
|
482
|
-
}
|
|
483
|
-
interface AccountBalance {
|
|
484
|
-
readonly asset: string;
|
|
485
|
-
readonly free: number;
|
|
486
|
-
readonly locked: number;
|
|
487
|
-
}
|
|
488
|
-
/** 成交流水单条(GUI 交易台「成交历史」用,issue #40)。 */
|
|
489
|
-
interface TradeFill {
|
|
490
|
-
/** 交易所成交 id。 */
|
|
491
|
-
readonly id: string;
|
|
492
|
-
readonly symbol: string;
|
|
493
|
-
readonly side: OrderSide;
|
|
494
|
-
readonly price: number;
|
|
495
|
-
/** 成交量(base 币数)。 */
|
|
496
|
-
readonly amount: number;
|
|
497
|
-
/** 手续费(绝对值,币种由 feeAsset 表达)。 */
|
|
498
|
-
readonly fee?: number;
|
|
499
|
-
readonly feeAsset?: string;
|
|
500
|
-
readonly timestamp: number;
|
|
501
|
-
}
|
|
502
|
-
/** 订阅句柄:dispose 即退订(连接器用 ctx.effect/cordis 生命周期托管)。 */
|
|
503
|
-
interface Disposable {
|
|
504
|
-
dispose(): void;
|
|
505
|
-
}
|
|
506
|
-
/**
|
|
507
|
-
* 标的形态轴(2026-10-08 加密永续与 TradFi 永续落地):与 `market` 正交,**不新增市场键**。
|
|
508
|
-
* 缺省 = `spot`——已存自选、localStorage 与 iOS 冻结契约因此零迁移。
|
|
509
|
-
*
|
|
510
|
-
* 形态由规范符号后缀承载(`-SWAP` = 永续),见 docs/guides/symbol-vocabulary.md;
|
|
511
|
-
* `form` 只出现在名册/检索/wire 元数据里,行情方法不新增 form 形参。
|
|
512
|
-
*/
|
|
513
|
-
type InstrumentForm = 'spot' | 'perp';
|
|
514
|
-
/**
|
|
515
|
-
* 标的资产类别标签(仅展示与检索排序用,不承载交易语义)。
|
|
516
|
-
* **只信交易所元数据**(OKX `instCategory`、Binance `underlyingType`+`underlyingSubType`);
|
|
517
|
-
* 取不到时留空,禁止按符号字面猜(`SPX` 在 OKX 是迷因币 SPX6900,标普 500 是 `US500`)。
|
|
518
|
-
*/
|
|
519
|
-
type InstrumentAssetClass = 'crypto' | 'equity' | 'commodity' | 'index';
|
|
520
|
-
/** 合约专有元数据(仅 `form=perp` 有值):交易所元数据原样透传,不本地推断。 */
|
|
521
|
-
interface InstrumentContract {
|
|
522
|
-
/** 合约乘数(OKX ctVal / Binance contractSize)。 */
|
|
523
|
-
readonly multiplier?: number;
|
|
524
|
-
/** 最小价格变动。 */
|
|
525
|
-
readonly tickSize?: number;
|
|
526
|
-
/** 最小下单量/张数步长。 */
|
|
527
|
-
readonly lotSize?: number;
|
|
528
|
-
/** 交易所允许的最大杠杆。 */
|
|
529
|
-
readonly maxLeverage?: number;
|
|
530
|
-
/** 结算币种(如 USDT)。 */
|
|
531
|
-
readonly settleCcy?: string;
|
|
532
|
-
}
|
|
533
|
-
/**
|
|
534
|
-
* 标的检索结果的最小元数据(名册/搜索/wire 共用)。
|
|
535
|
-
* 元素形状对既有 `{ symbol, name? }` 实现向后兼容:`form`/`assetClass`/`contract` 全可选。
|
|
536
|
-
*/
|
|
537
|
-
interface InstrumentRef {
|
|
538
|
-
/** 市场规范词汇符号(docs/guides/symbol-vocabulary.md)。 */
|
|
539
|
-
readonly symbol: string;
|
|
540
|
-
readonly name?: string;
|
|
541
|
-
/** 缺省 = spot(老数据零迁移)。 */
|
|
542
|
-
readonly form?: InstrumentForm;
|
|
543
|
-
readonly assetClass?: InstrumentAssetClass;
|
|
544
|
-
readonly contract?: InstrumentContract;
|
|
545
|
-
}
|
|
546
|
-
/**
|
|
547
|
-
* 行情服务契约:由市场连接器实现,注册到按市场命名空间的 ctx 键(如 ctx.tradingCrypto)。
|
|
548
|
-
* 符号词汇(2026-08-31 规范,docs/guides/symbol-vocabulary.md):入参接受市场规范形与连接器原生形,
|
|
549
|
-
* 输出 `symbol` 一律市场规范形——消费方(GUI/Agent/工作流)与数据源方言解耦。
|
|
550
|
-
*/
|
|
551
|
-
interface MarketDataService {
|
|
552
|
-
getTicker(symbol: string): Promise<Ticker>;
|
|
553
|
-
getKlines(symbol: string, interval: Interval, limit?: number): Promise<Kline[]>;
|
|
554
|
-
subscribeTicker(symbol: string, cb: (ticker: Ticker) => void): Disposable;
|
|
555
|
-
/**
|
|
556
|
-
* 查询本市场/交易所支持的全部标的名册(动态全集,Issue #15)。
|
|
557
|
-
* 输出 `symbol` 一律市场规范词汇(docs/guides/symbol-vocabulary.md),形态由符号后缀承载
|
|
558
|
-
* (`-SWAP` = 永续,`instrumentFormOf` 是唯一裁决实现);每行可带
|
|
559
|
-
* `form`/`assetClass`/`contract` 元数据(InstrumentRef),缺省 = 现货。
|
|
560
|
-
* 可选方法:无公开全集端点的数据源(如 tencent/yahoo/stooq)可缺省或由桥/前端回退。
|
|
561
|
-
*/
|
|
562
|
-
listInstruments?(): Promise<InstrumentRef[]>;
|
|
563
|
-
/**
|
|
564
|
-
* 标的基本面与估值快照(GUI「基本面」页签用,2026-09-02)。
|
|
565
|
-
* 可选方法:仅当数据源在同一公共端点里携带基本面字段时实现
|
|
566
|
-
* (腾讯行情行 cn/hk 已实现);未实现的市场由消费方降级为派生数据(日K 52 周高低)。
|
|
567
|
-
* 输出 `symbol` 一律市场规范词汇(docs/symbol-vocabulary.md)。
|
|
568
|
-
*/
|
|
569
|
-
getFundamentals?(symbol: string): Promise<StockFundamentals>;
|
|
570
|
-
/**
|
|
571
|
-
* 衍生品市场指标快照(GUI「衍生品」面板用,issue #38,2026-09-02):持仓量/
|
|
572
|
-
* 多空比/资金费等微观结构数据,crypto 永续合约市场专属。
|
|
573
|
-
* 可选方法:现货/股票数据源不实现;未实现时消费方直接隐藏面板(不降级不报错)。
|
|
574
|
-
* 入参接受规范形与连接器原生形,输出 `symbol` 一律规范词汇 SWAP 形(BTCUSDT-SWAP)。
|
|
575
|
-
*/
|
|
576
|
-
getDerivatives?(symbol: string): Promise<DerivativesData>;
|
|
577
|
-
/**
|
|
578
|
-
* 衍生品历史序列(GUI「衍生品」页签趋势卡用,issue #54):资金费率历史 +
|
|
579
|
-
* OI 历史,时间升序。可选方法:无公开历史端点的数据源不实现;未实现或失败
|
|
580
|
-
* 时消费方隐藏趋势图、保留快照读数(与快照同族的降级纪律)。
|
|
581
|
-
* 入参接受规范形与连接器原生形,输出 symbol 一律规范词汇 SWAP 形。
|
|
582
|
-
*/
|
|
583
|
-
getDerivativesHistory?(symbol: string): Promise<DerivativesHistory>;
|
|
584
|
-
/**
|
|
585
|
-
* 盘口快照(GUI「盘口」竖栏用,issue #39):档位词汇见 Orderbook。可选方法:
|
|
586
|
-
* 数据源无盘口能力时不实现(如 stooq/yahoo、腾讯 r_hk 港股行档位全 0)。
|
|
587
|
-
* 入参接受规范形与连接器原生形,输出 `symbol` 一律市场规范词汇。
|
|
588
|
-
*/
|
|
589
|
-
getOrderbook?(symbol: string): Promise<Orderbook>;
|
|
590
|
-
/**
|
|
591
|
-
* 最近逐笔成交流水(GUI「分笔」用,issue #39):取最近 limit 笔(缺省 ≤50),
|
|
592
|
-
* **时间升序(旧→新)**,与 K 线序列同向;方向缺省的数据源 side='unknown'。
|
|
593
|
-
* 可选方法:无公共逐笔端点的数据源(腾讯沪深行情行)不实现。
|
|
594
|
-
*/
|
|
595
|
-
getRecentTrades?(symbol: string, limit?: number): Promise<TradeTick[]>;
|
|
596
|
-
}
|
|
597
|
-
/**
|
|
598
|
-
* 杠杆设置请求(合约交易语义,P7;仅 `form=perp` 的标的可传)。
|
|
599
|
-
* dryRun 缺省视为 true:只回本地模拟回执,不触碰交易所(与 placeOrder 同语义)。
|
|
600
|
-
*/
|
|
601
|
-
interface SetLeverageRequest {
|
|
602
|
-
readonly symbol: string;
|
|
603
|
-
/** 目标杠杆倍数(> 0;上限以交易所规格 `InstrumentContract.maxLeverage` 为准,超出即结构化拒绝)。 */
|
|
604
|
-
readonly leverage: number;
|
|
605
|
-
readonly marginMode: MarginMode;
|
|
606
|
-
/** 双向持仓模式下的方向(OKX `posSide`);净持仓模式下缺席。 */
|
|
607
|
-
readonly posSide?: 'long' | 'short';
|
|
608
|
-
/** 全仓模式下按币种设置杠杆时的保证金币(OKX `ccy`);逐仓与净持仓模式缺席。 */
|
|
609
|
-
readonly ccy?: string;
|
|
610
|
-
/** 缺省/true 时仅模拟。实盘还受 @dshtrading/authority 的人工签署授权与 approval 约束 [S4]。 */
|
|
611
|
-
readonly dryRun?: boolean;
|
|
612
|
-
}
|
|
613
|
-
/** 杠杆设置回执(dryRun=true 时是本地模拟回执,不触网)。 */
|
|
614
|
-
interface LeverageSetting {
|
|
615
|
-
readonly symbol: string;
|
|
616
|
-
readonly leverage: number;
|
|
617
|
-
readonly marginMode: MarginMode;
|
|
618
|
-
readonly posSide?: 'long' | 'short';
|
|
619
|
-
readonly ccy?: string;
|
|
620
|
-
/** 本次是否为模拟回执(回执必须显式回带,防 dry-run 语义丢失)。 */
|
|
621
|
-
readonly dryRun: boolean;
|
|
622
|
-
readonly timestamp: number;
|
|
623
|
-
}
|
|
624
|
-
/**
|
|
625
|
-
* 交易服务契约:placeOrder 默认 dry-run;实盘前必须过 @dshtrading/authority 的人工签署授权与
|
|
626
|
-
* ctx.approval.request(交互形态;headless 下 ask=deny,fail-closed [S4])。
|
|
627
|
-
*
|
|
628
|
-
* R3(okx 切片 2026-08-29)修订:cancelOrder 增加可选 symbol、新增 getOrder——
|
|
629
|
-
* OKX 按 (instId, ordId) 双键定位订单,单参 id 形态不够;无其他实现方,扩展向后兼容。
|
|
630
|
-
*
|
|
631
|
-
* P7(合约交易 Tier 2,2026-10-08)修订:新增可选 `setLeverage`——杠杆/保证金模式变更
|
|
632
|
-
* 是实盘动作,必须与下单同门槛(服务缝三态闸门 + base 审批闸门 + 人工签署授权)。
|
|
633
|
-
*/
|
|
634
|
-
interface TradeService {
|
|
635
|
-
placeOrder(req: OrderRequest): Promise<Order>;
|
|
636
|
-
/** 撤单。symbol 可选:按 (symbol, id) 双键定位订单的交易所(如 OKX)必须提供。 */
|
|
637
|
-
cancelOrder(id: string, symbol?: string): Promise<void>;
|
|
638
|
-
/** 查询单笔订单状态(按 (symbol, id) 双键)。 */
|
|
639
|
-
getOrder(symbol: string, id: string): Promise<Order>;
|
|
640
|
-
getPositions(): Promise<Position[]>;
|
|
641
|
-
/**
|
|
642
|
-
* 账户余额快照(issue #40 GUI 交易台;只读,需凭证)。
|
|
643
|
-
* 可选方法:实现方已有只读余额面时实现(connector-okx 的 crypto_get_balance 同源)。
|
|
644
|
-
*/
|
|
645
|
-
getBalances?(): Promise<AccountBalance[]>;
|
|
646
|
-
/**
|
|
647
|
-
* 当前挂单列表(issue #40 GUI 交易台;只读,需凭证)。
|
|
648
|
-
* 可选方法:无批量挂单端点的实现方可缺省(GUI 隐藏挂单区)。
|
|
649
|
-
* 输出 `symbol` 一律市场规范词汇;status 只含 new / partially_filled。
|
|
650
|
-
*/
|
|
651
|
-
listOpenOrders?(symbol?: string): Promise<Order[]>;
|
|
652
|
-
/**
|
|
653
|
-
* 最近成交流水(issue #40 GUI 交易台;只读,需凭证)。
|
|
654
|
-
* 可选方法:时间升序(旧→新),最多 limit 条(缺省 ≤50)。
|
|
655
|
-
*/
|
|
656
|
-
listTradeFills?(symbol?: string, limit?: number): Promise<TradeFill[]>;
|
|
657
|
-
/**
|
|
658
|
-
* 设置合约杠杆与保证金模式(P7 合约交易 Tier 2;仅支持合约的交易所实现)。
|
|
659
|
-
* 可选方法:不实现的连接器缺席即可,消费方按 TRADING_NOT_IMPLEMENTED 语义处理。
|
|
660
|
-
* 这是会改变账户真实风险参数的实盘动作:dryRun 缺省 true(只回本地模拟回执),
|
|
661
|
-
* dryRun=false 必须同时具备人工签署的实盘授权,并经 base 审批闸门。
|
|
662
|
-
*/
|
|
663
|
-
setLeverage?(req: SetLeverageRequest): Promise<LeverageSetting>;
|
|
664
|
-
}
|
|
665
|
-
/**
|
|
666
|
-
* Cordis Context 服务键(能力三角色之「声明」):市场命名空间键由契约包统一声明,
|
|
667
|
-
* 连接器 provide、消费方 inject 时获得完整类型。此处仅类型增强——本包保持
|
|
668
|
-
* 零运行时依赖,不产生任何 JS 输出。
|
|
669
|
-
*/
|
|
670
|
-
declare module '@deepseek-ai/cordis' {
|
|
671
|
-
interface Context {
|
|
672
|
-
/** crypto 市场行情服务(由 Binance 连接器以公共 REST 提供,无需凭证)。 */
|
|
673
|
-
tradingCryptoMarketData: MarketDataService;
|
|
674
|
-
/** us 市场行情服务(由 Stooq 连接器以公共 CSV 端点提供,无需凭证;us 复制 2026-08-31 补齐)。 */
|
|
675
|
-
tradingUsMarketData: MarketDataService;
|
|
676
|
-
/** cn 市场行情服务(由腾讯连接器以公共端点提供,无需凭证;cn+hk 切片 2026-08-31 补齐)。 */
|
|
677
|
-
tradingCnMarketData: MarketDataService;
|
|
678
|
-
/** hk 市场行情服务(由腾讯连接器同包双实例提供,config.market 分流;cn+hk 切片 2026-08-31 补齐)。 */
|
|
679
|
-
tradingHkMarketData: MarketDataService;
|
|
680
|
-
/** futures 市场行情服务(由同花顺期货连接器提供,issue #97;日K + 当日分时聚合)。 */
|
|
681
|
-
tradingFuturesMarketData: MarketDataService;
|
|
682
|
-
/** 全球品种行情(global 市场:大宗/外汇/海外指数;@dshtrading/connector-jin10 dataplane 行提供)。 */
|
|
683
|
-
tradingGlobalMarketData: MarketDataService;
|
|
684
|
-
/**
|
|
685
|
-
* crypto 市场交易服务(R3 2026-08-29 补齐,crypto 市场第一个真实 TradeService):
|
|
686
|
-
* 由 connector-okx 实现(签名 demo/live 下单),与 connector-binance 经
|
|
687
|
-
* Config.enabled 互斥激活同一 tradingCryptoMarketData 键时一并 provide。
|
|
688
|
-
*/
|
|
689
|
-
tradingCryptoTrade: TradeService;
|
|
690
|
-
/**
|
|
691
|
-
* 交易服务注册表(issue #40 GUI 交易台,@dshtrading/api 类型声明):
|
|
692
|
-
* 与 tradingMarketDataRegistry 同构的宿主平面注册面——交易连接器 host 面数据行
|
|
693
|
-
* 注册,GUI 桥按路由当前值惰性解析。**注册不改变安全语义**:placeOrder 的
|
|
694
|
-
* 服务缝闸门(dryRun 缺省 true + @dshtrading/authority 人工签署授权)随服务实例生效;
|
|
695
|
-
* GUI 桥只放行 dry-run 下单与只读查询,实盘路径仍走 Agent 工具的 base 审批闸门。
|
|
696
|
-
*/
|
|
697
|
-
tradingTradeRegistry: TradeRegistry;
|
|
698
|
-
/**
|
|
699
|
-
* 市场路由服务(R5 2026-08-29 补齐,@dshtrading/router 提供):
|
|
700
|
-
* 连接器 apply 时 consult activeProvider(market) 决定是否激活——用户设置
|
|
701
|
-
* dshtrading.markets.<market>.provider 选谁谁激活(docs/exchange-routing.md)。
|
|
702
|
-
*/
|
|
703
|
-
tradingMarketRouter: MarketRouterService;
|
|
704
|
-
/**
|
|
705
|
-
* 行情服务注册表(2026-08-30 注册表模式定稿,@dshtrading/router 同插件提供):
|
|
706
|
-
* 连接器 host 面数据行注册,GUI 行情桥按路由当前值惰性解析(热切换)。
|
|
707
|
-
*/
|
|
708
|
-
tradingMarketDataRegistry: MarketDataRegistry;
|
|
709
|
-
/**
|
|
710
|
-
* 新闻聚合器注册表(Issue #37,@dshtrading/router 同插件提供):
|
|
711
|
-
* 各市场 Kit apply 时注册 aggregateNews 纯函数,GUI 行情桥按市场获取。
|
|
712
|
-
*/
|
|
713
|
-
tradingNewsRegistry: TradingNewsRegistry;
|
|
714
|
-
/** 跨市场快讯源(@dshtrading/connector-jin10 提供;缺席 = 未安装快讯连接器)。 */
|
|
715
|
-
tradingFlashFeed: FlashFeedService;
|
|
716
|
-
/** 宏观/利率源(@dshtrading/connector-jin10 提供;缺席 = 未安装金十连接器)。 */
|
|
717
|
-
tradingMacroFeed: MacroFeedService;
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
|
-
/**
|
|
721
|
-
* 行情服务注册表契约(router 插件提供,2026-08-30 注册表模式定稿):
|
|
722
|
-
* 连接器 host 面数据行不再互斥式 provide 市场键,而是全部注册进本注册表;
|
|
723
|
-
* 消费方(GUI 行情桥)经 active() 按路由当前值惰性解析——settings 变更即刻生效
|
|
724
|
-
* (GUI 热切换),无 watch、无进程重启。preset 平面不走注册表:会话内数据源
|
|
725
|
-
* 一致性是有意语义,切交易所对会话 = 新建会话生效(docs/exchange-routing.md §2.2)。
|
|
726
|
-
*
|
|
727
|
-
* 与 tradeProvider 预留的衔接:本注册表只承载 MarketDataService;数据/交易分离
|
|
728
|
-
* 落地时 TradeService 走独立注册面(不复用本键),铁律 #4 到时再抽象。
|
|
729
|
-
*/
|
|
730
|
-
interface MarketDataRegistration {
|
|
731
|
-
/** 市场 slug(crypto/us/cn/hk;开放词汇,新市场 = 新键)。 */
|
|
732
|
-
readonly market: string;
|
|
733
|
-
/** 提供者 slug(binance/okx/…;开放词汇,第三方连接器可注册新 slug)。 */
|
|
734
|
-
readonly provider: string;
|
|
735
|
-
readonly service: MarketDataService;
|
|
736
|
-
}
|
|
737
|
-
interface MarketDataRegistry {
|
|
738
|
-
/**
|
|
739
|
-
* 注册一个市场的某 provider 行情服务;同 (market, provider) 重复注册抛错
|
|
740
|
-
* (配置错误必须响亮)。返回注销函数(调用方包进 ctx.effect 随 fiber 注销)。
|
|
741
|
-
*/
|
|
742
|
-
register(market: string, provider: string, service: MarketDataService): () => void;
|
|
743
|
-
/**
|
|
744
|
-
* 路由裁决后的当前激活注册项:router 选中的 provider 已注册 → 返回之;
|
|
745
|
-
* 选中了但未注册(包未装/enabled=false)→ undefined(调用方面向用户报错,
|
|
746
|
-
* 不静默降级到别家——用户设置是权威);router 无该市场路由(未知市场键)
|
|
747
|
-
* 且恰好一个注册项 → 返回之(新市场零配置可用);否则 undefined。
|
|
748
|
-
*/
|
|
749
|
-
active(market: string): MarketDataRegistration | undefined;
|
|
750
|
-
/** 某市场全部注册项(诊断/设置 UI 展示用)。 */
|
|
751
|
-
list(market: string): readonly MarketDataRegistration[];
|
|
752
|
-
}
|
|
753
|
-
/** 交易服务注册项(tradingTradeRegistry 的条目,issue #40)。 */
|
|
754
|
-
interface TradeRegistration {
|
|
755
|
-
readonly market: string;
|
|
756
|
-
readonly provider: string;
|
|
757
|
-
readonly service: TradeService;
|
|
758
|
-
}
|
|
759
|
-
/**
|
|
760
|
-
* 交易服务注册表(router 插件同款注册模式,issue #40):交易连接器在 host 面
|
|
761
|
-
* 数据行注册(凭证经 ctx.credentials / 环境变量解析,缺失时只读方法 fail-closed
|
|
762
|
-
* 报 TRADING_CREDENTIALS_MISSING);注册面本身不做安全裁决——闸门在服务缝
|
|
763
|
-
* (placeOrder 三态)与桥层(GUI 只放行 dry-run)。
|
|
764
|
-
*/
|
|
765
|
-
interface TradeRegistry {
|
|
766
|
-
register(market: string, provider: string, service: TradeService): () => void;
|
|
767
|
-
active(market: string): TradeRegistration | undefined;
|
|
768
|
-
list(market: string): readonly TradeRegistration[];
|
|
769
|
-
}
|
|
770
|
-
/**
|
|
771
|
-
* 市场路由服务契约(router 插件提供):按市场查询当前激活的数据/交易所提供方。
|
|
772
|
-
* 用户设置(dshtrading namespace,settings.yaml)是权威;无设置时 = 组合默认值
|
|
773
|
-
* (现状零变化)。供应商取值与连接器的 provider slug 比对,相符者激活。
|
|
774
|
-
*/
|
|
775
|
-
interface MarketRouterService {
|
|
776
|
-
/** 某市场当前激活的 provider slug(settings resolved:用户层赢,缺省 base 默认)。 */
|
|
777
|
-
activeProvider(market: string): string | undefined;
|
|
778
|
-
/** 订阅激活变化(settings commit 驱动)。 */
|
|
779
|
-
watch(cb: (next: string | undefined, prev: string | undefined) => void): () => void;
|
|
780
|
-
}
|
|
781
|
-
/** 新闻/快讯条目(各市场 Kit 统一输出形状)。 */
|
|
782
|
-
interface NewsItem {
|
|
783
|
-
/** 来源标识(如 'eastmoney'、'yahoo'、'googlenews'、'binance'、'coindesk' 等)。 */
|
|
784
|
-
readonly source: string;
|
|
785
|
-
/** 新闻/快讯标题。 */
|
|
786
|
-
readonly title: string;
|
|
787
|
-
/** 详情页 URL。 */
|
|
788
|
-
readonly url: string;
|
|
789
|
-
/** ISO 8601 发布时间。 */
|
|
790
|
-
readonly publishedAt: string;
|
|
791
|
-
/** 关联标的代码(可选,格式随源不同)。 */
|
|
792
|
-
readonly relatedCodes?: readonly string[];
|
|
793
|
-
/** 热度等级(可选;金十快讯网页版 火/热/沸/爆,其他源不填)。 */
|
|
794
|
-
readonly hot?: string;
|
|
795
|
-
}
|
|
796
|
-
/** 新闻聚合请求选项。 */
|
|
797
|
-
interface AggregateNewsOptions {
|
|
798
|
-
/** 输出条数上限(1~50,默认 20)。 */
|
|
799
|
-
limit?: number | undefined;
|
|
800
|
-
/** 时间窗口(小时,1~168,默认 24)。 */
|
|
801
|
-
windowHours?: number | undefined;
|
|
802
|
-
/** 按标的代码过滤(可选)。 */
|
|
803
|
-
symbol?: string | undefined;
|
|
804
|
-
/** CryptoPanic API token(仅 crypto 市场使用,可选)。 */
|
|
805
|
-
cryptoPanicKey?: string | undefined;
|
|
806
|
-
/**
|
|
807
|
-
* 启用的新闻/公告源 id 列表(issue #96 源配置化;各 kit 的 NewsSource 词汇)。
|
|
808
|
-
* 缺省 = 该市场全部默认源;空数组 = 显式关闭(返回空结果)。
|
|
809
|
-
*/
|
|
810
|
-
sources?: readonly string[] | undefined;
|
|
811
|
-
}
|
|
812
|
-
/** 新闻聚合结果。 */
|
|
813
|
-
interface AggregateNewsResult {
|
|
814
|
-
/** 按发布时间倒序的新闻条目。 */
|
|
815
|
-
readonly items: readonly NewsItem[];
|
|
816
|
-
/** 失败的数据源名称(fail-soft 容错:可用源正常返回,不可用源记录在此)。 */
|
|
817
|
-
readonly unavailable: readonly string[];
|
|
818
|
-
}
|
|
819
|
-
/** 新闻聚合器函数签名(各 Kit 导出的 aggregateNews 符合此形状)。 */
|
|
820
|
-
type NewsAggregator = (options?: AggregateNewsOptions) => Promise<AggregateNewsResult>;
|
|
821
|
-
/**
|
|
822
|
-
* 跨市场快讯源契约(2026-09-13 金十接入):host 平面由快讯连接器 provide
|
|
823
|
-
* tradingFlashFeed,GUI 快讯面板(桥 /dshtrading/api/flash)与 agent 快讯工具
|
|
824
|
-
* 共用同一取数实现;服务缺席 = 未安装/未启用该数据源 → 消费方报
|
|
825
|
-
* TRADING_NOT_IMPLEMENTED,绝不把「没有数据源」伪装成「没有快讯」。
|
|
826
|
-
*/
|
|
827
|
-
interface FlashFeedService {
|
|
828
|
-
/**
|
|
829
|
-
* 最新快讯流(cursor 翻页);条目只含元数据(标题/时间/链接)。
|
|
830
|
-
* `hot` 非空时按热度等级服务端过滤(金十网页版 火/热/沸/爆)。
|
|
831
|
-
*/
|
|
832
|
-
listFlash(options?: {
|
|
833
|
-
cursor?: string | undefined;
|
|
834
|
-
limit?: number | undefined;
|
|
835
|
-
hot?: readonly string[] | undefined;
|
|
836
|
-
}): Promise<{
|
|
837
|
-
readonly items: readonly NewsItem[];
|
|
838
|
-
readonly nextCursor?: string | undefined;
|
|
839
|
-
readonly hasMore: boolean;
|
|
840
|
-
}>;
|
|
841
|
-
/** 关键词搜快讯(上游一次性返回、不支持翻页)。 */
|
|
842
|
-
searchFlash(keyword: string, limit?: number | undefined): Promise<readonly NewsItem[]>;
|
|
843
|
-
}
|
|
844
|
-
/**
|
|
845
|
-
* 宏观经济日历条目(金十当周经济数据,2026-09-15):数值均为上游快照原样字符串,
|
|
846
|
-
* `actual` 缺省 = 未公布。
|
|
847
|
-
*/
|
|
848
|
-
interface MacroCalendarEntry {
|
|
849
|
-
/** ISO 8601 公布时间(东八区解释,同 NewsItem 口径)。 */
|
|
850
|
-
readonly publishedAt: string;
|
|
851
|
-
/** 重要度(上游 star,0–5)。 */
|
|
852
|
-
readonly star: number;
|
|
853
|
-
/** 地区(标题前缀推断,如 美国/日本/中国;未识别 = 空串)。 */
|
|
854
|
-
readonly region: string;
|
|
855
|
-
readonly title: string;
|
|
856
|
-
readonly previous?: string;
|
|
857
|
-
readonly consensus?: string;
|
|
858
|
-
readonly actual?: string;
|
|
859
|
-
readonly revised?: string;
|
|
860
|
-
/** 上游公布影响词(利多/利空/影响较小…;原样透传)。 */
|
|
861
|
-
readonly affect?: string;
|
|
862
|
-
}
|
|
863
|
-
/** 央行最新利率条目(金十网页版,2026-09-15)。 */
|
|
864
|
-
interface MacroRateEntry {
|
|
865
|
-
/** 地区(flag 名推断,如 美国/日本/中国;未识别 = 空串)。 */
|
|
866
|
-
readonly region: string;
|
|
867
|
-
readonly bankName: string;
|
|
868
|
-
/** 最新利率(上游原样字符串,如 "3.75"/"0")。 */
|
|
869
|
-
readonly rate: string;
|
|
870
|
-
/** 公布日(上游原样 YYYY-MM-DD)。 */
|
|
871
|
-
readonly publishedAt: string;
|
|
872
|
-
/** 所属指标名(如「美联储利率决定(上限)」;部分央行缺省)。 */
|
|
873
|
-
readonly indicatorName?: string;
|
|
874
|
-
}
|
|
875
|
-
/**
|
|
876
|
-
* 宏观/利率源契约(2026-09-15 金十接入):host 平面由金十连接器 provide
|
|
877
|
-
* tradingMacroFeed,GUI 宏观面板(桥 /dshtrading/api/macro/*)消费;服务缺席 =
|
|
878
|
-
* 未安装/未启用该数据源 → 消费方报 TRADING_NOT_IMPLEMENTED,绝不把「没有数据源」
|
|
879
|
-
* 伪装成「没有数据」。日历走官方 MCP(list_calendar),利率走网页版公开接口
|
|
880
|
-
* (spikes/impl-jin10-macro-rates/EVIDENCE.md)。
|
|
881
|
-
*/
|
|
882
|
-
interface MacroFeedService {
|
|
883
|
-
/** 当周经济日历(周一~周日,北京时间;limit 截尾,缺省全周)。 */
|
|
884
|
-
listCalendar(limit?: number | undefined): Promise<readonly MacroCalendarEntry[]>;
|
|
885
|
-
/** 央行最新利率(全量,客户端按地区过滤)。 */
|
|
886
|
-
listRates(): Promise<readonly MacroRateEntry[]>;
|
|
887
|
-
}
|
|
888
|
-
/** 新闻聚合器注册表契约(Issue #37,router 插件提供)。 */
|
|
889
|
-
interface TradingNewsRegistry {
|
|
890
|
-
register(market: string, aggregator: NewsAggregator): () => void;
|
|
891
|
-
get(market: string): NewsAggregator | undefined;
|
|
892
|
-
markets(): string[];
|
|
893
|
-
}
|
|
894
|
-
//#endregion
|
|
895
|
-
export { AccountBalance, AggregateNewsOptions, AggregateNewsResult, AuctionSnapshot, BuybackItem, CompanyProfile, CryptoFundamentals, DerivativesData, DerivativesHistory, DerivativesPoint, Disposable, DividendItem, DragonTigerItem, FinancialCell, FinancialIndicatorRow, FinancialReportGroup, FinancialReportMatrix, FlashFeedService, ForecastSummary, FundamentalsPackage, HolderNumSummary, InsiderTradeItem, InstitutionalHoldingItem, InstrumentAssetClass, InstrumentContract, InstrumentForm, InstrumentRef, Interval, Kline, LeverageSetting, LimitUpPoolItem, MacroCalendarEntry, MacroFeedService, MacroRateEntry, MainOperationSegment, MarginMode, MarketDataRegistration, MarketDataRegistry, MarketDataService, MarketRouterService, NewsAggregator, NewsItem, OperatingEfficiency, Order, OrderRequest, OrderSide, OrderStatus, OrderType, Orderbook, OrderbookLevel, Position, PositionSide, ResearchReportItem, SetLeverageRequest, ShareholderItem, SplitItem, StockFundamentals, Ticker, TradeFill, TradeRegistration, TradeRegistry, TradeService, TradeTick, TradingNewsRegistry };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "./index.js";
|