nse-bse-api 0.1.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/LICENSE +21 -0
- package/README.md +194 -0
- package/dist/bse/BSE.d.ts +141 -0
- package/dist/bse/BSE.d.ts.map +1 -0
- package/dist/bse/BSE.js +453 -0
- package/dist/bse/BSE.js.map +1 -0
- package/dist/bse/constants/index.d.ts +341 -0
- package/dist/bse/constants/index.d.ts.map +1 -0
- package/dist/bse/constants/index.js +341 -0
- package/dist/bse/constants/index.js.map +1 -0
- package/dist/bse/index.d.ts +12 -0
- package/dist/bse/index.d.ts.map +1 -0
- package/dist/bse/index.js +16 -0
- package/dist/bse/index.js.map +1 -0
- package/dist/bse/types/index.d.ts +120 -0
- package/dist/bse/types/index.d.ts.map +1 -0
- package/dist/bse/types/index.js +20 -0
- package/dist/bse/types/index.js.map +1 -0
- package/dist/bse/utils/SymbolParser.d.ts +16 -0
- package/dist/bse/utils/SymbolParser.d.ts.map +1 -0
- package/dist/bse/utils/SymbolParser.js +58 -0
- package/dist/bse/utils/SymbolParser.js.map +1 -0
- package/dist/bse/utils/helpers.d.ts +21 -0
- package/dist/bse/utils/helpers.d.ts.map +1 -0
- package/dist/bse/utils/helpers.js +77 -0
- package/dist/bse/utils/helpers.js.map +1 -0
- package/dist/bse/utils/throttle.d.ts +4 -0
- package/dist/bse/utils/throttle.d.ts.map +1 -0
- package/dist/bse/utils/throttle.js +38 -0
- package/dist/bse/utils/throttle.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/nse/api/corporate-api.d.ts +30 -0
- package/dist/nse/api/corporate-api.d.ts.map +1 -0
- package/dist/nse/api/corporate-api.js +90 -0
- package/dist/nse/api/corporate-api.js.map +1 -0
- package/dist/nse/api/download-api.d.ts +42 -0
- package/dist/nse/api/download-api.d.ts.map +1 -0
- package/dist/nse/api/download-api.js +144 -0
- package/dist/nse/api/download-api.js.map +1 -0
- package/dist/nse/api/equity-api.d.ts +50 -0
- package/dist/nse/api/equity-api.d.ts.map +1 -0
- package/dist/nse/api/equity-api.js +103 -0
- package/dist/nse/api/equity-api.js.map +1 -0
- package/dist/nse/api/historical-api.d.ts +34 -0
- package/dist/nse/api/historical-api.d.ts.map +1 -0
- package/dist/nse/api/historical-api.js +126 -0
- package/dist/nse/api/historical-api.js.map +1 -0
- package/dist/nse/api/index.d.ts +11 -0
- package/dist/nse/api/index.d.ts.map +1 -0
- package/dist/nse/api/index.js +11 -0
- package/dist/nse/api/index.js.map +1 -0
- package/dist/nse/api/ipo-api.d.ts +26 -0
- package/dist/nse/api/ipo-api.d.ts.map +1 -0
- package/dist/nse/api/ipo-api.js +46 -0
- package/dist/nse/api/ipo-api.js.map +1 -0
- package/dist/nse/api/market-api.d.ts +34 -0
- package/dist/nse/api/market-api.d.ts.map +1 -0
- package/dist/nse/api/market-api.js +58 -0
- package/dist/nse/api/market-api.js.map +1 -0
- package/dist/nse/api/options-api.d.ts +35 -0
- package/dist/nse/api/options-api.d.ts.map +1 -0
- package/dist/nse/api/options-api.js +207 -0
- package/dist/nse/api/options-api.js.map +1 -0
- package/dist/nse/constants/index.d.ts +29 -0
- package/dist/nse/constants/index.d.ts.map +1 -0
- package/dist/nse/constants/index.js +43 -0
- package/dist/nse/constants/index.js.map +1 -0
- package/dist/nse/http/http-client.d.ts +38 -0
- package/dist/nse/http/http-client.d.ts.map +1 -0
- package/dist/nse/http/http-client.js +164 -0
- package/dist/nse/http/http-client.js.map +1 -0
- package/dist/nse/index.d.ts +19 -0
- package/dist/nse/index.d.ts.map +1 -0
- package/dist/nse/index.js +24 -0
- package/dist/nse/index.js.map +1 -0
- package/dist/nse/nse/nse-client.d.ts +85 -0
- package/dist/nse/nse/nse-client.d.ts.map +1 -0
- package/dist/nse/nse/nse-client.js +105 -0
- package/dist/nse/nse/nse-client.js.map +1 -0
- package/dist/nse/types/index.d.ts +123 -0
- package/dist/nse/types/index.d.ts.map +1 -0
- package/dist/nse/types/index.js +5 -0
- package/dist/nse/types/index.js.map +1 -0
- package/dist/nse/utils/date-formatter.d.ts +36 -0
- package/dist/nse/utils/date-formatter.d.ts.map +1 -0
- package/dist/nse/utils/date-formatter.js +70 -0
- package/dist/nse/utils/date-formatter.js.map +1 -0
- package/dist/nse/utils/file-operations.d.ts +16 -0
- package/dist/nse/utils/file-operations.d.ts.map +1 -0
- package/dist/nse/utils/file-operations.js +74 -0
- package/dist/nse/utils/file-operations.js.map +1 -0
- package/dist/nse/utils/index.d.ts +6 -0
- package/dist/nse/utils/index.d.ts.map +1 -0
- package/dist/nse/utils/index.js +6 -0
- package/dist/nse/utils/index.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist-cjs/bse/BSE.js +493 -0
- package/dist-cjs/bse/BSE.js.map +1 -0
- package/dist-cjs/bse/constants/index.js +352 -0
- package/dist-cjs/bse/constants/index.js.map +1 -0
- package/dist-cjs/bse/index.js +36 -0
- package/dist-cjs/bse/index.js.map +1 -0
- package/dist-cjs/bse/types/index.js +26 -0
- package/dist-cjs/bse/types/index.js.map +1 -0
- package/dist-cjs/bse/utils/SymbolParser.js +62 -0
- package/dist-cjs/bse/utils/SymbolParser.js.map +1 -0
- package/dist-cjs/bse/utils/helpers.js +117 -0
- package/dist-cjs/bse/utils/helpers.js.map +1 -0
- package/dist-cjs/bse/utils/throttle.js +42 -0
- package/dist-cjs/bse/utils/throttle.js.map +1 -0
- package/dist-cjs/index.js +54 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/nse/api/corporate-api.js +94 -0
- package/dist-cjs/nse/api/corporate-api.js.map +1 -0
- package/dist-cjs/nse/api/download-api.js +151 -0
- package/dist-cjs/nse/api/download-api.js.map +1 -0
- package/dist-cjs/nse/api/equity-api.js +107 -0
- package/dist-cjs/nse/api/equity-api.js.map +1 -0
- package/dist-cjs/nse/api/historical-api.js +130 -0
- package/dist-cjs/nse/api/historical-api.js.map +1 -0
- package/dist-cjs/nse/api/index.js +21 -0
- package/dist-cjs/nse/api/index.js.map +1 -0
- package/dist-cjs/nse/api/ipo-api.js +50 -0
- package/dist-cjs/nse/api/ipo-api.js.map +1 -0
- package/dist-cjs/nse/api/market-api.js +62 -0
- package/dist-cjs/nse/api/market-api.js.map +1 -0
- package/dist-cjs/nse/api/options-api.js +211 -0
- package/dist-cjs/nse/api/options-api.js.map +1 -0
- package/dist-cjs/nse/constants/index.js +46 -0
- package/dist-cjs/nse/constants/index.js.map +1 -0
- package/dist-cjs/nse/http/http-client.js +171 -0
- package/dist-cjs/nse/http/http-client.js.map +1 -0
- package/dist-cjs/nse/index.js +50 -0
- package/dist-cjs/nse/index.js.map +1 -0
- package/dist-cjs/nse/nse/nse-client.js +109 -0
- package/dist-cjs/nse/nse/nse-client.js.map +1 -0
- package/dist-cjs/nse/types/index.js +6 -0
- package/dist-cjs/nse/types/index.js.map +1 -0
- package/dist-cjs/nse/utils/date-formatter.js +80 -0
- package/dist-cjs/nse/utils/date-formatter.js.map +1 -0
- package/dist-cjs/nse/utils/file-operations.js +82 -0
- package/dist-cjs/nse/utils/file-operations.js.map +1 -0
- package/dist-cjs/nse/utils/index.js +22 -0
- package/dist-cjs/nse/utils/index.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/types/index.js +47 -0
- package/dist-cjs/types/index.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Equity-related API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { BASE_URL } from "../constants/index.js";
|
|
5
|
+
export class EquityApi {
|
|
6
|
+
httpClient;
|
|
7
|
+
constructor(httpClient) {
|
|
8
|
+
this.httpClient = httpClient;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get equity metadata information
|
|
12
|
+
*/
|
|
13
|
+
async getEquityMetaInfo(symbol) {
|
|
14
|
+
return await this.httpClient.request(`${BASE_URL}/equity-meta-info`, {
|
|
15
|
+
symbol: symbol.toUpperCase()
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get quote for equity or derivative
|
|
20
|
+
*/
|
|
21
|
+
async getQuote(params) {
|
|
22
|
+
const type = params.type ?? "equity";
|
|
23
|
+
const url = type === "equity"
|
|
24
|
+
? `${BASE_URL}/quote-equity`
|
|
25
|
+
: `${BASE_URL}/quote-derivative`;
|
|
26
|
+
const query = { symbol: params.symbol.toUpperCase() };
|
|
27
|
+
if (params.section) {
|
|
28
|
+
if (params.section !== "trade_info") {
|
|
29
|
+
throw new Error("'Section' if specified must be 'trade_info'");
|
|
30
|
+
}
|
|
31
|
+
query.section = params.section;
|
|
32
|
+
}
|
|
33
|
+
return await this.httpClient.request(url, query);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get simplified equity quote with OHLC data
|
|
37
|
+
*/
|
|
38
|
+
async getEquityQuote(symbol) {
|
|
39
|
+
const q = await this.getQuote({ symbol, type: "equity" });
|
|
40
|
+
const v = await this.getQuote({ symbol, type: "equity", section: "trade_info" });
|
|
41
|
+
const open = q.priceInfo?.open;
|
|
42
|
+
const minmax = q.priceInfo?.intraDayHighLow;
|
|
43
|
+
const close = q.priceInfo?.close;
|
|
44
|
+
const ltp = q.priceInfo?.lastPrice;
|
|
45
|
+
return {
|
|
46
|
+
date: q.metadata?.lastUpdateTime,
|
|
47
|
+
open,
|
|
48
|
+
high: minmax?.max,
|
|
49
|
+
low: minmax?.min,
|
|
50
|
+
close: close ?? ltp,
|
|
51
|
+
volume: v.securityWiseDP?.quantityTraded,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Filter gainers from market data
|
|
56
|
+
*/
|
|
57
|
+
getGainers(data, count) {
|
|
58
|
+
const filtered = data.data
|
|
59
|
+
.filter((d) => d.pChange > 0)
|
|
60
|
+
.sort((a, b) => b.pChange - a.pChange);
|
|
61
|
+
return typeof count === "number" ? filtered.slice(0, count) : filtered;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Filter losers from market data
|
|
65
|
+
*/
|
|
66
|
+
getLosers(data, count) {
|
|
67
|
+
const filtered = data.data
|
|
68
|
+
.filter((d) => d.pChange < 0)
|
|
69
|
+
.sort((a, b) => a.pChange - b.pChange);
|
|
70
|
+
return typeof count === "number" ? filtered.slice(0, count) : filtered;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* List equity stocks by index
|
|
74
|
+
*/
|
|
75
|
+
async listEquityStocksByIndex(index = "NIFTY 50") {
|
|
76
|
+
return await this.httpClient.request(`${BASE_URL}/equity-stockIndices`, { index });
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* List all indices
|
|
80
|
+
*/
|
|
81
|
+
async listIndices() {
|
|
82
|
+
return await this.httpClient.request(`${BASE_URL}/allIndices`);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* List ETFs
|
|
86
|
+
*/
|
|
87
|
+
async listEtf() {
|
|
88
|
+
return await this.httpClient.request(`${BASE_URL}/etf`);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* List SME stocks
|
|
92
|
+
*/
|
|
93
|
+
async listSme() {
|
|
94
|
+
return await this.httpClient.request(`${BASE_URL}/live-analysis-emerge`);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* List Sovereign Gold Bonds
|
|
98
|
+
*/
|
|
99
|
+
async listSgb() {
|
|
100
|
+
return await this.httpClient.request(`${BASE_URL}/sovereign-gold-bonds`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=equity-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equity-api.js","sourceRoot":"","sources":["../../../src/nse/api/equity-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Historical data API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from "../http/http-client.js";
|
|
5
|
+
import { EquityHistoricalParams, VixHistoricalParams, FnoHistoricalParams, IndexHistoricalParams, IndexHistoricalData, FnoUnderlyingData } from "../types/index.js";
|
|
6
|
+
export declare class HistoricalApi {
|
|
7
|
+
private httpClient;
|
|
8
|
+
constructor(httpClient: HttpClient);
|
|
9
|
+
/**
|
|
10
|
+
* Fetch equity historical data
|
|
11
|
+
*/
|
|
12
|
+
fetchEquityHistoricalData(params: EquityHistoricalParams): Promise<Record<string, any>[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Fetch VIX historical data
|
|
15
|
+
*/
|
|
16
|
+
fetchHistoricalVixData(params?: VixHistoricalParams): Promise<Record<string, any>[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Fetch F&O historical data
|
|
19
|
+
*/
|
|
20
|
+
fetchHistoricalFnoData(params: FnoHistoricalParams): Promise<Record<string, any>[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Fetch index historical data
|
|
23
|
+
*/
|
|
24
|
+
fetchHistoricalIndexData(params: IndexHistoricalParams): Promise<IndexHistoricalData>;
|
|
25
|
+
/**
|
|
26
|
+
* Fetch F&O underlying information
|
|
27
|
+
*/
|
|
28
|
+
fetchFnoUnderlying(): Promise<FnoUnderlyingData>;
|
|
29
|
+
/**
|
|
30
|
+
* Fetch index names
|
|
31
|
+
*/
|
|
32
|
+
fetchIndexNames(): Promise<Record<string, Array<[string, string]>>>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=historical-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"historical-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/historical-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAQ3B,qBAAa,aAAa;IACZ,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IA+B/F;;OAEG;IACG,sBAAsB,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAmB9F;;OAEG;IACG,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IA+CzF;;OAEG;IACG,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwB3F;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKtD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAG1E"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Historical data API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { BASE_URL } from "../constants/index.js";
|
|
5
|
+
import { formatDateDMY, formatDateExpiry, validateDateRange, splitDateRange } from "../utils/date-formatter.js";
|
|
6
|
+
export class HistoricalApi {
|
|
7
|
+
httpClient;
|
|
8
|
+
constructor(httpClient) {
|
|
9
|
+
this.httpClient = httpClient;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Fetch equity historical data
|
|
13
|
+
*/
|
|
14
|
+
async fetchEquityHistoricalData(params) {
|
|
15
|
+
const { symbol, from_date, to_date, series = ["EQ"] } = params;
|
|
16
|
+
// Simple case - no date range and EQ series only
|
|
17
|
+
if (!from_date && !to_date && JSON.stringify(series) === JSON.stringify(["EQ"])) {
|
|
18
|
+
const data = await this.httpClient.request(`${BASE_URL}/historical/cm/equity`, { symbol });
|
|
19
|
+
return data.data.slice().reverse();
|
|
20
|
+
}
|
|
21
|
+
const to = to_date ?? new Date();
|
|
22
|
+
const from = from_date ?? new Date(to.getTime() - 30 * 86400000);
|
|
23
|
+
validateDateRange(from, to);
|
|
24
|
+
const chunks = splitDateRange(from, to, 100);
|
|
25
|
+
const results = [];
|
|
26
|
+
for (const [cFrom, cTo] of chunks) {
|
|
27
|
+
const data = await this.httpClient.request(`${BASE_URL}/historical/cm/equity`, {
|
|
28
|
+
symbol,
|
|
29
|
+
series: JSON.stringify(series),
|
|
30
|
+
from: formatDateDMY(cFrom),
|
|
31
|
+
to: formatDateDMY(cTo),
|
|
32
|
+
});
|
|
33
|
+
const arr = data.data.slice().reverse();
|
|
34
|
+
results.push(...arr);
|
|
35
|
+
}
|
|
36
|
+
return results;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Fetch VIX historical data
|
|
40
|
+
*/
|
|
41
|
+
async fetchHistoricalVixData(params = {}) {
|
|
42
|
+
const to = params.to_date ?? new Date();
|
|
43
|
+
const from = params.from_date ?? new Date(to.getTime() - 30 * 86400000);
|
|
44
|
+
validateDateRange(from, to);
|
|
45
|
+
const chunks = splitDateRange(from, to, 365);
|
|
46
|
+
const data = [];
|
|
47
|
+
for (const [cFrom, cTo] of chunks) {
|
|
48
|
+
const result = await this.httpClient.request(`${BASE_URL}/historical/vixhistory`, {
|
|
49
|
+
from: formatDateDMY(cFrom),
|
|
50
|
+
to: formatDateDMY(cTo),
|
|
51
|
+
});
|
|
52
|
+
data.push(...result.data);
|
|
53
|
+
}
|
|
54
|
+
return data;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Fetch F&O historical data
|
|
58
|
+
*/
|
|
59
|
+
async fetchHistoricalFnoData(params) {
|
|
60
|
+
const { symbol, instrument = "FUTIDX", from_date, to_date, expiry, option_type, strike_price } = params;
|
|
61
|
+
const instrumentType = instrument.toUpperCase();
|
|
62
|
+
const to = to_date ?? new Date();
|
|
63
|
+
const from = from_date ?? new Date(to.getTime() - 30 * 86400000);
|
|
64
|
+
validateDateRange(from, to);
|
|
65
|
+
const query = {
|
|
66
|
+
instrumentType,
|
|
67
|
+
symbol: symbol.toUpperCase(),
|
|
68
|
+
};
|
|
69
|
+
if (expiry) {
|
|
70
|
+
query.expiryDate = formatDateExpiry(expiry);
|
|
71
|
+
query.year = expiry.getFullYear();
|
|
72
|
+
}
|
|
73
|
+
if (instrumentType === "OPTIDX" || instrumentType === "OPTSTK") {
|
|
74
|
+
if (!option_type) {
|
|
75
|
+
throw new Error("`option_type` param is required for Stock or Index options.");
|
|
76
|
+
}
|
|
77
|
+
query.optionType = option_type;
|
|
78
|
+
if (strike_price != null)
|
|
79
|
+
query.strikePrice = strike_price;
|
|
80
|
+
}
|
|
81
|
+
const chunks = splitDateRange(from, to, 365);
|
|
82
|
+
const data = [];
|
|
83
|
+
for (const [cFrom, cTo] of chunks) {
|
|
84
|
+
query.from = formatDateDMY(cFrom);
|
|
85
|
+
query.to = formatDateDMY(cTo);
|
|
86
|
+
const result = await this.httpClient.request(`${BASE_URL}/historical/foCPV`, query);
|
|
87
|
+
data.push(...result.data);
|
|
88
|
+
}
|
|
89
|
+
return data;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Fetch index historical data
|
|
93
|
+
*/
|
|
94
|
+
async fetchHistoricalIndexData(params) {
|
|
95
|
+
const { index, from_date, to_date } = params;
|
|
96
|
+
const to = to_date ?? new Date();
|
|
97
|
+
const from = from_date ?? new Date(to.getTime() - 30 * 86400000);
|
|
98
|
+
validateDateRange(from, to);
|
|
99
|
+
const chunks = splitDateRange(from, to, 365);
|
|
100
|
+
const result = { price: [], turnover: [] };
|
|
101
|
+
for (const [cFrom, cTo] of chunks) {
|
|
102
|
+
const data = await this.httpClient.request(`${BASE_URL}/historical/indicesHistory`, {
|
|
103
|
+
indexType: index.toUpperCase(),
|
|
104
|
+
from: formatDateDMY(cFrom),
|
|
105
|
+
to: formatDateDMY(cTo),
|
|
106
|
+
});
|
|
107
|
+
result.price.push(...data.data.indexCloseOnlineRecords);
|
|
108
|
+
result.turnover.push(...data.data.indexTurnoverRecords);
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Fetch F&O underlying information
|
|
114
|
+
*/
|
|
115
|
+
async fetchFnoUnderlying() {
|
|
116
|
+
const data = await this.httpClient.request(`${BASE_URL}/underlying-information`);
|
|
117
|
+
return data.data;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Fetch index names
|
|
121
|
+
*/
|
|
122
|
+
async fetchIndexNames() {
|
|
123
|
+
return await this.httpClient.request(`${BASE_URL}/index-names`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=historical-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"historical-api.js","sourceRoot":"","sources":["../../../src/nse/api/historical-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API modules for NSE client
|
|
3
|
+
*/
|
|
4
|
+
export { EquityApi } from "./equity-api.js";
|
|
5
|
+
export { OptionsApi } from "./options-api.js";
|
|
6
|
+
export { HistoricalApi } from "./historical-api.js";
|
|
7
|
+
export { CorporateApi } from "./corporate-api.js";
|
|
8
|
+
export { IpoApi } from "./ipo-api.js";
|
|
9
|
+
export { MarketApi } from "./market-api.js";
|
|
10
|
+
export { DownloadApi } from "./download-api.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nse/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API modules for NSE client
|
|
3
|
+
*/
|
|
4
|
+
export { EquityApi } from "./equity-api.js";
|
|
5
|
+
export { OptionsApi } from "./options-api.js";
|
|
6
|
+
export { HistoricalApi } from "./historical-api.js";
|
|
7
|
+
export { CorporateApi } from "./corporate-api.js";
|
|
8
|
+
export { IpoApi } from "./ipo-api.js";
|
|
9
|
+
export { MarketApi } from "./market-api.js";
|
|
10
|
+
export { DownloadApi } from "./download-api.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nse/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPO-related API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from "../http/http-client.js";
|
|
5
|
+
import { IpoDetailsParams } from "../types/index.js";
|
|
6
|
+
export declare class IpoApi {
|
|
7
|
+
private httpClient;
|
|
8
|
+
constructor(httpClient: HttpClient);
|
|
9
|
+
/**
|
|
10
|
+
* List current IPOs
|
|
11
|
+
*/
|
|
12
|
+
listCurrentIPO(): Promise<any>;
|
|
13
|
+
/**
|
|
14
|
+
* List upcoming IPOs
|
|
15
|
+
*/
|
|
16
|
+
listUpcomingIPO(): Promise<any>;
|
|
17
|
+
/**
|
|
18
|
+
* Get IPO details
|
|
19
|
+
*/
|
|
20
|
+
getIpoDetails(params: IpoDetailsParams): Promise<any>;
|
|
21
|
+
/**
|
|
22
|
+
* List past IPOs
|
|
23
|
+
*/
|
|
24
|
+
listPastIPO(from_date?: Date, to_date?: Date): Promise<any>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ipo-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipo-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/ipo-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,MAAM;IACL,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAIpC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;IAIrC;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAO3D;;OAEG;IACG,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;CAalE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPO-related API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { BASE_URL } from "../constants/index.js";
|
|
5
|
+
import { formatDateDMY } from "../utils/date-formatter.js";
|
|
6
|
+
export class IpoApi {
|
|
7
|
+
httpClient;
|
|
8
|
+
constructor(httpClient) {
|
|
9
|
+
this.httpClient = httpClient;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* List current IPOs
|
|
13
|
+
*/
|
|
14
|
+
async listCurrentIPO() {
|
|
15
|
+
return await this.httpClient.request(`${BASE_URL}/ipo-current-issue`);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* List upcoming IPOs
|
|
19
|
+
*/
|
|
20
|
+
async listUpcomingIPO() {
|
|
21
|
+
return await this.httpClient.request(`${BASE_URL}/all-upcoming-issues?category=ipo`);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get IPO details
|
|
25
|
+
*/
|
|
26
|
+
async getIpoDetails(params) {
|
|
27
|
+
const symbol = params.symbol.toUpperCase();
|
|
28
|
+
const series = params.series ?? "EQ";
|
|
29
|
+
return await this.httpClient.request(`${BASE_URL}/ipo-detail`, { symbol, series });
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* List past IPOs
|
|
33
|
+
*/
|
|
34
|
+
async listPastIPO(from_date, to_date) {
|
|
35
|
+
const to = to_date ?? new Date();
|
|
36
|
+
const from = from_date ?? new Date(to.getTime() - 90 * 86400000);
|
|
37
|
+
if (to < from) {
|
|
38
|
+
throw new Error("Argument `to_date` cannot be less than `from_date`");
|
|
39
|
+
}
|
|
40
|
+
return await this.httpClient.request(`${BASE_URL}/public-past-issues`, {
|
|
41
|
+
from_date: formatDateDMY(from),
|
|
42
|
+
to_date: formatDateDMY(to),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ipo-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipo-api.js","sourceRoot":"","sources":["../../../src/nse/api/ipo-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAqB,MAAM,4BAA4B,CAAC;AAE9E,MAAM,OAAO,MAAM;IACG;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,oBAAoB,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,mCAAmC,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAAwB;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;QAErC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,SAAgB,EAAE,OAAc;QAChD,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,SAAS,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAEjE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,qBAAqB,EAAE;YACrE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Market data and trading API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from "../http/http-client.js";
|
|
5
|
+
import { HolidayType, DailyReportSegment } from "../types/index.js";
|
|
6
|
+
export declare class MarketApi {
|
|
7
|
+
private httpClient;
|
|
8
|
+
constructor(httpClient: HttpClient);
|
|
9
|
+
/**
|
|
10
|
+
* Get market status
|
|
11
|
+
*/
|
|
12
|
+
getStatus(): Promise<any[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Search/lookup symbols
|
|
15
|
+
*/
|
|
16
|
+
lookup(query: string): Promise<Record<string, any>>;
|
|
17
|
+
/**
|
|
18
|
+
* Get block deals
|
|
19
|
+
*/
|
|
20
|
+
getBlockDeals(): Promise<any>;
|
|
21
|
+
/**
|
|
22
|
+
* Get bulk deals for date range
|
|
23
|
+
*/
|
|
24
|
+
getBulkDeals(fromDate: Date, toDate: Date): Promise<any[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Get holidays
|
|
27
|
+
*/
|
|
28
|
+
getHolidays(type?: HolidayType): Promise<any>;
|
|
29
|
+
/**
|
|
30
|
+
* Get daily reports file metadata
|
|
31
|
+
*/
|
|
32
|
+
getDailyReportsFileMetadata(segment?: DailyReportSegment): Promise<any>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=market-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/market-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGpE,qBAAa,SAAS;IACR,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAKjC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAIzD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAInC;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAgBhE;;OAEG;IACG,WAAW,CAAC,IAAI,GAAE,WAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;OAEG;IACG,2BAA2B,CAAC,OAAO,GAAE,kBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;CAGpF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Market data and trading API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { BASE_URL } from "../constants/index.js";
|
|
5
|
+
import { formatDateDMY } from "../utils/date-formatter.js";
|
|
6
|
+
export class MarketApi {
|
|
7
|
+
httpClient;
|
|
8
|
+
constructor(httpClient) {
|
|
9
|
+
this.httpClient = httpClient;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Get market status
|
|
13
|
+
*/
|
|
14
|
+
async getStatus() {
|
|
15
|
+
const result = await this.httpClient.request(`${BASE_URL}/marketStatus`);
|
|
16
|
+
return result.marketState;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Search/lookup symbols
|
|
20
|
+
*/
|
|
21
|
+
async lookup(query) {
|
|
22
|
+
return await this.httpClient.request(`${BASE_URL}/search/autocomplete`, { q: query });
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get block deals
|
|
26
|
+
*/
|
|
27
|
+
async getBlockDeals() {
|
|
28
|
+
return await this.httpClient.request(`${BASE_URL}/block-deal`);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get bulk deals for date range
|
|
32
|
+
*/
|
|
33
|
+
async getBulkDeals(fromDate, toDate) {
|
|
34
|
+
const daysDiff = (toDate.getTime() - fromDate.getTime()) / 86400000;
|
|
35
|
+
if (daysDiff > 365) {
|
|
36
|
+
throw new Error("The date range cannot exceed one year.");
|
|
37
|
+
}
|
|
38
|
+
const url = `${BASE_URL}/historical/bulk-deals?from=${formatDateDMY(fromDate)}&to=${formatDateDMY(toDate)}`;
|
|
39
|
+
const data = await this.httpClient.request(url);
|
|
40
|
+
if (!data.data || data.data.length < 1) {
|
|
41
|
+
throw new Error("No bulk deals data available for the specified date range.");
|
|
42
|
+
}
|
|
43
|
+
return data.data;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get holidays
|
|
47
|
+
*/
|
|
48
|
+
async getHolidays(type = "trading") {
|
|
49
|
+
return await this.httpClient.request(`${BASE_URL}/holiday-master`, { type });
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get daily reports file metadata
|
|
53
|
+
*/
|
|
54
|
+
async getDailyReportsFileMetadata(segment = "CM") {
|
|
55
|
+
return await this.httpClient.request(`${BASE_URL}/daily-reports`, { key: segment });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=market-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-api.js","sourceRoot":"","sources":["../../../src/nse/api/market-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAqB,MAAM,4BAA4B,CAAC;AAE9E,MAAM,OAAO,SAAS;IACA;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,eAAe,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,sBAAsB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,aAAa,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAc,EAAE,MAAY;QAC7C,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;QACpE,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,QAAQ,+BAA+B,aAAa,CAAC,QAAQ,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAoB,SAAS;QAC7C,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B,CAAC,UAA8B,IAAI;QAClE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,gBAAgB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options and derivatives API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from "../http/http-client.js";
|
|
5
|
+
import { OptionChainData, CompiledOptionChain, FnoIndex } from "../types/index.js";
|
|
6
|
+
export declare class OptionsApi {
|
|
7
|
+
private httpClient;
|
|
8
|
+
constructor(httpClient: HttpClient);
|
|
9
|
+
/**
|
|
10
|
+
* Get F&O lot sizes
|
|
11
|
+
*/
|
|
12
|
+
getFnoLots(): Promise<Record<string, number>>;
|
|
13
|
+
/**
|
|
14
|
+
* Get option chain data
|
|
15
|
+
*/
|
|
16
|
+
getOptionChain(symbol: string): Promise<any>;
|
|
17
|
+
/**
|
|
18
|
+
* Get filtered option chain data with only essential information for LLM processing
|
|
19
|
+
* Reduces data volume by ~90% while retaining key metrics
|
|
20
|
+
*/
|
|
21
|
+
getFilteredOptionChain(symbol: string, strikeRange?: number): Promise<any>;
|
|
22
|
+
/**
|
|
23
|
+
* Calculate max pain for option chain
|
|
24
|
+
*/
|
|
25
|
+
static calculateMaxPain(optionChain: OptionChainData, expiryDate: Date): number;
|
|
26
|
+
/**
|
|
27
|
+
* Get futures expiry dates
|
|
28
|
+
*/
|
|
29
|
+
getFuturesExpiry(index?: FnoIndex): Promise<string[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Compile option chain with calculated metrics
|
|
32
|
+
*/
|
|
33
|
+
compileOptionChain(symbol: string, expiryDate: Date): Promise<CompiledOptionChain>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=options-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/options-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGnF,qBAAa,UAAU;IACT,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAiCnD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IASlD;;;OAGG;IACG,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAmDpF;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,GAAG,MAAM;IAyB/E;;OAEG;IACG,gBAAgB,CAAC,KAAK,GAAE,QAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBpE;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAyEzF"}
|