import type { SrpcConnection, SrpcStream } from '../../srpc/types';
import type { MeshRemoteSrpcConnection } from './mesh-srpc-remote-connection';
/** A mesh client handle resolved to a local stream or a trusted remote handle. */
export type MeshSrpcConnection<TMeta, TRegistryMeta> = SrpcStream<TMeta> | MeshRemoteSrpcConnection<TRegistryMeta>;
/** True only for a locally owned sRPC stream, never a remote mesh handle. */
export declare function isLocalSrpcStream<TMeta, TRegistryMeta>(connection: MeshSrpcConnection<TMeta, TRegistryMeta>): connection is SrpcStream<TMeta>;
export declare function isLocalSrpcStream<T>(connection: SrpcConnection<T>): connection is SrpcStream<T>;
/**
 * Normalize a local stream's full metadata and a remote connection's trusted
 * registry projection to one registry-metadata value.
 */
export declare function getSrpcRegistryMetadata<TMeta, TRegistryMeta>(connection: MeshSrpcConnection<TMeta, TRegistryMeta>, extractLocalRegistryMetadata: (stream: SrpcStream<TMeta>) => TRegistryMeta): TRegistryMeta;
//# sourceMappingURL=srpc-registry-metadata.d.ts.map