export {
  assertTunnelMayStart,
  CURRENT_TUNNEL_CONSENT_VERSION,
  getTunnelConsentState,
  hasValidTunnelConsent,
  TUNNEL_CONSENT_REQUIRED_CODE,
  TUNNEL_RISK_SUMMARY_LINES,
  TunnelConsentError,
} from './consent.js';
export { TunnelBrokerClient, resolveBrokerApiBase } from './broker-client.js';
export {
  applyTunnelConsentToConfig,
  mergeTunnelConfigPatch,
  sanitizeTunnelConfig,
  setTunnelEnabledInConfig,
} from './tunnel-config.js';
export {
  clearFrpcPathForProcess,
  ensureFrpcBinary,
  FRPC_VERSION,
  publishFrpcPathForProcess,
} from './frpc-binary.js';
export type { EnsureFrpcBinaryOptions, FrpcDownloadProgress } from './frpc-binary.js';
export {
  configureTunnelFromGatewayConfig,
  maybeAutoStartTunnelFromConfig,
  wireTunnelEventsToGateway,
} from './gateway-lifecycle.js';
export { fetchTunnelWellKnown, clearTunnelWellKnownCache } from './well-known.js';
export type { TunnelWellKnownConfig, TunnelWellKnownTransport } from './well-known.js';
export {
  getTunnelRegistrationSecretMeta,
  isProductionTunnelBroker,
  isMaskedTunnelSecretPatchValue,
  resolveTunnelBrokerUrl,
  resolveTunnelRegistrationSecret,
} from './env.js';
export type { TunnelRegistrationSecretMeta, TunnelRegistrationSecretSource } from './env.js';
export { logTunnelAudit } from './tunnel-audit.js';
export type { TunnelAuditEvent } from './tunnel-audit.js';
export { consumeTunnelMutationLimit, resetTunnelMutationLimitsForTests } from './tunnel-rate-limit.js';
export { getTunnelService, hashGatewayToken, TunnelService } from './tunnel-service.js';
export type { TunnelServiceConfig } from './tunnel-service.js';
export { resolveFrpSubdomainHost } from './frp-subdomain-host.js';
export { createPairingSecret, consumePairingSecret, resetPairingSessionsForTests } from './pairing.js';
export type { PairingSecretResult } from './pairing.js';
export { buildMobileConnectQrPayload, resolveLanGatewayUrl } from './tunnel-qr.js';
export { loadTunnelState, saveTunnelState, resolveTunnelStatePath } from './tunnel-state.js';
export type { PersistedTunnelState, TunnelQrPayload, TunnelStatus, TunnelRegistration } from './tunnel-types.js';
