import { Log } from '../logger';
import { Protocol } from './discovery';
import { DocsisChannelType, DocsisStatus, HumanizedDocsis31ChannelStatus, HumanizedDocsisChannelStatus, Modem } from './modem';
export interface TechnicolorBaseResponse {
    data?: {
        [key: string]: unknown;
    };
    error: 'error' | 'ok' | string;
    message: string;
}
export interface TechnicolorConfiguration extends TechnicolorBaseResponse {
    data: {
        AFTR: string;
        DeviceMode: 'Ipv4' | 'Ipv4';
        firmwareversion: string;
        internetipv4: string;
        IPAddressRT: string[];
        LanMode: 'modem' | 'router';
    };
}
export interface TechnicolorSaltResponse extends TechnicolorBaseResponse {
    salt: string;
    saltwebui: string;
}
export interface TechnicolorTokenResponse extends TechnicolorBaseResponse {
    token: string;
}
export interface TechnicolorDocsisStatus {
    data: {
        downstream: TechnicolorDocsisChannelStatus[];
        ofdm_downstream: TechnicolorDocsis31ChannelStatus[];
        ofdma_upstream: TechnicolorDocsis31UpstreamChannelStatus[];
        upstream: TechnicolorDocsisUpstreamChannelStatus[];
    };
    error: string;
    message: string;
}
export interface TechnicolorDocsisUpstreamChannelStatus extends Omit<TechnicolorDocsisChannelStatus, 'channelid' | 'locked' | 'SNR'> {
    CentralFrequency: string;
    channelidup: string;
    RangingStatus: string;
}
export interface TechnicolorDocsis31UpstreamChannelStatus {
    __id: string;
    bandwidth: string;
    CentralFrequency: string;
    channelidup: string;
    ChannelType: string;
    end_frequency: string;
    FFT: string;
    power: string;
    RangingStatus: string;
    start_frequency: string;
}
export interface TechnicolorDocsisChannelStatus {
    __id: string;
    CentralFrequency: string;
    channelid: string;
    ChannelType: DocsisChannelType;
    FFT: string;
    locked: string;
    power: string;
    SNR: string;
}
export interface TechnicolorDocsis31ChannelStatus {
    __id: string;
    bandwidth: string;
    CentralFrequency_ofdm: string;
    channelid_ofdm: string;
    ChannelType: DocsisChannelType;
    end_frequency: string;
    FFT_ofdm: string;
    locked_ofdm: string;
    power_ofdm: string;
    SNR_ofdm: string;
    start_frequency: string;
}
export declare function normalizeChannelStatus(channelStatus: TechnicolorDocsisChannelStatus): HumanizedDocsisChannelStatus;
export declare function normalizeUpstreamChannelStatus(channelStatus: TechnicolorDocsisUpstreamChannelStatus): HumanizedDocsisChannelStatus;
export declare function normalizeUpstreamOfdmaChannelStatus(channelStatus: TechnicolorDocsis31UpstreamChannelStatus): HumanizedDocsis31ChannelStatus;
export declare function normalizeOfdmChannelStatus(channelStatus: TechnicolorDocsis31ChannelStatus): HumanizedDocsis31ChannelStatus;
export declare function normalizeDocsisStatus(channelStatus: TechnicolorDocsisStatus): DocsisStatus;
export declare class Technicolor extends Modem {
    readonly modemIp: string;
    readonly protocol: Protocol;
    readonly logger: Log;
    constructor(modemIp: string, protocol: Protocol, logger: Log);
    docsis(): Promise<DocsisStatus>;
    login(password: string): Promise<void>;
    logout(): Promise<void>;
    restart(): Promise<unknown>;
}
