import { v1 } from './requests'; import Expression = v1.expression.Expression; import Display = v1.display.Display; import Listen = v1.listen.Listen; import Media = v1.media.Media; import Perception = v1.perception.Perception; import Assets = v1.assets.Assets; import Config = v1.config.Config; import { Event } from './events/Event'; import { HotWords } from './requests/v1/listen/requesters/HotWord'; /** * Entry point for the Remote Client Protocol * @class CommandRequester * @example * const commandRequester = new CommandRequester(); * commandRequester.disconnected.on((data) => { * console.log('Connection closed because', data); * }); * await commandRequester.connect(robotName); */ export declare class CommandRequester { assets: Assets; config: Config; display: Display; expression: Expression; listen: Listen; media: Media; perception: Perception; /** * ID for the app * @name CommandRequester#AppID * @type string * @intdocs */ AppID: string; /** * Event emitted when the connection is closed by the robot or a connection issue as *
```Event<{code:number, reason:string}>``` * @name CommandRequester#disconnected * @type Event */ disconnected: Event<{ code: number; reason: string; }>; private session; private sessionId; private robotVersion; private connection; private robotName; private inProgressTokens; constructor(); /** * Connect to the specified robot. Overridden in the native languages * @method CommandRequester#connect * @param {string} robotName your-friendly-robot-name * @return {Promise} * @intdocs */ connect(robotName: string, options?: any): Promise; /** * Disconnect all active robot connections. * Overridden in the native languages. * @method CommandRequester#disconnect * @intdocs */ disconnect(): void; private generateTransactionID(); private onMessage(data); } export declare namespace CommandRequester { /** * Definition for making Jibo twist to a certain angle * @interface CommandRequester.AngleVector * @prop theta {number} Twist/horizontal angle * @prop psi {number} Vertical angle */ interface AngleVector { theta: number; psi: number; } /** * Definition for a point on Jibo's screen * @interface CommandRequester.Vector2 * @prop x {number} Horizontal pixels * @prop y {number} Vertical pixels */ interface Vector2 { x: number; y: number; } /** * Definition for a 3D point in space * @interface CommandRequester.Vector3 * @prop x {number} Meters forward * @prop y {number} Meters left * @prop z {number} Meters up */ interface Vector3 { x: number; y: number; z: number; } namespace listen { export import HotWord = HotWords; } namespace media { /** * Which camera to use * @typedef CommandRequester.media.Camera * @prop left {'Left'} Default; Use for photo-taking * @prop right {'Right'} Unsupported */ enum Camera { left = "Left", right = "Right", } /** * Enum of photo resolution options * @typedef CommandRequester.media.CameraResolution * @prop high {'highRes'} Currently unsupported * @prop med {'medRes'} Higher res than default * @prop low {'lowRes'} Default * @prop micro {'microRes'} Lower res than default */ enum CameraResolution { high = "highRes", med = "medRes", low = "lowRes", micro = "microRes", } /** * Enum of video type options * @typedef CommandRequester.media.VideoType * @prop normal {'NORMAL'} Default * @prop debug {'DEBUG'} Currently unsupported */ enum VideoType { normal = "NORMAL", /** Currently unsupported */ debug = "DEBUG", } } namespace config { /** * Robot configuration options that can be set by your app * @interface CommandRequester.config.SetConfigOptions * @prop mixer {number} Volume between 0 (mute) and 1 (loudest) */ interface SetConfigOptions { mixer: number; } } namespace expression { /** * What type of lookAt Jibo should perform: *
`"ANGLE" | "ENTITY" | "POSITION" | "CAMERA"` * @typedef CommandRequester.expression.LookAtTargetType */ type LookAtTargetType = "ANGLE" | "ENTITY" | "POSITION" | "CAMERA"; /** * Base interface for lookAt targets * @interface CommandRequester.expression.BaseLookAtTarget * @prop type {CommandRequester.expression.LookAtTargetType} Type of lookAt to perform * @prop levelHead {boolean} `true` to keep Jibo's head level while he moves */ interface BaseLookAtTarget { type: LookAtTargetType; levelHead: boolean; } /** * Interface for looking towards an angle. * @interface CommandRequester.expression.Angle * @extends CommandRequester.expression.BaseLookAtTarget * @prop type="ANGLE" {CommandRequester.expression.LookAtTargetType} * @prop angle {CommandRequester.AngleVector} Angle to twist to look towards. */ interface Angle extends BaseLookAtTarget { type: "ANGLE"; angle: AngleVector; } /** * Interface for looking at a face (entity) * @interface CommandRequester.expression.LookAtEntity * @extends CommandRequester.expression.BaseLookAtTarget * @prop type="ENTITY" {CommandRequester.expression.LookAtTargetType} * @prop target {number} ID of the face (entity) to look toward. */ interface LookAtEntity extends BaseLookAtTarget { type: "ENTITY"; target: number; } /** * Interface for looking towards a 3D position in space * @interface CommandRequester.expression.Position * @extends CommandRequester.expression.BaseLookAtTarget * @prop type="POSITION" {CommandRequester.expression.LookAtTargetType} * @prop position {CommandRequester.Vector3} 3D point in space to look toward */ interface Position extends BaseLookAtTarget { type: "POSITION"; position: Vector3; } /** * Interface for looking towards a 2D position relative to Jibo's screen * @interface CommandRequester.expression.ScreenCoords * @extends CommandRequester.expression.BaseLookAtTarget * @prop type="CAMERA" {CommandRequester.expression.LookAtTargetType} * @prop coords {CommandRequester.Vector2} 2D pixel point on Jibo's screen to look toward */ interface ScreenCoords extends BaseLookAtTarget { type: "CAMERA"; coords: Vector2; } /** * Type of lookAt target * @typedef CommandRequester.expression.LookAtTarget * @prop Angle {CommandRequester.expression.Angle} Twist/angle target * @prop LookAtEntity {CommandRequester.expression.LookAtEntity} Face target * @prop Position {CommandRequester.expression.Position} 3D position target * @prop ScreenCoords {CommandRequester.expression.ScreenCoords} 2D pixel target */ type LookAtTarget = Angle | LookAtEntity | Position | ScreenCoords; /** * Enum of Jibo's available attention modes. * @typedef CommandRequester.expression.AttentionMode * @prop Off * @prop Idle * @prop Disengage * @prop Engaged * @prop Speaking * @prop Fixated * @prop Attractable * @prop Menu * @prop Command */ enum AttentionMode { Off = "OFF", Idle = "IDLE", Disengage = "DISENGAGE", Engaged = "ENGAGED", Speaking = "SPEAKING", Fixated = "FIXATED", Attractable = "ATTRACTABLE", Menu = "MENU", Command = "COMMAND", } } namespace display { /** * Options for listening for screen gestures * @interface CommandRequester.display.ScreenGestureFilter * @prop [area] {CommandRequester.display.Circle | CommandRequester.display.Rectangle} Area in which to listen for a screen gesture * @prop [type] {CommandRequester.display.ScreenGestureType} Type of gesture to listen for */ interface ScreenGestureFilter { area?: Circle | Rectangle; type?: ScreenGestureType; } /** * Definition for a circular area on Jibo's screen * @interface CommandRequester.display.Circle * @prop radius {number} Radius of the circle in pixels * @prop x {number} Horizontal coordinate of the circle's center in pixels * @prop y {number} Vertical coordinate of the circle's center in pixels */ interface Circle { radius: number; x: number; y: number; } /** * Definition for a rectangular area on Jibo's screen * @interface CommandRequester.display.Rectangle * @prop height {number} Height of the rectangle in pixels * @prop width {number} Width of the rectangle in pixels * @prop x {number} Horizontal coordinate of the top-left corner of the rectangle in pixels * @prop y {number} Vertical coordinate of the top-left corner of the rectangle in pixels */ interface Rectangle { height: number; width: number; x: number; y: number; } /** * Enum of screen gesture types * @typedef CommandRequester.display.ScreenGestureType * @prop Tap 'TAP' A tap on Jibo's screen * @prop SwipeUp 'SWIPEUP' A swipe from bottom to top on Jibo's screen * @prop SwipeDown 'SWIPEDOWN' A swipe from top to bottom on Jibo's screen * @prop SwipeLeft 'SWIPELEFT' A swipe from right to left on Jibo's screen * @prop SwipeRight 'SWIPERIGHT' A swipe from left to right on Jibo's screen */ enum ScreenGestureType { Tap = "TAP", SwipeUp = "SWIPEUP", SwipeDown = "SWIPEDOWN", SwipeLeft = "SWIPELEFT", SwipeRight = "SWIPERIGHT", } /** * Data object for image info * @interface CommandRequester.display.ImageData * @prop name {string} Provide a unique name for the asset in the local cache * @prop [set] {string} Previously defined name of set of asssets to add this asset to * @prop src {string} URL to the image */ interface ImageData { name: string; set?: string; src: string; } } }