import { Log } from '../logger';
import { Protocol } from './discovery';
import { DocsisChannelType, DocsisStatus, HumanizedDocsis31ChannelStatus, HumanizedDocsisChannelStatus, Modem } from './modem';
import { CryptoVars } from './tools/html-parser';
export interface ArrisDocsisStatus {
    downstream: ArrisDocsisChannelStatus[];
    downstreamChannels: number;
    ofdmChannels: number;
    time: string;
    upstream: ArrisDocsisChannelStatus[];
    upstreamChannels: number;
}
export interface ArrisDocsisChannelStatus {
    ChannelID: string;
    ChannelType: DocsisChannelType;
    Frequency: number | string;
    LockStatus: string;
    Modulation: string;
    PowerLevel: string;
    SNRLevel?: number | string;
}
export interface SetPasswordRequest {
    AuthData: string;
    EncryptData: string;
    Name: string;
}
export interface SetPasswordResponse {
    encryptData: string;
    p_status: string;
    p_waitTime?: number;
}
export declare function normalizeChannelStatus(channelStatus: ArrisDocsisChannelStatus): HumanizedDocsis31ChannelStatus | HumanizedDocsisChannelStatus;
export declare function normalizeDocsisStatus(arrisDocsisStatus: ArrisDocsisStatus): DocsisStatus;
export declare class Arris extends Modem {
    readonly modemIp: string;
    readonly protocol: Protocol;
    readonly logger: Log;
    private csrfNonce;
    constructor(modemIp: string, protocol: Protocol, logger: Log);
    addCredentialToCookie(): Promise<void>;
    createServerRecord(setPasswordRequest: SetPasswordRequest): Promise<SetPasswordResponse>;
    docsis(): Promise<DocsisStatus>;
    encryptPassword(password: string, cryptoVars: CryptoVars): SetPasswordRequest;
    fetchCredential(): Promise<string>;
    getCurrentCryptoVars(): Promise<CryptoVars>;
    login(password: string): Promise<void>;
    loginPasswordCheck(encryptedData: string, cryptoVars: CryptoVars, key: string): string;
    logout(): Promise<void>;
    restart(): Promise<unknown>;
}
