libp2p-ts/types/libp2p/index.d.ts

99 lines
3.2 KiB
TypeScript
Raw Normal View History

2018-07-02 10:38:26 +02:00
// Type definitions for libp2p 0.22.0
2018-06-21 15:23:22 +02:00
// Project: https://github.com/libp2p/js-libp2p
// Definitions by: Jaco Greeff <https://github.com/jacogr>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="libp2p-bootstrap"/>
2018-06-24 10:46:14 +02:00
/// <reference types="interface-connection"/>
/// <reference types="interface-transport"/>
/// <reference types="libp2p-kad-dht"/>
/// <reference types="libp2p-mdns"/>
/// <reference types="libp2p-mplex"/>
/// <reference types="libp2p-secio"/>
/// <reference types="libp2p-spdy"/>
/// <reference types="peer-book"/>
/// <reference types="peer-info"/>
2019-03-01 16:57:06 +01:00
/// <reference types="pull-mplex"/>
2018-06-24 10:16:29 +02:00
declare namespace LibP2p {
2018-07-02 10:38:26 +02:00
export type OptionsConfig = {
dht?: {
kBucketSize?: number
},
EXPERIMENTAL?: {
pubsub?: boolean,
dht?: boolean
2018-06-24 10:16:29 +02:00
},
2018-07-02 10:38:26 +02:00
peerDiscovery?: {
2019-05-30 11:41:19 -05:00
bootstrap?: {
interval?: number
enabled?: boolean
list: Multiaddr.Multiaddr[]
},
2018-07-02 10:38:26 +02:00
mdns?: {
interval?: number
enabled?: boolean
},
2019-03-05 14:03:52 +01:00
webRTCStar?: {
2018-07-02 10:38:26 +02:00
interval?: number
enabled?: boolean
2019-03-05 14:03:52 +01:00
},
websocketStar?: {
enabled?: boolean
2018-07-02 10:38:26 +02:00
}
},
peerRouting?: {},
contentRouting?: {},
2018-07-02 10:46:32 +02:00
relay?: {
2018-07-02 10:38:26 +02:00
enabled?: boolean,
hop?: {
enabled?: boolean,
active?: boolean
}
}
};
export type OptionsModules = {
2019-05-30 11:41:19 -05:00
connEncryption?: Array<LibP2pSecio>,
2019-03-01 16:57:06 +01:00
streamMuxer: Array<LibP2pMplex | LibP2pSpdy | PullMplex>,
2018-07-02 10:38:26 +02:00
dht?: typeof LibP2pKadDht,
2019-05-30 11:41:19 -05:00
peerDiscovery: Array<typeof LibP2pBootstrap>,
2018-06-24 10:16:29 +02:00
transport: LibP2pTransport[]
};
2018-07-02 10:38:26 +02:00
export type Options = {
config: OptionsConfig,
modules: OptionsModules,
peerBook?: PeerBook,
peerInfo: PeerInfo,
};
2018-06-24 15:27:48 +02:00
export type Events = 'peer:connect' | 'peer:disconnect' | 'peer:discovery' | 'start' | 'stop';
2018-06-24 10:16:29 +02:00
}
declare class LibP2p {
2018-09-07 16:10:43 +02:00
readonly _dht: LibP2pKadDht;
2018-09-17 12:11:48 -04:00
constructor(options: LibP2p.Options);
2018-06-21 15:23:22 +02:00
2018-09-17 12:11:48 -04:00
readonly peerInfo: PeerInfo;
2019-05-30 11:41:19 -05:00
readonly peerBook: PeerBook;
2018-09-17 12:11:48 -04:00
dial(peerInfo: PeerInfo, cb: (error: Error | null) => any): void;
2018-09-18 20:09:35 -04:00
dialProtocol(peerInfo: PeerInfo | Multiaddr.Multiaddr, protocol: string, cb: (error: Error | null, conn?: LibP2pConnection) => any): void;
2019-05-30 11:41:19 -05:00
hangUp(peerInfo: PeerInfo, cb: (error: Error | null) => any): void;
2018-09-17 12:11:48 -04:00
handle(protocol: string, handler: (protocol: string, conn: LibP2pConnection) => any, matcher?: (protocol: string, requestedProtocol: string, cb: (error: Error | null, accept: boolean) => void) => any): void;
2019-05-30 11:41:19 -05:00
unhandle(protocol: string): void;
2018-09-17 12:11:48 -04:00
isStarted(): boolean;
2019-05-30 11:41:19 -05:00
on(event: LibP2p.Events, cb: (event: any) => any): this;
once(event: LibP2p.Events, cb: (event: any) => any): this;
removeListener(event: LibP2p.Events, cb: (event: any) => any): this;
2018-09-17 12:11:48 -04:00
ping(peerInfo: PeerInfo, callback: (error: Error | null, ping: any) => void): void;
start(cb: (error: Error | null) => any): void;
stop(cb: (error: Error | null) => any): void;
2018-06-21 15:23:22 +02:00
}
2018-06-24 10:16:29 +02:00
declare module 'libp2p' {
2018-09-17 12:11:48 -04:00
export default LibP2p;
2018-06-22 15:43:18 +02:00
}