import type { Common } from '@ethereumjs/common'; import type { PeerInfo } from '../types.ts'; type ENRTreeValues = { publicKey: string; domain: string; }; export declare class ENR { static readonly RECORD_PREFIX = "enr:"; static readonly TREE_PREFIX = "enrtree:"; static readonly BRANCH_PREFIX = "enrtree-branch:"; static readonly ROOT_PREFIX = "enrtree-root:"; /** * Converts an Ethereum Name Record (EIP-778) string into a PeerInfo object after validating * its signature component with the public key encoded in the record itself. * * The record components are: * > signature: cryptographic signature of record contents * > seq: The sequence number, a 64-bit unsigned integer which increases whenever * the record changes and is republished. * > A set of arbitrary key/value pairs * * @param {string} enr * @return {PeerInfo} */ static parseAndVerifyRecord(enr: string, common?: Common): PeerInfo; /** * Extracts the branch subdomain referenced by a DNS tree root string after verifying * the root record signature with its base32 compressed public key. Geth's top level DNS * domains and their public key can be found in: go-ethereum/params/bootnodes * * @param {string} root (See EIP-1459 for encoding details) * @return {string} subdomain subdomain to retrieve branch records from. */ static parseAndVerifyRoot(root: string, publicKey: string, common?: Common): string; /** * Returns the public key and top level domain of an ENR tree entry. * The domain is the starting point for traversing a set of linked DNS TXT records * and the public key is used to verify the root entry record * * @param {string} tree (See EIP-1459 ) * @return {ENRTreeValues} */ static parseTree(tree: string): ENRTreeValues; /** * Returns subdomains listed in an ENR branch entry. These in turn lead to * either further branch entries or ENR records. * @param {string} branch * @return {string[]} */ static parseBranch(branch: string): string[]; } export {}; //# sourceMappingURL=enr.d.ts.map