export class LGRemoteClient {
    /**
     *
     * @param {LGRemoteClientOpts} opts
     */
    constructor({ url, log, keyCooldown, }: LGRemoteClientOpts);
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    /**
     *
     * @template {SerializableObject} [P=any]
     * @param {string} type
     * @param {P} payload
     */
    command<P extends import("../types").SerializableObject = any>(type: string, payload?: P): void;
    /**
     *
     * @param {import('../types').Delta} delta
     */
    movePointer({ dx, dy }: import('../types').Delta): Promise<void>;
    /**
     *
     * @param {import('type-fest').LiteralUnion<LGRemoteKey, string>} name
     */
    pressKey(name: import('type-fest').LiteralUnion<LGRemoteKey, string>): Promise<void>;
    #private;
}
/**
 * @see https://webostv.developer.lge.com/develop/guides/magic-remote
 */
export const LGRemoteKeys: Readonly<{
    readonly HOME: "HOME";
    readonly LEFT: "LEFT";
    readonly RIGHT: "RIGHT";
    readonly UP: "UP";
    readonly DOWN: "DOWN";
    readonly ENTER: "ENTER";
    readonly BACK: "BACK";
}>;
export type LGRemoteKey = import('type-fest').ValueOf<typeof LGRemoteKeys>;
export type LGRemoteClientOpts = {
    url: string;
    log?: import("@appium/types").AppiumLogger | undefined;
    keyCooldown?: number | undefined;
};
export type SerializableObject = import('../types').SerializableObject;
export type Message<P extends import("../types").SerializableObject = any> = import('../types').InboundMsg<P>;
//# sourceMappingURL=lg-remote-client.d.ts.map