@libp2p/interface
Version:
The interface implemented by a libp2p node
134 lines • 4.37 kB
TypeScript
import type { Ed25519PublicKey, KeyType, RSAPublicKey, Secp256k1PublicKey } from './keys.js';
import type { CID } from 'multiformats/cid';
import type { MultihashDigest } from 'multiformats/hashes/interface';
export type PeerIdType = KeyType | string;
/**
* A PeerId generated from an RSA public key - it is a base58btc encoded sha-256
* hash of the public key.
*
* RSA public keys are too large to pass around freely, instead Ed25519 or
* secp256k1 should be preferred as they can embed their public key in the
* PeerId itself.
*
* @deprecated Ed25519 or secp256k1 keys are preferred to RSA
*/
export interface RSAPeerId {
readonly type: 'RSA';
/**
* RSA public keys are too large to embed in the multihash commonly used to
* refer to peers, so this will only be defined if the public key has
* previously been found through a routing query or during normal protocol
* operations
*/
readonly publicKey?: RSAPublicKey;
/**
* Returns the multihash from `toMultihash()` as a base58btc encoded string
*/
toString(): string;
/**
* Returns a multihash, the digest of which is the SHA2-256 hash of the public
* key
*/
toMultihash(): MultihashDigest<0x12>;
/**
* Returns a CID with the libp2p key code and the same multihash as
* `toMultihash()`
*/
toCID(): CID<Uint8Array, 0x72, 0x12, 1>;
/**
* Returns true if the passed argument is equivalent to this PeerId
*/
equals(other?: any): boolean;
}
export interface Ed25519PeerId {
readonly type: 'Ed25519';
/**
* This will always be defined as the public key is embedded in the multihash
* of this PeerId
*/
readonly publicKey: Ed25519PublicKey;
/**
* Returns the multihash from `toMultihash()` as a base58btc encoded string
*/
toString(): string;
/**
* Returns a multihash, the digest of which is the protobuf-encoded public key
* encoded as an identity hash
*/
toMultihash(): MultihashDigest<0x0>;
/**
* Returns a CID with the libp2p key code and the same multihash as
* `toMultihash()`
*/
toCID(): CID<Uint8Array, 0x72, 0x0, 1>;
/**
* Returns true if the passed argument is equivalent to this PeerId
*/
equals(other?: any): boolean;
}
export interface Secp256k1PeerId {
readonly type: 'secp256k1';
/**
* This will always be defined as the public key is embedded in the multihash
* of this PeerId
*/
readonly publicKey: Secp256k1PublicKey;
/**
* Returns the multihash from `toMultihash()` as a base58btc encoded string
*/
toString(): string;
/**
* Returns a multihash, the digest of which is the protobuf-encoded public key
* encoded as an identity hash
*/
toMultihash(): MultihashDigest<0x0>;
/**
* Returns a CID with the libp2p key code and the same multihash as
* `toMultihash()`
*/
toCID(): CID<Uint8Array, 0x72, 0x0, 1>;
/**
* Returns true if the passed argument is equivalent to this PeerId
*/
equals(other?: any): boolean;
}
export interface URLPeerId {
readonly type: 'url';
/**
* This will always be undefined as URL Peers do not have public keys
*/
readonly publicKey: undefined;
/**
* Returns CID from `toCID()` encoded as a base36 string
*/
toString(): string;
/**
* Returns a multihash, the digest of which is the URL encoded as an identity
* hash
*/
toMultihash(): MultihashDigest<0x0>;
/**
* Returns a CID with the Transport IPFS Gateway HTTP code and the same
* multihash as `toMultihash()`
*/
toCID(): CID<Uint8Array, 0x0920, 0x0, 1>;
/**
* Returns true if the passed argument is equivalent to this PeerId
*/
equals(other?: any): boolean;
}
/**
* This is a union of all known PeerId types - use the `.type` field to
* disambiguate them
*/
export type PeerId = RSAPeerId | Ed25519PeerId | Secp256k1PeerId | URLPeerId;
/**
* All PeerId implementations must use this symbol as the name of a property
* with a boolean `true` value
*/
export declare const peerIdSymbol: unique symbol;
/**
* Returns true if the passed argument is a PeerId implementation
*/
export declare function isPeerId(other?: any): other is PeerId;
//# sourceMappingURL=peer-id.d.ts.map