import { Faculty, type BeingClass, type Stance } from '../being/index.ts'; import type { RootRequest } from './root-line.ts'; import type { Terrain } from './terrain.ts'; export interface Arrivals { arrive(pk: string, bytes: Uint8Array): Promise; } export interface Ground extends Arrivals { readonly terrain: Terrain; } export declare const groundOf: (stance: Stance) => Ground; export declare const UNDIALED: unique symbol; export type Dialed = Uint8Array | null | typeof UNDIALED; export type WebListen = { host: string; port: number; path: string; origins: string[]; }; export interface WebListener { readonly at: string[]; readonly port: number; close(): Promise; } export type WebServe = (ground: Arrivals, listen: WebListen) => Promise; export interface TcpListening { readonly at: string; close(): Promise; } export interface Sockets { dial(address: string, pk: string, bytes: Uint8Array): Promise; listen(ground: Arrivals, host: string, port: number): Promise; close(): Promise; } export declare abstract class CarrierFaculty extends Faculty { static readonly kind: string; static readonly carries: string | null; abstract accepts(address: string): boolean; abstract dial(address: string, pk: string, bytes: Uint8Array): Promise; listening(): string[]; relay(_pk: string, _bytes: Uint8Array): Promise | null; heard(): Promise; awake(): Promise; sleep(): Promise; } export declare const carrierIn: (beings: Readonly>, classes: readonly BeingClass[], carries: string) => { key: string; open?: RootRequest; } | null;