@achingbrain/nat-port-mapper
Version:
Port mapping with UPnP and NAT-PMP
31 lines • 1.66 kB
TypeScript
import { Device } from './device.js';
import type { Gateway, MapPortOptions, PortMapping, UPnPNATOptions } from '../index.js';
import type { Logger } from '@libp2p/logger';
import type { AbortOptions } from 'abort-error';
export interface RefreshableMapping {
refreshTimeout?: ReturnType<typeof setTimeout>;
ttl: number;
}
export declare abstract class InternetGatewayService<Mapping extends RefreshableMapping> implements Gateway {
id: string;
host: string;
port: number;
readonly family: 'IPv4' | 'IPv6';
private gateway;
protected readonly log: Logger;
protected readonly mappings: Map<number, Mapping[]>;
protected readonly options: UPnPNATOptions;
constructor(gateway: Device, options?: UPnPNATOptions);
protected getGateway(options?: AbortOptions): Promise<Device>;
private setGateway;
externalIp(options?: AbortOptions): Promise<string>;
mapAll(localPort: number, options?: MapPortOptions): AsyncGenerator<PortMapping, void, unknown>;
map(localPort: number, localHost: string, options?: MapPortOptions): Promise<PortMapping>;
protected abstract mapPort(localPort: number, localHost: string, options?: MapPortOptions): Promise<number>;
abstract unmap(localPort: number, options?: AbortOptions): Promise<void>;
protected addMapping(localPort: number, mapping: Mapping): void;
protected configureRefresh(localPort: number, mapping: Mapping, options?: MapPortOptions): void;
protected abstract refreshPort(localPort: number, options?: AbortOptions): Promise<void>;
stop(options?: AbortOptions): Promise<void>;
}
//# sourceMappingURL=internet-gateway-service.d.ts.map