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 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
- // 1. Create a broker instance
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
- // 2. Authenticate
41
- const auth = await broker.authenticate({
42
- userId: 'FA12345',
43
- password: 'your_password',
44
- totpSecret: 'YOUR_BASE32_SECRET',
45
- apiKey: 'your_api_secret',
46
- vendorCode: 'FA12345_U',
47
- });
48
- // auth.value => { accessToken: '...', userId: 'FA12345', expiresAt: 1707523199000, ... }
49
-
50
- // 3. Place an order
51
- const order = await broker.placeOrder({
52
- tradingSymbol: 'RELIANCE-EQ',
53
- exchange: 'NSE',
54
- side: 'BUY',
55
- quantity: 1,
56
- type: 'LIMIT',
57
- product: 'INTRADAY',
58
- price: 2400,
59
- validity: 'DAY',
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
- // order.value => { orderId: '26020900479551', status: 'PENDING', timestamp: 1707480649000 }
99
+ ```
62
100
 
63
- // 4. Get positions
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
- // 5. Cancel the order
68
- const cancel = await broker.cancelOrder(order.value.orderId);
69
- // cancel.value => { orderId: '26020900479551', status: 'CANCELLED' }
103
+ ```typescript
104
+ await broker.sync(true);
70
105
  ```
71
106
 
72
- Switch to any other broker by changing a single line:
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
- const broker = createBroker('zerodha'); // or 'dhan', 'paper'
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 `InstrumentMaster` maintains a normalized lookup table of all tradeable instruments across brokers. Resolution follows a three-tier strategy:
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
- constructor();
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,EAAY,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EAEd,KAAK,EACL,cAAc,EACd,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAU3D,qBAAa,UAAW,YAAW,OAAO;IACxC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAU;IAC/B,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAEzC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;;IAS5C,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAUpE,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAIxE,cAAc,IAAI,OAAO;IAIzB,gBAAgB,IAAI,IAAI,GAAG,IAAI;IAOzB,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAkBpE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IA4BhF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAc3D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAU5C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAsBhE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAUlD,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAYhD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IA0C/D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAyChE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAuCnF,UAAU,CACd,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAC7D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAgD5B,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,YAAY,GAAG,YAAY;IAKhE,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAMzC,kBAAkB,IAAI,iBAAiB;IAMjC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAsBzC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAiBrC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAmC/D,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAMzD,OAAO;IAyBrB,OAAO,CAAC,YAAY;CAOrB"}
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
- search(query: string, exchange?: Exchange): Promise<Result<BrokerInstrumentEntry[]>>;
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,iCAAiC;IAC3B,gBAAgB,CAAC,QAAQ,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB5F;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAmD1F;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAWzF,4DAA4D;IAC5D,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,qBAAqB;CA+B3D"}
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
- constructor();
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":"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"}
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
- search(query: string, exchange?: Exchange): Promise<Result<BrokerInstrumentEntry[]>>;
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,iDAAiD;IAC3C,gBAAgB,CAAC,QAAQ,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB5F;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAgD1F;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAWzF,mEAAmE;IACnE,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,qBAAqB;CA+B3D"}
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":"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"}
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
- constructor();
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":"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"}
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;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;AA8DlD,qBAAa,kBAAmB,YAAW,kBAAkB;IAC3D,QAAQ,CAAC,YAAY;;;;;MAKnB;IAEF;;;OAGG;IACI,UAAU,IAAI,aAAa,CAAC,mBAAmB,CAAC;IAmDvD,gFAAgF;IAC1E,gBAAgB,CAAC,QAAQ,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5F;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAgBzF,4DAA4D;IAC5D,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,qBAAqB;CA8B3D"}
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.2";
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('zerodha');
24
- * const session = await broker.authenticate(creds);
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
@@ -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;AAM7D;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAexD"}
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"}