nsekit 0.1.2 → 0.3.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/README.md +106 -37
- package/dist/brokers/dhan/DhanBroker.d.ts +10 -4
- package/dist/brokers/dhan/DhanBroker.d.ts.map +1 -1
- package/dist/brokers/dhan/dhan-instruments.d.ts +1 -11
- package/dist/brokers/dhan/dhan-instruments.d.ts.map +1 -1
- package/dist/brokers/finvasia/FinvasiaBroker.d.ts +10 -4
- package/dist/brokers/finvasia/FinvasiaBroker.d.ts.map +1 -1
- package/dist/brokers/finvasia/finvasia-instruments.d.ts +1 -11
- package/dist/brokers/finvasia/finvasia-instruments.d.ts.map +1 -1
- package/dist/brokers/paper/PaperBroker.d.ts +11 -3
- package/dist/brokers/paper/PaperBroker.d.ts.map +1 -1
- package/dist/brokers/zerodha/ZerodhaBroker.d.ts +10 -4
- package/dist/brokers/zerodha/ZerodhaBroker.d.ts.map +1 -1
- package/dist/brokers/zerodha/zerodha-instruments.d.ts +0 -12
- package/dist/brokers/zerodha/zerodha-instruments.d.ts.map +1 -1
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +312 -138
- package/dist/instruments/instrument-master.d.ts +69 -16
- package/dist/instruments/instrument-master.d.ts.map +1 -1
- package/dist/interfaces/broker.interface.d.ts +8 -3
- package/dist/interfaces/broker.interface.d.ts.map +1 -1
- package/dist/types/broker.d.ts +9 -1
- package/dist/types/broker.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/instruments.d.ts +1 -6
- package/dist/types/instruments.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -34,45 +34,120 @@ Before authenticating, review the credential fields each broker requires: [docs/
|
|
|
34
34
|
```typescript
|
|
35
35
|
import { createBroker } from 'nsekit';
|
|
36
36
|
|
|
37
|
-
//
|
|
37
|
+
const broker = createBroker('finvasia'); // or 'zerodha', 'dhan', 'paper'
|
|
38
|
+
await broker.authenticate({ userId: '...', password: '...', totpSecret: '...', apiKey: '...', vendorCode: '...' });
|
|
39
|
+
await broker.sync(); // downloads + indexes ~180K instruments
|
|
40
|
+
|
|
41
|
+
// Exchange is auto-resolved — no need to specify it
|
|
42
|
+
const order = await broker.placeOrder({ tradingSymbol: 'RELIANCE', side: 'BUY', quantity: 1, type: 'LIMIT', product: 'INTRADAY', price: 2400, validity: 'DAY' });
|
|
43
|
+
const cancel = await broker.cancelOrder(order.value.orderId);
|
|
44
|
+
|
|
45
|
+
// Or provide exchange explicitly
|
|
46
|
+
await broker.placeOrder({ tradingSymbol: 'RELIANCE', exchange: 'NSE', side: 'BUY', quantity: 1, type: 'LIMIT', product: 'INTRADAY', price: 2400, validity: 'DAY' });
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
See [docs/broker-credentials.md](docs/broker-credentials.md) for which credential fields each broker requires.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Instrument Master
|
|
54
|
+
|
|
55
|
+
Each broker holds its own `InstrumentMaster` internally. Call `broker.sync()` once at startup, then use `broker.resolve()` and `broker.search()` directly. First sync downloads ~180K instruments and indexes them in memory. Every lookup after that is instant.
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
import { createBroker } from 'nsekit';
|
|
59
|
+
|
|
38
60
|
const broker = createBroker('finvasia');
|
|
61
|
+
await broker.authenticate({ /* ... */ });
|
|
62
|
+
await broker.sync();
|
|
63
|
+
// => { instrumentCount: 184302, source: 'network' }
|
|
39
64
|
|
|
40
|
-
//
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
65
|
+
// Resolve, search, or trade — all on the broker
|
|
66
|
+
const inst = broker.resolve('NIFTY-24000-CE-27FEB26'); // exact canonical lookup
|
|
67
|
+
const results = broker.search('NIFTY', 'NFO', 'CE', 10); // fuzzy search
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### `broker.has` — Capabilities
|
|
71
|
+
|
|
72
|
+
Every broker exposes a `has` object describing what it supports:
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
broker.has.searchAPI // true for Finvasia/Dhan, false for Zerodha
|
|
76
|
+
broker.has.bulkDump // true for all real brokers, false for paper
|
|
77
|
+
broker.has.optionChain // true for Finvasia/Dhan
|
|
78
|
+
broker.has.historicalCandles
|
|
79
|
+
broker.has.websocket
|
|
80
|
+
broker.has.pnlReport // true for paper only
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Where instruments are stored
|
|
84
|
+
|
|
85
|
+
The first sync downloads instruments from the broker and saves them to disk as JSON. On subsequent startups, `broker.sync()` loads from this cache — no network call, near-instant.
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
./InstrumentDump/ (default location)
|
|
89
|
+
finvasia-instruments.json (one file per broker)
|
|
90
|
+
zerodha-instruments.json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Custom path:
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
const broker = createBroker('finvasia', {
|
|
97
|
+
instrumentFilePath: './data/instruments',
|
|
60
98
|
});
|
|
61
|
-
|
|
99
|
+
```
|
|
62
100
|
|
|
63
|
-
|
|
64
|
-
const positions = await broker.getPositions();
|
|
65
|
-
// positions.value => [{ tradingSymbol: 'RELIANCE-EQ', side: 'LONG', quantity: 1, pnl: 12.50, ... }]
|
|
101
|
+
To force a fresh download (skip cache):
|
|
66
102
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
// cancel.value => { orderId: '26020900479551', status: 'CANCELLED' }
|
|
103
|
+
```typescript
|
|
104
|
+
await broker.sync(true);
|
|
70
105
|
```
|
|
71
106
|
|
|
72
|
-
|
|
107
|
+
### Optional: Redis
|
|
108
|
+
|
|
109
|
+
Pass an ioredis-compatible client for distributed instrument caching. Useful when multiple processes (user bots, strategy bots) need instrument data without each loading 180K entries from disk.
|
|
73
110
|
|
|
74
111
|
```typescript
|
|
75
|
-
|
|
112
|
+
import Redis from 'ioredis';
|
|
113
|
+
|
|
114
|
+
const broker = createBroker('finvasia', { redis: new Redis() });
|
|
115
|
+
await broker.authenticate({ /* ... */ });
|
|
116
|
+
await broker.sync();
|
|
117
|
+
// All instruments now in Redis — any process with the same Redis gets O(1) lookups
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Advanced: Standalone InstrumentMaster
|
|
121
|
+
|
|
122
|
+
For multi-broker merge scenarios, `InstrumentMaster` still works standalone:
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
import { InstrumentMaster } from 'nsekit';
|
|
126
|
+
|
|
127
|
+
const imaster = new InstrumentMaster({ redis: new Redis() });
|
|
128
|
+
await imaster.syncBroker('zerodha', zerodhaBroker.instruments);
|
|
129
|
+
await imaster.syncBroker('finvasia', finvasiaBroker.instruments);
|
|
130
|
+
// NIFTY-24000-CE-27FEB26 now has both zerodha and finvasia tokens
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Canonical symbol format
|
|
134
|
+
|
|
135
|
+
All instruments are indexed using a standardized format, regardless of which broker provided them:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
EQ: TATAMOTORS (just underlying)
|
|
139
|
+
FUT: NIFTY-FUT-27FEB26 (underlying-FUT-DDMMMYY)
|
|
140
|
+
CE: NIFTY-24000-CE-27FEB26 (underlying-strike-CE-DDMMMYY)
|
|
141
|
+
PE: NIFTY-24000-PE-27FEB26 (underlying-strike-PE-DDMMMYY)
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Zerodha's `NIFTY26FEB24000CE` and Finvasia's `NIFTY26FEB26C24000` both resolve to `NFO:NIFTY-24000-CE-27FEB26`. You never need to think about broker-specific symbol formats.
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
broker.resolve('TATAMOTORS'); // NSE equity (NSE preferred over BSE)
|
|
148
|
+
broker.resolve('BSE:TATAMOTORS'); // explicit exchange
|
|
149
|
+
broker.resolve('NIFTY-24000-CE-27FEB26'); // NFO option
|
|
150
|
+
broker.resolve('NFO:NIFTY-FUT-27FEB26'); // with exchange prefix
|
|
76
151
|
```
|
|
77
152
|
|
|
78
153
|
---
|
|
@@ -125,13 +200,7 @@ const order = unwrap(result);
|
|
|
125
200
|
|
|
126
201
|
### Instrument Master
|
|
127
202
|
|
|
128
|
-
The `
|
|
129
|
-
|
|
130
|
-
1. Redis hot cache (O(1) lookup for recently used instruments)
|
|
131
|
-
2. In-memory index (built from broker dump files)
|
|
132
|
-
3. Broker search API fallback (for brokers that support it)
|
|
133
|
-
|
|
134
|
-
Each broker implements `IBrokerInstruments` with `streamDump()`, `normalize()`, `search()`, and `resolve()` methods.
|
|
203
|
+
See the [Instrument Master](#instrument-master) section above for full usage. In short: each broker implements `IBrokerInstruments` with `streamDump()` and `normalize()`. The `normalize()` function sets `underlying`, `instrumentType`, `strike`, and `expiry` — `InstrumentMaster` builds canonical symbols automatically and merges entries across brokers.
|
|
135
204
|
|
|
136
205
|
### Paper Broker
|
|
137
206
|
|
|
@@ -9,24 +9,30 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Uses the Dhan v2 REST API directly via fetch.
|
|
11
11
|
*/
|
|
12
|
-
import type { BrokerId, CandleInterval, WSConnectionState } from '../../types/common';
|
|
13
|
-
import type { BrokerCredentials, AuthSession, UnifiedOrderParams, ModifyParams, OrderResult, CancelResult, UnifiedOrder, OrderUpdate, UnifiedPosition, UnifiedHolding, Quote, OptionChainRow, Candle, MarginInfo, FundInfo, Trade, PnLEntry, TickCallback, Subscription } from '../../types/broker';
|
|
14
|
-
import type { IBrokerInstruments } from '../../types/instruments';
|
|
12
|
+
import type { BrokerId, Exchange, CandleInterval, InstrumentType, WSConnectionState } from '../../types/common';
|
|
13
|
+
import type { BrokerCredentials, AuthSession, UnifiedOrderParams, ModifyParams, OrderResult, CancelResult, UnifiedOrder, OrderUpdate, UnifiedPosition, UnifiedHolding, Quote, OptionChainRow, Candle, MarginInfo, FundInfo, Trade, PnLEntry, TickCallback, Subscription, BrokerCapabilities } from '../../types/broker';
|
|
14
|
+
import type { IBrokerInstruments, UnifiedInstrument } from '../../types/instruments';
|
|
15
15
|
import type { IBroker } from '../../interfaces/broker.interface';
|
|
16
16
|
import { type Result } from '../../errors/result';
|
|
17
|
+
import { type SyncMeta, type BrokerOptions } from '../../instruments/instrument-master';
|
|
17
18
|
export declare class DhanBroker implements IBroker {
|
|
18
19
|
readonly id: BrokerId;
|
|
19
20
|
readonly name = "Dhan";
|
|
20
21
|
readonly instruments: IBrokerInstruments;
|
|
22
|
+
readonly has: BrokerCapabilities;
|
|
21
23
|
private session;
|
|
22
24
|
private socket;
|
|
23
25
|
private clientId;
|
|
24
26
|
private readonly instrumentsImpl;
|
|
25
|
-
|
|
27
|
+
private readonly _iMaster;
|
|
28
|
+
constructor(options?: BrokerOptions);
|
|
26
29
|
authenticate(creds: BrokerCredentials): Promise<Result<AuthSession>>;
|
|
27
30
|
refreshSession(session: AuthSession): Promise<Result<AuthSession>>;
|
|
28
31
|
isSessionValid(): boolean;
|
|
29
32
|
getSessionExpiry(): Date | null;
|
|
33
|
+
sync(force?: boolean): Promise<Result<SyncMeta>>;
|
|
34
|
+
resolve(input: string): Result<UnifiedInstrument>;
|
|
35
|
+
search(query: string, exchange?: Exchange, instrumentType?: InstrumentType, limit?: number): UnifiedInstrument[];
|
|
30
36
|
placeOrder(params: UnifiedOrderParams): Promise<Result<OrderResult>>;
|
|
31
37
|
modifyOrder(orderId: string, params: ModifyParams): Promise<Result<OrderResult>>;
|
|
32
38
|
cancelOrder(orderId: string): Promise<Result<CancelResult>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DhanBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/DhanBroker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"DhanBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/DhanBroker.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,20 +25,10 @@ export declare class DhanInstruments implements IBrokerInstruments {
|
|
|
25
25
|
* Stream the Dhan scrip master CSV as an async iterable of raw row objects.
|
|
26
26
|
*/
|
|
27
27
|
streamDump(): AsyncIterable<RawBrokerInstrument>;
|
|
28
|
-
/** Check if dump has changed. */
|
|
29
|
-
checkDumpChanged(lastSync: {
|
|
30
|
-
etag?: string;
|
|
31
|
-
lastModified?: string;
|
|
32
|
-
}): Promise<boolean>;
|
|
33
28
|
/**
|
|
34
29
|
* Search for instruments using the Dhan search API.
|
|
35
30
|
*/
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Resolve a single instrument by exact tradingSymbol and exchange.
|
|
39
|
-
* Uses the Dhan search API and filters for an exact match.
|
|
40
|
-
*/
|
|
41
|
-
resolve(symbol: string, exchange: Exchange): Promise<Result<BrokerInstrumentEntry>>;
|
|
31
|
+
searchAPI(query: string, exchange?: Exchange): Promise<Result<BrokerInstrumentEntry[]>>;
|
|
42
32
|
/** Normalize a raw CSV row into a BrokerInstrumentEntry. */
|
|
43
33
|
normalize(raw: RawBrokerInstrument): BrokerInstrumentEntry;
|
|
44
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dhan-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA6DlD,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,QAAQ,CAAC,YAAY;;;;;MAKnB;IAEF,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,QAAQ,CAAM;IAEtB,mDAAmD;IACnD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAK3D;;OAEG;IACI,UAAU,IAAI,aAAa,CAAC,mBAAmB,CAAC;IAoDvD
|
|
1
|
+
{"version":3,"file":"dhan-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA6DlD,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,QAAQ,CAAC,YAAY;;;;;MAKnB;IAEF,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,QAAQ,CAAM;IAEtB,mDAAmD;IACnD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAK3D;;OAEG;IACI,UAAU,IAAI,aAAa,CAAC,mBAAmB,CAAC;IAoDvD;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAmD7F,4DAA4D;IAC5D,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,qBAAqB;CA+B3D"}
|
|
@@ -9,23 +9,29 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Uses the Shoonya REST API (NorenWClientTP) directly via fetch.
|
|
11
11
|
*/
|
|
12
|
-
import type { BrokerId, CandleInterval, WSConnectionState } from '../../types/common';
|
|
13
|
-
import type { BrokerCredentials, AuthSession, UnifiedOrderParams, ModifyParams, OrderResult, CancelResult, UnifiedOrder, OrderUpdate, UnifiedPosition, UnifiedHolding, Quote, OptionChainRow, Candle, MarginInfo, FundInfo, Trade, PnLEntry, TickCallback, Subscription } from '../../types/broker';
|
|
14
|
-
import type { IBrokerInstruments } from '../../types/instruments';
|
|
12
|
+
import type { BrokerId, Exchange, CandleInterval, InstrumentType, WSConnectionState } from '../../types/common';
|
|
13
|
+
import type { BrokerCredentials, AuthSession, UnifiedOrderParams, ModifyParams, OrderResult, CancelResult, UnifiedOrder, OrderUpdate, UnifiedPosition, UnifiedHolding, Quote, OptionChainRow, Candle, MarginInfo, FundInfo, Trade, PnLEntry, TickCallback, Subscription, BrokerCapabilities } from '../../types/broker';
|
|
14
|
+
import type { IBrokerInstruments, UnifiedInstrument } from '../../types/instruments';
|
|
15
15
|
import type { IBroker } from '../../interfaces/broker.interface';
|
|
16
16
|
import { type Result } from '../../errors/result';
|
|
17
|
+
import { type SyncMeta, type BrokerOptions } from '../../instruments/instrument-master';
|
|
17
18
|
export declare class FinvasiaBroker implements IBroker {
|
|
18
19
|
readonly id: BrokerId;
|
|
19
20
|
readonly name = "Finvasia (Shoonya)";
|
|
20
21
|
readonly instruments: IBrokerInstruments;
|
|
22
|
+
readonly has: BrokerCapabilities;
|
|
21
23
|
private session;
|
|
22
24
|
private socket;
|
|
23
25
|
private readonly instrumentsImpl;
|
|
24
|
-
|
|
26
|
+
private readonly _iMaster;
|
|
27
|
+
constructor(options?: BrokerOptions);
|
|
25
28
|
authenticate(creds: BrokerCredentials): Promise<Result<AuthSession>>;
|
|
26
29
|
refreshSession(session: AuthSession): Promise<Result<AuthSession>>;
|
|
27
30
|
isSessionValid(): boolean;
|
|
28
31
|
getSessionExpiry(): Date | null;
|
|
32
|
+
sync(force?: boolean): Promise<Result<SyncMeta>>;
|
|
33
|
+
resolve(input: string): Result<UnifiedInstrument>;
|
|
34
|
+
search(query: string, exchange?: Exchange, instrumentType?: InstrumentType, limit?: number): UnifiedInstrument[];
|
|
29
35
|
placeOrder(params: UnifiedOrderParams): Promise<Result<OrderResult>>;
|
|
30
36
|
modifyOrder(orderId: string, params: ModifyParams): Promise<Result<OrderResult>>;
|
|
31
37
|
cancelOrder(orderId: string): Promise<Result<CancelResult>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinvasiaBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/FinvasiaBroker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"FinvasiaBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/FinvasiaBroker.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,20 +24,10 @@ export declare class FinvasiaInstruments implements IBrokerInstruments {
|
|
|
24
24
|
* Yields raw row objects parsed from pipe-delimited text.
|
|
25
25
|
*/
|
|
26
26
|
streamDump(): AsyncIterable<RawBrokerInstrument>;
|
|
27
|
-
/** Check if dump has changed since last sync. */
|
|
28
|
-
checkDumpChanged(lastSync: {
|
|
29
|
-
etag?: string;
|
|
30
|
-
lastModified?: string;
|
|
31
|
-
}): Promise<boolean>;
|
|
32
27
|
/**
|
|
33
28
|
* Search for instruments using the Shoonya SearchScrip API.
|
|
34
29
|
*/
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Resolve a single instrument by exact tradingSymbol and exchange.
|
|
38
|
-
* Uses the Shoonya SearchScrip API and filters for an exact match.
|
|
39
|
-
*/
|
|
40
|
-
resolve(symbol: string, exchange: Exchange): Promise<Result<BrokerInstrumentEntry>>;
|
|
30
|
+
searchAPI(query: string, exchange?: Exchange): Promise<Result<BrokerInstrumentEntry[]>>;
|
|
41
31
|
/** Normalize a raw instrument row into a BrokerInstrumentEntry. */
|
|
42
32
|
normalize(raw: RawBrokerInstrument): BrokerInstrumentEntry;
|
|
43
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finvasia-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA4DlD,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,QAAQ,CAAC,YAAY;;;;;MAKnB;IAEF,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,MAAM,CAAM;IAEpB,mDAAmD;IACnD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKzD;;;OAGG;IACI,UAAU,IAAI,aAAa,CAAC,mBAAmB,CAAC;IA6DvD
|
|
1
|
+
{"version":3,"file":"finvasia-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA4DlD,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,QAAQ,CAAC,YAAY;;;;;MAKnB;IAEF,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,MAAM,CAAM;IAEpB,mDAAmD;IACnD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKzD;;;OAGG;IACI,UAAU,IAAI,aAAa,CAAC,mBAAmB,CAAC;IA6DvD;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAgD7F,mEAAmE;IACnE,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,qBAAqB;CA+B3D"}
|
|
@@ -7,16 +7,18 @@
|
|
|
7
7
|
* Paper broker does not connect to any real exchange. It requires a live data
|
|
8
8
|
* source (another IBroker) to be injected for LTP / tick feeds.
|
|
9
9
|
*/
|
|
10
|
-
import type { BrokerId, CandleInterval, WSConnectionState } from '../../types/common';
|
|
11
|
-
import type { BrokerCredentials, AuthSession, UnifiedOrderParams, ModifyParams, OrderResult, CancelResult, UnifiedOrder, OrderUpdate, UnifiedPosition, UnifiedHolding, UnifiedTick, Quote, OptionChainRow, Candle, MarginInfo, FundInfo, Trade, PnLEntry, TickCallback, Subscription } from '../../types/broker';
|
|
12
|
-
import type { IBrokerInstruments } from '../../types/instruments';
|
|
10
|
+
import type { BrokerId, Exchange, CandleInterval, InstrumentType, WSConnectionState } from '../../types/common';
|
|
11
|
+
import type { BrokerCredentials, AuthSession, UnifiedOrderParams, ModifyParams, OrderResult, CancelResult, UnifiedOrder, OrderUpdate, UnifiedPosition, UnifiedHolding, UnifiedTick, Quote, OptionChainRow, Candle, MarginInfo, FundInfo, Trade, PnLEntry, TickCallback, Subscription, BrokerCapabilities } from '../../types/broker';
|
|
12
|
+
import type { IBrokerInstruments, UnifiedInstrument } from '../../types/instruments';
|
|
13
13
|
import type { IBroker } from '../../interfaces/broker.interface';
|
|
14
14
|
import { type Result } from '../../errors/result';
|
|
15
|
+
import { type SyncMeta, type BrokerOptions } from '../../instruments/instrument-master';
|
|
15
16
|
import { type FillEngineConfig } from './paper-fill-engine';
|
|
16
17
|
export declare class PaperBroker implements IBroker {
|
|
17
18
|
readonly id: BrokerId;
|
|
18
19
|
readonly name = "Paper Trading";
|
|
19
20
|
readonly instruments: IBrokerInstruments;
|
|
21
|
+
readonly has: BrokerCapabilities;
|
|
20
22
|
private session;
|
|
21
23
|
private engine;
|
|
22
24
|
private positions;
|
|
@@ -27,6 +29,7 @@ export declare class PaperBroker implements IBroker {
|
|
|
27
29
|
private initialBalance;
|
|
28
30
|
private subscriptions;
|
|
29
31
|
private connectionState;
|
|
32
|
+
private readonly _iMaster;
|
|
30
33
|
/** Optional: inject a live data source for LTP and ticks. */
|
|
31
34
|
private dataSource;
|
|
32
35
|
private dataSourceSub;
|
|
@@ -34,9 +37,14 @@ export declare class PaperBroker implements IBroker {
|
|
|
34
37
|
constructor(config?: {
|
|
35
38
|
initialBalance?: number;
|
|
36
39
|
fillConfig?: Partial<FillEngineConfig>;
|
|
40
|
+
redis?: BrokerOptions['redis'];
|
|
41
|
+
instrumentFilePath?: string;
|
|
37
42
|
});
|
|
38
43
|
/** Inject a live data source for market data forwarding. */
|
|
39
44
|
setDataSource(broker: IBroker): void;
|
|
45
|
+
sync(_force?: boolean): Promise<Result<SyncMeta>>;
|
|
46
|
+
resolve(input: string): Result<UnifiedInstrument>;
|
|
47
|
+
search(query: string, exchange?: Exchange, instrumentType?: InstrumentType, limit?: number): UnifiedInstrument[];
|
|
40
48
|
authenticate(_creds: BrokerCredentials): Promise<Result<AuthSession>>;
|
|
41
49
|
refreshSession(_session: AuthSession): Promise<Result<AuthSession>>;
|
|
42
50
|
isSessionValid(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaperBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/paper/PaperBroker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"PaperBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/paper/PaperBroker.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,25 +9,31 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Uses the kiteconnect SDK under the hood for HTTP calls.
|
|
11
11
|
*/
|
|
12
|
-
import type { BrokerId, CandleInterval, WSConnectionState } from '../../types/common';
|
|
13
|
-
import type { BrokerCredentials, AuthSession, UnifiedOrderParams, ModifyParams, OrderResult, CancelResult, UnifiedOrder, OrderUpdate, UnifiedPosition, UnifiedHolding, Quote, OptionChainRow, Candle, MarginInfo, FundInfo, Trade, PnLEntry, TickCallback, Subscription } from '../../types/broker';
|
|
14
|
-
import type { IBrokerInstruments } from '../../types/instruments';
|
|
12
|
+
import type { BrokerId, Exchange, CandleInterval, InstrumentType, WSConnectionState } from '../../types/common';
|
|
13
|
+
import type { BrokerCredentials, AuthSession, UnifiedOrderParams, ModifyParams, OrderResult, CancelResult, UnifiedOrder, OrderUpdate, UnifiedPosition, UnifiedHolding, Quote, OptionChainRow, Candle, MarginInfo, FundInfo, Trade, PnLEntry, TickCallback, Subscription, BrokerCapabilities } from '../../types/broker';
|
|
14
|
+
import type { IBrokerInstruments, UnifiedInstrument } from '../../types/instruments';
|
|
15
15
|
import type { IBroker } from '../../interfaces/broker.interface';
|
|
16
16
|
import { type Result } from '../../errors/result';
|
|
17
|
+
import { type SyncMeta, type BrokerOptions } from '../../instruments/instrument-master';
|
|
17
18
|
export declare class ZerodhaBroker implements IBroker {
|
|
18
19
|
readonly id: BrokerId;
|
|
19
20
|
readonly name = "Zerodha";
|
|
20
21
|
readonly instruments: IBrokerInstruments;
|
|
22
|
+
readonly has: BrokerCapabilities;
|
|
21
23
|
private session;
|
|
22
24
|
private kite;
|
|
23
25
|
private socket;
|
|
24
26
|
private apiKey;
|
|
25
27
|
private KiteConnect;
|
|
26
|
-
|
|
28
|
+
private readonly _iMaster;
|
|
29
|
+
constructor(options?: BrokerOptions);
|
|
27
30
|
authenticate(creds: BrokerCredentials): Promise<Result<AuthSession>>;
|
|
28
31
|
refreshSession(session: AuthSession): Promise<Result<AuthSession>>;
|
|
29
32
|
isSessionValid(): boolean;
|
|
30
33
|
getSessionExpiry(): Date | null;
|
|
34
|
+
sync(force?: boolean): Promise<Result<SyncMeta>>;
|
|
35
|
+
resolve(input: string): Result<UnifiedInstrument>;
|
|
36
|
+
search(query: string, exchange?: Exchange, instrumentType?: InstrumentType, limit?: number): UnifiedInstrument[];
|
|
31
37
|
placeOrder(params: UnifiedOrderParams): Promise<Result<OrderResult>>;
|
|
32
38
|
modifyOrder(orderId: string, params: ModifyParams): Promise<Result<OrderResult>>;
|
|
33
39
|
cancelOrder(orderId: string): Promise<Result<CancelResult>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZerodhaBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/zerodha/ZerodhaBroker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"ZerodhaBroker.d.ts","sourceRoot":"","sources":["../../../src/brokers/zerodha/ZerodhaBroker.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
* Kite provides a single large CSV at https://api.kite.trade/instruments
|
|
6
6
|
* containing all exchanges. No search API is available.
|
|
7
7
|
*/
|
|
8
|
-
import type { Exchange } from '../../types/common';
|
|
9
8
|
import type { IBrokerInstruments, RawBrokerInstrument, BrokerInstrumentEntry } from '../../types/instruments';
|
|
10
|
-
import type { Result } from '../../errors/result';
|
|
11
9
|
export declare class ZerodhaInstruments implements IBrokerInstruments {
|
|
12
10
|
readonly capabilities: {
|
|
13
11
|
bulkDump: true;
|
|
@@ -20,16 +18,6 @@ export declare class ZerodhaInstruments implements IBrokerInstruments {
|
|
|
20
18
|
* Each yielded object has string keys matching CSV column headers.
|
|
21
19
|
*/
|
|
22
20
|
streamDump(): AsyncIterable<RawBrokerInstrument>;
|
|
23
|
-
/** Check if the dump has changed since last sync using ETag / Last-Modified. */
|
|
24
|
-
checkDumpChanged(lastSync: {
|
|
25
|
-
etag?: string;
|
|
26
|
-
lastModified?: string;
|
|
27
|
-
}): Promise<boolean>;
|
|
28
|
-
/**
|
|
29
|
-
* Resolve a single instrument by exact tradingSymbol and exchange.
|
|
30
|
-
* Zerodha has no search API, so this streams the dump and finds the first match.
|
|
31
|
-
*/
|
|
32
|
-
resolve(symbol: string, exchange: Exchange): Promise<Result<BrokerInstrumentEntry>>;
|
|
33
21
|
/** Normalize a raw CSV row into a BrokerInstrumentEntry. */
|
|
34
22
|
normalize(raw: RawBrokerInstrument): BrokerInstrumentEntry;
|
|
35
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zerodha-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/zerodha/zerodha-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"zerodha-instruments.d.ts","sourceRoot":"","sources":["../../../src/brokers/zerodha/zerodha-instruments.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AA6DjC,qBAAa,kBAAmB,YAAW,kBAAkB;IAC3D,QAAQ,CAAC,YAAY;;;;;MAKnB;IAEF;;;OAGG;IACI,UAAU,IAAI,aAAa,CAAC,mBAAmB,CAAC;IAmDvD,4DAA4D;IAC5D,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,qBAAqB;CA8B3D"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.3.0";
|
|
2
2
|
export * from './types/index';
|
|
3
3
|
export * from './errors/index';
|
|
4
4
|
export type { IBroker } from './interfaces/broker.interface';
|
|
5
5
|
export { InstrumentMaster } from './instruments/instrument-master';
|
|
6
|
+
export type { InstrumentMasterOptions, SyncMeta, BrokerOptions } from './instruments/instrument-master';
|
|
6
7
|
export { WSManager } from './websocket/ws-manager';
|
|
7
8
|
export { SessionManager } from './session/session-manager';
|
|
8
9
|
export { ZerodhaBroker } from './brokers/zerodha/ZerodhaBroker';
|
|
@@ -11,18 +12,22 @@ export { DhanBroker } from './brokers/dhan/DhanBroker';
|
|
|
11
12
|
export { PaperBroker } from './brokers/paper/PaperBroker';
|
|
12
13
|
import type { BrokerId } from './types/common';
|
|
13
14
|
import type { IBroker } from './interfaces/broker.interface';
|
|
15
|
+
import type { BrokerOptions } from './instruments/instrument-master';
|
|
14
16
|
/**
|
|
15
17
|
* Factory function to instantiate a broker adapter by its BrokerId.
|
|
16
18
|
*
|
|
17
19
|
* @param brokerId - One of 'zerodha', 'finvasia', 'dhan', 'paper'
|
|
20
|
+
* @param options - Optional Redis client and instrument file path for the internal InstrumentMaster
|
|
18
21
|
* @returns A new IBroker instance for the specified broker
|
|
19
22
|
* @throws Error if the brokerId is not recognized
|
|
20
23
|
*
|
|
21
24
|
* @example
|
|
22
25
|
* ```ts
|
|
23
|
-
* const broker = createBroker('
|
|
24
|
-
*
|
|
26
|
+
* const broker = createBroker('finvasia', { redis });
|
|
27
|
+
* await broker.authenticate(creds);
|
|
28
|
+
* await broker.sync();
|
|
29
|
+
* broker.resolve('TATAMOTORS');
|
|
25
30
|
* ```
|
|
26
31
|
*/
|
|
27
|
-
export declare function createBroker(brokerId: BrokerId): IBroker;
|
|
32
|
+
export declare function createBroker(brokerId: BrokerId, options?: BrokerOptions): IBroker;
|
|
28
33
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAG/B,YAAY,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAG/B,YAAY,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACxG,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAMrE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAejF"}
|