/**
 * @packageDocumentation
 *
 * A [libp2p transport](https://libp2p.io/docs/transports-overview/) based on the TCP networking stack.
 *
 * @example
 *
 * ```TypeScript
 * import { createLibp2p } from 'libp2p'
 * import { tcp } from '@libp2p/tcp'
 * import { multiaddr } from '@multiformats/multiaddr'
 *
 * const node = await createLibp2p({
 *   transports: [
 *     tcp()
 *   ]
 * })
 *
 * const ma = multiaddr('/ip4/123.123.123.123/tcp/1234')
 *
 * // dial a TCP connection, timing out after 10 seconds
 * const connection = await node.dial(ma, {
 *   signal: AbortSignal.timeout(10_000)
 * })
 *
 * // use connection...
 * ```
 */
import { serviceCapabilities, transportSymbol } from '@libp2p/interface';
import type { TCPComponents, TCPCreateListenerOptions, TCPDialEvents, TCPDialOptions, TCPOptions } from './index.ts';
import type { Connection, Transport, Listener } from '@libp2p/interface';
import type { Multiaddr } from '@multiformats/multiaddr';
import type { Socket } from 'net';
export declare class TCP implements Transport<TCPDialEvents> {
    private readonly opts;
    private readonly metrics?;
    private readonly components;
    private readonly log;
    constructor(components: TCPComponents, options?: TCPOptions);
    readonly [transportSymbol] = true;
    readonly [Symbol.toStringTag] = "@libp2p/tcp";
    readonly [serviceCapabilities]: string[];
    dial(ma: Multiaddr, options: TCPDialOptions): Promise<Connection>;
    _connect(ma: Multiaddr, options: TCPDialOptions): Promise<Socket>;
    /**
     * Creates a TCP listener. The provided `handler` function will be called
     * anytime a new incoming Connection has been successfully upgraded via
     * `upgrader.upgradeInbound`.
     */
    createListener(options: TCPCreateListenerOptions): Listener;
    /**
     * Takes a list of `Multiaddr`s and returns only valid TCP addresses
     */
    listenFilter(multiaddrs: Multiaddr[]): Multiaddr[];
    /**
     * Filter check for all Multiaddrs that this transport can dial
     */
    dialFilter(multiaddrs: Multiaddr[]): Multiaddr[];
}
//# sourceMappingURL=tcp.d.ts.map