oilpriceapi 0.5.3 → 0.7.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.
Files changed (49) hide show
  1. package/README.md +395 -110
  2. package/dist/client.d.ts +83 -3
  3. package/dist/client.js +118 -38
  4. package/dist/index.d.ts +31 -6
  5. package/dist/index.js +17 -3
  6. package/dist/resources/alerts.d.ts +52 -15
  7. package/dist/resources/alerts.js +143 -85
  8. package/dist/resources/analytics.d.ts +325 -0
  9. package/dist/resources/analytics.js +221 -0
  10. package/dist/resources/bunker-fuels.d.ts +270 -0
  11. package/dist/resources/bunker-fuels.js +191 -0
  12. package/dist/resources/commodities.d.ts +148 -0
  13. package/dist/resources/commodities.js +110 -0
  14. package/dist/resources/data-quality.d.ts +229 -0
  15. package/dist/resources/data-quality.js +139 -0
  16. package/dist/resources/data-sources.d.ts +365 -0
  17. package/dist/resources/data-sources.js +349 -0
  18. package/dist/resources/drilling.d.ts +403 -0
  19. package/dist/resources/drilling.js +264 -0
  20. package/dist/resources/ei/drilling-productivity.d.ts +173 -0
  21. package/dist/resources/ei/drilling-productivity.js +103 -0
  22. package/dist/resources/ei/forecasts.d.ts +177 -0
  23. package/dist/resources/ei/forecasts.js +101 -0
  24. package/dist/resources/ei/frac-focus.d.ts +212 -0
  25. package/dist/resources/ei/frac-focus.js +150 -0
  26. package/dist/resources/ei/index.d.ts +140 -0
  27. package/dist/resources/ei/index.js +87 -0
  28. package/dist/resources/ei/oil-inventories.d.ts +155 -0
  29. package/dist/resources/ei/oil-inventories.js +92 -0
  30. package/dist/resources/ei/opec-production.d.ts +146 -0
  31. package/dist/resources/ei/opec-production.js +92 -0
  32. package/dist/resources/ei/rig-counts.d.ts +131 -0
  33. package/dist/resources/ei/rig-counts.js +88 -0
  34. package/dist/resources/ei/well-permits.d.ts +178 -0
  35. package/dist/resources/ei/well-permits.js +119 -0
  36. package/dist/resources/forecasts.d.ts +200 -0
  37. package/dist/resources/forecasts.js +157 -0
  38. package/dist/resources/futures.d.ts +322 -0
  39. package/dist/resources/futures.js +228 -0
  40. package/dist/resources/rig-counts.d.ts +221 -0
  41. package/dist/resources/rig-counts.js +157 -0
  42. package/dist/resources/storage.d.ts +182 -0
  43. package/dist/resources/storage.js +161 -0
  44. package/dist/resources/webhooks.d.ts +290 -0
  45. package/dist/resources/webhooks.js +297 -0
  46. package/dist/types.d.ts +106 -6
  47. package/dist/version.d.ts +1 -1
  48. package/dist/version.js +1 -1
  49. package/package.json +3 -3
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Energy Intelligence - FracFocus Resource
3
+ *
4
+ * Access hydraulic fracturing disclosure data including chemicals, operators,
5
+ * and well-level information from the FracFocus registry.
6
+ */
7
+ import type { OilPriceAPI } from "../../client.js";
8
+ /**
9
+ * FracFocus disclosure record
10
+ */
11
+ export interface FracFocusRecord {
12
+ /** Record ID */
13
+ id: string;
14
+ /** API well number */
15
+ api_number: string;
16
+ /** State */
17
+ state: string;
18
+ /** County */
19
+ county?: string;
20
+ /** Operator name */
21
+ operator?: string;
22
+ /** Well name */
23
+ well_name?: string;
24
+ /** Job start date */
25
+ job_start_date?: string;
26
+ /** Job end date */
27
+ job_end_date?: string;
28
+ /** Total base water volume (gallons) */
29
+ total_base_water_volume?: number;
30
+ /** Total base non-water volume (gallons) */
31
+ total_base_non_water_volume?: number;
32
+ /** ISO timestamp */
33
+ timestamp: string;
34
+ /** Additional metadata */
35
+ metadata?: Record<string, unknown>;
36
+ }
37
+ /**
38
+ * FracFocus summary
39
+ */
40
+ export interface FracFocusSummary {
41
+ /** Total disclosures */
42
+ total_disclosures: number;
43
+ /** Disclosures by state */
44
+ by_state?: Record<string, number>;
45
+ /** Disclosures by operator */
46
+ by_operator?: Record<string, number>;
47
+ /** As of date */
48
+ as_of_date: string;
49
+ }
50
+ /**
51
+ * Disclosures by state
52
+ */
53
+ export interface DisclosuresByState {
54
+ /** State name */
55
+ state: string;
56
+ /** Disclosure count */
57
+ disclosure_count: number;
58
+ /** Date */
59
+ date: string;
60
+ }
61
+ /**
62
+ * Disclosures by operator
63
+ */
64
+ export interface DisclosuresByOperator {
65
+ /** Operator name */
66
+ operator: string;
67
+ /** Disclosure count */
68
+ disclosure_count: number;
69
+ /** Percentage of total */
70
+ percentage?: number;
71
+ /** Date */
72
+ date: string;
73
+ }
74
+ /**
75
+ * Chemical usage data
76
+ */
77
+ export interface ChemicalUsage {
78
+ /** Chemical name */
79
+ chemical_name: string;
80
+ /** CAS number */
81
+ cas_number?: string;
82
+ /** Usage count */
83
+ usage_count: number;
84
+ /** Percentage of total */
85
+ percentage?: number;
86
+ }
87
+ /**
88
+ * Chemical detail for a specific well
89
+ */
90
+ export interface WellChemical {
91
+ /** Chemical name */
92
+ chemical_name: string;
93
+ /** CAS number */
94
+ cas_number?: string;
95
+ /** Purpose */
96
+ purpose?: string;
97
+ /** Ingredient concentration (%) */
98
+ concentration_percent?: number;
99
+ /** Mass used (lbs) */
100
+ mass_lbs?: number;
101
+ }
102
+ /**
103
+ * FracFocus search query
104
+ */
105
+ export interface FracFocusSearchQuery {
106
+ /** State filter */
107
+ state?: string;
108
+ /** Operator filter */
109
+ operator?: string;
110
+ /** Chemical filter */
111
+ chemical?: string;
112
+ /** Start date */
113
+ start_date?: string;
114
+ /** End date */
115
+ end_date?: string;
116
+ }
117
+ /**
118
+ * EI FracFocus Resource
119
+ *
120
+ * Access hydraulic fracturing disclosure data from the FracFocus registry.
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * const client = new OilPriceAPI({ apiKey: 'your_key' });
125
+ *
126
+ * // Get latest disclosure
127
+ * const latest = await client.ei.fracFocus.latest();
128
+ * console.log(`Well: ${latest.well_name} (API: ${latest.api_number})`);
129
+ *
130
+ * // Get disclosures by state
131
+ * const states = await client.ei.fracFocus.byState();
132
+ * states.forEach(s => console.log(`${s.state}: ${s.disclosure_count} disclosures`));
133
+ *
134
+ * // Get chemicals for a specific well
135
+ * const chemicals = await client.ei.fracFocus.chemicals('42-123-12345');
136
+ * chemicals.forEach(c => console.log(`${c.chemical_name}: ${c.concentration_percent}%`));
137
+ *
138
+ * // Search disclosures
139
+ * const results = await client.ei.fracFocus.search({
140
+ * state: 'Texas',
141
+ * operator: 'EOG Resources'
142
+ * });
143
+ * ```
144
+ */
145
+ export declare class EIFracFocusResource {
146
+ private client;
147
+ constructor(client: OilPriceAPI);
148
+ /**
149
+ * List all FracFocus disclosure records
150
+ *
151
+ * @returns Array of disclosure records
152
+ */
153
+ list(): Promise<FracFocusRecord[]>;
154
+ /**
155
+ * Get a specific FracFocus disclosure record
156
+ *
157
+ * @param id - Record ID
158
+ * @returns Disclosure record
159
+ */
160
+ get(id: string): Promise<FracFocusRecord>;
161
+ /**
162
+ * Get latest FracFocus disclosure
163
+ *
164
+ * @returns Latest disclosure record
165
+ */
166
+ latest(): Promise<FracFocusRecord>;
167
+ /**
168
+ * Get FracFocus summary
169
+ *
170
+ * @returns Disclosure summary statistics
171
+ */
172
+ summary(): Promise<FracFocusSummary>;
173
+ /**
174
+ * Get disclosures by state
175
+ *
176
+ * @returns Array of disclosures grouped by state
177
+ */
178
+ byState(): Promise<DisclosuresByState[]>;
179
+ /**
180
+ * Get disclosures by operator
181
+ *
182
+ * @returns Array of disclosures grouped by operator
183
+ */
184
+ byOperator(): Promise<DisclosuresByOperator[]>;
185
+ /**
186
+ * Get chemical usage statistics
187
+ *
188
+ * @returns Array of chemicals used in fracturing
189
+ */
190
+ byChemical(): Promise<ChemicalUsage[]>;
191
+ /**
192
+ * Search FracFocus disclosures
193
+ *
194
+ * @param query - Search query parameters
195
+ * @returns Array of matching disclosure records
196
+ */
197
+ search(query: FracFocusSearchQuery): Promise<FracFocusRecord[]>;
198
+ /**
199
+ * Get chemicals used in a specific well
200
+ *
201
+ * @param id - Disclosure record ID
202
+ * @returns Array of chemicals used in the well
203
+ */
204
+ chemicals(id: string): Promise<WellChemical[]>;
205
+ /**
206
+ * Get FracFocus disclosures for a specific well by API number
207
+ *
208
+ * @param apiNumber - API well number (e.g., "42-123-12345")
209
+ * @returns Array of disclosure records for the well
210
+ */
211
+ forWell(apiNumber: string): Promise<FracFocusRecord[]>;
212
+ }
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Energy Intelligence - FracFocus Resource
3
+ *
4
+ * Access hydraulic fracturing disclosure data including chemicals, operators,
5
+ * and well-level information from the FracFocus registry.
6
+ */
7
+ /**
8
+ * EI FracFocus Resource
9
+ *
10
+ * Access hydraulic fracturing disclosure data from the FracFocus registry.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const client = new OilPriceAPI({ apiKey: 'your_key' });
15
+ *
16
+ * // Get latest disclosure
17
+ * const latest = await client.ei.fracFocus.latest();
18
+ * console.log(`Well: ${latest.well_name} (API: ${latest.api_number})`);
19
+ *
20
+ * // Get disclosures by state
21
+ * const states = await client.ei.fracFocus.byState();
22
+ * states.forEach(s => console.log(`${s.state}: ${s.disclosure_count} disclosures`));
23
+ *
24
+ * // Get chemicals for a specific well
25
+ * const chemicals = await client.ei.fracFocus.chemicals('42-123-12345');
26
+ * chemicals.forEach(c => console.log(`${c.chemical_name}: ${c.concentration_percent}%`));
27
+ *
28
+ * // Search disclosures
29
+ * const results = await client.ei.fracFocus.search({
30
+ * state: 'Texas',
31
+ * operator: 'EOG Resources'
32
+ * });
33
+ * ```
34
+ */
35
+ export class EIFracFocusResource {
36
+ constructor(client) {
37
+ this.client = client;
38
+ }
39
+ /**
40
+ * List all FracFocus disclosure records
41
+ *
42
+ * @returns Array of disclosure records
43
+ */
44
+ async list() {
45
+ const response = await this.client["request"]("/v1/ei/frac-focus", {});
46
+ return Array.isArray(response) ? response : response.data;
47
+ }
48
+ /**
49
+ * Get a specific FracFocus disclosure record
50
+ *
51
+ * @param id - Record ID
52
+ * @returns Disclosure record
53
+ */
54
+ async get(id) {
55
+ if (!id || typeof id !== "string") {
56
+ throw new Error("Record ID must be a non-empty string");
57
+ }
58
+ return this.client["request"](`/v1/ei/frac-focus/${id}`, {});
59
+ }
60
+ /**
61
+ * Get latest FracFocus disclosure
62
+ *
63
+ * @returns Latest disclosure record
64
+ */
65
+ async latest() {
66
+ return this.client["request"]("/v1/ei/frac-focus/latest", {});
67
+ }
68
+ /**
69
+ * Get FracFocus summary
70
+ *
71
+ * @returns Disclosure summary statistics
72
+ */
73
+ async summary() {
74
+ return this.client["request"]("/v1/ei/frac-focus/summary", {});
75
+ }
76
+ /**
77
+ * Get disclosures by state
78
+ *
79
+ * @returns Array of disclosures grouped by state
80
+ */
81
+ async byState() {
82
+ const response = await this.client["request"]("/v1/ei/frac-focus/by-state", {});
83
+ return Array.isArray(response) ? response : response.data;
84
+ }
85
+ /**
86
+ * Get disclosures by operator
87
+ *
88
+ * @returns Array of disclosures grouped by operator
89
+ */
90
+ async byOperator() {
91
+ const response = await this.client["request"]("/v1/ei/frac-focus/by-operator", {});
92
+ return Array.isArray(response) ? response : response.data;
93
+ }
94
+ /**
95
+ * Get chemical usage statistics
96
+ *
97
+ * @returns Array of chemicals used in fracturing
98
+ */
99
+ async byChemical() {
100
+ const response = await this.client["request"]("/v1/ei/frac-focus/by-chemical", {});
101
+ return Array.isArray(response) ? response : response.data;
102
+ }
103
+ /**
104
+ * Search FracFocus disclosures
105
+ *
106
+ * @param query - Search query parameters
107
+ * @returns Array of matching disclosure records
108
+ */
109
+ async search(query) {
110
+ const params = {};
111
+ if (query.state)
112
+ params.state = query.state;
113
+ if (query.operator)
114
+ params.operator = query.operator;
115
+ if (query.chemical)
116
+ params.chemical = query.chemical;
117
+ if (query.start_date)
118
+ params.start_date = query.start_date;
119
+ if (query.end_date)
120
+ params.end_date = query.end_date;
121
+ const response = await this.client["request"]("/v1/ei/frac-focus/search", params);
122
+ return Array.isArray(response) ? response : response.data;
123
+ }
124
+ /**
125
+ * Get chemicals used in a specific well
126
+ *
127
+ * @param id - Disclosure record ID
128
+ * @returns Array of chemicals used in the well
129
+ */
130
+ async chemicals(id) {
131
+ if (!id || typeof id !== "string") {
132
+ throw new Error("Disclosure ID must be a non-empty string");
133
+ }
134
+ const response = await this.client["request"](`/v1/ei/frac-focus/${id}/chemicals`, {});
135
+ return Array.isArray(response) ? response : response.chemicals;
136
+ }
137
+ /**
138
+ * Get FracFocus disclosures for a specific well by API number
139
+ *
140
+ * @param apiNumber - API well number (e.g., "42-123-12345")
141
+ * @returns Array of disclosure records for the well
142
+ */
143
+ async forWell(apiNumber) {
144
+ if (!apiNumber || typeof apiNumber !== "string") {
145
+ throw new Error("API number must be a non-empty string");
146
+ }
147
+ const response = await this.client["request"](`/v1/ei/frac-focus/for-well/${apiNumber}`, {});
148
+ return Array.isArray(response) ? response : response.data;
149
+ }
150
+ }
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Energy Intelligence Resource
3
+ *
4
+ * Comprehensive energy market intelligence including rig counts, inventories,
5
+ * OPEC production, drilling productivity, forecasts, well permits, and FracFocus data.
6
+ */
7
+ import type { OilPriceAPI } from "../../client.js";
8
+ import { EIRigCountsResource } from "./rig-counts.js";
9
+ import { EIOilInventoriesResource } from "./oil-inventories.js";
10
+ import { EIOPECProductionResource } from "./opec-production.js";
11
+ import { EIDrillingProductivityResource } from "./drilling-productivity.js";
12
+ import { EIForecastsResource } from "./forecasts.js";
13
+ import { EIWellPermitsResource } from "./well-permits.js";
14
+ import { EIFracFocusResource } from "./frac-focus.js";
15
+ /**
16
+ * Well timeline event
17
+ */
18
+ export interface WellTimelineEvent {
19
+ /** Event type */
20
+ event_type: string;
21
+ /** Event date */
22
+ date: string;
23
+ /** Event description */
24
+ description?: string;
25
+ /** Source of data */
26
+ source?: string;
27
+ /** Additional metadata */
28
+ metadata?: Record<string, unknown>;
29
+ }
30
+ /**
31
+ * Well timeline data
32
+ */
33
+ export interface WellTimeline {
34
+ /** API well number */
35
+ api_number: string;
36
+ /** Well name */
37
+ well_name?: string;
38
+ /** Operator */
39
+ operator?: string;
40
+ /** State */
41
+ state?: string;
42
+ /** Timeline events */
43
+ events: WellTimelineEvent[];
44
+ }
45
+ /**
46
+ * Energy Intelligence Resource
47
+ *
48
+ * Access comprehensive energy market intelligence from EIA, Baker Hughes,
49
+ * FracFocus, and other authoritative sources.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * import { OilPriceAPI } from 'oilpriceapi';
54
+ *
55
+ * const client = new OilPriceAPI({ apiKey: 'your_key' });
56
+ *
57
+ * // Rig counts
58
+ * const rigCounts = await client.ei.rigCounts.latest();
59
+ * console.log(`Total rigs: ${rigCounts.total_rigs}`);
60
+ *
61
+ * // Oil inventories
62
+ * const inventories = await client.ei.oilInventories.latest();
63
+ * console.log(`Crude stocks: ${inventories.level} ${inventories.unit}`);
64
+ *
65
+ * // OPEC production
66
+ * const opec = await client.ei.opecProduction.total();
67
+ * console.log(`OPEC production: ${opec.total_production_bpd} bpd`);
68
+ *
69
+ * // Well timeline
70
+ * const timeline = await client.ei.wellTimeline('42-123-12345');
71
+ * timeline.events.forEach(e => {
72
+ * console.log(`${e.date}: ${e.event_type}`);
73
+ * });
74
+ * ```
75
+ */
76
+ export declare class EnergyIntelligenceResource {
77
+ private client;
78
+ /**
79
+ * Baker Hughes rig count data
80
+ */
81
+ readonly rigCounts: EIRigCountsResource;
82
+ /**
83
+ * EIA crude oil inventory data
84
+ */
85
+ readonly oilInventories: EIOilInventoriesResource;
86
+ /**
87
+ * OPEC production data
88
+ */
89
+ readonly opecProduction: EIOPECProductionResource;
90
+ /**
91
+ * EIA drilling productivity report data
92
+ */
93
+ readonly drillingProductivity: EIDrillingProductivityResource;
94
+ /**
95
+ * EIA and IEA forecast data
96
+ */
97
+ readonly forecasts: EIForecastsResource;
98
+ /**
99
+ * Well permit data
100
+ */
101
+ readonly wellPermits: EIWellPermitsResource;
102
+ /**
103
+ * FracFocus disclosure data
104
+ */
105
+ readonly fracFocus: EIFracFocusResource;
106
+ constructor(client: OilPriceAPI);
107
+ /**
108
+ * Get well timeline by API number
109
+ *
110
+ * Returns chronological timeline of events for a specific well including
111
+ * permits, drilling, completion, production, and FracFocus disclosures.
112
+ *
113
+ * @param apiNumber - API well number (e.g., "42-123-12345")
114
+ * @returns Well timeline with events
115
+ *
116
+ * @throws {NotFoundError} If well not found
117
+ * @throws {OilPriceAPIError} If API request fails
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * const timeline = await client.ei.wellTimeline('42-123-12345');
122
+ * console.log(`Well: ${timeline.well_name}`);
123
+ * console.log(`Operator: ${timeline.operator}`);
124
+ * console.log(`Events: ${timeline.events.length}`);
125
+ *
126
+ * timeline.events.forEach(event => {
127
+ * console.log(`${event.date}: ${event.event_type} - ${event.description}`);
128
+ * });
129
+ * ```
130
+ */
131
+ wellTimeline(apiNumber: string): Promise<WellTimeline>;
132
+ }
133
+ export type { RigCountRecord, RigCountByBasin, RigCountByState, HistoricalRigCount, } from "./rig-counts.js";
134
+ export type { OilInventoryRecord, OilInventorySummary, InventoryByProduct, HistoricalInventory, CushingInventory, } from "./oil-inventories.js";
135
+ export type { OPECProductionRecord, TotalOPECProduction, ProductionByCountry, HistoricalProduction, TopProducer, } from "./opec-production.js";
136
+ export type { DrillingProductivityRecord, DrillingProductivitySummary, DUCWellInventory, ProductivityByBasin, HistoricalProductivity, ProductivityTrend, } from "./drilling-productivity.js";
137
+ export type { ForecastRecord, ForecastSummary, PriceForecast, ProductionForecast, HistoricalForecast, ForecastComparison, } from "./forecasts.js";
138
+ export type { WellPermitRecord, WellPermitSummary, PermitsByState, PermitsByOperator, PermitsByFormation, WellPermitSearchQuery, } from "./well-permits.js";
139
+ export type { FracFocusRecord, FracFocusSummary, DisclosuresByState, DisclosuresByOperator, ChemicalUsage, WellChemical, FracFocusSearchQuery, } from "./frac-focus.js";
140
+ export { EIRigCountsResource, EIOilInventoriesResource, EIOPECProductionResource, EIDrillingProductivityResource, EIForecastsResource, EIWellPermitsResource, EIFracFocusResource, };
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Energy Intelligence Resource
3
+ *
4
+ * Comprehensive energy market intelligence including rig counts, inventories,
5
+ * OPEC production, drilling productivity, forecasts, well permits, and FracFocus data.
6
+ */
7
+ import { EIRigCountsResource } from "./rig-counts.js";
8
+ import { EIOilInventoriesResource } from "./oil-inventories.js";
9
+ import { EIOPECProductionResource } from "./opec-production.js";
10
+ import { EIDrillingProductivityResource } from "./drilling-productivity.js";
11
+ import { EIForecastsResource } from "./forecasts.js";
12
+ import { EIWellPermitsResource } from "./well-permits.js";
13
+ import { EIFracFocusResource } from "./frac-focus.js";
14
+ /**
15
+ * Energy Intelligence Resource
16
+ *
17
+ * Access comprehensive energy market intelligence from EIA, Baker Hughes,
18
+ * FracFocus, and other authoritative sources.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * import { OilPriceAPI } from 'oilpriceapi';
23
+ *
24
+ * const client = new OilPriceAPI({ apiKey: 'your_key' });
25
+ *
26
+ * // Rig counts
27
+ * const rigCounts = await client.ei.rigCounts.latest();
28
+ * console.log(`Total rigs: ${rigCounts.total_rigs}`);
29
+ *
30
+ * // Oil inventories
31
+ * const inventories = await client.ei.oilInventories.latest();
32
+ * console.log(`Crude stocks: ${inventories.level} ${inventories.unit}`);
33
+ *
34
+ * // OPEC production
35
+ * const opec = await client.ei.opecProduction.total();
36
+ * console.log(`OPEC production: ${opec.total_production_bpd} bpd`);
37
+ *
38
+ * // Well timeline
39
+ * const timeline = await client.ei.wellTimeline('42-123-12345');
40
+ * timeline.events.forEach(e => {
41
+ * console.log(`${e.date}: ${e.event_type}`);
42
+ * });
43
+ * ```
44
+ */
45
+ export class EnergyIntelligenceResource {
46
+ constructor(client) {
47
+ this.client = client;
48
+ this.rigCounts = new EIRigCountsResource(client);
49
+ this.oilInventories = new EIOilInventoriesResource(client);
50
+ this.opecProduction = new EIOPECProductionResource(client);
51
+ this.drillingProductivity = new EIDrillingProductivityResource(client);
52
+ this.forecasts = new EIForecastsResource(client);
53
+ this.wellPermits = new EIWellPermitsResource(client);
54
+ this.fracFocus = new EIFracFocusResource(client);
55
+ }
56
+ /**
57
+ * Get well timeline by API number
58
+ *
59
+ * Returns chronological timeline of events for a specific well including
60
+ * permits, drilling, completion, production, and FracFocus disclosures.
61
+ *
62
+ * @param apiNumber - API well number (e.g., "42-123-12345")
63
+ * @returns Well timeline with events
64
+ *
65
+ * @throws {NotFoundError} If well not found
66
+ * @throws {OilPriceAPIError} If API request fails
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const timeline = await client.ei.wellTimeline('42-123-12345');
71
+ * console.log(`Well: ${timeline.well_name}`);
72
+ * console.log(`Operator: ${timeline.operator}`);
73
+ * console.log(`Events: ${timeline.events.length}`);
74
+ *
75
+ * timeline.events.forEach(event => {
76
+ * console.log(`${event.date}: ${event.event_type} - ${event.description}`);
77
+ * });
78
+ * ```
79
+ */
80
+ async wellTimeline(apiNumber) {
81
+ if (!apiNumber || typeof apiNumber !== "string") {
82
+ throw new Error("API number must be a non-empty string");
83
+ }
84
+ return this.client["request"](`/v1/ei/wells/${apiNumber}/timeline`, {});
85
+ }
86
+ }
87
+ export { EIRigCountsResource, EIOilInventoriesResource, EIOPECProductionResource, EIDrillingProductivityResource, EIForecastsResource, EIWellPermitsResource, EIFracFocusResource, };