import { TLSSocket } from 'tls';
import { Socket } from 'net';

export interface TunnelOptions {
  port: number;
  host?: string;
  subdomain?: string;
  local_host?: string;
  local_https?: boolean;
  local_cert?: string;
  local_key?: string;
  local_ca?: string;
  allow_invalid_cert?: boolean;
}

export interface TunnelInfo {
  name?: string;
  url?: string;
  cached_url?: string;
  max_conn?: number;
  remote_host?: string;
  remote_ip?: string;
  remote_port?: number;
  local_host?: string;
  local_port?: number;
  local_https?: boolean;
  local_cert?: string;
  local_key?: string;
  local_ca?: string;
  allow_invalid_cert?: boolean;
}

export interface TunnelClusterEvents {
  error: (err: Error) => void;
  dead: () => void;
  request: (info: { method: string; path: string }) => void;
  open: (tunnel: any) => void;
}

export interface TunnelEvents {
  error: (err: Error) => void;
  request: (info: { method: string; path: string }) => void;
  url: (url: string) => void;
  close: () => void;
} 