nsekit 0.2.0 → 0.3.1
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 +51 -33
- 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/dhan/dhan-socket.d.ts +33 -3
- package/dist/brokers/dhan/dhan-socket.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-constants.d.ts +1 -1
- package/dist/brokers/finvasia/finvasia-constants.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/finvasia/finvasia-socket.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 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +306 -170
- package/dist/instruments/instrument-master.d.ts +9 -2
- 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
|
@@ -35,9 +35,15 @@ Before authenticating, review the credential fields each broker requires: [docs/
|
|
|
35
35
|
import { createBroker } from 'nsekit';
|
|
36
36
|
|
|
37
37
|
const broker = createBroker('finvasia'); // or 'zerodha', 'dhan', 'paper'
|
|
38
|
-
|
|
39
|
-
|
|
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' });
|
|
40
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' });
|
|
41
47
|
```
|
|
42
48
|
|
|
43
49
|
See [docs/broker-credentials.md](docs/broker-credentials.md) for which credential fields each broker requires.
|
|
@@ -46,29 +52,37 @@ See [docs/broker-credentials.md](docs/broker-credentials.md) for which credentia
|
|
|
46
52
|
|
|
47
53
|
## Instrument Master
|
|
48
54
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
**It's always better to sync first, then run everything else.**
|
|
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.
|
|
52
56
|
|
|
53
57
|
```typescript
|
|
54
|
-
import { createBroker
|
|
58
|
+
import { createBroker } from 'nsekit';
|
|
55
59
|
|
|
56
60
|
const broker = createBroker('finvasia');
|
|
57
61
|
await broker.authenticate({ /* ... */ });
|
|
58
|
-
|
|
59
|
-
// Sync once at startup
|
|
60
|
-
const imaster = new InstrumentMaster();
|
|
61
|
-
await imaster.syncBroker('finvasia', broker.instruments);
|
|
62
|
+
await broker.sync();
|
|
62
63
|
// => { instrumentCount: 184302, source: 'network' }
|
|
63
64
|
|
|
64
|
-
//
|
|
65
|
-
const inst =
|
|
66
|
-
const results =
|
|
65
|
+
// Resolve, search, or trade — all on the broker
|
|
66
|
+
const inst = broker.resolve('NIFTY-24000-CE-27FEB26'); // unified nsekit symbol 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
|
|
67
81
|
```
|
|
68
82
|
|
|
69
83
|
### Where instruments are stored
|
|
70
84
|
|
|
71
|
-
The first sync downloads instruments from the broker and saves them to disk as JSON. On subsequent startups, `
|
|
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.
|
|
72
86
|
|
|
73
87
|
```
|
|
74
88
|
./InstrumentDump/ (default location)
|
|
@@ -79,7 +93,7 @@ The first sync downloads instruments from the broker and saves them to disk as J
|
|
|
79
93
|
Custom path:
|
|
80
94
|
|
|
81
95
|
```typescript
|
|
82
|
-
const
|
|
96
|
+
const broker = createBroker('finvasia', {
|
|
83
97
|
instrumentFilePath: './data/instruments',
|
|
84
98
|
});
|
|
85
99
|
```
|
|
@@ -87,34 +101,38 @@ const imaster = new InstrumentMaster({
|
|
|
87
101
|
To force a fresh download (skip cache):
|
|
88
102
|
|
|
89
103
|
```typescript
|
|
90
|
-
await
|
|
104
|
+
await broker.sync(true);
|
|
91
105
|
```
|
|
92
106
|
|
|
93
|
-
###
|
|
107
|
+
### Optional: Redis
|
|
94
108
|
|
|
95
|
-
|
|
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.
|
|
96
110
|
|
|
97
111
|
```typescript
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
|
101
118
|
```
|
|
102
119
|
|
|
103
|
-
###
|
|
120
|
+
### Advanced: Standalone InstrumentMaster
|
|
104
121
|
|
|
105
|
-
|
|
122
|
+
For multi-broker merge scenarios, `InstrumentMaster` still works standalone:
|
|
106
123
|
|
|
107
124
|
```typescript
|
|
108
|
-
import
|
|
125
|
+
import { InstrumentMaster } from 'nsekit';
|
|
109
126
|
|
|
110
127
|
const imaster = new InstrumentMaster({ redis: new Redis() });
|
|
111
|
-
await imaster.syncBroker('
|
|
112
|
-
|
|
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
|
|
113
131
|
```
|
|
114
132
|
|
|
115
|
-
###
|
|
133
|
+
### Unified nsekit symbol format
|
|
116
134
|
|
|
117
|
-
All instruments are indexed using a
|
|
135
|
+
All instruments are indexed using a unified nsekit symbol format, regardless of which broker provided them:
|
|
118
136
|
|
|
119
137
|
```
|
|
120
138
|
EQ: TATAMOTORS (just underlying)
|
|
@@ -126,10 +144,10 @@ PE: NIFTY-24000-PE-27FEB26 (underlying-strike-PE-DDMMMYY)
|
|
|
126
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.
|
|
127
145
|
|
|
128
146
|
```typescript
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
|
133
151
|
```
|
|
134
152
|
|
|
135
153
|
---
|
|
@@ -182,7 +200,7 @@ const order = unwrap(result);
|
|
|
182
200
|
|
|
183
201
|
### Instrument Master
|
|
184
202
|
|
|
185
|
-
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
|
|
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 unified nsekit symbols automatically and merges entries across brokers.
|
|
186
204
|
|
|
187
205
|
### Paper Broker
|
|
188
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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dhan WebSocket adapter.
|
|
3
|
-
* Connects to the Dhan Market Feed WebSocket for live tick data.
|
|
4
|
-
*
|
|
3
|
+
* Connects to the Dhan Market Feed v2 WebSocket for live tick data.
|
|
4
|
+
*
|
|
5
|
+
* Protocol:
|
|
6
|
+
* - Subscribe/unsubscribe requests are JSON.
|
|
7
|
+
* - Tick responses are binary (little-endian).
|
|
8
|
+
* - 8-byte response header: [code(1), msgLen(2), exchSeg(1), securityId(4)]
|
|
5
9
|
*/
|
|
6
10
|
import type { WSConnectionState } from '../../types/common';
|
|
7
11
|
import type { TickCallback, Subscription } from '../../types/broker';
|
|
@@ -24,7 +28,7 @@ export declare class DhanSocket {
|
|
|
24
28
|
disconnect(): void;
|
|
25
29
|
/**
|
|
26
30
|
* Subscribe to securityIds.
|
|
27
|
-
* Tokens should be in "EXCHANGE_SEGMENT
|
|
31
|
+
* Tokens should be in "EXCHANGE_SEGMENT|SECURITY_ID" format (e.g. "NSE_EQ|1333").
|
|
28
32
|
*/
|
|
29
33
|
subscribe(tokens: string[], callback: TickCallback, symbolMap?: Map<string, string>): Subscription;
|
|
30
34
|
/** Unsubscribe from a subscription. */
|
|
@@ -33,6 +37,32 @@ export declare class DhanSocket {
|
|
|
33
37
|
getConnectionState(): WSConnectionState;
|
|
34
38
|
/** Register symbol lookups. */
|
|
35
39
|
setSymbolMap(map: Map<string, string>): void;
|
|
40
|
+
/**
|
|
41
|
+
* Parse a Dhan Market Feed v2 binary response.
|
|
42
|
+
*
|
|
43
|
+
* Header (8 bytes):
|
|
44
|
+
* Byte 0: Feed response code
|
|
45
|
+
* Bytes 1-2: Message length (int16 LE)
|
|
46
|
+
* Byte 3: Exchange segment (numeric)
|
|
47
|
+
* Bytes 4-7: Security ID (int32 LE)
|
|
48
|
+
*
|
|
49
|
+
* Ticker (code 2) — 16 bytes total:
|
|
50
|
+
* Bytes 8-11: LTP (float32 LE)
|
|
51
|
+
* Bytes 12-15: Last Trade Time epoch (int32 LE)
|
|
52
|
+
*
|
|
53
|
+
* Quote (code 4) — 50 bytes total:
|
|
54
|
+
* Bytes 8-11: LTP (float32 LE)
|
|
55
|
+
* Bytes 12-13: Last Traded Qty (int16 LE)
|
|
56
|
+
* Bytes 14-17: Last Trade Time (int32 LE)
|
|
57
|
+
* Bytes 18-21: Avg Traded Price (float32 LE)
|
|
58
|
+
* Bytes 22-25: Volume (int32 LE)
|
|
59
|
+
* Bytes 26-29: Total Sell Qty (int32 LE)
|
|
60
|
+
* Bytes 30-33: Total Buy Qty (int32 LE)
|
|
61
|
+
* Bytes 34-37: Day Open (float32 LE)
|
|
62
|
+
* Bytes 38-41: Day Close (float32 LE)
|
|
63
|
+
* Bytes 42-45: Day High (float32 LE)
|
|
64
|
+
* Bytes 46-49: Day Low (float32 LE)
|
|
65
|
+
*/
|
|
36
66
|
private handleBinaryMessage;
|
|
37
67
|
private handleJsonMessage;
|
|
38
68
|
private sendSubscribe;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dhan-socket.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-socket.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dhan-socket.d.ts","sourceRoot":"","sources":["../../../src/brokers/dhan/dhan-socket.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAe,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAgDlF,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,cAAc,CAA+C;gBAEzD,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKjD,8CAA8C;IAC9C,OAAO,IAAI,IAAI;IAwDf,6BAA6B;IAC7B,UAAU,IAAI,IAAI;IAYlB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY;IAuBlG,uCAAuC;IACvC,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAsBpC,gCAAgC;IAChC,kBAAkB,IAAI,iBAAiB;IAIvC,+BAA+B;IAC/B,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ5C;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,mBAAmB;IAkE3B,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,mBAAmB;CAM5B"}
|
|
@@ -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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"}
|
|
@@ -15,7 +15,7 @@ export declare const STATUS_FROM_SHOONYA: Record<string, OrderStatus>;
|
|
|
15
15
|
export declare const VALIDITY_TO_SHOONYA: Record<Validity, string>;
|
|
16
16
|
export declare const VALIDITY_FROM_SHOONYA: Record<string, Validity>;
|
|
17
17
|
export declare const SHOONYA_API_BASE = "https://api.shoonya.com/NorenWClientTP";
|
|
18
|
-
export declare const SHOONYA_WS_URL = "wss://api.shoonya.com/NorenWSTP";
|
|
18
|
+
export declare const SHOONYA_WS_URL = "wss://api.shoonya.com/NorenWSTP/";
|
|
19
19
|
export declare const SHOONYA_INSTRUMENTS_BASE = "https://api.shoonya.com/";
|
|
20
20
|
export declare const SHOONYA_INSTRUMENT_FILES: Record<string, string>;
|
|
21
21
|
export declare const CANDLE_INTERVAL_TO_SHOONYA: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finvasia-constants.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9F,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAOxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAO1D,CAAC;AAIF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAItD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAIxD,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAK3D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAK7D,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,MAAM,CAG1D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAG5D,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAQ3D,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAGxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAG1D,CAAC;AAIF,eAAO,MAAM,gBAAgB,2CAA2C,CAAC;AACzE,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"finvasia-constants.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9F,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAOxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAO1D,CAAC;AAIF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAItD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAIxD,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAK3D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAK7D,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,MAAM,CAG1D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAG5D,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAQ3D,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAGxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAG1D,CAAC;AAIF,eAAO,MAAM,gBAAgB,2CAA2C,CAAC;AACzE,eAAO,MAAM,cAAc,qCAAqC,CAAC;AACjE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAInE,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO3D,CAAC;AAIF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM7D,CAAC"}
|
|
@@ -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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finvasia-socket.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-socket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"finvasia-socket.d.ts","sourceRoot":"","sources":["../../../src/brokers/finvasia/finvasia-socket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAe,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAelF,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA8C;gBAExD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAK/C,iDAAiD;IACjD,OAAO,IAAI,IAAI;IAgDf,6BAA6B;IAC7B,UAAU,IAAI,IAAI;IAWlB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY;IAuBlG,0DAA0D;IAC1D,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAuBpC,gCAAgC;IAChC,kBAAkB,IAAI,iBAAiB;IAIvC,oDAAoD;IACpD,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ5C,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,mBAAmB;CAM5B"}
|
|
@@ -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,9 +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 } from './instruments/instrument-master';
|
|
6
|
+
export type { InstrumentMasterOptions, SyncMeta, BrokerOptions } from './instruments/instrument-master';
|
|
7
7
|
export { WSManager } from './websocket/ws-manager';
|
|
8
8
|
export { SessionManager } from './session/session-manager';
|
|
9
9
|
export { ZerodhaBroker } from './brokers/zerodha/ZerodhaBroker';
|
|
@@ -12,18 +12,22 @@ export { DhanBroker } from './brokers/dhan/DhanBroker';
|
|
|
12
12
|
export { PaperBroker } from './brokers/paper/PaperBroker';
|
|
13
13
|
import type { BrokerId } from './types/common';
|
|
14
14
|
import type { IBroker } from './interfaces/broker.interface';
|
|
15
|
+
import type { BrokerOptions } from './instruments/instrument-master';
|
|
15
16
|
/**
|
|
16
17
|
* Factory function to instantiate a broker adapter by its BrokerId.
|
|
17
18
|
*
|
|
18
19
|
* @param brokerId - One of 'zerodha', 'finvasia', 'dhan', 'paper'
|
|
20
|
+
* @param options - Optional Redis client and instrument file path for the internal InstrumentMaster
|
|
19
21
|
* @returns A new IBroker instance for the specified broker
|
|
20
22
|
* @throws Error if the brokerId is not recognized
|
|
21
23
|
*
|
|
22
24
|
* @example
|
|
23
25
|
* ```ts
|
|
24
|
-
* const broker = createBroker('
|
|
25
|
-
*
|
|
26
|
+
* const broker = createBroker('finvasia', { redis });
|
|
27
|
+
* await broker.authenticate(creds);
|
|
28
|
+
* await broker.sync();
|
|
29
|
+
* broker.resolve('TATAMOTORS');
|
|
26
30
|
* ```
|
|
27
31
|
*/
|
|
28
|
-
export declare function createBroker(brokerId: BrokerId): IBroker;
|
|
32
|
+
export declare function createBroker(brokerId: BrokerId, options?: BrokerOptions): IBroker;
|
|
29
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,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,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"}
|