import { g as getDeviceObject, P as PhilTVApiParams, F as FlatNode } from './index-C4ZF9Z0-.cjs';
import * as urllib from 'urllib';
import { HttpClient, RequestOptions } from 'urllib';
import { J as JOINTSPACE_CONSTANTS } from './jointspace-CgodV7lK.cjs';

type InputKeys = (typeof JOINTSPACE_CONSTANTS.inputKeys)[number];
type AmbilightFollowVideoMode = (typeof JOINTSPACE_CONSTANTS.ambilight.followVideoMode)[number] | string;
type AmbilightFollowAudioMode = (typeof JOINTSPACE_CONSTANTS.ambilight.followAudioMode)[number];
type AmbilightChangeBrightnessAvailableValues = (typeof JOINTSPACE_CONSTANTS.ambilight.ambilightChangeBrightnessAvailableValues)[number];
type AmbilightSetBrightnessAvailableValues = (typeof JOINTSPACE_CONSTANTS.ambilight.ambilightBrightnessAvailableValues)[number];

declare function getInformationSystem(apiUrl: string): Promise<readonly [Error, undefined] | readonly [undefined, {
    readonly apiVersion: any;
    readonly systemFeatures: any;
    readonly isSecureTransport: boolean;
    readonly isGoodPairingType: boolean;
    readonly isReady: boolean;
}]>;
type PhilTVPairingParams = {
    /**
     * The IP address of the Philips TV to connect to.
     * Without the protocol and port number.
     * @example 192.168.1.2
     */
    tvIp: string;
    /**
     * The port number of the Philips TV API to connect to.
     * Default is `1926`.
     */
    apiPort?: number;
};
declare class PhilTVPairing {
    private tvBase;
    readonly deviceId: string;
    readonly apiUrls: {
        secure: string;
    };
    readonly deviceInformation: ReturnType<typeof getDeviceObject>;
    private httpClients;
    private startPairingResponse;
    private credentials;
    private apiVersion;
    pairingRequestUrl: string;
    constructor(initParams: PhilTVPairingParams);
    init(): Promise<readonly [Error | undefined, {
        readonly apiVersion: any;
        readonly systemFeatures: any;
        readonly isSecureTransport: boolean;
        readonly isGoodPairingType: boolean;
        readonly isReady: boolean;
    } | undefined]>;
    startPairing(): Promise<readonly [Error, undefined] | readonly [undefined, {
        authKey: any;
        authTimestamp: any;
        timeout: any;
    }]>;
    completePairing(pin: string): Promise<readonly [Error, undefined] | readonly [undefined, {
        user: string;
        password: any;
        apiUrl: string;
        apiVersion: number;
        fullApiUrl: string;
    }]>;
}

type GetHttpDigestClient = {
    user: string;
    password: string;
    baseUrl: string;
    options?: {
        rejectUnauthorized?: boolean;
    };
};
declare function getHttpDigestClient(config: GetHttpDigestClient): {
    client: HttpClient;
    request: (url: string, reqOptions?: RequestOptions) => Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
};

/**
 * Class representing the base API for interacting with Philips TV.
 */
