/// <reference types="node" />
import * as Tp from 'thingpedia';
import * as TT from 'thingtalk';
import * as stream from 'stream';
import Engine from '../../index';
import ExecWrapper, { CompiledQueryHints } from '../../apps/exec_wrapper';
export default class MiscellaneousDevice extends Tp.BaseDevice {
    constructor(engine: Engine, state: {
        kind: string;
    });
    get ownerTier(): Tp.Tier;
    checkAvailable(): Promise<Tp.Availability>;
    get_get_date(): {
        date: Date;
    }[];
    get_get_time(): {
        time: TT.Builtin.Time;
    }[];
    get_get_random_between({ low, high }: {
        low: number | null | undefined;
        high: number | null | undefined;
    }): {
        random: number;
    }[];
    get_get_name(): {
        name: unknown;
    }[];
    get_get_gps(): Promise<{
        location: {
            x: number;
            y: number;
            display: string | undefined;
        };
        altitude: number | undefined;
        bearing: number | undefined;
        speed: number | undefined;
    }[]>;
    subscribe_get_gps(): stream.Readable;
    get_device(): Promise<{
        id: TT.Builtin.Entity;
        description: string;
        category: string;
    }[]>;
    get_commands(params: unknown, hints?: CompiledQueryHints): Promise<{
        id: string;
        device: undefined;
        program: TT.Builtin.Entity;
    }[]>;
    do_faq_reply({ question }: {
        question: string;
    }): {
        reply: string;
    };
    do_debug_log(args: {
        message: string;
    }): void;
    do_say(args: {
        message: string;
    }): {
        message_output: string;
    };
    do_open_url({ url }: {
        url: unknown;
    }): Promise<void>;
    do_configure({ device }: {
        device: unknown;
    }): Promise<never>;
    do_discover(args: unknown, env: ExecWrapper): never;
    do_set_language(): never;
    do_set_timezone(): never;
    do_set_wake_word(): never;
    do_set_voice_output({ status }: {
        status: 'on' | 'off';
    }): void;
    do_set_voice_input({ status }: {
        status: 'on' | 'off';
    }): void;
    do_set_name({ name }: {
        name: string;
    }): void;
    do_set_location({ type, location }: {
        type: 'current' | 'home' | 'work';
        location: Tp.Value.Location;
    }): void;
}
