parliament-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.
@@ -0,0 +1,693 @@
1
+ import pLimit from 'p-limit';
2
+
3
+ interface ClientOptions {
4
+ /** Max concurrent requests (default: 5) */
5
+ concurrency?: number;
6
+ /** Max retry attempts on 429/5xx (default: 3) */
7
+ retries?: number;
8
+ /** Base delay in ms for exponential backoff (default: 1000) */
9
+ retryDelay?: number;
10
+ }
11
+ declare class BaseClient {
12
+ protected readonly baseUrl: string;
13
+ protected readonly limit: ReturnType<typeof pLimit>;
14
+ protected readonly retries: number;
15
+ protected readonly retryDelay: number;
16
+ constructor(baseUrl: string, options?: ClientOptions);
17
+ protected request<T>(path: string, params?: Record<string, unknown>): Promise<T>;
18
+ private fetchWithRetry;
19
+ private sleep;
20
+ }
21
+
22
+ /** House of Parliament */
23
+ declare enum House {
24
+ Commons = 1,
25
+ Lords = 2
26
+ }
27
+ /** Pagination parameters accepted by search endpoints */
28
+ interface PaginationParams {
29
+ skip?: number;
30
+ take?: number;
31
+ }
32
+ /** Standard paginated response wrapper from the Members/Questions APIs */
33
+ interface PaginatedResponse<T> {
34
+ items: T[];
35
+ totalResults: number;
36
+ resultContext: string;
37
+ skip: number;
38
+ take: number;
39
+ links: Link[];
40
+ }
41
+ interface Link {
42
+ rel: string;
43
+ href: string;
44
+ method: string;
45
+ }
46
+ /** Wrapper that the Members API uses around individual items */
47
+ interface MemberApiItem<T> {
48
+ value: T;
49
+ links: Link[];
50
+ }
51
+ /** Response wrapper used by the Questions & Statements API */
52
+ interface QuestionsApiResponse<T> {
53
+ totalResults: number;
54
+ results: MemberApiItem<T>[];
55
+ }
56
+
57
+ interface Member {
58
+ id: number;
59
+ nameListAs: string;
60
+ nameDisplayAs: string;
61
+ nameFullTitle: string;
62
+ nameAddressAs: string;
63
+ latestParty: Party;
64
+ gender: string;
65
+ latestHouseMembership: HouseMembership;
66
+ thumbnailUrl: string;
67
+ }
68
+ interface Party {
69
+ id: number;
70
+ name: string;
71
+ abbreviation: string;
72
+ colour: string;
73
+ isIndependent: boolean;
74
+ }
75
+ interface HouseMembership {
76
+ membershipFrom: string | null;
77
+ membershipFromId: number | null;
78
+ house: House | null;
79
+ membershipStartDate: string | null;
80
+ membershipEndDate: string | null;
81
+ membershipEndReason: string | null;
82
+ membershipEndReasonNotes: string | null;
83
+ membershipEndReasonId: number | null;
84
+ membershipStatus: MembershipStatus | null;
85
+ }
86
+ interface MembershipStatus {
87
+ statusIsActive: boolean;
88
+ statusDescription: string;
89
+ statusNotes: string | null;
90
+ status: number;
91
+ id: number;
92
+ }
93
+ interface MemberBiography {
94
+ representations: BiographyItem[] | null;
95
+ electionsContested: BiographyItem[] | null;
96
+ houseMemberships: BiographyItem[] | null;
97
+ governmentPosts: BiographyItem[] | null;
98
+ oppositionPosts: BiographyItem[] | null;
99
+ otherPosts: BiographyItem[] | null;
100
+ partyAffiliations: BiographyItem[] | null;
101
+ committeeMemberships: BiographyItem[] | null;
102
+ }
103
+ interface BiographyItem {
104
+ house: House | null;
105
+ name: string | null;
106
+ id: number;
107
+ startDate: string;
108
+ endDate: string | null;
109
+ additionalInfo: string | null;
110
+ additionalInfoLink: string | null;
111
+ }
112
+ interface MemberContact {
113
+ type: string;
114
+ typeDescription: string;
115
+ typeId: number;
116
+ isPreferred: boolean;
117
+ isWebAddress: boolean;
118
+ notes: string | null;
119
+ line1: string | null;
120
+ line2: string | null;
121
+ line3: string | null;
122
+ line4: string | null;
123
+ line5: string | null;
124
+ postcode: string | null;
125
+ phone: string | null;
126
+ fax: string | null;
127
+ email: string | null;
128
+ }
129
+ interface ElectionResult {
130
+ result: string | null;
131
+ isNotional: boolean;
132
+ electorate: number;
133
+ turnout: number;
134
+ majority: number;
135
+ winningParty: Party | null;
136
+ electionTitle: string | null;
137
+ electionDate: string;
138
+ electionId: number;
139
+ isGeneralElection: boolean;
140
+ constituencyName: string | null;
141
+ candidates: ElectionCandidate[] | null;
142
+ }
143
+ interface ElectionCandidate {
144
+ memberId: number | null;
145
+ name: string;
146
+ party: Party;
147
+ votes: number;
148
+ voteShare: number;
149
+ voteShareChange: number | null;
150
+ isWinner: boolean;
151
+ }
152
+ interface RegisteredInterestCategory {
153
+ id: number;
154
+ name: string;
155
+ sortOrder: number;
156
+ interests: RegisteredInterest[];
157
+ }
158
+ interface RegisteredInterest {
159
+ id: number;
160
+ interest: string;
161
+ createdWhen: string;
162
+ lastAmendedWhen: string | null;
163
+ deletedWhen: string | null;
164
+ isCorrection: boolean;
165
+ childInterests: RegisteredInterest[] | null;
166
+ }
167
+ interface GovernmentOppositionPost {
168
+ type: number | null;
169
+ name: string | null;
170
+ hansardName: string | null;
171
+ id: number;
172
+ postHolders: PostHolder[] | null;
173
+ governmentDepartments: GovernmentDepartment[] | null;
174
+ createdWhen: string;
175
+ order: number;
176
+ }
177
+ interface PostHolder {
178
+ member: Member | null;
179
+ startDate: string;
180
+ endDate: string | null;
181
+ layingMinisterName: string | null;
182
+ isPaid: boolean;
183
+ }
184
+ interface GovernmentDepartment {
185
+ id: number;
186
+ name: string;
187
+ }
188
+ interface Constituency {
189
+ id: number;
190
+ name: string;
191
+ startDate: string;
192
+ endDate: string | null;
193
+ currentRepresentation: ConstituencyRepresentation | null;
194
+ }
195
+ interface ConstituencyRepresentation {
196
+ member: Member | null;
197
+ representation: HouseMembership | null;
198
+ }
199
+ interface MemberExperience {
200
+ experience: string;
201
+ organisation: string | null;
202
+ title: string | null;
203
+ startDate: string | null;
204
+ endDate: string | null;
205
+ type: string | null;
206
+ }
207
+ interface MemberFocus {
208
+ category: string;
209
+ focus: string;
210
+ }
211
+ interface MemberSynopsis {
212
+ value: string;
213
+ }
214
+ interface MemberStaff {
215
+ id: number;
216
+ name: string;
217
+ role: string | null;
218
+ }
219
+ interface ContributionSummary {
220
+ house: House;
221
+ topCategories: ContributionCategory[];
222
+ page: number;
223
+ pageSize: number;
224
+ totalCount: number;
225
+ }
226
+ interface ContributionCategory {
227
+ type: string;
228
+ total: number;
229
+ lastDate: string | null;
230
+ }
231
+ interface Edm {
232
+ id: number;
233
+ title: string;
234
+ primarySponsorMemberId: number;
235
+ dateTabled: string;
236
+ numberOfSignatures: number;
237
+ sessionId: number;
238
+ status: string | null;
239
+ sponsorType: string | null;
240
+ }
241
+ interface MemberVote {
242
+ publishedDivision: PublishedDivision;
243
+ memberVotedAye: boolean;
244
+ inAffirmativeLobby: boolean | null;
245
+ }
246
+ interface PublishedDivision {
247
+ divisionId: number;
248
+ date: string;
249
+ publicationUpdated: string;
250
+ number: number;
251
+ isAye: boolean;
252
+ ayeCount: number;
253
+ noCount: number;
254
+ title: string;
255
+ }
256
+ interface PartyStateOfTheParties {
257
+ party: Party;
258
+ male: number;
259
+ female: number;
260
+ nonBinary: number;
261
+ total: number;
262
+ }
263
+ interface MemberSearchParams extends PaginationParams {
264
+ nameStartsWith?: string;
265
+ nameContains?: string;
266
+ house?: House;
267
+ isCurrentMember?: boolean;
268
+ isEligible?: boolean;
269
+ partyId?: number;
270
+ constituencyId?: number;
271
+ gender?: string;
272
+ }
273
+ interface MemberHistoricalSearchParams extends PaginationParams {
274
+ nameStartsWith?: string;
275
+ nameContains?: string;
276
+ house?: House;
277
+ partyId?: number;
278
+ constituencyId?: number;
279
+ gender?: string;
280
+ }
281
+ interface ContributionSummaryParams {
282
+ page?: number;
283
+ pageSize?: number;
284
+ }
285
+ interface EdmParams extends PaginationParams {
286
+ }
287
+ interface VotingParams extends PaginationParams {
288
+ house?: House;
289
+ }
290
+ interface WrittenQuestionsParams extends PaginationParams {
291
+ house?: House;
292
+ }
293
+ interface ConstituencySearchParams extends PaginationParams {
294
+ searchText?: string;
295
+ }
296
+
297
+ declare class MembersClient extends BaseClient {
298
+ constructor(options?: ClientOptions);
299
+ search(params?: MemberSearchParams): Promise<PaginatedResponse<MemberApiItem<Member>>>;
300
+ searchHistorical(params?: MemberHistoricalSearchParams): Promise<PaginatedResponse<MemberApiItem<Member>>>;
301
+ /** Auto-paginating search that yields each page */
302
+ searchAll(params?: MemberSearchParams): AsyncGenerator<MemberApiItem<Member>[]>;
303
+ getById(id: number): Promise<MemberApiItem<Member>>;
304
+ getBiography(id: number): Promise<MemberApiItem<MemberBiography>>;
305
+ getContact(id: number): Promise<MemberApiItem<MemberContact[]>>;
306
+ getContributionSummary(id: number, params?: ContributionSummaryParams): Promise<MemberApiItem<ContributionSummary>>;
307
+ getEdms(id: number, params?: EdmParams): Promise<PaginatedResponse<MemberApiItem<Edm>>>;
308
+ getExperience(id: number): Promise<MemberApiItem<MemberExperience[]>>;
309
+ getFocus(id: number): Promise<MemberApiItem<MemberFocus[]>>;
310
+ getLatestElectionResult(id: number): Promise<MemberApiItem<ElectionResult>>;
311
+ getRegisteredInterests(id: number): Promise<MemberApiItem<RegisteredInterestCategory[]>>;
312
+ getStaff(id: number): Promise<MemberApiItem<MemberStaff[]>>;
313
+ getSynopsis(id: number): Promise<MemberApiItem<MemberSynopsis>>;
314
+ getVoting(id: number, params?: VotingParams): Promise<PaginatedResponse<MemberApiItem<MemberVote>>>;
315
+ getWrittenQuestions(id: number, params?: WrittenQuestionsParams): Promise<PaginatedResponse<MemberApiItem<unknown>>>;
316
+ getPortraitUrl(id: number): Promise<MemberApiItem<string>>;
317
+ getThumbnailUrl(id: number): Promise<MemberApiItem<string>>;
318
+ getGovernmentPosts(): Promise<PaginatedResponse<MemberApiItem<GovernmentOppositionPost>>>;
319
+ getOppositionPosts(): Promise<PaginatedResponse<MemberApiItem<GovernmentOppositionPost>>>;
320
+ getSpokespersons(): Promise<PaginatedResponse<MemberApiItem<GovernmentOppositionPost>>>;
321
+ getActiveParties(house: House): Promise<MemberApiItem<Party[]>>;
322
+ getStateOfTheParties(house: House, date: string): Promise<MemberApiItem<PartyStateOfTheParties[]>>;
323
+ searchConstituencies(params?: ConstituencySearchParams): Promise<PaginatedResponse<MemberApiItem<Constituency>>>;
324
+ getConstituency(id: number): Promise<MemberApiItem<Constituency>>;
325
+ getConstituencyElectionResults(id: number): Promise<MemberApiItem<ElectionResult[]>>;
326
+ }
327
+
328
+ interface WrittenQuestion {
329
+ id: number;
330
+ askingMemberId: number;
331
+ askingMember: QuestionMember | null;
332
+ house: House;
333
+ memberHasInterest: boolean;
334
+ dateTabled: string;
335
+ dateForAnswer: string;
336
+ uin: string;
337
+ questionText: string;
338
+ answeringBodyId: number;
339
+ answeringBodyName: string;
340
+ isWithdrawn: boolean;
341
+ isNamedDay: boolean;
342
+ groupedQuestions: string[] | null;
343
+ answerIsHolding: boolean | null;
344
+ answerIsCorrection: boolean | null;
345
+ answeringMemberId: number | null;
346
+ answeringMember: QuestionMember | null;
347
+ correctingMemberId: number | null;
348
+ correctingMember: QuestionMember | null;
349
+ dateAnswered: string | null;
350
+ answerText: string | null;
351
+ originalAnswerText: string | null;
352
+ comparableAnswerText: string | null;
353
+ dateAnswerCorrected: string | null;
354
+ dateHoldingAnswer: string | null;
355
+ attachmentCount: number;
356
+ heading: string;
357
+ attachments: Attachment[] | null;
358
+ groupedQuestionsDates: GroupedQuestion[] | null;
359
+ }
360
+ interface QuestionMember {
361
+ id: number;
362
+ name: string | null;
363
+ listAs: string | null;
364
+ party: string | null;
365
+ partyId: number | null;
366
+ partyColour: string | null;
367
+ partyAbbreviation: string | null;
368
+ memberFrom: string | null;
369
+ thumbnailUrl: string | null;
370
+ }
371
+ interface Attachment {
372
+ fileName: string;
373
+ fileSizeBytes: number;
374
+ url: string;
375
+ title: string | null;
376
+ }
377
+ interface GroupedQuestion {
378
+ uin: string;
379
+ questionId: number;
380
+ dateTabled: string;
381
+ }
382
+ interface WrittenStatement {
383
+ id: number;
384
+ memberId: number;
385
+ member: QuestionMember | null;
386
+ memberRole: string | null;
387
+ uin: string;
388
+ dateMade: string;
389
+ answeringBodyId: number;
390
+ answeringBodyName: string;
391
+ title: string;
392
+ text: string;
393
+ house: House;
394
+ noticeNumber: number;
395
+ hasAttachments: boolean;
396
+ hasLinkedStatements: boolean;
397
+ linkedStatements: LinkedStatement[] | null;
398
+ attachments: Attachment[] | null;
399
+ }
400
+ interface LinkedStatement {
401
+ id: number;
402
+ uin: string;
403
+ title: string;
404
+ house: House;
405
+ }
406
+ interface DailyReport {
407
+ house: House;
408
+ date: string;
409
+ fileSizeBytes: number;
410
+ url: string;
411
+ }
412
+ declare enum AnsweredStatus {
413
+ Any = "Any",
414
+ Answered = "Answered",
415
+ Unanswered = "Unanswered"
416
+ }
417
+ interface WrittenQuestionSearchParams extends PaginationParams {
418
+ searchTerm?: string;
419
+ askingMemberId?: number;
420
+ answeringMemberId?: number;
421
+ tabledWhenFrom?: string;
422
+ tabledWhenTo?: string;
423
+ dateForAnswerWhenFrom?: string;
424
+ dateForAnswerWhenTo?: string;
425
+ answered?: AnsweredStatus;
426
+ answeredWhenFrom?: string;
427
+ answeredWhenTo?: string;
428
+ includeWithdrawn?: boolean;
429
+ expandMember?: boolean;
430
+ correctedWhenFrom?: string;
431
+ correctedWhenTo?: string;
432
+ uIN?: string;
433
+ answeringBodies?: number[];
434
+ members?: number[];
435
+ house?: House;
436
+ }
437
+ interface WrittenStatementSearchParams extends PaginationParams {
438
+ searchTerm?: string;
439
+ memberId?: number;
440
+ madeWhenFrom?: string;
441
+ madeWhenTo?: string;
442
+ house?: House;
443
+ answeringBodies?: number[];
444
+ }
445
+ interface DailyReportParams extends PaginationParams {
446
+ house?: House;
447
+ dateFrom?: string;
448
+ dateTo?: string;
449
+ }
450
+
451
+ declare class QuestionsClient extends BaseClient {
452
+ constructor(options?: ClientOptions);
453
+ searchWrittenQuestions(params?: WrittenQuestionSearchParams): Promise<QuestionsApiResponse<WrittenQuestion>>;
454
+ getWrittenQuestion(id: number): Promise<MemberApiItem<WrittenQuestion>>;
455
+ /** Auto-paginating search that yields each page */
456
+ searchAllWrittenQuestions(params?: WrittenQuestionSearchParams): AsyncGenerator<MemberApiItem<WrittenQuestion>[]>;
457
+ searchWrittenStatements(params?: WrittenStatementSearchParams): Promise<QuestionsApiResponse<WrittenStatement>>;
458
+ getWrittenStatement(id: number): Promise<MemberApiItem<WrittenStatement>>;
459
+ /** Auto-paginating search that yields each page */
460
+ searchAllWrittenStatements(params?: WrittenStatementSearchParams): AsyncGenerator<MemberApiItem<WrittenStatement>[]>;
461
+ getDailyReports(params?: DailyReportParams): Promise<QuestionsApiResponse<DailyReport>>;
462
+ }
463
+
464
+ interface HansardSearchResponse {
465
+ TotalMembers: number;
466
+ TotalContributions: number;
467
+ TotalWrittenStatements: number;
468
+ TotalWrittenAnswers: number;
469
+ TotalCorrections: number;
470
+ TotalPetitions: number;
471
+ TotalDebates: number;
472
+ TotalCommittees: number;
473
+ TotalDivisions: number;
474
+ SearchTerms: string[];
475
+ Members: HansardMember[];
476
+ Contributions: HansardContribution[];
477
+ WrittenStatements: HansardWrittenStatement[];
478
+ WrittenAnswers: HansardWrittenAnswer[];
479
+ Corrections: HansardContribution[];
480
+ Petitions: HansardContribution[];
481
+ Debates: HansardDebateSummary[];
482
+ Divisions: HansardDivisionSummary[];
483
+ Committees: HansardContribution[];
484
+ }
485
+ interface HansardContribution {
486
+ MemberName: string | null;
487
+ MemberId: number | null;
488
+ AttributedTo: string | null;
489
+ ItemId: number;
490
+ ContributionExtId: string | null;
491
+ ContributionText: string | null;
492
+ ContributionTextFull: string | null;
493
+ HRSTag: string | null;
494
+ HansardSection: string | null;
495
+ Timecode: string | null;
496
+ DebateSection: string | null;
497
+ DebateSectionId: number | null;
498
+ DebateSectionExtId: string | null;
499
+ SittingDate: string;
500
+ Section: string | null;
501
+ House: string | null;
502
+ OrderInDebateSection: number | null;
503
+ DebateSectionOrder: number | null;
504
+ Rank: number | null;
505
+ }
506
+ interface HansardMember {
507
+ MemberId: number;
508
+ MemberName: string;
509
+ Party: string | null;
510
+ Constituency: string | null;
511
+ House: string | null;
512
+ ThumbnailUrl: string | null;
513
+ }
514
+ interface HansardWrittenStatement {
515
+ MemberName: string | null;
516
+ MemberId: number | null;
517
+ Title: string | null;
518
+ DateMade: string | null;
519
+ Department: string | null;
520
+ UIN: string | null;
521
+ ItemId: number;
522
+ House: string | null;
523
+ Rank: number | null;
524
+ }
525
+ interface HansardWrittenAnswer {
526
+ MemberName: string | null;
527
+ MemberId: number | null;
528
+ QuestionText: string | null;
529
+ AnswerText: string | null;
530
+ UIN: string | null;
531
+ ItemId: number;
532
+ House: string | null;
533
+ Rank: number | null;
534
+ }
535
+ interface HansardDebateSummary {
536
+ DebateSectionId: number;
537
+ DebateSectionExtId: string | null;
538
+ Title: string | null;
539
+ SittingDate: string;
540
+ House: string | null;
541
+ Section: string | null;
542
+ TotalContributions: number;
543
+ Rank: number | null;
544
+ }
545
+ interface HansardDebate {
546
+ ExternalId: string;
547
+ Title: string;
548
+ SittingDate: string;
549
+ House: string;
550
+ Section: string;
551
+ Items: HansardDebateItem[];
552
+ }
553
+ interface HansardDebateItem {
554
+ ExternalId: string;
555
+ ItemType: string;
556
+ MemberId: number | null;
557
+ MemberName: string | null;
558
+ AttributedTo: string | null;
559
+ Value: string | null;
560
+ Timecode: string | null;
561
+ OrderInDebateSection: number;
562
+ }
563
+ interface HansardDivisionSummary {
564
+ DivisionId: number;
565
+ Title: string | null;
566
+ Date: string;
567
+ House: string | null;
568
+ AyeCount: number;
569
+ NoCount: number;
570
+ Rank: number | null;
571
+ }
572
+ interface HansardDivision {
573
+ DivisionId: number;
574
+ Title: string;
575
+ Date: string;
576
+ House: string;
577
+ AyeCount: number;
578
+ NoCount: number;
579
+ AyeMembers: HansardDivisionMember[];
580
+ NoMembers: HansardDivisionMember[];
581
+ }
582
+ interface HansardDivisionMember {
583
+ MemberId: number;
584
+ MemberName: string;
585
+ Party: string | null;
586
+ }
587
+ interface MemberContributionSummary {
588
+ MemberId: number;
589
+ MemberName: string | null;
590
+ TotalOralContributions: number;
591
+ TotalWrittenStatements: number;
592
+ TotalWrittenAnswers: number;
593
+ TotalDebates: number;
594
+ TotalDivisions: number;
595
+ }
596
+ interface HansardSpeaker {
597
+ MemberId: number;
598
+ MemberName: string;
599
+ Party: string | null;
600
+ Constituency: string | null;
601
+ ThumbnailUrl: string | null;
602
+ }
603
+ interface SittingDay {
604
+ Date: string;
605
+ House: string;
606
+ }
607
+ interface HansardSection {
608
+ Id: number;
609
+ ExternalId: string | null;
610
+ Title: string;
611
+ House: string;
612
+ SittingDate: string;
613
+ Section: string;
614
+ }
615
+ interface HansardSearchParams {
616
+ searchTerm?: string;
617
+ memberId?: number;
618
+ house?: 'Commons' | 'Lords';
619
+ startDate?: string;
620
+ endDate?: string;
621
+ skip?: number;
622
+ take?: number;
623
+ }
624
+ interface HansardContributionSearchParams {
625
+ searchTerm?: string;
626
+ memberId?: number;
627
+ house?: 'Commons' | 'Lords';
628
+ startDate?: string;
629
+ endDate?: string;
630
+ skip?: number;
631
+ take?: number;
632
+ }
633
+ type HansardContributionType = 'contributions' | 'writtenstatements' | 'writtenanswers' | 'corrections' | 'petitions' | 'debates' | 'divisions' | 'committees';
634
+ interface HansardDebateSearchParams {
635
+ searchTerm?: string;
636
+ house?: 'Commons' | 'Lords';
637
+ startDate?: string;
638
+ endDate?: string;
639
+ skip?: number;
640
+ take?: number;
641
+ }
642
+ interface HansardDivisionSearchParams {
643
+ searchTerm?: string;
644
+ house?: 'Commons' | 'Lords';
645
+ startDate?: string;
646
+ endDate?: string;
647
+ skip?: number;
648
+ take?: number;
649
+ }
650
+ interface HansardMemberSearchParams {
651
+ searchTerm?: string;
652
+ house?: 'Commons' | 'Lords';
653
+ }
654
+ interface MemberContributionSummaryParams {
655
+ startDate?: string;
656
+ endDate?: string;
657
+ house?: 'Commons' | 'Lords';
658
+ }
659
+ interface SittingDaysParams {
660
+ house?: 'Commons' | 'Lords';
661
+ startDate?: string;
662
+ endDate?: string;
663
+ }
664
+ interface SectionsForDayParams {
665
+ date: string;
666
+ house?: 'Commons' | 'Lords';
667
+ }
668
+
669
+ declare class HansardClient extends BaseClient {
670
+ constructor(options?: ClientOptions);
671
+ search(params?: HansardSearchParams): Promise<HansardSearchResponse>;
672
+ searchContributions(type: HansardContributionType, params?: HansardContributionSearchParams): Promise<HansardSearchResponse>;
673
+ getMemberContributionSummary(id: number, params?: MemberContributionSummaryParams): Promise<MemberContributionSummary>;
674
+ searchDebates(params?: HansardDebateSearchParams): Promise<HansardSearchResponse>;
675
+ searchDivisions(params?: HansardDivisionSearchParams): Promise<HansardSearchResponse>;
676
+ searchMembers(params?: HansardMemberSearchParams): Promise<HansardSearchResponse>;
677
+ getDebate(id: string): Promise<HansardDebate>;
678
+ getDebateSpeakers(id: string): Promise<HansardSpeaker[]>;
679
+ getDebateDivisions(id: string): Promise<HansardDivision[]>;
680
+ getMemberDebateContributions(id: string): Promise<HansardContribution[]>;
681
+ getSittingDays(params?: SittingDaysParams): Promise<SittingDay[]>;
682
+ getLastSittingDate(): Promise<string>;
683
+ getSectionsForDay(params: SectionsForDayParams): Promise<HansardSection[]>;
684
+ }
685
+
686
+ declare class ParliamentAPI {
687
+ readonly members: MembersClient;
688
+ readonly questions: QuestionsClient;
689
+ readonly hansard: HansardClient;
690
+ constructor(options?: ClientOptions);
691
+ }
692
+
693
+ export { AnsweredStatus, type Attachment, BaseClient, type BiographyItem, type ClientOptions, type Constituency, type ConstituencyRepresentation, type ConstituencySearchParams, type ContributionCategory, type ContributionSummary, type ContributionSummaryParams, type DailyReport, type DailyReportParams, type Edm, type EdmParams, type ElectionCandidate, type ElectionResult, type GovernmentDepartment, type GovernmentOppositionPost, type GroupedQuestion, HansardClient, type HansardContribution, type HansardContributionSearchParams, type HansardContributionType, type HansardDebate, type HansardDebateItem, type HansardDebateSearchParams, type HansardDebateSummary, type HansardDivision, type HansardDivisionMember, type HansardDivisionSearchParams, type HansardDivisionSummary, type HansardMember, type HansardMemberSearchParams, type HansardSearchParams, type HansardSearchResponse, type HansardSection, type HansardSpeaker, type HansardWrittenAnswer, type HansardWrittenStatement, House, type HouseMembership, type Link, type LinkedStatement, type Member, type MemberApiItem, type MemberBiography, type MemberContact, type MemberContributionSummary, type MemberContributionSummaryParams, type MemberExperience, type MemberFocus, type MemberHistoricalSearchParams, type MemberSearchParams, type MemberStaff, type MemberSynopsis, type MemberVote, MembersClient, type MembershipStatus, type PaginatedResponse, type PaginationParams, ParliamentAPI, type Party, type PartyStateOfTheParties, type PostHolder, type PublishedDivision, type QuestionMember, type QuestionsApiResponse, QuestionsClient, type RegisteredInterest, type RegisteredInterestCategory, type SectionsForDayParams, type SittingDay, type SittingDaysParams, type VotingParams, type WrittenQuestion, type WrittenQuestionSearchParams, type WrittenQuestionsParams, type WrittenStatement, type WrittenStatementSearchParams };