import type { WireguardAdapter } from "../../domain/interfaces/wireguard-adapter.interface";
import type { WireguardKeys, InterfaceConfig, PeerConfig, PeerStatus } from "../../domain/entities/wireguard";
import { Result } from "@synet/patterns";
import type { CommandExecutor } from "../command/command-executor.interface";
import type { ConfigurationRepository } from "../../domain/interfaces/configuration-repository.interface";
import type { KeysRepository } from "../../domain/interfaces/keys-repository.interface";
import type { Logger } from "@synet/logger";
/**
 * Adapter for managing WireGuard using local wireguard-tools
 */
export declare class WireguardToolsAdapter implements WireguardAdapter {
    private readonly keysRepository;
    private readonly configRepository;
    private readonly commandExecutor;
    private readonly interfaceName;
    private readonly configDir;
    private readonly logger?;
    private readonly sudo;
    private readonly configPath;
    constructor(keysRepository: KeysRepository, configRepository: ConfigurationRepository, commandExecutor: CommandExecutor, interfaceName?: string, configDir?: string, logger?: Logger | undefined, sudo?: boolean);
    getKeys(): Promise<Result<WireguardKeys | null>>;
    generateKeys(): Promise<Result<WireguardKeys>>;
    private stripAddressSection;
    setInterface(config: InterfaceConfig): Promise<Result<void>>;
    addPeer(config: PeerConfig): Promise<Result<void>>;
    removeInterface(): Promise<Result<void>>;
    removeAllPeers(): Promise<Result<void>>;
    removePeer(publicKey: string): Promise<Result<void>>;
    bringUp(): Promise<Result<void>>;
    bringDown(): Promise<Result<void>>;
    reload(): Promise<Result<void>>;
    checkInterface(interfaceName: string): Promise<Result<void>>;
    status(): Promise<Result<void>>;
    peerStatus(publicKey: string): Promise<Result<PeerStatus | null>>;
    listPeers(): Promise<Result<PeerStatus[] | null>>;
    private extractPeerConfig;
    getInterfaceName(): Promise<Result<string>>;
}