declare class PhilTVApiBase {
    protected digestClient: ReturnType<typeof getHttpDigestClient>;
    constructor(params: PhilTVApiParams);
    /**
     * Gets the digest client instance.
     *
     * @returns The digest client instance used for API requests.
     */
    getDigestClient(): {
        client: urllib.HttpClient;
        request: (url: string, reqOptions?: urllib.RequestOptions) => Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
            readonly data: any;
            readonly opaque: unknown;
            readonly status: number;
            readonly statusCode: number;
            readonly statusText: string;
            readonly headers: urllib.IncomingHttpHeaders;
            readonly url: string;
            readonly redirected: boolean;
            readonly requestUrls: string[];
            readonly res: urllib.RawResponseWithMeta;
            readonly ok: true;
        }]>;
    };
    protected renderResponse(error: Error | undefined, body: unknown | undefined): readonly [Error | undefined, unknown];
    getMenuStructure(opts?: {
        flat?: boolean;
    }): Promise<readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }] | readonly [Error, undefined]>;
    getMenuStructureItem(context: string | undefined, nodeId: number | undefined): Promise<[Error, undefined] | [undefined, FlatNode]>;
    getMenuStructureItemByContext(context: string): Promise<[Error, undefined] | [undefined, FlatNode]>;
    getMenuStructureItemByNodeId(nodeId: number): Promise<[Error, undefined] | [undefined, FlatNode]>;
    setMenuItemSetting(item: FlatNode | undefined, value: any): Promise<readonly [Error, undefined] | readonly [Error | undefined, {
        status: number | undefined;
        statusText: string | undefined;
        body: any;
        item: FlatNode;
        originalResponse: urllib.HttpClientResponse<any> | {
            readonly data: any;
            readonly opaque: unknown;
            readonly status: number;
            readonly statusCode: number;
            readonly statusText: string;
            readonly headers: urllib.IncomingHttpHeaders;
            readonly url: string;
            readonly redirected: boolean;
            readonly requestUrls: string[];
            readonly res: urllib.RawResponseWithMeta;
            readonly ok: true;
        } | undefined;
    }]>;
    protected handleSetMenuItemSetting(contextName: string, value: unknown): Promise<readonly [Error | undefined, {
        status: number | undefined;
        statusText: string | undefined;
        body: any;
        item: FlatNode;
        originalResponse: urllib.HttpClientResponse<any> | {
            readonly data: any;
            readonly opaque: unknown;
            readonly status: number;
            readonly statusCode: number;
            readonly statusText: string;
            readonly headers: urllib.IncomingHttpHeaders;
            readonly url: string;
            readonly redirected: boolean;
            readonly requestUrls: string[];
            readonly res: urllib.RawResponseWithMeta;
            readonly ok: true;
        } | undefined;
    } | undefined]>;
}

declare class PhilTVApi extends PhilTVApiBase {
    getSystem(): Promise<readonly [Error | undefined, unknown] | readonly [undefined, any]>;
    setAmbilightBrightness(brightness: AmbilightSetBrightnessAvailableValues): Promise<readonly [Error | undefined, unknown]>;
    changeAmbilightBrightness(move: AmbilightChangeBrightnessAvailableValues): Promise<readonly [Error | undefined, unknown]>;
    increaseAmbilightBrightness(): Promise<readonly [Error | undefined, unknown]>;
    decreaseAmbilightBrightness(): Promise<readonly [Error | undefined, unknown]>;
    getAmbilightConfiguration(): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
    getAmbilightBrightnessInformation(): Promise<readonly [Error | undefined, unknown]>;
    getAmbilightBrightnessValue(): Promise<readonly [Error | undefined, number]>;
    getAmbilightMode(): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
    getAmbilightFullInformation(): Promise<readonly [Error | undefined, {
        configuration: any;
        mode: any;
        brightness: unknown;
        cached: any;
        ambiHue: any;
    }]>;
    protected setAmbilightCurrentConfiguration(options: Record<any, any>): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
    setAmbilightFollowVideoMode(mode: AmbilightFollowVideoMode): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }] | readonly [Error | undefined, unknown]>;
    setAmbilightFollowAudioMode(mode: AmbilightFollowAudioMode): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }] | readonly [Error | undefined, unknown]>;
    setAmbilightMode(mode: 'manual' | 'internal' | 'expert'): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
    getAmbilightCached(): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
    getCurrentActivity(): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
    getApplications(): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
    sendKey(key: InputKeys): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
    getAmbiHue(): Promise<readonly [Error, undefined, urllib.HttpClientResponse<any>] | readonly [Error, undefined, undefined] | readonly [undefined, any, {
        readonly data: any;
        readonly opaque: unknown;
        readonly status: number;
        readonly statusCode: number;
        readonly statusText: string;
        readonly headers: urllib.IncomingHttpHeaders;
        readonly url: string;
        readonly redirected: boolean;
        readonly requestUrls: string[];
        readonly res: urllib.RawResponseWithMeta;
        readonly ok: true;
    }]>;
    getCurrentSetting(nodeId: number): Promise<readonly [Error, undefined] | readonly [undefined, any[]]>;
}

export { type AmbilightChangeBrightnessAvailableValues, type AmbilightFollowAudioMode, type AmbilightFollowVideoMode, type AmbilightSetBrightnessAvailableValues, FlatNode, type InputKeys, PhilTVApi, PhilTVApiParams, PhilTVPairing, type PhilTVPairingParams, getInformationSystem };
