// Type definitions for libp2p-crypto 0.13.0 // Project: https://github.com/libp2p/js-libp2p-crypto // Definitions by: Jaco Greeff // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// declare namespace LibP2pCrypto { type KeyTypes = 'ed25519' | 'rsa' | 'secp256k1'; interface PublicKey { hash(cb: (error: Error | null, hash: Buffer) => void): void; } interface PrivateKey { readonly public: PublicKey; hash(cb: (error: Error | null, hash: Buffer) => void): void; id(cb: (error: Error | null, id: string) => void): void } interface KeyExports { generateKeyPair(bits: number, cb: (error: Error | null, privKey: PrivateKey) => void): void; } interface Keys { generateKeyPair(type: KeyTypes, bits: number, cb: (error: Error | null, privKey: PrivateKey) => void): void; readonly supportedKeys: { readonly [key in keyof KeyTypes]: KeyExports }; } interface Crypto { readonly keys: Keys } } declare module 'libp2p-crypto' { const crypto: LibP2pCrypto.Crypto; export default crypto; }