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 { KeysRepository } from "../../domain/interfaces/keys-repository.interface";
import type { Logger } from "@synet/logger";
/**
 * Adapter for managing WireGuard using the synetd API
 */
export declare class SynetdAdapter implements WireguardAdapter {
    private readonly keysRepository;
    private readonly baseUrl;
    private readonly logger?;
    private readonly apiClient;
    constructor(keysRepository: KeysRepository, baseUrl?: string, logger?: Logger | undefined);
    getKeys(): Promise<Result<WireguardKeys | null>>;
    generateKeys(): Promise<Result<WireguardKeys>>;
    setInterface(config: InterfaceConfig): Promise<Result<void>>;
    addPeer(config: PeerConfig): Promise<Result<void>>;
    removeInterface(): Promise<Result<void>>;
    /**
     *  Reload the WireGuard interface
     * @description This method reloads the WireGuard interface configuration
     * @returns  Result<void>
     */
    reload(): Promise<Result<void>>;
    removeAllPeers(): Promise<Result<void>>;
    removePeer(publicKey: string): Promise<Result<void>>;
    bringUp(): Promise<Result<void>>;
    bringDown(): Promise<Result<void>>;
    status(): Promise<Result<void>>;
    peerStatus(publicKey: string): Promise<Result<PeerStatus | null>>;
    listPeers(): Promise<Result<PeerStatus[] | null>>;
}
