import { type Multiaddr } from "@multiformats/multiaddr"; export declare const JOIN_REJECT_REDIRECT_MAX = 4; export declare const JOIN_REJECT_REDIRECT_ADDR_MAX = 8; export declare const MSG_JOIN_REQ = 1; export declare const MSG_JOIN_ACCEPT = 2; export declare const MSG_JOIN_REJECT = 3; export declare const MSG_KICK = 4; export declare const MSG_DATA = 10; export declare const MSG_END = 11; export declare const MSG_UNICAST = 12; export declare const MSG_ROUTE_QUERY = 13; export declare const MSG_ROUTE_REPLY = 14; export declare const MSG_PUBLISH_PROXY = 15; export declare const MSG_LEAVE = 16; export declare const MSG_UNICAST_ACK = 17; export declare const MSG_REPAIR_REQ = 20; export declare const MSG_FETCH_REQ = 21; export declare const MSG_IHAVE = 22; export declare const MSG_TRACKER_ANNOUNCE = 30; export declare const MSG_TRACKER_QUERY = 31; export declare const MSG_TRACKER_REPLY = 32; export declare const MSG_TRACKER_FEEDBACK = 33; export declare const MSG_PROVIDER_ANNOUNCE = 34; export declare const MSG_PROVIDER_QUERY = 35; export declare const MSG_PROVIDER_REPLY = 36; export declare const MSG_PROVIDER_SUBSCRIBE = 37; export declare const MSG_PROVIDER_UNSUBSCRIBE = 38; export declare const MSG_PROVIDER_NOTIFY = 39; export declare const MSG_PARENT_PROBE_REQ = 40; export declare const MSG_PARENT_PROBE_REPLY = 41; export declare const JOIN_REJECT_NOT_ATTACHED = 1; export declare const JOIN_REJECT_NO_CAPACITY = 2; export declare const JOIN_REJECT_LOW_BID = 3; export declare const TRACKER_FEEDBACK_JOINED = 1; export declare const TRACKER_FEEDBACK_DIAL_FAILED = 2; export declare const TRACKER_FEEDBACK_JOIN_TIMEOUT = 3; export declare const TRACKER_FEEDBACK_JOIN_REJECT = 4; export declare const PARENT_PROBE_FLAG_ROOTED: number; export declare const PARENT_PROBE_FLAG_ACCEPTING: number; export declare const PARENT_PROBE_FLAG_REPAIRING: number; export declare const PARENT_PROBE_FLAG_OVERLOADED: number; export declare const UNICAST_FLAG_ACK = 1; export declare const UNICAST_ACK_DEFAULT_TIMEOUT_MS = 30000; export declare const MAX_ROUTE_HOPS = 32; export declare const clampU16: (v: number) => number; export declare const writeU32BE: (buf: Uint8Array, offset: number, value: number) => void; export declare const readU32BE: (buf: Uint8Array, offset: number) => number; export declare const readU64BE: (buf: Uint8Array, offset: number) => bigint; export declare const writeU16BE: (buf: Uint8Array, offset: number, value: number) => void; export declare const readU16BE: (buf: Uint8Array, offset: number) => number; export type JoinRejectRedirect = { hash: string; addrs: Uint8Array[]; }; export type TrackerEntry = { hash: string; level: number; freeSlots: number; bidPerByte: number; addrs: Uint8Array[]; expiresAt: number; }; export type ParentProbeReply = { hash: string; rooted: boolean; accepting: boolean; repairing: boolean; overloaded: boolean; reservationToken: number; level: number; maxChildren: number; freeSlots: number; children: number; haveToExclusive: number; missingSeqs: number; dataWriteDrops: number; droppedForwards: number; }; export type ProviderEntry = { hash: string; addrs: Uint8Array[]; expiresAt: number; }; export type ProviderCandidate = { hash: string; addrs: Multiaddr[]; }; export declare const encodeJoinReq: (channelKey: Uint8Array, reqId: number, bidPerByte: number, parentUpgradeReservationToken?: number) => Uint8Array; export declare const decodeJoinReq: (data: Uint8Array) => { reqId: number; bidPerByte: number; parentUpgradeReservationToken: number; }; export declare const encodeJoinAccept: (channelKey: Uint8Array, reqId: number, level: number, parentRouteFromRoot?: string[], haveRange?: { haveFrom: number; haveToExclusive: number; }) => Uint8Array; export declare const encodeJoinReject: (channelKey: Uint8Array, reqId: number, reason: number, redirects?: JoinRejectRedirect[]) => Uint8Array; export declare const encodeKick: (channelKey: Uint8Array) => Uint8Array; export declare const encodeEnd: (channelKey: Uint8Array, lastSeqExclusive: number) => Uint8Array; export declare const encodeRepairReq: (channelKey: Uint8Array, reqId: number, missingSeqs: number[]) => Uint8Array; export declare const encodeFetchReq: (channelKey: Uint8Array, reqId: number, missingSeqs: number[]) => Uint8Array; export declare const encodeIHave: (channelKey: Uint8Array, haveFrom: number, haveToExclusive: number) => Uint8Array; export declare const encodeData: (payload: Uint8Array) => Uint8Array; export declare const encodePublishProxy: (channelKey: Uint8Array, payload: Uint8Array) => Uint8Array; export declare const encodeLeave: (channelKey: Uint8Array) => Uint8Array; export declare const encodeUnicast: (channelKey: Uint8Array, route: string[], payload: Uint8Array, options?: { ackToken?: bigint; replyRoute?: string[]; }) => Uint8Array; export declare const encodeUnicastAck: (channelKey: Uint8Array, ackToken: bigint, route: string[]) => Uint8Array; export declare const encodeRouteQuery: (channelKey: Uint8Array, reqId: number, targetHash: string) => Uint8Array; export declare const encodeRouteReply: (channelKey: Uint8Array, reqId: number, route?: string[]) => Uint8Array; export declare const decodeRoute: (data: Uint8Array, offsetStart: number, routeCount: number) => { route: string[]; offset: number; }; export declare const encodeTrackerAnnounce: (channelKey: Uint8Array, ttlMs: number, level: number, maxChildren: number, freeSlots: number, bidPerByte: number, addrs: Multiaddr[]) => Uint8Array; export declare const encodeTrackerQuery: (channelKey: Uint8Array, reqId: number, want: number) => Uint8Array; export declare const encodeTrackerReply: (channelKey: Uint8Array, reqId: number, entries: TrackerEntry[]) => Uint8Array; export declare const encodeTrackerFeedback: (channelKey: Uint8Array, candidateHash: string, event: number, reason: number) => Uint8Array; export declare const encodeParentProbeReq: (channelKey: Uint8Array, reqId: number, minFreeSlots?: number, reserveRootCapacity?: boolean) => Uint8Array; export declare const encodeParentProbeReply: (channelKey: Uint8Array, reqId: number, options: { flags: number; level: number; maxChildren: number; freeSlots: number; children: number; haveToExclusive: number; missingSeqs: number; dataWriteDrops: number; droppedForwards: number; reservationToken?: number; }) => Uint8Array; export declare const decodeParentProbeReq: (data: Uint8Array) => { reqId: number; minFreeSlots: number; reserveRootCapacity: boolean; }; export declare const decodeParentProbeReply: (data: Uint8Array, hash: string) => { reqId: number; hash: string; rooted: boolean; accepting: boolean; repairing: boolean; overloaded: boolean; reservationToken: number; level: number; maxChildren: number; freeSlots: number; children: number; haveToExclusive: number; missingSeqs: number; dataWriteDrops: number; droppedForwards: number; }; export declare const encodeProviderAnnounce: (namespaceKey: Uint8Array, ttlMs: number, addrs: Multiaddr[]) => Uint8Array; export declare const encodeProviderQuery: (namespaceKey: Uint8Array, reqId: number, want: number, seed: number) => Uint8Array; export declare const encodeProviderReply: (namespaceKey: Uint8Array, reqId: number, entries: ProviderEntry[]) => Uint8Array; export declare const encodeProviderSubscribe: (namespaceKey: Uint8Array, want: number, ttlMs: number) => Uint8Array; export declare const encodeProviderUnsubscribe: (namespaceKey: Uint8Array) => Uint8Array; export declare const encodeProviderNotify: (namespaceKey: Uint8Array, entries: ProviderEntry[]) => Uint8Array; export type DecodedFanoutJoinAccept = { parentLevel: number; parentRouteFromRoot: string[]; haveRange?: { haveFrom: number; haveToExclusive: number; }; }; export type DecodedFanoutJoinReject = { reason: number; redirects: { hash: string; addrs: Uint8Array[]; }[]; }; export type DecodedFanoutUnicast = { ackToken?: bigint; route: string[]; replyRoute?: string[]; payloadOffset: number; }; export type DecodedFanoutTrackerReplyEntry = { hash: string; level: number; freeSlots: number; bidPerByte: number; addrs: Uint8Array[]; }; export type DecodedFanoutProviderEntry = { hash: string; addrs: Uint8Array[]; }; /** The shared JOIN_ACCEPT/JOIN_REJECT head (reqId) parsed before the * pending-join lookup. */ export declare const decodeJoinResponseReqId: (data: Uint8Array) => number | undefined; export declare const decodeJoinAccept: (data: Uint8Array) => DecodedFanoutJoinAccept | undefined; export declare const decodeJoinReject: (data: Uint8Array) => DecodedFanoutJoinReject | undefined; export declare const decodeEnd: (data: Uint8Array) => number | undefined; /** MSG_REPAIR_REQ / MSG_FETCH_REQ sequence list: `count` capped by the * bytes actually present. */ export declare const decodeRepairSeqs: (data: Uint8Array) => number[] | undefined; export declare const decodeIHave: (data: Uint8Array) => { haveFrom: number; haveToExclusive: number; } | undefined; export declare const decodeUnicast: (data: Uint8Array) => DecodedFanoutUnicast | undefined; export declare const decodeUnicastAck: (data: Uint8Array) => { ackToken: bigint; route: string[]; } | undefined; export declare const decodeRouteQuery: (data: Uint8Array) => { reqId: number; targetHash?: string; } | undefined; export declare const decodeRouteReply: (data: Uint8Array) => { reqId: number; route: string[]; } | undefined; export declare const decodeTrackerAnnounce: (data: Uint8Array) => { ttlMs: number; level: number; freeSlots: number; bidPerByte: number; addrs: Uint8Array[]; } | undefined; export declare const decodeTrackerQuery: (data: Uint8Array) => { reqId: number; want: number; } | undefined; export declare const decodeTrackerReply: (data: Uint8Array) => { reqId: number; entries: DecodedFanoutTrackerReplyEntry[]; } | undefined; export declare const decodeTrackerFeedback: (data: Uint8Array) => { candidateHash: string; event: number; reason: number; } | undefined; export declare const decodeProviderAnnounce: (data: Uint8Array) => { ttlMs: number; addrs: Uint8Array[]; } | undefined; export declare const decodeProviderQuery: (data: Uint8Array) => { reqId: number; want: number; seed: number; } | undefined; export declare const decodeProviderReply: (data: Uint8Array) => { reqId: number; entries: DecodedFanoutProviderEntry[]; } | undefined; export declare const decodeProviderNotify: (data: Uint8Array) => { entries: DecodedFanoutProviderEntry[]; } | undefined; export declare const decodeProviderSubscribe: (data: Uint8Array) => { want: number; ttlMs: number; } | undefined; export declare const decodeProviderEntries: (data: Uint8Array, offsetStart: number, maxCount: number) => { providers: ProviderCandidate[]; offset: number; }; /** * The complete `/peerbit/fanout-tree/0.5.0` wire codec seam. FanoutTree * dispatches every frame encode/decode through this surface: the default * implementation is [`tsFanoutWireCodec`] (the functions in this file); in * rust-core mode the structurally identical native codec from * `@peerbit/network-rust` (`RustFanoutTree`) is used instead, with byte * identity covered by the golden-vector parity suite. */ /** Widen `Uint8Array` returns to plain `Uint8Array` so the * structurally identical native codec (`RustFanoutTree`) satisfies the * same seam type. */ type WireEncoder = F extends (...args: infer A) => Uint8Array ? (...args: A) => Uint8Array : never; export type FanoutWireCodec = { encodeJoinReq: WireEncoder; encodeJoinAccept: WireEncoder; encodeJoinReject: WireEncoder; encodeKick: WireEncoder; encodeEnd: WireEncoder; encodeRepairReq: WireEncoder; encodeFetchReq: WireEncoder; encodeIHave: WireEncoder; encodeData: WireEncoder; encodePublishProxy: WireEncoder; encodeLeave: WireEncoder; encodeUnicast: WireEncoder; encodeUnicastAck: WireEncoder; encodeRouteQuery: WireEncoder; encodeRouteReply: WireEncoder; encodeTrackerAnnounce: WireEncoder; encodeTrackerQuery: WireEncoder; encodeTrackerReply: WireEncoder; encodeTrackerFeedback: WireEncoder; encodeParentProbeReq: WireEncoder; encodeParentProbeReply: WireEncoder; encodeProviderAnnounce: WireEncoder; encodeProviderQuery: WireEncoder; encodeProviderReply: WireEncoder; encodeProviderSubscribe: WireEncoder; encodeProviderUnsubscribe: WireEncoder; encodeProviderNotify: WireEncoder; decodeJoinReq: typeof decodeJoinReq; decodeJoinResponseReqId: typeof decodeJoinResponseReqId; decodeJoinAccept: typeof decodeJoinAccept; decodeJoinReject: typeof decodeJoinReject; decodeEnd: typeof decodeEnd; decodeRepairSeqs: typeof decodeRepairSeqs; decodeIHave: typeof decodeIHave; decodeUnicast: typeof decodeUnicast; decodeUnicastAck: typeof decodeUnicastAck; decodeRouteQuery: typeof decodeRouteQuery; decodeRouteReply: typeof decodeRouteReply; decodeTrackerAnnounce: typeof decodeTrackerAnnounce; decodeTrackerQuery: typeof decodeTrackerQuery; decodeTrackerReply: typeof decodeTrackerReply; decodeTrackerFeedback: typeof decodeTrackerFeedback; decodeParentProbeReq: typeof decodeParentProbeReq; decodeParentProbeReply: typeof decodeParentProbeReply; decodeProviderAnnounce: typeof decodeProviderAnnounce; decodeProviderQuery: typeof decodeProviderQuery; decodeProviderReply: typeof decodeProviderReply; decodeProviderNotify: typeof decodeProviderNotify; decodeProviderSubscribe: typeof decodeProviderSubscribe; }; export declare const tsFanoutWireCodec: FanoutWireCodec; export {}; //# sourceMappingURL=fanout-tree-codec.d.ts.map