Projekt

Obecné

Profil

Stáhnout (55 KB) Statistiky
| Větev: | Revize:
1
declare module "http2" {
2
    import * as events from "events";
3
    import * as fs from "fs";
4
    import * as net from "net";
5
    import * as stream from "stream";
6
    import * as tls from "tls";
7
    import * as url from "url";
8

    
9
    import { IncomingHttpHeaders as Http1IncomingHttpHeaders, OutgoingHttpHeaders, IncomingMessage, ServerResponse } from "http";
10
    export { OutgoingHttpHeaders } from "http";
11

    
12
    export interface IncomingHttpStatusHeader {
13
        ":status"?: number;
14
    }
15

    
16
    export interface IncomingHttpHeaders extends Http1IncomingHttpHeaders {
17
        ":path"?: string;
18
        ":method"?: string;
19
        ":authority"?: string;
20
        ":scheme"?: string;
21
    }
22

    
23
    // Http2Stream
24

    
25
    export interface StreamPriorityOptions {
26
        exclusive?: boolean;
27
        parent?: number;
28
        weight?: number;
29
        silent?: boolean;
30
    }
31

    
32
    export interface StreamState {
33
        localWindowSize?: number;
34
        state?: number;
35
        localClose?: number;
36
        remoteClose?: number;
37
        sumDependencyWeight?: number;
38
        weight?: number;
39
    }
40

    
41
    export interface ServerStreamResponseOptions {
42
        endStream?: boolean;
43
        waitForTrailers?: boolean;
44
    }
45

    
46
    export interface StatOptions {
47
        offset: number;
48
        length: number;
49
    }
50

    
51
    export interface ServerStreamFileResponseOptions {
52
        statCheck?(stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions): void | boolean;
53
        waitForTrailers?: boolean;
54
        offset?: number;
55
        length?: number;
56
    }
57

    
58
    export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions {
59
        onError?(err: NodeJS.ErrnoException): void;
60
    }
61

    
62
    export interface Http2Stream extends stream.Duplex {
63
        readonly aborted: boolean;
64
        readonly bufferSize: number;
65
        readonly closed: boolean;
66
        readonly destroyed: boolean;
67
        /**
68
         * Set the true if the END_STREAM flag was set in the request or response HEADERS frame received,
69
         * indicating that no additional data should be received and the readable side of the Http2Stream will be closed.
70
         */
71
        readonly endAfterHeaders: boolean;
72
        readonly id?: number;
73
        readonly pending: boolean;
74
        readonly rstCode: number;
75
        readonly sentHeaders: OutgoingHttpHeaders;
76
        readonly sentInfoHeaders?: OutgoingHttpHeaders[];
77
        readonly sentTrailers?: OutgoingHttpHeaders;
78
        readonly session: Http2Session;
79
        readonly state: StreamState;
80

    
81
        close(code?: number, callback?: () => void): void;
82
        priority(options: StreamPriorityOptions): void;
83
        setTimeout(msecs: number, callback?: () => void): void;
84
        sendTrailers(headers: OutgoingHttpHeaders): void;
85

    
86
        addListener(event: "aborted", listener: () => void): this;
87
        addListener(event: "close", listener: () => void): this;
88
        addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
89
        addListener(event: "drain", listener: () => void): this;
90
        addListener(event: "end", listener: () => void): this;
91
        addListener(event: "error", listener: (err: Error) => void): this;
92
        addListener(event: "finish", listener: () => void): this;
93
        addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
94
        addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
95
        addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
96
        addListener(event: "streamClosed", listener: (code: number) => void): this;
97
        addListener(event: "timeout", listener: () => void): this;
98
        addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
99
        addListener(event: "wantTrailers", listener: () => void): this;
100
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
101

    
102
        emit(event: "aborted"): boolean;
103
        emit(event: "close"): boolean;
104
        emit(event: "data", chunk: Buffer | string): boolean;
105
        emit(event: "drain"): boolean;
106
        emit(event: "end"): boolean;
107
        emit(event: "error", err: Error): boolean;
108
        emit(event: "finish"): boolean;
109
        emit(event: "frameError", frameType: number, errorCode: number): boolean;
110
        emit(event: "pipe", src: stream.Readable): boolean;
111
        emit(event: "unpipe", src: stream.Readable): boolean;
112
        emit(event: "streamClosed", code: number): boolean;
113
        emit(event: "timeout"): boolean;
114
        emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean;
115
        emit(event: "wantTrailers"): boolean;
116
        emit(event: string | symbol, ...args: any[]): boolean;
117

    
118
        on(event: "aborted", listener: () => void): this;
119
        on(event: "close", listener: () => void): this;
120
        on(event: "data", listener: (chunk: Buffer | string) => void): this;
121
        on(event: "drain", listener: () => void): this;
122
        on(event: "end", listener: () => void): this;
123
        on(event: "error", listener: (err: Error) => void): this;
124
        on(event: "finish", listener: () => void): this;
125
        on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
126
        on(event: "pipe", listener: (src: stream.Readable) => void): this;
127
        on(event: "unpipe", listener: (src: stream.Readable) => void): this;
128
        on(event: "streamClosed", listener: (code: number) => void): this;
129
        on(event: "timeout", listener: () => void): this;
130
        on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
131
        on(event: "wantTrailers", listener: () => void): this;
132
        on(event: string | symbol, listener: (...args: any[]) => void): this;
133

    
134
        once(event: "aborted", listener: () => void): this;
135
        once(event: "close", listener: () => void): this;
136
        once(event: "data", listener: (chunk: Buffer | string) => void): this;
137
        once(event: "drain", listener: () => void): this;
138
        once(event: "end", listener: () => void): this;
139
        once(event: "error", listener: (err: Error) => void): this;
140
        once(event: "finish", listener: () => void): this;
141
        once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
142
        once(event: "pipe", listener: (src: stream.Readable) => void): this;
143
        once(event: "unpipe", listener: (src: stream.Readable) => void): this;
144
        once(event: "streamClosed", listener: (code: number) => void): this;
145
        once(event: "timeout", listener: () => void): this;
146
        once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
147
        once(event: "wantTrailers", listener: () => void): this;
148
        once(event: string | symbol, listener: (...args: any[]) => void): this;
149

    
150
        prependListener(event: "aborted", listener: () => void): this;
151
        prependListener(event: "close", listener: () => void): this;
152
        prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
153
        prependListener(event: "drain", listener: () => void): this;
154
        prependListener(event: "end", listener: () => void): this;
155
        prependListener(event: "error", listener: (err: Error) => void): this;
156
        prependListener(event: "finish", listener: () => void): this;
157
        prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
158
        prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
159
        prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
160
        prependListener(event: "streamClosed", listener: (code: number) => void): this;
161
        prependListener(event: "timeout", listener: () => void): this;
162
        prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
163
        prependListener(event: "wantTrailers", listener: () => void): this;
164
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
165

    
166
        prependOnceListener(event: "aborted", listener: () => void): this;
167
        prependOnceListener(event: "close", listener: () => void): this;
168
        prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
169
        prependOnceListener(event: "drain", listener: () => void): this;
170
        prependOnceListener(event: "end", listener: () => void): this;
171
        prependOnceListener(event: "error", listener: (err: Error) => void): this;
172
        prependOnceListener(event: "finish", listener: () => void): this;
173
        prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
174
        prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
175
        prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
176
        prependOnceListener(event: "streamClosed", listener: (code: number) => void): this;
177
        prependOnceListener(event: "timeout", listener: () => void): this;
178
        prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
179
        prependOnceListener(event: "wantTrailers", listener: () => void): this;
180
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
181
    }
182

    
183
    export interface ClientHttp2Stream extends Http2Stream {
184
        addListener(event: "continue", listener: () => {}): this;
185
        addListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
186
        addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
187
        addListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
188
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
189

    
190
        emit(event: "continue"): boolean;
191
        emit(event: "headers", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
192
        emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean;
193
        emit(event: "response", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
194
        emit(event: string | symbol, ...args: any[]): boolean;
195

    
196
        on(event: "continue", listener: () => {}): this;
197
        on(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
198
        on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
199
        on(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
200
        on(event: string | symbol, listener: (...args: any[]) => void): this;
201

    
202
        once(event: "continue", listener: () => {}): this;
203
        once(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
204
        once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
205
        once(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
206
        once(event: string | symbol, listener: (...args: any[]) => void): this;
207

    
208
        prependListener(event: "continue", listener: () => {}): this;
209
        prependListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
210
        prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
211
        prependListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
212
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
213

    
214
        prependOnceListener(event: "continue", listener: () => {}): this;
215
        prependOnceListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
216
        prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
217
        prependOnceListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
218
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
219
    }
220

    
221
    export interface ServerHttp2Stream extends Http2Stream {
222
        readonly headersSent: boolean;
223
        readonly pushAllowed: boolean;
224
        additionalHeaders(headers: OutgoingHttpHeaders): void;
225
        pushStream(headers: OutgoingHttpHeaders, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void;
226
        pushStream(headers: OutgoingHttpHeaders, options?: StreamPriorityOptions, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void;
227
        respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void;
228
        respondWithFD(fd: number | fs.promises.FileHandle, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void;
229
        respondWithFile(path: string, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptionsWithError): void;
230
    }
231

    
232
    // Http2Session
233

    
234
    export interface Settings {
235
        headerTableSize?: number;
236
        enablePush?: boolean;
237
        initialWindowSize?: number;
238
        maxFrameSize?: number;
239
        maxConcurrentStreams?: number;
240
        maxHeaderListSize?: number;
241
        enableConnectProtocol?: boolean;
242
    }
243

    
244
    export interface ClientSessionRequestOptions {
245
        endStream?: boolean;
246
        exclusive?: boolean;
247
        parent?: number;
248
        weight?: number;
249
        waitForTrailers?: boolean;
250
    }
251

    
252
    export interface SessionState {
253
        effectiveLocalWindowSize?: number;
254
        effectiveRecvDataLength?: number;
255
        nextStreamID?: number;
256
        localWindowSize?: number;
257
        lastProcStreamID?: number;
258
        remoteWindowSize?: number;
259
        outboundQueueSize?: number;
260
        deflateDynamicTableSize?: number;
261
        inflateDynamicTableSize?: number;
262
    }
263

    
264
    export interface Http2Session extends events.EventEmitter {
265
        readonly alpnProtocol?: string;
266
        readonly closed: boolean;
267
        readonly connecting: boolean;
268
        readonly destroyed: boolean;
269
        readonly encrypted?: boolean;
270
        readonly localSettings: Settings;
271
        readonly originSet?: string[];
272
        readonly pendingSettingsAck: boolean;
273
        readonly remoteSettings: Settings;
274
        readonly socket: net.Socket | tls.TLSSocket;
275
        readonly state: SessionState;
276
        readonly type: number;
277

    
278
        close(callback?: () => void): void;
279
        destroy(error?: Error, code?: number): void;
280
        goaway(code?: number, lastStreamID?: number, opaqueData?: NodeJS.ArrayBufferView): void;
281
        ping(callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean;
282
        ping(payload: NodeJS.ArrayBufferView, callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean;
283
        ref(): void;
284
        setTimeout(msecs: number, callback?: () => void): void;
285
        settings(settings: Settings): void;
286
        unref(): void;
287

    
288
        addListener(event: "close", listener: () => void): this;
289
        addListener(event: "error", listener: (err: Error) => void): this;
290
        addListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
291
        addListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
292
        addListener(event: "localSettings", listener: (settings: Settings) => void): this;
293
        addListener(event: "ping", listener: () => void): this;
294
        addListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
295
        addListener(event: "timeout", listener: () => void): this;
296
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
297

    
298
        emit(event: "close"): boolean;
299
        emit(event: "error", err: Error): boolean;
300
        emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean;
301
        emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean;
302
        emit(event: "localSettings", settings: Settings): boolean;
303
        emit(event: "ping"): boolean;
304
        emit(event: "remoteSettings", settings: Settings): boolean;
305
        emit(event: "timeout"): boolean;
306
        emit(event: string | symbol, ...args: any[]): boolean;
307

    
308
        on(event: "close", listener: () => void): this;
309
        on(event: "error", listener: (err: Error) => void): this;
310
        on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
311
        on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
312
        on(event: "localSettings", listener: (settings: Settings) => void): this;
313
        on(event: "ping", listener: () => void): this;
314
        on(event: "remoteSettings", listener: (settings: Settings) => void): this;
315
        on(event: "timeout", listener: () => void): this;
316
        on(event: string | symbol, listener: (...args: any[]) => void): this;
317

    
318
        once(event: "close", listener: () => void): this;
319
        once(event: "error", listener: (err: Error) => void): this;
320
        once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
321
        once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
322
        once(event: "localSettings", listener: (settings: Settings) => void): this;
323
        once(event: "ping", listener: () => void): this;
324
        once(event: "remoteSettings", listener: (settings: Settings) => void): this;
325
        once(event: "timeout", listener: () => void): this;
326
        once(event: string | symbol, listener: (...args: any[]) => void): this;
327

    
328
        prependListener(event: "close", listener: () => void): this;
329
        prependListener(event: "error", listener: (err: Error) => void): this;
330
        prependListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
331
        prependListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
332
        prependListener(event: "localSettings", listener: (settings: Settings) => void): this;
333
        prependListener(event: "ping", listener: () => void): this;
334
        prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
335
        prependListener(event: "timeout", listener: () => void): this;
336
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
337

    
338
        prependOnceListener(event: "close", listener: () => void): this;
339
        prependOnceListener(event: "error", listener: (err: Error) => void): this;
340
        prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
341
        prependOnceListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
342
        prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this;
343
        prependOnceListener(event: "ping", listener: () => void): this;
344
        prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
345
        prependOnceListener(event: "timeout", listener: () => void): this;
346
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
347
    }
348

    
349
    export interface ClientHttp2Session extends Http2Session {
350
        request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream;
351

    
352
        addListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
353
        addListener(event: "origin", listener: (origins: string[]) => void): this;
354
        addListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
355
        addListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
356
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
357

    
358
        emit(event: "altsvc", alt: string, origin: string, stream: number): boolean;
359
        emit(event: "origin", origins: string[]): boolean;
360
        emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;
361
        emit(event: "stream", stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
362
        emit(event: string | symbol, ...args: any[]): boolean;
363

    
364
        on(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
365
        on(event: "origin", listener: (origins: string[]) => void): this;
366
        on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
367
        on(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
368
        on(event: string | symbol, listener: (...args: any[]) => void): this;
369

    
370
        once(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
371
        once(event: "origin", listener: (origins: string[]) => void): this;
372
        once(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
373
        once(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
374
        once(event: string | symbol, listener: (...args: any[]) => void): this;
375

    
376
        prependListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
377
        prependListener(event: "origin", listener: (origins: string[]) => void): this;
378
        prependListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
379
        prependListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
380
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
381

    
382
        prependOnceListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
383
        prependOnceListener(event: "origin", listener: (origins: string[]) => void): this;
384
        prependOnceListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
385
        prependOnceListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
386
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
387
    }
388

    
389
    export interface AlternativeServiceOptions {
390
        origin: number | string | url.URL;
391
    }
392

    
393
    export interface ServerHttp2Session extends Http2Session {
394
        readonly server: Http2Server | Http2SecureServer;
395

    
396
        altsvc(alt: string, originOrStream: number | string | url.URL | AlternativeServiceOptions): void;
397
        origin(...args: Array<string | url.URL | { origin: string }>): void;
398

    
399
        addListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
400
        addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
401
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
402

    
403
        emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;
404
        emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
405
        emit(event: string | symbol, ...args: any[]): boolean;
406

    
407
        on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
408
        on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
409
        on(event: string | symbol, listener: (...args: any[]) => void): this;
410

    
411
        once(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
412
        once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
413
        once(event: string | symbol, listener: (...args: any[]) => void): this;
414

    
415
        prependListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
416
        prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
417
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
418

    
419
        prependOnceListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
420
        prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
421
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
422
    }
423

    
424
    // Http2Server
425

    
426
    export interface SessionOptions {
427
        maxDeflateDynamicTableSize?: number;
428
        maxSessionMemory?: number;
429
        maxHeaderListPairs?: number;
430
        maxOutstandingPings?: number;
431
        maxSendHeaderBlockLength?: number;
432
        paddingStrategy?: number;
433
        peerMaxConcurrentStreams?: number;
434
        settings?: Settings;
435

    
436
        selectPadding?(frameLen: number, maxFrameLen: number): number;
437
        createConnection?(authority: url.URL, option: SessionOptions): stream.Duplex;
438
    }
439

    
440
    export interface ClientSessionOptions extends SessionOptions {
441
        maxReservedRemoteStreams?: number;
442
        createConnection?: (authority: url.URL, option: SessionOptions) => stream.Duplex;
443
        protocol?: 'http:' | 'https:';
444
    }
445

    
446
    export interface ServerSessionOptions extends SessionOptions {
447
        Http1IncomingMessage?: typeof IncomingMessage;
448
        Http1ServerResponse?: typeof ServerResponse;
449
        Http2ServerRequest?: typeof Http2ServerRequest;
450
        Http2ServerResponse?: typeof Http2ServerResponse;
451
    }
452

    
453
    export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { }
454
    export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { }
455

    
456
    export interface ServerOptions extends ServerSessionOptions { }
457

    
458
    export interface SecureServerOptions extends SecureServerSessionOptions {
459
        allowHTTP1?: boolean;
460
        origins?: string[];
461
    }
462

    
463
    export interface Http2Server extends net.Server {
464
        addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
465
        addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
466
        addListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
467
        addListener(event: "sessionError", listener: (err: Error) => void): this;
468
        addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
469
        addListener(event: "timeout", listener: () => void): this;
470
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
471

    
472
        emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
473
        emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
474
        emit(event: "session", session: ServerHttp2Session): boolean;
475
        emit(event: "sessionError", err: Error): boolean;
476
        emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
477
        emit(event: "timeout"): boolean;
478
        emit(event: string | symbol, ...args: any[]): boolean;
479

    
480
        on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
481
        on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
482
        on(event: "session", listener: (session: ServerHttp2Session) => void): this;
483
        on(event: "sessionError", listener: (err: Error) => void): this;
484
        on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
485
        on(event: "timeout", listener: () => void): this;
486
        on(event: string | symbol, listener: (...args: any[]) => void): this;
487

    
488
        once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
489
        once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
490
        once(event: "session", listener: (session: ServerHttp2Session) => void): this;
491
        once(event: "sessionError", listener: (err: Error) => void): this;
492
        once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
493
        once(event: "timeout", listener: () => void): this;
494
        once(event: string | symbol, listener: (...args: any[]) => void): this;
495

    
496
        prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
497
        prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
498
        prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
499
        prependListener(event: "sessionError", listener: (err: Error) => void): this;
500
        prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
501
        prependListener(event: "timeout", listener: () => void): this;
502
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
503

    
504
        prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
505
        prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
506
        prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
507
        prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;
508
        prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
509
        prependOnceListener(event: "timeout", listener: () => void): this;
510
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
511

    
512
        setTimeout(msec?: number, callback?: () => void): this;
513
    }
514

    
515
    export interface Http2SecureServer extends tls.Server {
516
        addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
517
        addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
518
        addListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
519
        addListener(event: "sessionError", listener: (err: Error) => void): this;
520
        addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
521
        addListener(event: "timeout", listener: () => void): this;
522
        addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
523
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
524

    
525
        emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
526
        emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
527
        emit(event: "session", session: ServerHttp2Session): boolean;
528
        emit(event: "sessionError", err: Error): boolean;
529
        emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
530
        emit(event: "timeout"): boolean;
531
        emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean;
532
        emit(event: string | symbol, ...args: any[]): boolean;
533

    
534
        on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
535
        on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
536
        on(event: "session", listener: (session: ServerHttp2Session) => void): this;
537
        on(event: "sessionError", listener: (err: Error) => void): this;
538
        on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
539
        on(event: "timeout", listener: () => void): this;
540
        on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
541
        on(event: string | symbol, listener: (...args: any[]) => void): this;
542

    
543
        once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
544
        once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
545
        once(event: "session", listener: (session: ServerHttp2Session) => void): this;
546
        once(event: "sessionError", listener: (err: Error) => void): this;
547
        once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
548
        once(event: "timeout", listener: () => void): this;
549
        once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
550
        once(event: string | symbol, listener: (...args: any[]) => void): this;
551

    
552
        prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
553
        prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
554
        prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
555
        prependListener(event: "sessionError", listener: (err: Error) => void): this;
556
        prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
557
        prependListener(event: "timeout", listener: () => void): this;
558
        prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
559
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
560

    
561
        prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
562
        prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
563
        prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
564
        prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;
565
        prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
566
        prependOnceListener(event: "timeout", listener: () => void): this;
567
        prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
568
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
569

    
570
        setTimeout(msec?: number, callback?: () => void): this;
571
    }
572

    
573
    export class Http2ServerRequest extends stream.Readable {
574
        constructor(stream: ServerHttp2Stream, headers: IncomingHttpHeaders, options: stream.ReadableOptions, rawHeaders: string[]);
575

    
576
        readonly aborted: boolean;
577
        readonly authority: string;
578
        readonly headers: IncomingHttpHeaders;
579
        readonly httpVersion: string;
580
        readonly method: string;
581
        readonly rawHeaders: string[];
582
        readonly rawTrailers: string[];
583
        readonly scheme: string;
584
        readonly socket: net.Socket | tls.TLSSocket;
585
        readonly stream: ServerHttp2Stream;
586
        readonly trailers: IncomingHttpHeaders;
587
        readonly url: string;
588

    
589
        setTimeout(msecs: number, callback?: () => void): void;
590
        read(size?: number): Buffer | string | null;
591

    
592
        addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
593
        addListener(event: "close", listener: () => void): this;
594
        addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
595
        addListener(event: "end", listener: () => void): this;
596
        addListener(event: "readable", listener: () => void): this;
597
        addListener(event: "error", listener: (err: Error) => void): this;
598
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
599

    
600
        emit(event: "aborted", hadError: boolean, code: number): boolean;
601
        emit(event: "close"): boolean;
602
        emit(event: "data", chunk: Buffer | string): boolean;
603
        emit(event: "end"): boolean;
604
        emit(event: "readable"): boolean;
605
        emit(event: "error", err: Error): boolean;
606
        emit(event: string | symbol, ...args: any[]): boolean;
607

    
608
        on(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
609
        on(event: "close", listener: () => void): this;
610
        on(event: "data", listener: (chunk: Buffer | string) => void): this;
611
        on(event: "end", listener: () => void): this;
612
        on(event: "readable", listener: () => void): this;
613
        on(event: "error", listener: (err: Error) => void): this;
614
        on(event: string | symbol, listener: (...args: any[]) => void): this;
615

    
616
        once(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
617
        once(event: "close", listener: () => void): this;
618
        once(event: "data", listener: (chunk: Buffer | string) => void): this;
619
        once(event: "end", listener: () => void): this;
620
        once(event: "readable", listener: () => void): this;
621
        once(event: "error", listener: (err: Error) => void): this;
622
        once(event: string | symbol, listener: (...args: any[]) => void): this;
623

    
624
        prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
625
        prependListener(event: "close", listener: () => void): this;
626
        prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
627
        prependListener(event: "end", listener: () => void): this;
628
        prependListener(event: "readable", listener: () => void): this;
629
        prependListener(event: "error", listener: (err: Error) => void): this;
630
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
631

    
632
        prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
633
        prependOnceListener(event: "close", listener: () => void): this;
634
        prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
635
        prependOnceListener(event: "end", listener: () => void): this;
636
        prependOnceListener(event: "readable", listener: () => void): this;
637
        prependOnceListener(event: "error", listener: (err: Error) => void): this;
638
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
639
    }
640

    
641
    export class Http2ServerResponse extends stream.Stream {
642
        constructor(stream: ServerHttp2Stream);
643

    
644
        readonly connection: net.Socket | tls.TLSSocket;
645
        readonly finished: boolean;
646
        readonly headersSent: boolean;
647
        readonly socket: net.Socket | tls.TLSSocket;
648
        readonly stream: ServerHttp2Stream;
649
        sendDate: boolean;
650
        statusCode: number;
651
        statusMessage: '';
652
        addTrailers(trailers: OutgoingHttpHeaders): void;
653
        end(callback?: () => void): void;
654
        end(data: string | Uint8Array, callback?: () => void): void;
655
        end(data: string | Uint8Array, encoding: string, callback?: () => void): void;
656
        getHeader(name: string): string;
657
        getHeaderNames(): string[];
658
        getHeaders(): OutgoingHttpHeaders;
659
        hasHeader(name: string): boolean;
660
        removeHeader(name: string): void;
661
        setHeader(name: string, value: number | string | string[]): void;
662
        setTimeout(msecs: number, callback?: () => void): void;
663
        write(chunk: string | Uint8Array, callback?: (err: Error) => void): boolean;
664
        write(chunk: string | Uint8Array, encoding: string, callback?: (err: Error) => void): boolean;
665
        writeContinue(): void;
666
        writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this;
667
        writeHead(statusCode: number, statusMessage: string, headers?: OutgoingHttpHeaders): this;
668
        createPushResponse(headers: OutgoingHttpHeaders, callback: (err: Error | null, res: Http2ServerResponse) => void): void;
669

    
670
        addListener(event: "close", listener: () => void): this;
671
        addListener(event: "drain", listener: () => void): this;
672
        addListener(event: "error", listener: (error: Error) => void): this;
673
        addListener(event: "finish", listener: () => void): this;
674
        addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
675
        addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
676
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
677

    
678
        emit(event: "close"): boolean;
679
        emit(event: "drain"): boolean;
680
        emit(event: "error", error: Error): boolean;
681
        emit(event: "finish"): boolean;
682
        emit(event: "pipe", src: stream.Readable): boolean;
683
        emit(event: "unpipe", src: stream.Readable): boolean;
684
        emit(event: string | symbol, ...args: any[]): boolean;
685

    
686
        on(event: "close", listener: () => void): this;
687
        on(event: "drain", listener: () => void): this;
688
        on(event: "error", listener: (error: Error) => void): this;
689
        on(event: "finish", listener: () => void): this;
690
        on(event: "pipe", listener: (src: stream.Readable) => void): this;
691
        on(event: "unpipe", listener: (src: stream.Readable) => void): this;
692
        on(event: string | symbol, listener: (...args: any[]) => void): this;
693

    
694
        once(event: "close", listener: () => void): this;
695
        once(event: "drain", listener: () => void): this;
696
        once(event: "error", listener: (error: Error) => void): this;
697
        once(event: "finish", listener: () => void): this;
698
        once(event: "pipe", listener: (src: stream.Readable) => void): this;
699
        once(event: "unpipe", listener: (src: stream.Readable) => void): this;
700
        once(event: string | symbol, listener: (...args: any[]) => void): this;
701

    
702
        prependListener(event: "close", listener: () => void): this;
703
        prependListener(event: "drain", listener: () => void): this;
704
        prependListener(event: "error", listener: (error: Error) => void): this;
705
        prependListener(event: "finish", listener: () => void): this;
706
        prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
707
        prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
708
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
709

    
710
        prependOnceListener(event: "close", listener: () => void): this;
711
        prependOnceListener(event: "drain", listener: () => void): this;
712
        prependOnceListener(event: "error", listener: (error: Error) => void): this;
713
        prependOnceListener(event: "finish", listener: () => void): this;
714
        prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
715
        prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
716
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
717
    }
718

    
719
    // Public API
720

    
721
    export namespace constants {
722
        const NGHTTP2_SESSION_SERVER: number;
723
        const NGHTTP2_SESSION_CLIENT: number;
724
        const NGHTTP2_STREAM_STATE_IDLE: number;
725
        const NGHTTP2_STREAM_STATE_OPEN: number;
726
        const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number;
727
        const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number;
728
        const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number;
729
        const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number;
730
        const NGHTTP2_STREAM_STATE_CLOSED: number;
731
        const NGHTTP2_NO_ERROR: number;
732
        const NGHTTP2_PROTOCOL_ERROR: number;
733
        const NGHTTP2_INTERNAL_ERROR: number;
734
        const NGHTTP2_FLOW_CONTROL_ERROR: number;
735
        const NGHTTP2_SETTINGS_TIMEOUT: number;
736
        const NGHTTP2_STREAM_CLOSED: number;
737
        const NGHTTP2_FRAME_SIZE_ERROR: number;
738
        const NGHTTP2_REFUSED_STREAM: number;
739
        const NGHTTP2_CANCEL: number;
740
        const NGHTTP2_COMPRESSION_ERROR: number;
741
        const NGHTTP2_CONNECT_ERROR: number;
742
        const NGHTTP2_ENHANCE_YOUR_CALM: number;
743
        const NGHTTP2_INADEQUATE_SECURITY: number;
744
        const NGHTTP2_HTTP_1_1_REQUIRED: number;
745
        const NGHTTP2_ERR_FRAME_SIZE_ERROR: number;
746
        const NGHTTP2_FLAG_NONE: number;
747
        const NGHTTP2_FLAG_END_STREAM: number;
748
        const NGHTTP2_FLAG_END_HEADERS: number;
749
        const NGHTTP2_FLAG_ACK: number;
750
        const NGHTTP2_FLAG_PADDED: number;
751
        const NGHTTP2_FLAG_PRIORITY: number;
752
        const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number;
753
        const DEFAULT_SETTINGS_ENABLE_PUSH: number;
754
        const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number;
755
        const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number;
756
        const MAX_MAX_FRAME_SIZE: number;
757
        const MIN_MAX_FRAME_SIZE: number;
758
        const MAX_INITIAL_WINDOW_SIZE: number;
759
        const NGHTTP2_DEFAULT_WEIGHT: number;
760
        const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number;
761
        const NGHTTP2_SETTINGS_ENABLE_PUSH: number;
762
        const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number;
763
        const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number;
764
        const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number;
765
        const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number;
766
        const PADDING_STRATEGY_NONE: number;
767
        const PADDING_STRATEGY_MAX: number;
768
        const PADDING_STRATEGY_CALLBACK: number;
769
        const HTTP2_HEADER_STATUS: string;
770
        const HTTP2_HEADER_METHOD: string;
771
        const HTTP2_HEADER_AUTHORITY: string;
772
        const HTTP2_HEADER_SCHEME: string;
773
        const HTTP2_HEADER_PATH: string;
774
        const HTTP2_HEADER_ACCEPT_CHARSET: string;
775
        const HTTP2_HEADER_ACCEPT_ENCODING: string;
776
        const HTTP2_HEADER_ACCEPT_LANGUAGE: string;
777
        const HTTP2_HEADER_ACCEPT_RANGES: string;
778
        const HTTP2_HEADER_ACCEPT: string;
779
        const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string;
780
        const HTTP2_HEADER_AGE: string;
781
        const HTTP2_HEADER_ALLOW: string;
782
        const HTTP2_HEADER_AUTHORIZATION: string;
783
        const HTTP2_HEADER_CACHE_CONTROL: string;
784
        const HTTP2_HEADER_CONNECTION: string;
785
        const HTTP2_HEADER_CONTENT_DISPOSITION: string;
786
        const HTTP2_HEADER_CONTENT_ENCODING: string;
787
        const HTTP2_HEADER_CONTENT_LANGUAGE: string;
788
        const HTTP2_HEADER_CONTENT_LENGTH: string;
789
        const HTTP2_HEADER_CONTENT_LOCATION: string;
790
        const HTTP2_HEADER_CONTENT_MD5: string;
791
        const HTTP2_HEADER_CONTENT_RANGE: string;
792
        const HTTP2_HEADER_CONTENT_TYPE: string;
793
        const HTTP2_HEADER_COOKIE: string;
794
        const HTTP2_HEADER_DATE: string;
795
        const HTTP2_HEADER_ETAG: string;
796
        const HTTP2_HEADER_EXPECT: string;
797
        const HTTP2_HEADER_EXPIRES: string;
798
        const HTTP2_HEADER_FROM: string;
799
        const HTTP2_HEADER_HOST: string;
800
        const HTTP2_HEADER_IF_MATCH: string;
801
        const HTTP2_HEADER_IF_MODIFIED_SINCE: string;
802
        const HTTP2_HEADER_IF_NONE_MATCH: string;
803
        const HTTP2_HEADER_IF_RANGE: string;
804
        const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string;
805
        const HTTP2_HEADER_LAST_MODIFIED: string;
806
        const HTTP2_HEADER_LINK: string;
807
        const HTTP2_HEADER_LOCATION: string;
808
        const HTTP2_HEADER_MAX_FORWARDS: string;
809
        const HTTP2_HEADER_PREFER: string;
810
        const HTTP2_HEADER_PROXY_AUTHENTICATE: string;
811
        const HTTP2_HEADER_PROXY_AUTHORIZATION: string;
812
        const HTTP2_HEADER_RANGE: string;
813
        const HTTP2_HEADER_REFERER: string;
814
        const HTTP2_HEADER_REFRESH: string;
815
        const HTTP2_HEADER_RETRY_AFTER: string;
816
        const HTTP2_HEADER_SERVER: string;
817
        const HTTP2_HEADER_SET_COOKIE: string;
818
        const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string;
819
        const HTTP2_HEADER_TRANSFER_ENCODING: string;
820
        const HTTP2_HEADER_TE: string;
821
        const HTTP2_HEADER_UPGRADE: string;
822
        const HTTP2_HEADER_USER_AGENT: string;
823
        const HTTP2_HEADER_VARY: string;
824
        const HTTP2_HEADER_VIA: string;
825
        const HTTP2_HEADER_WWW_AUTHENTICATE: string;
826
        const HTTP2_HEADER_HTTP2_SETTINGS: string;
827
        const HTTP2_HEADER_KEEP_ALIVE: string;
828
        const HTTP2_HEADER_PROXY_CONNECTION: string;
829
        const HTTP2_METHOD_ACL: string;
830
        const HTTP2_METHOD_BASELINE_CONTROL: string;
831
        const HTTP2_METHOD_BIND: string;
832
        const HTTP2_METHOD_CHECKIN: string;
833
        const HTTP2_METHOD_CHECKOUT: string;
834
        const HTTP2_METHOD_CONNECT: string;
835
        const HTTP2_METHOD_COPY: string;
836
        const HTTP2_METHOD_DELETE: string;
837
        const HTTP2_METHOD_GET: string;
838
        const HTTP2_METHOD_HEAD: string;
839
        const HTTP2_METHOD_LABEL: string;
840
        const HTTP2_METHOD_LINK: string;
841
        const HTTP2_METHOD_LOCK: string;
842
        const HTTP2_METHOD_MERGE: string;
843
        const HTTP2_METHOD_MKACTIVITY: string;
844
        const HTTP2_METHOD_MKCALENDAR: string;
845
        const HTTP2_METHOD_MKCOL: string;
846
        const HTTP2_METHOD_MKREDIRECTREF: string;
847
        const HTTP2_METHOD_MKWORKSPACE: string;
848
        const HTTP2_METHOD_MOVE: string;
849
        const HTTP2_METHOD_OPTIONS: string;
850
        const HTTP2_METHOD_ORDERPATCH: string;
851
        const HTTP2_METHOD_PATCH: string;
852
        const HTTP2_METHOD_POST: string;
853
        const HTTP2_METHOD_PRI: string;
854
        const HTTP2_METHOD_PROPFIND: string;
855
        const HTTP2_METHOD_PROPPATCH: string;
856
        const HTTP2_METHOD_PUT: string;
857
        const HTTP2_METHOD_REBIND: string;
858
        const HTTP2_METHOD_REPORT: string;
859
        const HTTP2_METHOD_SEARCH: string;
860
        const HTTP2_METHOD_TRACE: string;
861
        const HTTP2_METHOD_UNBIND: string;
862
        const HTTP2_METHOD_UNCHECKOUT: string;
863
        const HTTP2_METHOD_UNLINK: string;
864
        const HTTP2_METHOD_UNLOCK: string;
865
        const HTTP2_METHOD_UPDATE: string;
866
        const HTTP2_METHOD_UPDATEREDIRECTREF: string;
867
        const HTTP2_METHOD_VERSION_CONTROL: string;
868
        const HTTP_STATUS_CONTINUE: number;
869
        const HTTP_STATUS_SWITCHING_PROTOCOLS: number;
870
        const HTTP_STATUS_PROCESSING: number;
871
        const HTTP_STATUS_OK: number;
872
        const HTTP_STATUS_CREATED: number;
873
        const HTTP_STATUS_ACCEPTED: number;
874
        const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number;
875
        const HTTP_STATUS_NO_CONTENT: number;
876
        const HTTP_STATUS_RESET_CONTENT: number;
877
        const HTTP_STATUS_PARTIAL_CONTENT: number;
878
        const HTTP_STATUS_MULTI_STATUS: number;
879
        const HTTP_STATUS_ALREADY_REPORTED: number;
880
        const HTTP_STATUS_IM_USED: number;
881
        const HTTP_STATUS_MULTIPLE_CHOICES: number;
882
        const HTTP_STATUS_MOVED_PERMANENTLY: number;
883
        const HTTP_STATUS_FOUND: number;
884
        const HTTP_STATUS_SEE_OTHER: number;
885
        const HTTP_STATUS_NOT_MODIFIED: number;
886
        const HTTP_STATUS_USE_PROXY: number;
887
        const HTTP_STATUS_TEMPORARY_REDIRECT: number;
888
        const HTTP_STATUS_PERMANENT_REDIRECT: number;
889
        const HTTP_STATUS_BAD_REQUEST: number;
890
        const HTTP_STATUS_UNAUTHORIZED: number;
891
        const HTTP_STATUS_PAYMENT_REQUIRED: number;
892
        const HTTP_STATUS_FORBIDDEN: number;
893
        const HTTP_STATUS_NOT_FOUND: number;
894
        const HTTP_STATUS_METHOD_NOT_ALLOWED: number;
895
        const HTTP_STATUS_NOT_ACCEPTABLE: number;
896
        const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number;
897
        const HTTP_STATUS_REQUEST_TIMEOUT: number;
898
        const HTTP_STATUS_CONFLICT: number;
899
        const HTTP_STATUS_GONE: number;
900
        const HTTP_STATUS_LENGTH_REQUIRED: number;
901
        const HTTP_STATUS_PRECONDITION_FAILED: number;
902
        const HTTP_STATUS_PAYLOAD_TOO_LARGE: number;
903
        const HTTP_STATUS_URI_TOO_LONG: number;
904
        const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number;
905
        const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number;
906
        const HTTP_STATUS_EXPECTATION_FAILED: number;
907
        const HTTP_STATUS_TEAPOT: number;
908
        const HTTP_STATUS_MISDIRECTED_REQUEST: number;
909
        const HTTP_STATUS_UNPROCESSABLE_ENTITY: number;
910
        const HTTP_STATUS_LOCKED: number;
911
        const HTTP_STATUS_FAILED_DEPENDENCY: number;
912
        const HTTP_STATUS_UNORDERED_COLLECTION: number;
913
        const HTTP_STATUS_UPGRADE_REQUIRED: number;
914
        const HTTP_STATUS_PRECONDITION_REQUIRED: number;
915
        const HTTP_STATUS_TOO_MANY_REQUESTS: number;
916
        const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number;
917
        const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number;
918
        const HTTP_STATUS_INTERNAL_SERVER_ERROR: number;
919
        const HTTP_STATUS_NOT_IMPLEMENTED: number;
920
        const HTTP_STATUS_BAD_GATEWAY: number;
921
        const HTTP_STATUS_SERVICE_UNAVAILABLE: number;
922
        const HTTP_STATUS_GATEWAY_TIMEOUT: number;
923
        const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number;
924
        const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number;
925
        const HTTP_STATUS_INSUFFICIENT_STORAGE: number;
926
        const HTTP_STATUS_LOOP_DETECTED: number;
927
        const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number;
928
        const HTTP_STATUS_NOT_EXTENDED: number;
929
        const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number;
930
    }
931

    
932
    export function getDefaultSettings(): Settings;
933
    export function getPackedSettings(settings: Settings): Buffer;
934
    export function getUnpackedSettings(buf: Uint8Array): Settings;
935

    
936
    export function createServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;
937
    export function createServer(options: ServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;
938

    
939
    export function createSecureServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;
940
    export function createSecureServer(options: SecureServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;
941

    
942
    export function connect(authority: string | url.URL, listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session;
943
    export function connect(
944
        authority: string | url.URL,
945
        options?: ClientSessionOptions | SecureClientSessionOptions,
946
        listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void
947
    ): ClientHttp2Session;
948
}
(19-19/45)