import createFetchClient from 'openapi-fetch';

/**
 * This file was auto-generated by openapi-typescript.
 * Do not make direct changes to the file.
 */


interface paths {
  "/v1/auth/login": {
    /** Log In */
    post: operations["v1AuthLogin"];
  };
  "/v1/config": {
    /** Get all configs */
    get: operations["v1GetConfig"];
  };
  "/v1/domain/{domainId}/auth/{providerId}": {
    /** Update an auth provider for a domain */
    put: operations["v1UpdateDomainAuthProvider"];
    /** Delete an auth provider from a domain */
    delete: operations["v1DeleteDomainAuthProvider"];
  };
  "/v1/domain/{domainId}/auth": {
    /** Return all configured auth providers for a domain (including globally configured providers) */
    get: operations["v1GetDomainAuthProviders"];
    /** Create a new auth provider for a domain */
    post: operations["v1CreateDomainAuthProvider"];
  };
  "/v1/instances/{instanceId}/hooks": {
    /** Get all hypervisor hooks for Instance */
    get: operations["v1GetHooks"];
    /** Create hypervisor hook for Instance */
    post: operations["v1CreateHook"];
  };
  "/v1/hooks/{hookId}": {
    /** Get hypervisor hook by id */
    get: operations["v1GetHookById"];
    /** Update an existing hypervisor hook */
    put: operations["v1UpdateHook"];
    /** Delete an existing hypervisor hook */
    delete: operations["v1DeleteHook"];
  };
  "/v1/images": {
    /** Get all Images Metadata */
    get: operations["v1GetImages"];
    /** Create a new Image */
    post: operations["v1CreateImage"];
  };
  "/v1/images/{imageId}": {
    /** Get Image Metadata */
    get: operations["v1GetImage"];
    /**
     * Upload Image Data
     * @description If the active project has enough remaining quota, updates an Image with the contents of the request body.
     */
    post: operations["v1UploadImageData"];
  };
  "/v2/images/{imageId}": {
    /** Delete Image */
    delete: operations["v1DeleteImage"];
  };
  "/v1/ready": {
    /**
     * API Status
     * @description Check if  API is ready for queries
     */
    get: operations["v1Ready"];
  };
  "/v1/instances": {
    /** Get Instances */
    get: operations["v1GetInstances"];
    /** Create Instance */
    post: operations["v1CreateInstance"];
  };
  "/v1/instances/{instanceId}": {
    /** Get Instance */
    get: operations["v1GetInstance"];
    /** Remove Instance */
    delete: operations["v1DeleteInstance"];
    /** Update Instance */
    patch: operations["v1PatchInstance"];
  };
  "/v1/instances/{instanceId}/agent/v1/app/ready": {
    /** Check if App subsystem is ready */
    get: operations["v1AgentAppReady"];
  };
  "/v1/instances/{instanceId}/agent/v1/app/install": {
    /**
     * Install App at path
     * @description Installs the app located at path which must be present on the VM filesystem
     */
    post: operations["v1AgentInstallApp"];
  };
  "/v1/instances/{instanceId}/agent/v1/app/apps": {
    /** List Apps */
    get: operations["v1AgentListApps"];
  };
  "/v1/instances/{instanceId}/agent/v1/app/apps/update": {
    /** List Apps Status */
    get: operations["v1AgentListAppsStatus"];
  };
  "/v1/instances/{instanceId}/agent/v1/app/icons": {
    /** List App Icons */
    get: operations["v1AgentListAppIcons"];
  };
  "/v1/instances/{instanceId}/agent/v1/app/apps/{bundleId}/run": {
    /** Run an App */
    post: operations["v1AgentRunApp"];
  };
  "/v1/instances/{instanceId}/agent/v1/app/apps/{bundleId}/kill": {
    /** Kill an App */
    post: operations["v1AgentKillApp"];
  };
  "/v1/instances/{instanceId}/agent/v1/app/apps/{bundleId}/uninstall": {
    /** Uninstall an App */
    post: operations["v1AgentUninstallApp"];
  };
  "/v1/instances/{instanceId}/agent/v1/file/device/{filePath}": {
    /** Download a File from VM */
    get: operations["v1AgentGetFile"];
    /** Upload a file to VM */
    put: operations["v1AgentUploadFile"];
    /** Delete a File on VM */
    delete: operations["v1AgentDeleteFile"];
    /** Change Attrs of a File on VM */
    patch: operations["v1AgentSetFileAttributes"];
  };
  "/v1/instances/{instanceId}/agent/v1/file/temp": {
    /**
     * Get the path for a new temp file
     * @description Returns a temporary random filename that is guranteed to be unique on the VMs
     * filesystem at the time of invocation of this method.
     */
    post: operations["v1AgentGetTempFilename"];
  };
  "/v1/instances/{instanceId}/agent/v1/profile/profiles": {
    /** List Profiles */
    get: operations["v1AgentListProfiles"];
  };
  "/v1/instances/{instanceId}/agent/v1/profile/install": {
    /** Install a Profile to VM */
    post: operations["v1AgentInstallProfile"];
  };
  "/v1/instances/{instanceId}/agent/v1/profile/profiles/{profileId}": {
    /** Uninstall a Profile from VM */
    delete: operations["v1AgentUninstallProfile"];
  };
  "/v1/instances/{instanceId}/agent/v1/system/setHostname": {
    /** Set Hostname of instance */
    post: operations["v1AgentSystemSetHostname"];
  };
  "/v1/instances/{instanceId}/agent/v1/system/shutdown": {
    /** Instruct VM to halt */
    post: operations["v1AgentSystemShutdown"];
  };
  "/v1/instances/{instanceId}/agent/v1/system/network": {
    /** Get IP of eth0 (AOSP only) */
    get: operations["v1AgentSystemGetNetwork"];
  };
  "/v1/instances/{instanceId}/agent/v1/system/getprop": {
    /** Get System Property (AOSP only) */
    post: operations["v1AgentSystemGetProp"];
  };
  "/v1/instances/{instanceId}/agent/v1/system/install-opengapps": {
    /** Install OpenGApps (AOSP only) */
    post: operations["v1AgentSystemInstallOpenGApps"];
  };
  "/v1/instances/{instanceId}/agent/v1/system/adbauth": {
    /** Get ADB Auth Setting (AOSP only) */
    get: operations["v1AgentSystemGetAdbAuth"];
    /** Set ADB Auth Setting (AOSP only) */
    put: operations["v1AgentSystemSetAdbAuth"];
  };
  "/v1/instances/{instanceId}/agent/v1/system/lock": {
    /** Lock Device (iOS Only) */
    post: operations["v1AgentSystemLock"];
  };
  "/v1/instances/{instanceId}/agent/v1/system/unlock": {
    /** Unlock Device (iOS Only) */
    post: operations["v1AgentSystemUnlock"];
  };
  "/v1/instances/{instanceId}/console": {
    /** Get console websocket URL */
    get: operations["v1GetInstanceConsole"];
  };
  "/v1/instances/{instanceId}/networkMonitor.pcap": {
    /** Download a Network Monitor pcap file */
    get: {
      parameters: {
        path: {
          /** @description Instance ID - uuid */
          instanceId: string;
        };
      };
      responses: {
        /** @description pcap file */
        200: {
          content: {
            "application/vnd.tcpdump.pcap": components["schemas"]["File"];
          };
        };
        /** @description Bad Request */
        400: {
          content: {
            "application/json": components["schemas"]["UserError"];
          };
        };
        /** @description Forbidden */
        403: {
          content: {
            "application/json": components["schemas"]["ApiError"];
          };
        };
      };
    };
  };
  "/v1/instances/{instanceId}/netdump.pcap": {
    /** Download a netdump pcap file */
    get: {
      parameters: {
        path: {
          /** @description Instance ID - uuid */
          instanceId: string;
        };
      };
      responses: {
        /** @description pcapng file */
        200: {
          content: {
            "application/vnd.tcpdump.pcap": components["schemas"]["File"];
          };
        };
        /** @description Bad Request */
        400: {
          content: {
            "application/json": components["schemas"]["UserError"];
          };
        };
        /** @description Forbidden */
        403: {
          content: {
            "application/json": components["schemas"]["ApiError"];
          };
        };
      };
    };
  };
  "/v1/instances/{instanceId}/start": {
    /** Start an Instance */
    post: operations["v1StartInstance"];
  };
  "/v1/instances/{instanceId}/stop": {
    /** Stop an Instance */
    post: operations["v1StopInstance"];
  };
  "/v1/instances/{instanceId}/reboot": {
    /** Reboot an Instance */
    post: operations["v1RebootInstance"];
  };
  "/v1/instances/{instanceId}/pause": {
    /** Pause an Instance */
    post: operations["v1PauseInstance"];
  };
  "/v1/instances/{instanceId}/unpause": {
    /** Unpause an Instance */
    post: operations["v1UnpauseInstance"];
  };
  "/v1/instances/{instanceId}/state": {
    /** Set state of Instance */
    put: operations["v1SetInstanceState"];
  };
  "/v2/instances/{instanceId}/state": {
    /** Get state of Instance */
    get: operations["v2GetInstanceState"];
  };
  "/v1/instances/{instanceId}/gpios": {
    /** Get Instance GPIOs */
    get: operations["v1GetInstanceGpios"];
    /** Set Instance GPIOs */
    put: operations["v1SetInstanceGpios"];
  };
  "/v1/instances/{instanceId}/peripherals": {
    /** Get Instance Peripherals */
    get: operations["v1GetInstancePeripherals"];
    /** Set Instance Peripherals */
    put: operations["v1SetInstancePeripherals"];
  };
  "/v1/instances/{instanceId}/restoreBackup": {
    /** Restore backup */
    post: operations["v1RestoreBackup"];
  };
  "/v1/instances/{instanceId}/screenshot.{format}": {
    /** Get Instance Screenshot */
    get: operations["v1GetInstanceScreenshot"];
  };
  "/v1/instances/{instanceId}/rotate": {
    /**
     * Rotate device to specified orientation
     * @description Rotate device to orientation.  Accepted orientations:
     * 1. Portrait
     * 2. Portrait vertically inverted (up-side-down)
     * 3. Landscape with top of the device to the left
     * 4. Landscape with top of the device to the right
     */
    post: operations["v1RotateInstance"];
  };
  "/v1/instances/{instanceId}/input": {
    /**
     * Provide Instance Input
     * @description Sends a touch or button event to the VM.
     *
     * - Buttons (or keys) to be held during the input are specified as an array of strings, each string must be either a single ascii character or one of the following keywords:
     *   - VM Buttons: finger, homeButton, holdButton, volumeUp, volumeDown, ringerSwitch, backButton, overviewButton
     *   - Keyboard Buttons: again, alt, alterase, apostrophe, back, backslash, backspace, bassboost, bookmarks, bsp, calc, camera, cancel, caps, capslock, chat, close, closecd, comma, compose, computer, config, connect, copy, ctrl, cut, cyclewindows, dashboard, del, delete, deletefile, dot, down, edit, eject, ejectclose, email, end, enter, equal, esc, escape, exit, f1, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f2, f20, f21, f22, f23, f24, f3, f4, f5, f6, f7, f8, f9, fastfwd, file, finance, find, forward, front, grave, hangeul, hanja, help, henkan, home, homepage, hp, hrgn, ins, insert, iso, k102, kp0, kp1, kp2, kp3, kp4, kp5, kp6, kp7, kp8, kp9, kpasterisk, kpcomma, kpdot, kpenter, kpequal, kpjpcomma, kpleftparen, kpminus, kpplus, kpplusminus, kprightparen, kpslash, ktkn, ktknhrgn, left, leftalt, leftbrace, leftctrl, leftmeta, leftshift, linefeed, macro, mail, menu, meta, minus, move, msdos, muhenkan, mute, new, next, numlock, open, pagedown, pageup, paste, pause, pausecd, pgdn, pgup, phone, play, playcd, playpause, power, previous, print, prog1, prog2, prog3, prog4, props, question, record, redo, refresh, return, rewind, right, rightalt, rightbrace, rightctrl, rightmeta, rightshift, ro, rotate, scale, screenlock, scrolldown, scrolllock, scrollup, search, semicolon, sendfile, setup, shift, shop, slash, sleep, sound, space, sport, stop, stopcd, suspend, sysrq, tab, undo, up, voldown, volup, wakeup, www, xfer, yen, zkhk
     */
    post: operations["v1PostInstanceInput"];
  };
  "/v1/instances/{instanceId}/consoleLog": {
    /** Get Console Log */
    get: operations["v1GetInstanceConsoleLog"];
  };
  "/v1/instances/{instanceId}/panics": {
    /** Get Panics */
    get: operations["v1GetInstancePanics"];
    /** Clear Panics */
    delete: operations["v1ClearInstancePanics"];
  };
  "/v1/instances/{instanceId}/media/play": {
    /** Start playing media */
    post: operations["v1MediaPlay"];
  };
  "/v1/instances/{instanceId}/media/stop": {
    /** Stop playing media */
    post: operations["v1MediaStop"];
  };
  "/v1/instances/{instanceId}/strace": {
    /** Clear CoreTrace logs */
    delete: operations["v1ClearCoreTrace"];
  };
  "/v1/instances/{instanceId}/strace/enable": {
    /** Start CoreTrace on an instance */
    post: operations["v1StartCoreTrace"];
  };
  "/v1/instances/{instanceId}/strace/disable": {
    /** Stop CoreTrace on an instance. */
    post: operations["v1StopCoreTrace"];
  };
  "/v1/instances/{instanceId}/strace/thread-list": {
    /** Get Running Threads (CoreTrace) */
    get: operations["v1ListThreads"];
  };
  "/v1/instances/{instanceId}/btrace-authorize": {
    /** Pre-authorize an btrace download */
    get: operations["v1BtracePreauthorize"];
  };
  "/v1/instances/{instanceId}/btrace-kcrange": {
    /** Get Kernel extension ranges */
    get: operations["v1Kcrange"];
  };
  "/v1/instances/{instanceId}/btrace": {
    /** Clear HyperTrace logs */
    delete: operations["v1ClearHyperTrace"];
  };
  "/v1/instances/{instanceId}/btrace/enable": {
    /** Start HyperTrace on an instance */
    post: operations["v1StartHyperTrace"];
  };
  "/v1/instances/{instanceId}/btrace/disable": {
    /** Stop HyperTrace on an instance. */
    post: operations["v1StopHyperTrace"];
  };
  "/v1/instances/{instanceId}/hooks/execute": {
    /** Execute Hooks on an instance */
    post: operations["v1ExecuteHyperTraceHooks"];
  };
  "/v1/instances/{instanceId}/hooks/clear": {
    /** Clear Hooks on an instance */
    post: operations["v1ClearHyperTraceHooks"];
  };
  "/v1/instances/{instanceId}/sslsplit/enable": {
    /** Start Network Monitor on an instance. */
    post: operations["v1StartNetworkMonitor"];
  };
  "/v1/instances/{instanceId}/sslsplit/disable": {
    /** Stop Network Monitor on an instance. */
    post: operations["v1StopNetworkMonitor"];
  };
  "/v1/instances/{instanceId}/netdump/enable": {
    /** Start Enhanced Network Monitor on an instance. */
    post: operations["v1StartNetdump"];
  };
  "/v1/instances/{instanceId}/netdump/disable": {
    /** Stop Enhanced Network Monitor on an instance. */
    post: operations["v1StopNetdump"];
  };
  "/v1/instances/{instanceId}/exposeport/enable": {
    /** Enable an exposed port on an instance for device access. */
    post: operations["v1EnableExposePort"];
  };
  "/v1/instances/{instanceId}/exposeport/disable": {
    /** Disable an exposed port on an instance for device access. */
    post: operations["v1DisableExposePort"];
  };
  "/v1/instances/{instanceId}/message": {
    /**
     * Inject a message into an iOS VM
     * @description Given a message and source phone number, place this message as an incoming SMS message on the iOS VM.
     * For advanced usage, a raw message of bytes may be sent. In this case, the parameter should provide hex encoded bytes
     *  (0x00 0x11 0x22 0x33 in the example below) which are sent verbatim.
     *  The user must ensure that the body is the correct format for the underlying device stack.
     */
    post: {
      parameters: {
        path: {
          /** @description Instance ID - uuid */
          instanceId: string;
        };
      };
      /** @description Message data */
      requestBody: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      responses: {
        /** @description No Content */
        204: {
          content: never;
        };
        /** @description Bad Request */
        400: {
          content: {
            "application/json": components["schemas"]["UserError"];
          };
        };
        /** @description Forbidden */
        403: {
          content: {
            "application/json": components["schemas"]["ApiError"];
          };
        };
      };
    };
  };
  "/v2/instances/{instanceId}/quickConnectCommand": {
    /** Recommended SSH Command for Quick Connect */
    get: operations["v2GetInstanceQuickConnectCommand"];
  };
  "/v1/instances/{instanceId}/upgrade": {
    /** Upgrade iOS version */
    post: operations["v1UpgradeInstance"];
  };
  "/v1/instances/{instanceId}/snapshots": {
    /** Get Instance Snapshots */
    get: operations["v1GetInstanceSnapshots"];
    /** Create Instance Snapshot */
    post: operations["v1CreateSnapshot"];
  };
  "/v1/instances/{instanceId}/snapshots/{snapshotId}": {
    /** Get Instance Snapshot */
    get: operations["v1GetInstanceSnapshot"];
    /** Delete an Instance Snapshot */
    delete: operations["v1DeleteInstanceSnapshot"];
    /** Rename an Instance Snapshot */
    patch: operations["v1RenameInstanceSnapshot"];
  };
  "/v1/instances/{instanceId}/snapshots/{snapshotId}/restore": {
    /** Restore an Instance Snapshot */
    post: operations["v1RestoreInstanceSnapshot"];
  };
  "/v1/license/features": {
    /** Get all supported features for user */
    get: operations["v1GetSupportedFeatures"];
  };
  "/v1/models": {
    /** Get Supported Models */
    get: operations["v1GetModels"];
  };
  "/v1/models/{model}/software": {
    /** Get Software for Model */
    get: operations["v1GetModelSoftware"];
  };
  "/v1/projects": {
    /** Get Projects */
    get: operations["v1GetProjects"];
    /** Create a Project */
    post: operations["v1CreateProject"];
  };
  "/v1/projects/{projectId}": {
    /** Get a Project */
    get: operations["v1GetProject"];
    /** Delete a Project */
    delete: operations["v1DeleteProject"];
    /** Update a Project */
    patch: operations["v1UpdateProject"];
  };
  "/v1/projects/{projectId}/instances": {
    /** Get Instances in Project */
    get: operations["v1GetProjectInstances"];
  };
  "/v1/projects/{projectId}/settings": {
    /** Change Project Settings */
    patch: operations["v1UpdateProjectSettings"];
  };
  "/v1/projects/{projectId}/vpnconfig/{format}": {
    /**
     * Get Project VPN Configuration
     * @description A Project VPN allows connection _into_ virtual devices in the project (e.g., connecting a researcher's computer as a VPN client to a virtual device within the project). If a Project VPN has been defined, this will return the configuration.
     */
    get: operations["v1GetProjectVpnConfig"];
  };
  "/v1/projects/{projectId}/keys": {
    /** Get Project Authorized Keys */
    get: operations["v1GetProjectKeys"];
    /** Add Project Authorized Key */
    post: operations["v1AddProjectKey"];
  };
  "/v1/projects/{projectId}/keys/{keyId}": {
    /** Delete Project Authorized Key */
    delete: operations["v1RemoveProjectKey"];
  };
  "/v1/roles": {
    /**
     * Get all roles
     * @description This endpoint is available for Enterprise accounts only
     */
    get: operations["v1Roles"];
  };
  "/v1/roles/projects/{projectId}/users/{userId}/roles/{roleId}": {
    /**
     * Add user role to project
     * @description This endpoint is available for Enterprise accounts only
     */
    put: operations["v1AddUserRoleToProject"];
    /**
     * Remove user role from project
     * @description This endpoint is available for Enterprise accounts only
     */
    delete: operations["v1RemoveUserRoleFromProject"];
  };
  "/v1/roles/projects/{projectId}/teams/{teamId}/roles/{roleId}": {
    /**
     * Add team role to project
     * @description This endpoint is available for Enterprise accounts only
     */
    put: operations["v1AddTeamRoleToProject"];
    /**
     * Remove team role from project
     * @description This endpoint is available for Enterprise accounts only
     */
    delete: operations["v1RemoveTeamRoleFromProject"];
  };
  "/v1/snapshots/{snapshotId}/share": {
    /**
     * Share snapshot
     * @description Share a snapshot
     */
    post: operations["v1ShareSnapshot"];
  };
  "/v1/snapshots/accept": {
    /**
     * Accept a snapshot shared with you
     * @description Accept a snapshot shared with you
     */
    post: operations["v1AcceptSharedSnapshot"];
  };
  "/v1/snapshots/{snapshotId}/permissions": {
    /**
     * Set member list
     * @description Sets the list of members who have access to the snapshot
     */
    post: operations["v1SetSnapshotPermissions"];
    /**
     * Delete member(s)
     * @description Deletes one or more members from the list of members who have access to the snapshot
     */
    delete: operations["v1DeleteSnapshotPermissions"];
  };
  "/v1/snapshots/shared": {
    /**
     * Fetch shared snapshots
     * @description Fetch snapshots shared with and shared by the requesting user
     */
    get: operations["v1GetSharedSnapshots"];
  };
  "/v1/snapshots/{snapshotId}": {
    /** Get Snapshot */
    get: operations["v1GetSnapshot"];
    /** Delete a Snapshot */
    delete: operations["v1DeleteSnapshot"];
    /** Rename a Snapshot */
    patch: operations["v1SnapshotRename"];
  };
  "/v1/teams": {
    /**
     * Get teams
     * @description This endpoint is available for Enterprise accounts only
     */
    get: operations["v1Teams"];
    /**
     * Create team
     * @description This endpoint is available for Enterprise accounts only
     */
    post: operations["v1TeamCreate"];
  };
  "/v1/teams/{teamId}": {
    /**
     * Delete team
     * @description This endpoint is available for Enterprise accounts only
     */
    delete: operations["v1TeamDelete"];
    /**
     * Update team
     * @description This endpoint is available for Enterprise accounts only
     */
    patch: operations["v1TeamChange"];
  };
  "/v1/teams/{teamId}/users/{userId}": {
    /**
     * Add user to team
     * @description This endpoint is available for Enterprise accounts only
     */
    put: operations["v1AddUserToTeam"];
    /**
     * Remove user from team
     * @description This endpoint is available for Enterprise accounts only
     */
    delete: operations["v1RemoveUserFromTeam"];
  };
  "/v1/users": {
    /** Create User */
    post: operations["v1CreateUser"];
  };
  "/v1/users/agree": {
    /** Consent to the current terms and conditions */
    post: operations["v1UserAgreeTerms"];
  };
  "/v1/users/{userId}": {
    /** Delete User */
    delete: operations["v1DeleteUser"];
    /** Update User */
    patch: operations["v1UpdateUser"];
  };
  "/v1/users/login": {
    /** Log In */
    post: operations["v1UsersLogin"];
  };
  "/v1/users/change-password": {
    /**
     * Change User Password
     * @description Authenticated solely by the old-password.
     */
    post: {
      requestBody: {
        content: {
          "application/json": components["schemas"]["PasswordChangeBody"];
        };
      };
      responses: {
        /** @description Accepted */
        204: {
          content: never;
        };
        /** @description Forbidden */
        403: {
          content: {
            "application/json": components["schemas"]["ApiError"];
          };
        };
      };
    };
  };
  "/v1/users/reset-password": {
    /** Reset User Password */
    post: operations["v1ResetUserPassword"];
  };
  "/v1/users/send-reset-link": {
    /** Send Password Reset Link */
    post: operations["v1SendUserResetLink"];
  };
  "/v1/users/reset-link-info": {
    /** Send Password Reset Link Info */
    get: operations["v1GetResetLinkInfo"];
  };
  "/v1/webplayer": {
    /** List all Webplayer sessions */
    get: operations["v1WebPlayerListSessions"];
    /** Create a new Webplayer Session */
    post: operations["v1WebPlayerCreateSession"];
  };
  "/v1/webplayer/{sessionId}": {
    /** Retrieve Webplayer Session Information */
    get: operations["v1WebPlayerSessionInfo"];
    /** Tear down a Webplayer Session */
    delete: operations["v1WebPlayerDestroySession"];
  };
  "/v1/webplayer/allowedDomains": {
    /** Retrieve the list of allowed domains for all Webplayer sessions */
    get: operations["v1WebPlayerAllowedDomains"];
  };
  "/v1/network/connections": {
    /**
     * List available network connections
     * @description You must have the domain administrator or project administrator role to list network connections.
     */
    get: operations["v1ListNetworkConnections"];
    /**
     * Create a new Network Connection
     * @description You must have the domain administrator role to create a network connection.
     */
    post: operations["v1CreateNetworkConnection"];
  };
  "/v1/network/connections/{id}": {
    /**
     * Update Network Connection
     * @description You must have the domain administrator role to update a network connection.
     */
    put: operations["v1UpdateNetworkConnection"];
    /**
     * Delete an existing Network Connection
     * @description You must have the domain administrator role to delete a network connection.
     */
    delete: operations["v1DeleteNetworkConnection"];
    /**
     * Update Network Connection (partial)
     * @description Only updates the specified attributes. You must have the domain administrator role to update a network connection.
     */
    patch: operations["v1PartialUpdateNetworkConnection"];
  };
  "/v1/network/providers": {
    /**
     * List available network providers
     * @description Provides a list of registered network providers to be used when [creating network connections](#post-/v1/network/connections). You
     * must have the domain administrator role to list network providers.
     */
    get: operations["v1ListNetworkProviders"];
  };
  "/v1/services/matrix/{instanceId}/instances/{instanceId}/assessments": {
    /** Get assessments by instanceId */
    get: operations["getAssessmentsByInstanceId"];
  };
  "/v1/services/matrix/{instanceId}/assessments": {
    /** Create assessment */
    post: operations["createAssessment"];
  };
  "/v1/services/matrix/{instanceId}/assessments/{assessmentId}": {
    /** Get assessment by ID */
    get: operations["getAssessmentById"];
    /** Delete assessment */
    delete: operations["deleteAssessment"];
  };
  "/v1/services/matrix/{instanceId}/assessments/{assessmentId}/start": {
    /** Update assessment state and begin device monitoring */
    post: operations["startMonitoring"];
  };
  "/v1/services/matrix/{instanceId}/assessments/{assessmentId}/stop": {
    /** Update assessment state and stop device monitoring */
    post: operations["stopMonitoring"];
  };
  "/v1/services/matrix/{instanceId}/assessments/{assessmentId}/test": {
    /** Update assessment state and execute MATRIX tests */
    post: operations["runTests"];
  };
  "/v1/services/matrix/{instanceId}/assessments/{assessmentId}/download": {
    /** Download report */
    get: operations["downloadReport"];
  };
}

interface components {
  schemas: {
    Credentials: {
      /** @description Authentication Username */
      username: string;
      /**
       * Format: password
       * @description Authentication Password
       */
      password: string;
    };
    Token: {
      token: string;
      /**
       * Format: date-time
       * @description Token expiration
       */
      expiration?: string | null;
    };
    ApiToken: {
      apiToken: string;
    };
    /** @description Coupon options */
    coupon_options: {
      /** @enum {string} */
      type: "percent" | "discount" | "absolute";
      /** @description Amount */
      amount: number;
      /** @description Is Used. If true, this coupon has been used and cannot be used again */
      used: boolean;
    };
    /** @description Plan options */
    plan: {
      /** @enum {string} */
      licenseType: "premium" | "individual" | "standard" | "enterprise" | "individual-usage" | "enterprise-usage" | "unrestricted";
      /** @description Number of CPU cores */
      cores: number;
    };
    /** @description Trial options */
    trial: {
      /** @description Duration in days */
      duration: number;
    };
    /** @description Subscriber Invite */
    SubscriberInvite: {
      /** @description Coupon Options */
      coupon_options?: components["schemas"]["coupon_options"];
      /** @description Plan Options */
      plan?: components["schemas"]["plan"];
      /** @description Trial Options */
      trial?: components["schemas"]["trial"];
      /** @description Name */
      name?: string | null;
      /** @description Email */
      email?: string | null;
      /** @description Coupon code */
      coupon_code: string;
      /** @description Domain */
      domain?: string | null;
      /** @description Aggregate */
      aggregate: string;
      /** @description Used By */
      use_by?: string | null;
      /** @description Is Active flag */
      active: boolean;
      /** @description Is reusable flag */
      reusable: boolean;
      /** @description Created Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      createdAt: string;
      /** @description Updated Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      updatedAt: string;
    };
    MeteredSubscriptionUsage: {
      /** @description Unit price */
      burst_rate?: number | null;
      /** @description Allocated hours */
      allocated_hours?: number | null;
      /** @description Plan cost */
      plan_billed_amount?: number | null;
      /** @description Units included in plan */
      plan_billed_units?: number | null;
      /** @description Amount billed */
      burst_billed_amount?: number | null;
      /** @description Units billed */
      burst_billed_units?: number | null;
      /** @description Outstanding amount */
      burst_outstanding_amount?: number | null;
      /** @description Outstanding units */
      burst_outstanding_units?: number | null;
      /** @description Total cost in cents for current period */
      total_usage_amount?: number | null;
      /** @description Total used units for current period */
      total_used_units?: number | null;
    };
    EmptyResponse: Record<string, never>;
    TrialRequestMetadata: {
      name?: string | null;
      /** @description provided company name */
      company?: string | null;
      /** @description option from sign up form, interesting using for malware */
      malware?: boolean | null;
      /** @description option from sign up form, interesting using for research */
      research?: boolean | null;
      /** @description option from sign up form, interesting using for pentesting */
      pentest?: boolean | null;
      /** @description option from sign up form, interesting using for other area added here */
      other?: string | null;
    };
    /** @description The user's address */
    Address: {
      /** @description Address line 1 (e.g., street, PO Box, or company name). */
      address1?: string | null;
      /** @description Address line 2 (e.g., apartment, suite, unit, or building). */
      address2?: string | null;
      /** @description City, district, suburb, town, or village. */
      city?: string | null;
      /** @description Two-letter country code (ISO 3166-1 alpha-2). */
      country?: string | null;
      /** @description ZIP or postal code. */
      postal_code?: string | null;
      /** @description State, county, province, or region. */
      state?: string | null;
    };
    TrialRequestOptions: {
      /** @description The user's address. */
      address?: components["schemas"]["Address"];
      /** @description The user's email address. */
      email?: string | null;
      /** @description The user's full name. */
      name?: string | null;
      /** @description Metadata passed in from the sign up flow */
      metadata?: components["schemas"]["TrialRequestMetadata"];
      /** @description If true, create an enterprise domain. */
      enterprise?: boolean | null;
      /** @description Stripe payment token. */
      token?: string | null;
    };
    GrantTrialRequestResponse: {
      /** @description Trial request code */
      code?: string | null;
    };
    Plan: {
      /** @description Plan ID */
      planId?: string | null;
      /** @description Plan Name */
      name?: string | null;
    };
    Maintenance: {
      /** @description Maintenance message */
      message?: string | null;
      /** @description Maintenance header */
      header?: string | null;
    };
    Trial: {
      /** @description Maintenance message */
      defaultDuration?: number | null;
      /** @description Maintenance header */
      defaultHours?: number | null;
      /** @description Maintenance header */
      defaultDevices?: number | null;
      /** @description Maintenance header */
      defaultCores?: number | null;
    };
    Logging: {
      /** @description Denotes whether it's in development */
      development?: boolean | null;
      /** @description Denotes whether to throw warnings */
      throwWarnings?: boolean | null;
    };
    AuthProvider: {
      /** @description Provider name for a given provider type */
      name?: string | null;
      /** @description The identifier for the provider */
      identifier?: string | null;
      /** @description Provider type */
      providerType?: string | null;
      /** @description Denotes whether it's the default */
      default?: boolean | null;
      /** @description Provider label */
      label?: string | null;
      /** @description Denotes whether they're enabled or not */
      enabled?: boolean | null;
      /** @description URL for provider auth */
      authorizationUrl?: string | null;
      /** @description The identifier for the provider */
      id?: string | null;
      /** @description Auth provider */
      provider?: string | null;
    };
    ConfigResponse: {
      /** @description Denotes whether it's an on-site install */
      onSite?: boolean | null;
      /** @description Denotes whether to show domain settings */
      showDomainSettings?: boolean | null;
      /** @description Denotes the version */
      version?: string | null;
      /** @description Denotes whether the build is invalid */
      invalidBuild?: boolean | null;
      /** @description Denotes whether sepSim is enabled */
      sepSim?: boolean | null;
      /** @description Denotes whether installer is available */
      installerAvailable?: boolean | null;
      /** @description API publishable key to use for Invoiced */
      invoicedPublishableKey?: string | null;
      /** @description Stripe public key */
      stripePublicKey?: string | null;
      /** @description Intercom app ID, also known as workspace ID */
      intercomId?: string | null;
      /** @description Webhook URL for aux */
      auxWebhook?: string | null;
      /** @description Google Tag Manager */
      gtmId?: string | null;
      /** @description Webhook URL to send feedback into Productboard automatically */
      zapierFeedbackWebhook?: string | null;
      /** @description Webhook URL to send frontend errors to Jira automatically */
      zapierBugsWebhook?: string | null;
      /** @description Default backend billing api name for new subscriptions (e.g. "stripe") */
      billingBackend?: string | null;
      /** @description Denotes whether the server is undergoing maintenance */
      maintenance?: boolean | components["schemas"]["Maintenance"] | null;
      /** @description Info for logging */
      logging?: components["schemas"]["Logging"];
      /** @description URL for cloud admin login */
      cloudAdmin?: string | null;
      /** @description URL for files admin login */
      filesAdmin?: string | null;
      /** @description Cloud domain name (usually corellium.com or staging.corellium.com) */
      cloudDomain?: string | null;
      /** @description Billing domain name */
      billingDomain?: string | null;
      /** @description App domain name (usually app.corellium.com or app.staging.corellium.com) */
      appDomain?: string | null;
      /** @description Maximum network monitor file size */
      maxNetworkMonitorFileSize?: string | null;
      /** @description Denotes whether users can upload firmware images */
      enableFirmwareImageUpload?: boolean | null;
      /** @description Auth providers */
      authProviders?: components["schemas"]["AuthProvider"][] | null;
      /** @description Maximum number of snapshots to allow */
      snapshotLimit?: number | null;
      /** @description The maximum size, in bytes, (default: 100 MB) that an uploaded kernel should be */
      maxKernelSize?: number | null;
      /** @description The maximum size, in bytes, (default: 500 MB) that an uploaded ramdisk should be */
      maxRamdiskSize?: number | null;
      /** @description Denotes whether charmSDK is enabled */
      charmSDK?: string | null;
      /** @description Info about trial */
      trial?: components["schemas"]["Trial"];
      /** @description Sentry URL */
      sentryUrl?: string | null;
      /** @description If enabled, adds the default providers in their current configuration */
      domainAuthenticationProviders?: boolean | null;
      /** @description The configured Default SSID from /etc/corellium/setup.json */
      defaultSsid?: string | null;
    };
    DomainOptions: {
      /** @description if true, totp is required */
      totpRequired?: boolean | null;
      trialExtension?: components["schemas"]["TrialExtension"];
      /** @description Snapshot permissions settings */
      snapshotSharingPermissions?: components["schemas"]["SnapshotSharingPermissions"];
    };
    TrialExtension: {
      /** @description how many additional days? */
      duration?: number | null;
      /** @description why does the user want more time? */
      reason?: string | null;
      denied?: boolean | null;
      /** @description explanation for why the request was denied */
      deniedReason?: string | null;
    };
    SnapshotSharingPermissions: {
      /** @description Indicates if snapshot permissions are enabled by the cloud admin */
      cloudEnabled?: boolean | null;
      /** @description Indicates if snapshot permissions are enabled by the domain admin */
      domainEnabled?: boolean | null;
      /** @description Indicates if public link access is enabled */
      publicLink?: boolean | null;
      /** @description Indicates if domain-restricted link access is enabled */
      domainRestrictedLink?: boolean | null;
      /** @description Indicates if password-protected public link access is enabled */
      passwordPublicLink?: boolean | null;
      /** @description Indicates if email invite access is enabled */
      emailInvite?: boolean | null;
    };
    OpenIDConfig: {
      /** @description Service Discovery URL */
      discoveryUrl?: string | null;
      /** @description Service Client ID */
      clientId?: string | null;
      /** @description Service Client Secret */
      clientSecret?: string | null;
      /** @description Only accept individuals with invitations */
      invitedOnly?: boolean | null;
    };
    DomainAuthProviderRequest: {
      /** @description Provider Type */
      providerType: string;
      /** @description Enabled/Disabled */
      enabled: boolean;
      /** @description Login Button Text */
      label?: string | null;
      /** @description Optional configuration */
      config?: components["schemas"]["OpenIDConfig"];
    };
    DomainAuthProviderResponse: {
      /** @description Provider ID */
      identifier: string;
      /** @description Provider ID for backward compatibility with frontend */
      id?: string | null;
      /** @description Provider Type */
      providerType: string;
      /** @description Provider Type for backward compatibility with frontend */
      provider?: string | null;
      /** @description Login Button Text */
      label: string;
      /** @description Title Text for the Frontend's Provider Configuration Form */
      name?: string | null;
      /** @description Coordinator endpoint for Authorizing with this provider */
      authorizationUrl?: string | null;
      /** @description True: Configured in coordinator.json, False: Custom Domain Provider */
      default: boolean;
      /** @description Enabled/Disabled */
      enabled: boolean;
      /** @description Optional configuration */
      config?: components["schemas"]["OpenIDConfig"];
      /** @description Optional User ID of creator */
      createdBy?: string | null;
      /** @description Created Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      createdAt: string;
      /** @description Updated Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      updatedAt: string;
    };
    Extension: {
      /** @description Identifier */
      identifier?: string | null;
      /** @description If true, instances requiring this extension can be created or started */
      enabled?: boolean | null;
      /** @description Created Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      createdAt?: string | null;
      /** @description Updated Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      updatedAt?: string | null;
      /**
       * Format: uuid
       * @description Image Id
       */
      imageId?: string | null;
      /** @description State */
      state?: string | null;
      /** @description Array of Flavor definitions */
      flavors?: Record<string, never>[] | null;
    };
    UpdateExtension: {
      /** @description If true, instances requiring this extension can be created or started */
      enabled?: boolean | null;
    };
    V1LoadExtensionParameters: {
      /**
       * Format: uuid
       * @description The uuid of the image to load
       */
      imageId: string;
    };
    Hook: {
      /**
       * Format: uuid
       * @description Identifier
       */
      identifier?: string | null;
      /** @description Label */
      label?: string | null;
      /** @description Address */
      address?: string | null;
      /** @description Patch */
      patch?: string | null;
      /**
       * @description Patch Type
       * @enum {string|null}
       */
      patchType?: "csmfcc" | "csmfvm" | null;
      /** @description If true, instances can call required hooks */
      enabled?: boolean | null;
      /** @description Created Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      createdAt?: string | null;
      /** @description Updated Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      updatedAt?: string | null;
      /**
       * Format: uuid
       * @description Instance Id
       */
      instanceId?: string | null;
    };
    V1CreateHookParameters: {
      /** @description Label */
      label: string;
      /** @description Address */
      address: string;
      /** @description Patch */
      patch: string;
      /**
       * @description Patch Type
       * @enum {string}
       */
      patchType: "csmfcc" | "csmfvm";
    };
    Image: {
      status: string;
      /**
       * Format: uuid
       * @description Image ID
       */
      id?: string | null;
      name?: string | null;
      /**
       * @description Type of image
       * @enum {string|null}
       */
      type?: "fwbinary" | "kernel" | "devicetree" | "ramdisk" | "loaderfile" | "sepfw" | "seprom" | "bootrom" | "llb" | "iboot" | "ibootdata" | "fwpackage" | "partition" | "backup" | null;
      filename?: string | null;
      uniqueid?: string | null;
      size?: number | null;
      /**
       * Format: uuid
       * @description project ID
       */
      project?: string | null;
      /**
       * Format: date-time
       * @description When Image was created
       */
      created_at?: string | null;
      /**
       * Format: date-time
       * @description When Image was last updated
       */
      updated_at?: string | null;
    };
    ImageCreationOptions: {
      /** @description Image type */
      type: string;
      /**
       * @description How the file is stored
       * @enum {string}
       */
      encoding: "plain";
      /** @description set to false if the uploaded file is not encapsulated inside an outer zipfile */
      encapsulated?: boolean | null;
      /** @description Image name */
      name?: string | null;
      /**
       * Format: uuid
       * @description Project ID
       */
      project?: string | null;
      /**
       * Format: uuid
       * @description Instance ID
       */
      instance?: string | null;
      /**
       * Format: binary
       * @description Optionally the actual file
       */
      file?: string | null;
    };
    UserError: {
      /** @description Error text */
      error: string;
      /**
       * @description Error ID
       * @enum {string}
       */
      errorID: "UserError";
      /** @description Field associated with error */
      field?: string | null;
    };
    ValidationError: {
      /** @description Error text */
      error: string;
      /**
       * @description Error ID
       * @enum {string}
       */
      errorID: "ValidationError";
      /** @description Field associated with error */
      field?: string | null;
    };
    ApiInternalConsistencyError: {
      /** @description Error text */
      error: string;
      /** @description Error ID */
      errorID: string;
      /** @description Upstream error description */
      originalError?: string | null;
    };
    ApiError: {
      /** @description Error text */
      error: string;
      /** @description Error ID */
      errorID: string;
      /** @description Upstream error description */
      originalError?: string | null;
    };
    ApiConflictError: {
      /** @description Error text */
      error: string;
      /**
       * @description Error ID
       * @enum {string}
       */
      errorID: "Conflict";
      /** @description Object that is conflicted with */
      object?: Record<string, unknown> | null;
    };
    ApiNotFoundError: {
      /** @description Error text */
      error: string;
      /** @description Error ID */
      errorID: string;
      /** @description Name of the object requested */
      name?: string | null;
      /** @description params provided by user */
      params?: Record<string, unknown> | null;
    };
    /**
     * Format: binary
     * @description A File
     */
    File: string;
    PasswordChangeBody: {
      /**
       * Format: uuid
       * @description userId
       */
      user: string;
      /** @description old password */
      "old-password": string;
      /** @description new password */
      "new-password": string;
    };
    /**
     * @description ### Instance Boot Option
     * * kalloc: Enable kalloc/kfree trace access via GDB (Enterprise only)
     * * gpu: Enable cloud GPU acceleration (Extra costs incurred, cloud only)
     * * no-keyboard: Enable keyboard passthrough from web interface
     * * nodevmode: Disable developer mode on iOS16 and greater
     * * sep-cons-ext: Patch SEPOS to print debug messages to console
     * * iboot-jailbreak: Patch iBoot to disable signature checks
     * * llb-jailbreak: Patch LLB to disable signature checks
     * * rom-jailbreak: Patch BootROM to disable signature checks
     * @enum {string}
     */
    InstanceBootOptionsAdditionalTag: "kalloc" | "gpu" | "no-keyboard" | "nodevmode" | "sep-cons-ext" | "iboot-jailbreak" | "llb-jailbreak" | "rom-jailbreak";
    InstanceBootOptions: {
      bootArgs?: string | null;
      restoreBootArgs?: string | null;
      /**
       * Format: uuid
       * @description Boot udid
       */
      udid?: string | null;
      /**
       * Format: hex
       * @description Assigned ECID
       */
      ecid?: string | null;
      /** @description Random seed to provide to boot if any */
      randomSeed?: string | null;
      /** @description Enable PAC */
      pac?: boolean | null;
      /** @description Enable APRR */
      aprr?: boolean | null;
      additionalTags?: components["schemas"]["InstanceBootOptionsAdditionalTag"][] | null;
    };
    /**
     * @description Current Instance State
     * @enum {string}
     */
    InstanceState: "on" | "off" | "booting" | "deleting" | "creating" | "restoring" | "paused" | "rebooting" | "error";
    VpnDefinition: {
      proxy?: Record<string, never>[] | null;
      listeners?: Record<string, never>[] | null;
    };
    InstanceServices: {
      vpn?: components["schemas"]["VpnDefinition"];
    };
    InstanceAgentState: ({
      hash?: string | null;
      info?: string | null;
    }) | null;
    InstanceNetmonState: {
      hash?: string | null;
      info?: string | null;
      enabled?: boolean | null;
    };
    InstanceNetdumpState: {
      hash?: string | null;
      info?: string | null;
      enabled?: boolean | null;
    };
    Instance: {
      /**
       * Format: uuid
       * @description Instance Identifier
       */
      id?: string | null;
      /** @description Instance Name */
      name?: string | null;
      /**
       * Format: hex
       * @description Key used to encrypt the Instance
       */
      key?: string | null;
      /** @description The type of virtual machine this is */
      flavor?: string | null;
      type?: string | null;
      /**
       * Format: uuid
       * @description The projectId of the project this instance belongs to
       */
      project?: string | null;
      /** @description Current state of the instance */
      state?: components["schemas"]["InstanceState"];
      /**
       * Format: date-time
       * @description Time the state of the instance last changed
       */
      stateChanged?: string | null;
      /**
       * Format: date-time, NULL if currently SHUTOFF
       * @description Time the instance was started
       */
      startedAt?: string | null;
      /** @description Currently executing User Task */
      userTask?: string | null;
      /** @description Current task state if any */
      taskState?: string | null;
      /** @description Current error state if any */
      error?: string | null;
      /** @description Instance boot options */
      bootOptions?: components["schemas"]["InstanceBootOptions"];
      /**
       * Format: ipv4
       * @description Services IP Address
       */
      serviceIp?: string | null;
      /**
       * Format: ipv4
       * @description LAN IP Address
       */
      wifiIp?: string | null;
      /**
       * Format: ipv4
       * @description Secondary Inteface LAN IP Address (if supported)
       */
      secondaryIp?: string | null;
      services?: components["schemas"]["InstanceServices"];
      panicked?: boolean | null;
      /**
       * Format: date-time
       * @description Time instance was created
       */
      created?: string | null;
      /** @description Model of virtual machine device */
      model?: string | null;
      /**
       * Format: url
       * @description URL that package used to create this instance is available at
       */
      fwpackage?: string | null;
      os?: string | null;
      agent?: components["schemas"]["InstanceAgentState"];
      netmon?: components["schemas"]["InstanceNetmonState"];
      netdump?: components["schemas"]["InstanceNetdumpState"];
      exposePort?: string | null;
      fault?: boolean | null;
      patches?: string[] | null;
      createdBy?: components["schemas"]["createdBy"];
    };
    createdBy: {
      /**
       * Format: uuid
       * @description User Identifier
       */
      id?: string | null;
      /** @description Username */
      username?: string | null;
      /** @description User Label */
      label?: string | null;
      /** @description Indicates if user was deleted */
      deleted?: boolean | null;
    };
    VolumeOptions: {
      /** @description GB */
      allocate?: number | null;
      partitions?: Record<string, never>[] | null;
      computeNode?: string | null;
    };
    InstanceCreateOptions: {
      /** @description identifier of the snapshot that was shared. */
      sharedSnapshot?: string | null;
      /** @description optional password if the shared snapshot requires a password. */
      sharedSnapshotPassword?: string | null;
      /** @description the name of the device */
      name?: string | null;
      /**
       * Format: hex
       * @description Key used to encrypt the Instance
       */
      key?: string | null;
      /** @description the flavor id */
      flavor: string;
      /** @description project UUID */
      project: string;
      /** @description OS Version */
      os: string;
      /** @description OS Build */
      osbuild?: string | null;
      /** @description list of patches to apply */
      patches?: string[] | null;
      /** @description URL or image id */
      fwpackage?: string | null;
      /**
       * Format: url
       * @description URL that firmware package used to create this instance is available at
       */
      origFwPackageUrl?: string | null;
      encrypt?: boolean | null;
      overrideWifiMAC?: string | null;
      volume?: components["schemas"]["VolumeOptions"];
      /**
       * Format: uuid
       * @description Snapshot ID for this instance to be cloned from if defined
       */
      snapshot?: string | null;
      /** @description Instance boot options */
      bootOptions?: components["schemas"]["InstanceBootOptions"];
      device?: components["schemas"]["Model"];
    };
    InstanceReturn: {
      /**
       * Format: uuid
       * @description Instance ID
       */
      id: string;
      /** @description Instance state (creating) */
      state: components["schemas"]["InstanceState"];
    };
    PatchInstanceOptions: {
      /** @description the name of the device */
      name?: string | null;
      /**
       * @description the desired state of the device
       * @enum {string|null}
       */
      state?: "on" | "off" | "paused" | "deleting" | null;
      /** @description the desired Boot Options */
      bootOptions?: components["schemas"]["InstanceBootOptions"];
      proxy?: Record<string, unknown> | null;
    };
    /** @description Represents a Proxy configuration object. */
    ProxyConfig: {
      /** @description The device port to use for proxying. */
      devicePort?: number | null;
      /** @description If `true`, the first available port will be used if `devicePort` is not available. */
      firstAvailable?: boolean | null;
      /** @description If `true`, the proxy will be exposed to the external interface. */
      expose?: boolean | null;
      /** @description The router port to use for proxying. */
      routerPort?: number | null;
    };
    AgentError: {
      /** @description The error encountered by the agent */
      error: string;
      /**
       * @description AgentError
       * @enum {string}
       */
      errorID: "AgentError";
      /** @description The full error encountered by the agent */
      originalError?: Record<string, unknown> | null;
    };
    AgentAppReadyResponse: {
      ready: boolean;
    };
    AgentInstallBody: {
      /** @description path to app to install */
      path?: string | null;
    };
    AgentApp: {
      tags?: string[] | null;
      running?: boolean | null;
      diskUsage?: number | null;
      Date?: number | null;
      applicationType?: string | null;
      name?: string | null;
      bundleID?: string | null;
    };
    AgentAppsList: {
      apps?: components["schemas"]["AgentApp"][] | null;
      /** @description bundleID of frontmost app or empty string if none are frontmost */
      frontmost?: string | null;
    };
    AgentAppStatus: {
      running?: boolean | null;
      bundleID?: string | null;
    };
    AgentAppsStatusList: {
      apps?: components["schemas"]["AgentAppStatus"][] | null;
      /** @description bundleID of frontmost app or empty string if none are frontmost */
      frontmost?: string | null;
    };
    AgentIcons: {
      /**
       * Format: byte
       * @description The data for an icon
       */
      icon?: string | null;
    };
    FileChanges: {
      /** @description Optional New path */
      path?: string | null;
      /** @description Optional New Mode */
      mode?: number | null;
      /** @description Optional New Owner UID */
      uid?: number | null;
      /** @description Optional New Group GID */
      gid?: number | null;
    };
    AgentProfilesReturn: {
      profiles: string[];
    };
    AgentSystemSetHostnameBody: {
      hostname: string;
    };
    AgentValueReturn: {
      /** @description The requested value */
      value?: string | null;
    };
    AgentSystemGetPropBody: {
      property: string;
    };
    AgentSystemAdbAuth: {
      enabled?: boolean | null;
    };
    InstanceConsoleEndpoint: {
      /**
       * Format: url
       * @description Console Websocket URL
       */
      url?: string | null;
    };
    InstanceStartOptions: {
      /** @description Start device paused */
      paused?: boolean | null;
      /** @description Start device with Process Network Monitoring enabled */
      sockcap?: boolean | null;
    };
    InstanceStopOptions: {
      /** @description Request VM OS power down */
      soft?: boolean | null;
    };
    V1SetStateBody: {
      state: components["schemas"]["InstanceState"];
    };
    /**
     * @description Bit value
     * @enum {number}
     */
    Bit: 0 | 1;
    GpioStateDefinition: {
      /** @description count of bits in members of this bank */
      bitCount: number;
      /** @description bits for each bank of this name as an array of arrays */
      banks: components["schemas"]["Bit"][][];
    };
    /** @description Current state of GPIOs */
    GpiosState: {
      led?: components["schemas"]["GpioStateDefinition"];
      button?: components["schemas"]["GpioStateDefinition"];
      switch?: components["schemas"]["GpioStateDefinition"];
    };
    PeripheralsData: {
      acceleration?: number[] | null;
      gyroscope?: number[] | null;
      magnetic?: number[] | null;
      orientation?: number[] | null;
      temperature?: number | null;
      proximity?: number | null;
      light?: number | null;
      pressure?: number | null;
      humidity?: number | null;
    };
    RestoreBackupData: Record<string, never>;
    /**
     * Format: binary
     * @description Screenshot Data
     */
    Screenshot: string;
    RotateBody: {
      /**
       * @description Desired orientation
       * @enum {number}
       */
      orientation: 1 | 2 | 3 | 4;
    };
    /**
     * @description Button definition
     * @enum {string}
     */
    Button: "finger" | "homeButton" | "holdButton" | "volumeUp" | "volumeDown" | "ringerSwitch" | "backButton" | "overviewButton";
    TouchInput: {
      /** @description array of per-finger [x,y] touch positions, up to 10 depending on model */
      position?: components["schemas"]["FingerPositions"];
    };
    TouchCurveInput: {
      /** @description array of per-finger [x,y] start touch positions, up to 10 depending on model */
      start?: components["schemas"]["FingerPositions"];
      /** @description array of per-finger [x,y] end touch positions, up to 10 depending on model */
      end?: components["schemas"]["FingerPositions"];
    };
    TextInput: {
      /** @description text to type */
      text?: string | null;
    };
    InstanceInput: Record<string, never> & (components["schemas"]["TouchInput"] | components["schemas"]["TouchCurveInput"] | components["schemas"]["TextInput"]);
    InputResponse: {
      /** @description Expected time to complete */
      eta?: number | null;
    };
    MediaPlayBody: {
      /**
       * Format: uuid
       * @description Image ID
       */
      imageId?: string | null;
      /**
       * Format: string
       * @description URL to a media file
       */
      url?: string | null;
    };
    KernelThread: {
      /**
       * Format: uint64_t
       * @description Kernel Thread ID
       */
      kernelId?: string | null;
      /** @description Task ID */
      tid?: number | null;
      /** @description Array of stack addresses */
      stack?: string[] | null;
    };
    KernelTask: {
      /**
       * Format: uint64_t
       * @description Kernel Task ID
       */
      kernelId?: string | null;
      /** @description Thread name */
      name?: string | null;
      /** @description Process ID of task */
      pid?: number | null;
      threads?: components["schemas"]["KernelThread"][] | null;
    };
    Kcrange: {
      /** @description Kernel Extension */
      kext?: string | null;
      /** @description Range */
      range?: string[] | null;
    };
    BtraceEnableOptions: {
      ranges?: string[][] | null;
    };
    NetdumpFilter: {
      portRanges?: string[] | null;
      srcPorts?: string[] | null;
      dstPorts?: string[] | null;
      ports?: string[] | null;
      protocols?: string[] | null;
      processes?: string[] | null;
    };
    InstanceUpgradeBody: {
      /** @description iOS version */
      os: string;
      /** @description (optional) iOS build ID */
      osbuild?: string | null;
    };
    Invitation: {
      /**
       * Format: uuid
       * @description Invite ID
       */
      identifier?: string | null;
      /** @description Invited email */
      email?: string | null;
      settings?: Record<string, unknown> | null;
    };
    InviteRevokeParams: {
      /** @description id or array of ids to revoke */
      ids?: string | string[] | null;
    };
    Model: {
      type: string;
      name: string;
      flavor: string;
      description?: string | null;
      model: string;
      boardConfig?: string | null;
      platform?: string | null;
      cpid?: number | null;
      bdid?: number | null;
      peripherals?: boolean | null;
    };
    Firmware: {
      version?: string | null;
      buildid?: string | null;
      /** @description Android only flavor */
      AndroidFlavor?: string | null;
      /** @description Android only API version */
      APIVersion?: string | null;
      sha256sum?: string | null;
      sha1sum?: string | null;
      md5sum?: string | null;
      size?: number | null;
      uniqueId?: string | null;
      /** @description Firmware metadata */
      metadata?: Record<string, unknown> | null;
      /**
       * Format: date-time
       * @description Release Date
       */
      releasedate?: string | null;
      /**
       * Format: date-time
       * @description Date uploaded
       */
      uploaddate?: string | null;
      /**
       * Format: url
       * @description URL firmware is available at
       */
      url?: string | null;
      /**
       * Format: url
       * @description URL firmware is available at from vendor
       */
      orig_url?: string | null;
      filename?: string | null;
    };
    ModelSoftware: {
      name?: string | null;
      boardConfig?: string | null;
      platform?: string | null;
      cpid?: number | null;
      bdid?: number | null;
      firmwares?: components["schemas"]["Firmware"][] | null;
    };
    ProjectSettings: {
      "internet-access": boolean;
      /** @description UUIDv4 network connection identifier or null for no vpn connection */
      connection?: string | null;
      dhcp: boolean;
    };
    ProjectQuota: {
      cores?: number | null;
      instances?: number | null;
      ram?: number | null;
    };
    ProjectUsage: {
      cores?: number | null;
      instances?: number | null;
      ram?: number | null;
      gpu?: number | null;
    };
    Project: {
      /**
       * Format: uuid
       * @description Project Identifier
       */
      id: string;
      /** @description Project Name */
      name?: string | null;
      settings?: components["schemas"]["ProjectSettings"];
      quotas?: components["schemas"]["ProjectQuota"];
      quotasUsed?: components["schemas"]["ProjectUsage"];
    };
    ProjectKey: {
      /**
       * Format: uuid
       * @description keyId
       */
      identifier?: string | null;
      /**
       * @description kind of key
       * @enum {string}
       */
      kind: "ssh" | "adb";
      /**
       * Format: uuid
       * @description projectId
       */
      project?: string | null;
      /** @description The public key */
      key: string;
      /** @description Key fingerprint */
      fingerprint?: string | null;
      /**
       * Format: date-time
       * @description Time of last update
       */
      updatedAt?: string | null;
      /**
       * Format: date-time
       * @description Time of creation
       */
      createdAt?: string | null;
    };
    Role: {
      /** @enum {string} */
      role: "admin" | "_member_";
      /**
       * Format: uuid
       * @description Project ID
       */
      project: string;
      /**
       * Format: uuid
       * @description User ID
       */
      user: string;
    };
    SnapshotOwner: {
      /** @description The name of the owner. */
      name: string;
      /** @description The email of the member. */
      email: string;
    };
    SnapshotMember: {
      /** @description The email of the member */
      email: string;
      /** @description The date when the invite was sent */
      inviteSentAt: number;
      /** @description UNIX Date of when the snapshot was first shared with member */
      sharedOn: number;
      /** @description The member's user ID */
      userId?: string | null;
      /** @description The user's label or name */
      label?: string | null;
    };
    SnapshotSharing: {
      /** @enum {string} */
      sharingType: "publicLink" | "domainRestrictedLink" | "passwordPublicLink" | "emailInvite";
      /** @description Password with using passwordPublicLink */
      password?: string | null;
      /** @description The owner of the snapshot */
      sharedBy?: components["schemas"]["SnapshotOwner"];
      /** @description The members who have access to the snapshot */
      members?: Record<string, unknown> | null;
    };
    SnapshotStatus: {
      /** @description The current task being performed on the snapshot */
      task?: string | null;
      /** @description Indicates if the snapshot has been successfully created */
      created?: boolean | null;
    };
    SharedSnapshotsInfo: {
      /** @description UUID of the snapshot */
      id: string;
      /** @description Snapshot name */
      name: string;
      /** @description Device model */
      model: string;
      /** @description UNIX Date of when the snapshot was first shared with member */
      sharedOn: number;
      /** @description The member who the snapshot was shared with. Only present in sharedWithUser */
      sharedWithMember?: string | null;
      /** @description The owner of the snapshot */
      sharedBy?: components["schemas"]["SnapshotOwner"];
    };
    UserSnapshots: {
      /** @description Snapshots shared with the logged-in user */
      sharedWithUser: components["schemas"]["SharedSnapshotsInfo"];
      /** @description Snapshots shared by the logged-in user */
      sharedByUser: components["schemas"]["SharedSnapshotsInfo"];
    };
    Snapshot: {
      /**
       * Format: uuid
       * @description Snapshot ID
       */
      id: string;
      /** @description Snapshot name */
      name: string;
      /**
       * Format: uuid
       * @description Instance that this snapshot is of
       */
      instance: string;
      status: components["schemas"]["SnapshotStatus"];
      /** @description UNIX Date that the snapshot was created */
      date: number;
      fresh: boolean;
      /** @description Live snapshot (included state and memory) */
      live: boolean;
      local: boolean;
      /** @description The device model */
      model?: string | null;
      /** @description The sharing information of the snapshot */
      sharing?: components["schemas"]["SnapshotSharing"];
    };
    PostShareSnapshotRequestPayload: {
      /** @enum {string} */
      sharingType: "publicLink" | "domainRestrictedLink" | "passwordPublicLink" | "emailInvite.";
      /** @description Password for passwordPublicLink. */
      password?: string | null;
    };
    SnapshotPermissionsRequestPayload: {
      /** @description The email addresses or user ids of the members. */
      members: Record<string, never>;
    };
    SnapshotCreationOptions: {
      /** @description Snapshot name */
      name: string;
    };
    Team: {
      /**
       * Format: uuid
       * @description Team ID
       */
      id: string;
      /** @description Team Label */
      label: string;
      /** @description Users */
      users?: components["schemas"]["User"][] | null;
    };
    /** @description /** */
    User: {
      /**
       * Format: uuid
       * @description User ID
       */
      id: string;
      /** @description User Label */
      label: string;
      /** @description User Name */
      name: string;
      /** @description User Email */
      email: string;
      /** @description the flag that specifies whether user is Administrator or not */
      administrator?: boolean | null;
      /** @description Flag to determine if user attributes are editable. */
      canEditUserAttributes?: boolean | null;
    };
    CreateTeam: {
      /** @description Team name */
      name: string;
    };
    TeamCreate: {
      /**
       * Format: uuid
       * @description ID of newly created team
       */
      id?: string | null;
    };
    AgreedAck: {
      /**
       * Format: date-time
       * @description Date agreed
       */
      agreedToTerms?: string | null;
    };
    PasswordResetBody: {
      /** @description Password reset token */
      token: string;
      /** @description Password reset totpToken */
      totpToken: string;
      /** @description new password */
      "new-password": string;
    };
    ResetLinkBody: {
      /** @description Email address to request password reset link for */
      email: string;
    };
    /** @description Touch point defined as x,y */
    TouchPoint: Record<string, never>;
    /**
     * Format: up to 10
     * @description Finger Positions
     */
    FingerPositions: Record<string, never>;
    Features: {
      apps?: boolean | null;
      connect?: boolean | null;
      console?: boolean | null;
      coretrace?: boolean | null;
      deviceControl?: boolean | null;
      deviceDelete?: boolean | null;
      files?: boolean | null;
      frida?: boolean | null;
      images?: boolean | null;
      messaging?: boolean | null;
      netmon?: boolean | null;
      network?: boolean | null;
      portForwarding?: boolean | null;
      powerManagement?: boolean | null;
      profile?: boolean | null;
      sensors?: boolean | null;
      settings?: boolean | null;
      snapshots?: boolean | null;
      strace?: boolean | null;
      system?: boolean | null;
    };
    WebPlayerCreateSessionRequest: {
      /** @description Project Identifier */
      projectId: string;
      /** @description VM Instance Identifier */
      instanceId: string;
      /** @description Number of seconds token remains valid */
      expiresIn: number;
      /** @description The enabled UI features for this session */
      features: components["schemas"]["Features"];
      /** @description Optional string value supplied by client for tracking purposes */
      clientId?: string | null;
    };
    WebPlayerSession: {
      /** @description New Session Identifier */
      identifier: string;
      /** @description Session Token */
      token: string;
      /** @description Expiration in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      expiration: number;
    };
    /** @description Network Connection Offset Pagination Result */
    NetworkConnectionOffsetPaginationResult: {
      /** @description Total number of items. */
      total: number;
      /** @description The number of items returned in this result. */
      count: number;
      /** @description The maximum number of items that could be returned for this result. */
      limit: number;
      /** @description That starting item 0-indexed. */
      offset: number;
      /** @description Array of network connections associated with this domain. */
      results: components["schemas"]["NetworkConnection"][];
    };
    NetworkConnection: {
      /** @description UUIDv4 */
      identifier: string;
      /** @description User specified name for this network connection. e.g. My Network Connection */
      name: string;
      /** @description An object containing network connection configuration data. Will vary based on network provider type. */
      config?: Record<string, unknown> | null;
      /** @description One of the registered [network provider types](#get-/v1/network/providers) */
      provider?: string | null;
      /** @description Created Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      createdAt: string;
      /** @description Updated Date in ISO-8601 format e.g. 2022-05-06T02:39:23.000Z */
      updatedAt: string;
      /** @description UUIDv4 of the user who created this record. */
      createdBy: string;
      /** @description UUIDv4 of the user who last updated this record. */
      updatedBy: string;
    };
    CreateNetworkConnectionOptions: {
      /** @description UUIDv4 */
      identifier: string;
      /** @description User specified name for this network connection. e.g. My Network Connection */
      name: string;
      /** @description One of the registered [network provider types](#get-/v1/network/providers) */
      provider: string;
      /** @description An object containing network connection configuration data. Will vary based on network provider type. See examples. */
      config?: Record<string, unknown> | null;
    };
    /** @description Network Connection Provider Offset Pagination Result */
    NetworkConnectionProviderOffsetPaginationResult: {
      /** @description Total number of items. */
      total: number;
      /** @description The number of items returned in this result. */
      count: number;
      /** @description The maximum number of items that could be returned for this result. */
      limit: number;
      /** @description That starting item 0-indexed. */
      offset: number;
      /** @description Array of network connection providers. */
      results: components["schemas"]["NetworkConnectionProvider"][];
    };
    NetworkConnectionProvider: {
      /** @description Human friendly name for Network Connection Provider. */
      name: string;
      /** @description Internal identifier for Network Connection Provider. */
      type: string;
    };
    Assessment: {
      /** Format: date-time */
      createdAt?: string;
      /** Format: date-time */
      updatedAt?: string;
      /** Format: uuid */
      createdBy?: string;
      /** Format: uuid */
      reportId?: string;
      bundle?: {
        /** Format: uuid */
        id?: string;
        /** @example Camera */
        name?: string;
        /** @example 1.2.0 */
        version?: string;
      };
      results?: {
        pass?: number;
        fail?: number;
        info?: number;
        error?: number;
      };
      metadata?: {
        /** @example 6.4.0 */
        corelliumVersion?: string;
      };
    } & components["schemas"]["CreateAssessmentDto"] & components["schemas"]["AssessmentIdStatus"];
    AssessmentIdStatus: {
      /** Format: uuid */
      id?: string;
    } & components["schemas"]["UpdateAssessmentDto"];
    CreateAssessmentDto: {
      /** Format: uuid */
      instanceId: string;
      /** @example com.android.egg */
      bundleId: string;
      /** Format: uuid */
      wordlistId?: string;
    };
    UpdateAssessmentDto: {
      /** @example testing */
      status: string;
    };
    TestAssessmentDto: {
      invert?: boolean;
      /** @example masvs-storage-2-android-8 */
      grep?: string;
    };
  };
  responses: {
    /** @description Successful operation */
    AssessmentResponse: {
      content: {
        "application/json": components["schemas"]["Assessment"];
      };
    };
    /** @description Successful operation */
    AssessmentIdStatusResponse: {
      content: {
        "application/json": components["schemas"]["AssessmentIdStatus"];
      };
    };
    /** @description Successful operation */
    "204SuccessNoContent": {
      content: never;
    };
    /** @description Assessment not found */
    "404NotFound": {
      content: never;
    };
    /** @description Internal Server Error */
    "500InternalServerError": {
      content: {
        "application/json": {
          error?: string;
        };
      };
    };
  };
  parameters: {
    /** @description ID of assessment */
    assessmentId: string;
    /** @description ID of instance */
    instanceId: string;
    /** @description Assessment report download format */
    format: string;
  };
  requestBodies: never;
  headers: never;
  pathItems: never;
}

interface operations {

  /** Log In */
  v1AuthLogin: {
    /** @description Authorization data ( Credentials|ApiToken ) */
    requestBody: {
      content: {
        "application/json": Record<string, never>;
      };
    };
    responses: {
      /** @description User Authorization */
      200: {
        content: {
          "application/json": components["schemas"]["Token"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get all configs */
  v1GetConfig: {
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["ConfigResponse"];
        };
      };
    };
  };
  /** Update an auth provider for a domain */
  v1UpdateDomainAuthProvider: {
    parameters: {
      path: {
        /** @description Domain ID - uuid */
        domainId: string;
        /** @description Provider ID - uuid */
        providerId: string;
      };
    };
    /** @description Request Data */
    requestBody: {
      content: {
        "application/json": components["schemas"]["DomainAuthProviderRequest"];
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": components["schemas"]["DomainAuthProviderResponse"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Delete an auth provider from a domain */
  v1DeleteDomainAuthProvider: {
    parameters: {
      path: {
        /** @description Domain ID - uuid */
        domainId: string;
        /** @description Provider ID - uuid */
        providerId: string;
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Return all configured auth providers for a domain (including globally configured providers) */
  v1GetDomainAuthProviders: {
    parameters: {
      path: {
        /** @description Domain ID - uuid */
        domainId: string;
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Create a new auth provider for a domain */
  v1CreateDomainAuthProvider: {
    parameters: {
      path: {
        /** @description Domain ID - uuid */
        domainId: string;
      };
    };
    /** @description Request Data */
    requestBody: {
      content: {
        "application/json": components["schemas"]["DomainAuthProviderRequest"];
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": components["schemas"]["DomainAuthProviderResponse"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get all hypervisor hooks for Instance */
  v1GetHooks: {
    parameters: {
      query?: {
        /** @description limit for pagination results, defaults to 20 */
        limit?: number;
        /** @description offset for pagination results, defaults to 0 */
        offset?: number;
        /** @description sort ASC or DESC, defaults to DESC */
        sort?: "ASC" | "DESC";
      };
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Hooks */
      200: {
        content: {
          "application/json": components["schemas"]["Hook"][];
        };
      };
      /** @description No changes */
      304: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Create hypervisor hook for Instance */
  v1CreateHook: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description application/json */
    requestBody: {
      content: {
        "application/json": components["schemas"]["V1CreateHookParameters"];
      };
    };
    responses: {
      /** @description Hook */
      201: {
        content: {
          "application/json": components["schemas"]["Hook"];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get hypervisor hook by id */
  v1GetHookById: {
    parameters: {
      path: {
        /** @description Hook Id */
        hookId: string;
      };
    };
    responses: {
      /** @description Hook */
      200: {
        content: {
          "application/json": components["schemas"]["Hook"];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Update an existing hypervisor hook */
  v1UpdateHook: {
    parameters: {
      path: {
        /** @description Hook ID */
        hookId: string;
      };
    };
    /** @description application/json */
    requestBody: {
      content: {
        "application/json": components["schemas"]["V1CreateHookParameters"];
      };
    };
    responses: {
      /** @description Hook */
      200: {
        content: {
          "application/json": components["schemas"]["Hook"];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Delete an existing hypervisor hook */
  v1DeleteHook: {
    parameters: {
      path: {
        /** @description Hook ID */
        hookId: string;
      };
    };
    responses: {
      /** @description Accepted */
      200: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get all Images Metadata */
  v1GetImages: {
    parameters: {
      query?: {
        /** @description Optionally filter by project - uuid */
        project?: string;
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Image"][];
        };
      };
    };
  };
  /** Create a new Image */
  v1CreateImage: {
    /** @description Image data */
    requestBody: {
      content: {
        "multipart/form-data": components["schemas"]["ImageCreationOptions"];
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Image"];
        };
      };
      /** @description application/json */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /** Get Image Metadata */
  v1GetImage: {
    parameters: {
      path: {
        /** @description Image ID - uuid */
        imageId: string;
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Image"];
        };
      };
      /** @description application/json */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /**
   * Upload Image Data
   * @description If the active project has enough remaining quota, updates an Image with the contents of the request body.
   */
  v1UploadImageData: {
    parameters: {
      path: {
        /** @description Image ID - uuid */
        imageId: string;
      };
    };
    /** @description Uploaded Image */
    requestBody: {
      content: {
        "binary": string;
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Image"];
        };
      };
      /** @description application/json */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
      /** @description Conflict */
      409: {
        content: {
          "application/json": components["schemas"]["ApiConflictError"];
        };
      };
    };
  };
  /** Delete Image */
  v1DeleteImage: {
    parameters: {
      path: {
        /** @description Image ID - uuid */
        imageId: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /**
   * API Status
   * @description Check if  API is ready for queries
   */
  v1Ready: {
    responses: {
      /** @description API is ready for queries */
      204: {
        content: never;
      };
      /** @description API is not ready */
      503: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Instances */
  v1GetInstances: {
    parameters: {
      query?: {
        /** @description Optionally filter by instance name */
        name?: string;
        /** @description Attributes to include in instance return */
        returnAttr?: string[];
      };
    };
    responses: {
      /** @description Success */
      200: {
        content: {
          "application/json": components["schemas"]["Instance"][];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Create Instance */
  v1CreateInstance: {
    /** @description The vm definition to create */
    requestBody: {
      content: {
        "application/json": components["schemas"]["InstanceCreateOptions"];
      };
    };
    responses: {
      /** @description Accepted */
      200: {
        content: {
          "application/json": components["schemas"]["InstanceReturn"];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Instance */
  v1GetInstance: {
    parameters: {
      query?: {
        /** @description Attributes to include in instance return */
        returnAttr?: string[];
      };
      path: {
        /** @description Instance ID */
        instanceId: string;
      };
    };
    responses: {
      /** @description Success */
      200: {
        content: {
          "application/json": components["schemas"]["Instance"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /** Remove Instance */
  v1DeleteInstance: {
    parameters: {
      path: {
        /** @description Instance ID */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /** Update Instance */
  v1PatchInstance: {
    parameters: {
      path: {
        /** @description Instance ID */
        instanceId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["PatchInstanceOptions"];
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Instance"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /** Check if App subsystem is ready */
  v1AgentAppReady: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description App Agent State */
      200: {
        content: {
          "application/json": components["schemas"]["AgentAppReadyResponse"];
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /**
   * Install App at path
   * @description Installs the app located at path which must be present on the VM filesystem
   */
  v1AgentInstallApp: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description App parameters */
    requestBody: {
      content: {
        "application/json": components["schemas"]["AgentInstallBody"];
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** List Apps */
  v1AgentListApps: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Installed Apps Info */
      200: {
        content: {
          "application/json": components["schemas"]["AgentAppsList"];
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** List Apps Status */
  v1AgentListAppsStatus: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Installed Apps Status Info */
      200: {
        content: {
          "application/json": components["schemas"]["AgentAppsList"];
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** List App Icons */
  v1AgentListAppIcons: {
    parameters: {
      query: {
        /** @description App Bundle ID */
        bundleID: string[];
      };
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Installed Apps Icons */
      200: {
        content: {
          "application/json": components["schemas"]["AgentIcons"][];
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Run an App */
  v1AgentRunApp: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description App Bundle ID */
        bundleId: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Kill an App */
  v1AgentKillApp: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description App Bundle ID */
        bundleId: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Uninstall an App */
  v1AgentUninstallApp: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description App Bundle ID */
        bundleId: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Download a File from VM */
  v1AgentGetFile: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description File Path on VM */
        filePath: string;
      };
    };
    responses: {
      /** @description File Contents */
      200: {
        content: {
          "application/octet-stream": components["schemas"]["File"];
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Upload a file to VM */
  v1AgentUploadFile: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description File Path on VM to write to */
        filePath: string;
      };
    };
    /** @description Uploaded File Contents */
    requestBody: {
      content: {
        "application/octet-stream": components["schemas"]["File"];
      };
    };
    responses: {
      /** @description No content */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Delete a File on VM */
  v1AgentDeleteFile: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description File Path on VM */
        filePath: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Change Attrs of a File on VM */
  v1AgentSetFileAttributes: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description File Path on VM */
        filePath: string;
      };
    };
    /** @description New attrs */
    requestBody: {
      content: {
        "application/json": components["schemas"]["FileChanges"];
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
    };
  };
  /**
   * Get the path for a new temp file
   * @description Returns a temporary random filename that is guranteed to be unique on the VMs
   * filesystem at the time of invocation of this method.
   */
  v1AgentGetTempFilename: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description The temp file path */
      200: {
        content: {
          "application/json": string;
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** List Profiles */
  v1AgentListProfiles: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Installed Profiles */
      200: {
        content: {
          "application/json": components["schemas"]["AgentProfilesReturn"];
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Install a Profile to VM */
  v1AgentInstallProfile: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description Profile to Install */
    requestBody: {
      content: {
        "application/octet-stream": components["schemas"]["File"];
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Uninstall a Profile from VM */
  v1AgentUninstallProfile: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description Instance ID - uuid */
        profileId: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Set Hostname of instance */
  v1AgentSystemSetHostname: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description New hostname */
    requestBody: {
      content: {
        "application/json": components["schemas"]["AgentSystemSetHostnameBody"];
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Instruct VM to halt */
  v1AgentSystemShutdown: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Get IP of eth0 (AOSP only) */
  v1AgentSystemGetNetwork: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description IP Address of eth0 */
      200: {
        content: {
          "application/json": components["schemas"]["AgentValueReturn"];
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Get System Property (AOSP only) */
  v1AgentSystemGetProp: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description Parameters */
    requestBody: {
      content: {
        "application/json": components["schemas"]["AgentSystemGetPropBody"];
      };
    };
    responses: {
      /** @description Value of requested property */
      200: {
        content: {
          "application/json": components["schemas"]["AgentValueReturn"];
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Install OpenGApps (AOSP only) */
  v1AgentSystemInstallOpenGApps: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description Installation parameters */
    requestBody: {
      content: {
        "application/json": Record<string, never>;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Get ADB Auth Setting (AOSP only) */
  v1AgentSystemGetAdbAuth: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Current ADB Auth setting */
      200: {
        content: {
          "application/json": components["schemas"]["AgentSystemAdbAuth"];
        };
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Set ADB Auth Setting (AOSP only) */
  v1AgentSystemSetAdbAuth: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description Desired ADB Auth Setting */
    requestBody: {
      content: {
        "application/json": components["schemas"]["AgentSystemAdbAuth"];
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Lock Device (iOS Only) */
  v1AgentSystemLock: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Unlock Device (iOS Only) */
  v1AgentSystemUnlock: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Agent Error */
      400: {
        content: {
          "application/json": components["schemas"]["AgentError"];
        };
      };
    };
  };
  /** Get console websocket URL */
  v1GetInstanceConsole: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": components["schemas"]["InstanceConsoleEndpoint"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /** Start an Instance */
  v1StartInstance: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description Start options */
    requestBody?: {
      content: {
        "application/json": components["schemas"]["InstanceStartOptions"];
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Conflict */
      409: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Stop an Instance */
  v1StopInstance: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description Stop options */
    requestBody?: {
      content: {
        "application/json": components["schemas"]["InstanceStopOptions"];
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Conflict */
      409: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Reboot an Instance */
  v1RebootInstance: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Pause an Instance */
  v1PauseInstance: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Unpause an Instance */
  v1UnpauseInstance: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Set state of Instance */
  v1SetInstanceState: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description Desired State */
    requestBody: {
      content: {
        "application/json": components["schemas"]["V1SetStateBody"];
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Conflict */
      409: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Get state of Instance */
  v2GetInstanceState: {
    parameters: {
      query?: {
        /** @description The attributes to return. */
        returnAttr?: Record<string, never>;
      };
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Current Instance State */
      200: {
        content: {
          "application/json": components["schemas"]["InstanceState"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Get Instance GPIOs */
  v1GetInstanceGpios: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Current GPIO State */
      200: {
        content: {
          "application/json": components["schemas"]["GpiosState"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Set Instance GPIOs */
  v1SetInstanceGpios: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description New GPIO state */
    requestBody: {
      content: {
        "application/json": components["schemas"]["GpiosState"];
      };
    };
    responses: {
      /** @description Current GPIOs State */
      200: {
        content: {
          "application/json": components["schemas"]["GpiosState"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Get Instance Peripherals */
  v1GetInstancePeripherals: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Current Peripherals State */
      200: {
        content: {
          "application/json": components["schemas"]["PeripheralsData"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Set Instance Peripherals */
  v1SetInstancePeripherals: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description New peripherals state */
    requestBody: {
      content: {
        "application/json": components["schemas"]["PeripheralsData"];
      };
    };
    responses: {
      /** @description Current Peripherals State */
      200: {
        content: {
          "application/json": components["schemas"]["PeripheralsData"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Restore backup */
  v1RestoreBackup: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description Restore backup data */
    requestBody?: {
      content: {
        "application/json": components["schemas"]["RestoreBackupData"];
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Instance Screenshot */
  v1GetInstanceScreenshot: {
    parameters: {
      query?: {
        /** @description Screenshot scale 1:N */
        scale?: number;
      };
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description New peripherals state */
        format: "png" | "jpeg";
      };
    };
    responses: {
      /** @description Screenshot */
      200: {
        content: {
          "image/png": components["schemas"]["Screenshot"];
          "image/jpeg": components["schemas"]["Screenshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /**
   * Rotate device to specified orientation
   * @description Rotate device to orientation.  Accepted orientations:
   * 1. Portrait
   * 2. Portrait vertically inverted (up-side-down)
   * 3. Landscape with top of the device to the left
   * 4. Landscape with top of the device to the right
   */
  v1RotateInstance: {
    parameters: {
      path: {
        instanceId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["RotateBody"];
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /**
   * Provide Instance Input
   * @description Sends a touch or button event to the VM.
   *
   * - Buttons (or keys) to be held during the input are specified as an array of strings, each string must be either a single ascii character or one of the following keywords:
   *   - VM Buttons: finger, homeButton, holdButton, volumeUp, volumeDown, ringerSwitch, backButton, overviewButton
   *   - Keyboard Buttons: again, alt, alterase, apostrophe, back, backslash, backspace, bassboost, bookmarks, bsp, calc, camera, cancel, caps, capslock, chat, close, closecd, comma, compose, computer, config, connect, copy, ctrl, cut, cyclewindows, dashboard, del, delete, deletefile, dot, down, edit, eject, ejectclose, email, end, enter, equal, esc, escape, exit, f1, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f2, f20, f21, f22, f23, f24, f3, f4, f5, f6, f7, f8, f9, fastfwd, file, finance, find, forward, front, grave, hangeul, hanja, help, henkan, home, homepage, hp, hrgn, ins, insert, iso, k102, kp0, kp1, kp2, kp3, kp4, kp5, kp6, kp7, kp8, kp9, kpasterisk, kpcomma, kpdot, kpenter, kpequal, kpjpcomma, kpleftparen, kpminus, kpplus, kpplusminus, kprightparen, kpslash, ktkn, ktknhrgn, left, leftalt, leftbrace, leftctrl, leftmeta, leftshift, linefeed, macro, mail, menu, meta, minus, move, msdos, muhenkan, mute, new, next, numlock, open, pagedown, pageup, paste, pause, pausecd, pgdn, pgup, phone, play, playcd, playpause, power, previous, print, prog1, prog2, prog3, prog4, props, question, record, redo, refresh, return, rewind, right, rightalt, rightbrace, rightctrl, rightmeta, rightshift, ro, rotate, scale, screenlock, scrolldown, scrolllock, scrollup, search, semicolon, sendfile, setup, shift, shop, slash, sleep, sound, space, sport, stop, stopcd, suspend, sysrq, tab, undo, up, voldown, volup, wakeup, www, xfer, yen, zkhk
   */
  v1PostInstanceInput: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description The input to send to the VM */
    requestBody: {
      content: {
        "application/json": components["schemas"]["InstanceInput"][];
      };
    };
    responses: {
      /** @description ETA of input completion in milliseconds */
      200: {
        content: {
          "application/json": components["schemas"]["InputResponse"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Get Console Log */
  v1GetInstanceConsoleLog: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Current console log */
      200: {
        content: {
          "text/plain": string;
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Panics */
  v1GetInstancePanics: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Array of panics */
      200: {
        content: {
          "application/json": Record<string, never>[];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Clear Panics */
  v1ClearInstancePanics: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Start playing media */
  v1MediaPlay: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    /** @description Request Body */
    requestBody: {
      content: {
        "application/json": components["schemas"]["MediaPlayBody"];
      };
    };
    responses: {
      /** @description Success response */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["ValidationError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Conflict */
      409: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Stop playing media */
  v1MediaStop: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Success response */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["ValidationError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Clear CoreTrace logs */
  v1ClearCoreTrace: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Start CoreTrace on an instance */
  v1StartCoreTrace: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Stop CoreTrace on an instance. */
  v1StopCoreTrace: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Running Threads (CoreTrace) */
  v1ListThreads: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Threads */
      200: {
        content: {
          "application/json": components["schemas"]["KernelTask"][];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Pre-authorize an btrace download */
  v1BtracePreauthorize: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Token */
      200: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Kernel extension ranges */
  v1Kcrange: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Kcranges */
      200: {
        content: {
          "application/json": components["schemas"]["Kcrange"][];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Clear HyperTrace logs */
  v1ClearHyperTrace: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Start HyperTrace on an instance */
  v1StartHyperTrace: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["BtraceEnableOptions"];
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Stop HyperTrace on an instance. */
  v1StopHyperTrace: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Execute Hooks on an instance */
  v1ExecuteHyperTraceHooks: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Clear Hooks on an instance */
  v1ClearHyperTraceHooks: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Start Network Monitor on an instance. */
  v1StartNetworkMonitor: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Stop Network Monitor on an instance. */
  v1StopNetworkMonitor: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Start Enhanced Network Monitor on an instance. */
  v1StartNetdump: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    requestBody?: {
      content: {
        "application/json": components["schemas"]["NetdumpFilter"];
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Stop Enhanced Network Monitor on an instance. */
  v1StopNetdump: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Enable an exposed port on an instance for device access. */
  v1EnableExposePort: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Disable an exposed port on an instance for device access. */
  v1DisableExposePort: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description No Content */
      204: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Recommended SSH Command for Quick Connect */
  v2GetInstanceQuickConnectCommand: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description Quick Connect Command */
      200: {
        content: {
          "application/json": string;
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Upgrade iOS version */
  v1UpgradeInstance: {
    parameters: {
      path: {
        instanceId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["InstanceUpgradeBody"];
      };
    };
    responses: {
      /** @description Accepted */
      202: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Instance Snapshots */
  v1GetInstanceSnapshots: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"][];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Create Instance Snapshot */
  v1CreateSnapshot: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["SnapshotCreationOptions"];
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Get Instance Snapshot */
  v1GetInstanceSnapshot: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Delete an Instance Snapshot */
  v1DeleteInstanceSnapshot: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Rename an Instance Snapshot */
  v1RenameInstanceSnapshot: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["SnapshotCreationOptions"];
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Restore an Instance Snapshot */
  v1RestoreInstanceSnapshot: {
    parameters: {
      path: {
        /** @description Instance ID - uuid */
        instanceId: string;
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Get all supported features for user */
  v1GetSupportedFeatures: {
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": string[];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Supported Models */
  v1GetModels: {
    responses: {
      /** @description Supported device configurations */
      200: {
        content: {
          "application/json": components["schemas"]["Model"][];
        };
      };
    };
  };
  /** Get Software for Model */
  v1GetModelSoftware: {
    parameters: {
      path: {
        /** @description Model to list available software for */
        model: string;
      };
    };
    responses: {
      /** @description Supported software loads for this model */
      200: {
        content: {
          "application/json": components["schemas"]["Firmware"][];
        };
      };
    };
  };
  /** Get Projects */
  v1GetProjects: {
    parameters: {
      query?: {
        /** @description Filter by project name */
        name?: string;
        /** @description Only include id of project in results */
        ids_only?: boolean;
      };
    };
    responses: {
      /** @description Projects */
      200: {
        content: {
          "application/json": components["schemas"]["Project"][];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description No Projects Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Create a Project */
  v1CreateProject: {
    /** @description Project */
    requestBody: {
      content: {
        "application/json": components["schemas"]["Project"];
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": components["schemas"]["Project"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get a Project */
  v1GetProject: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": components["schemas"]["Project"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Delete a Project */
  v1DeleteProject: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
      };
    };
    responses: {
      /** @description OK */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Update a Project */
  v1UpdateProject: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
      };
    };
    /** @description Updated Project Settings */
    requestBody: {
      content: {
        "application/json": components["schemas"]["Project"];
      };
    };
    responses: {
      /** @description OK */
      200: {
        content: {
          "application/json": components["schemas"]["Project"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Instances in Project */
  v1GetProjectInstances: {
    parameters: {
      query?: {
        /** @description Filter by project name */
        name?: string;
        /** @description Attributes to include in instance return */
        returnAttr?: string[];
      };
      path: {
        /** @description Project ID - uuid */
        projectId: string;
      };
    };
    responses: {
      /** @description Success */
      200: {
        content: {
          "application/json": components["schemas"]["Instance"][];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Change Project Settings */
  v1UpdateProjectSettings: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
      };
    };
    /** @description New settings */
    requestBody: {
      content: {
        "application/json": components["schemas"]["ProjectSettings"];
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Validation Error */
      400: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Get Project VPN Configuration
   * @description A Project VPN allows connection _into_ virtual devices in the project (e.g., connecting a researcher's computer as a VPN client to a virtual device within the project). If a Project VPN has been defined, this will return the configuration.
   */
  v1GetProjectVpnConfig: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
        /** @description VPN Config format */
        format: "ovpn";
      };
    };
    responses: {
      /** @description OpenVPN Configuration */
      200: {
        content: {
          "application/x-openvpn-profile": string;
        };
      };
      /** @description User Error */
      400: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get Project Authorized Keys */
  v1GetProjectKeys: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
      };
    };
    responses: {
      /** @description Authorized Keys */
      200: {
        content: {
          "application/json": components["schemas"]["ProjectKey"][];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Add Project Authorized Key */
  v1AddProjectKey: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
      };
    };
    /** @description Key to add */
    requestBody: {
      content: {
        "application/json": components["schemas"]["ProjectKey"];
      };
    };
    responses: {
      /** @description Authorized Key */
      200: {
        content: {
          "application/json": components["schemas"]["ProjectKey"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Delete Project Authorized Key */
  v1RemoveProjectKey: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
        /** @description Key ID - uuid */
        keyId: string;
      };
    };
    responses: {
      /** @description Deleted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /**
   * Get all roles
   * @description This endpoint is available for Enterprise accounts only
   */
  v1Roles: {
    responses: {
      /** @description Roles */
      200: {
        content: {
          "application/json": components["schemas"]["Role"][];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Add user role to project
   * @description This endpoint is available for Enterprise accounts only
   */
  v1AddUserRoleToProject: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
        /** @description User ID - uuid */
        userId: string;
        /** @description Role ID - uuid */
        roleId: string;
      };
    };
    responses: {
      /** @description Success */
      200: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Remove user role from project
   * @description This endpoint is available for Enterprise accounts only
   */
  v1RemoveUserRoleFromProject: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
        /** @description User ID - uuid */
        userId: string;
        /** @description Role ID - uuid */
        roleId: string;
      };
    };
    responses: {
      /** @description Success */
      200: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Add team role to project
   * @description This endpoint is available for Enterprise accounts only
   */
  v1AddTeamRoleToProject: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
        /** @description Team ID - uuid */
        teamId: string;
        /** @description Role ID - uuid */
        roleId: string;
      };
    };
    responses: {
      /** @description Success */
      200: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Remove team role from project
   * @description This endpoint is available for Enterprise accounts only
   */
  v1RemoveTeamRoleFromProject: {
    parameters: {
      path: {
        /** @description Project ID - uuid */
        projectId: string;
        /** @description Team ID - uuid */
        teamId: string;
        /** @description Role ID - uuid */
        roleId: string;
      };
    };
    responses: {
      /** @description Success */
      200: {
        content: never;
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Share snapshot
   * @description Share a snapshot
   */
  v1ShareSnapshot: {
    parameters: {
      path: {
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["PostShareSnapshotRequestPayload"];
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /**
   * Accept a snapshot shared with you
   * @description Accept a snapshot shared with you
   */
  v1AcceptSharedSnapshot: {
    requestBody: {
      content: {
        "application/json": components["schemas"]["PostShareSnapshotRequestPayload"];
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /**
   * Set member list
   * @description Sets the list of members who have access to the snapshot
   */
  v1SetSnapshotPermissions: {
    parameters: {
      path: {
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["SnapshotPermissionsRequestPayload"];
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /**
   * Delete member(s)
   * @description Deletes one or more members from the list of members who have access to the snapshot
   */
  v1DeleteSnapshotPermissions: {
    parameters: {
      path: {
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["SnapshotPermissionsRequestPayload"];
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /**
   * Fetch shared snapshots
   * @description Fetch snapshots shared with and shared by the requesting user
   */
  v1GetSharedSnapshots: {
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["UserSnapshots"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Get Snapshot */
  v1GetSnapshot: {
    parameters: {
      path: {
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Delete a Snapshot */
  v1DeleteSnapshot: {
    parameters: {
      path: {
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Rename a Snapshot */
  v1SnapshotRename: {
    parameters: {
      path: {
        /** @description Snapshot ID - uuid */
        snapshotId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["SnapshotCreationOptions"];
      };
    };
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["Snapshot"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /**
   * Get teams
   * @description This endpoint is available for Enterprise accounts only
   */
  v1Teams: {
    responses: {
      /** @description Teams */
      200: {
        content: {
          "application/json": components["schemas"]["Team"][];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Create team
   * @description This endpoint is available for Enterprise accounts only
   */
  v1TeamCreate: {
    requestBody: {
      content: {
        "application/json": components["schemas"]["CreateTeam"];
      };
    };
    responses: {
      /** @description User */
      200: {
        content: {
          "application/json": components["schemas"]["TeamCreate"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Delete team
   * @description This endpoint is available for Enterprise accounts only
   */
  v1TeamDelete: {
    parameters: {
      path: {
        /** @description Team ID - uuid */
        teamId: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Internal Server Error */
      500: {
        content: {
          "application/json": components["schemas"]["ApiInternalConsistencyError"];
        };
      };
    };
  };
  /**
   * Update team
   * @description This endpoint is available for Enterprise accounts only
   */
  v1TeamChange: {
    parameters: {
      path: {
        /** @description Team ID - uuid */
        teamId: string;
      };
    };
    requestBody: {
      content: {
        "application/json": components["schemas"]["CreateTeam"];
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["ApiNotFoundError"];
        };
      };
    };
  };
  /**
   * Add user to team
   * @description This endpoint is available for Enterprise accounts only
   */
  v1AddUserToTeam: {
    parameters: {
      path: {
        /** @description Team ID - uuid */
        teamId: string;
        /** @description User ID - uuid */
        userId: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Internal Server Error */
      500: {
        content: {
          "application/json": components["schemas"]["ApiInternalConsistencyError"];
        };
      };
    };
  };
  /**
   * Remove user from team
   * @description This endpoint is available for Enterprise accounts only
   */
  v1RemoveUserFromTeam: {
    parameters: {
      path: {
        /** @description Team ID - uuid */
        teamId: string;
        /** @description User ID - uuid */
        userId: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Internal Server Error */
      500: {
        content: {
          "application/json": components["schemas"]["ApiInternalConsistencyError"];
        };
      };
    };
  };
  /** Create User */
  v1CreateUser: {
    /** @description User data */
    requestBody: {
      content: {
        "application/json": Record<string, never>;
      };
    };
    responses: {
      /** @description User */
      200: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Consent to the current terms and conditions */
  v1UserAgreeTerms: {
    responses: {
      /** @description application/json */
      200: {
        content: {
          "application/json": components["schemas"]["AgreedAck"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Delete User */
  v1DeleteUser: {
    parameters: {
      path: {
        /** @description userId - uuid */
        userId: string;
      };
    };
    responses: {
      /** @description User */
      200: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Update User */
  v1UpdateUser: {
    parameters: {
      path: {
        /** @description userId - uuid */
        userId: string;
      };
    };
    /** @description User data */
    requestBody: {
      content: {
        "application/json": Record<string, never>;
      };
    };
    responses: {
      /** @description User */
      200: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Log In */
  v1UsersLogin: {
    /** @description Authorization data */
    requestBody: {
      content: {
        "application/json": components["schemas"]["Credentials"];
      };
    };
    responses: {
      /** @description User Authorization */
      200: {
        content: {
          "application/json": components["schemas"]["Token"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Reset User Password */
  v1ResetUserPassword: {
    /** @description application/json */
    requestBody: {
      content: {
        "application/json": components["schemas"]["PasswordResetBody"];
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Send Password Reset Link */
  v1SendUserResetLink: {
    /** @description application/json */
    requestBody: {
      content: {
        "application/json": components["schemas"]["ResetLinkBody"];
      };
    };
    responses: {
      /** @description Accepted */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Send Password Reset Link Info */
  v1GetResetLinkInfo: {
    parameters: {
      query: {
        /** @description Reset token */
        token: string;
      };
    };
    responses: {
      /** @description Reset Link Info */
      200: {
        content: {
          "application/json": Record<string, never>;
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** List all Webplayer sessions */
  v1WebPlayerListSessions: {
    responses: {
      /** @description Success */
      200: {
        content: {
          "application/json": components["schemas"]["WebPlayerSession"][];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Create a new Webplayer Session */
  v1WebPlayerCreateSession: {
    /** @description Request Data */
    requestBody: {
      content: {
        "application/json": components["schemas"]["WebPlayerCreateSessionRequest"];
      };
    };
    responses: {
      /** @description Success */
      200: {
        content: {
          "application/json": components["schemas"]["WebPlayerSession"];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Retrieve Webplayer Session Information */
  v1WebPlayerSessionInfo: {
    parameters: {
      path: {
        /** @description Webplayer Session identifier */
        sessionId: string;
      };
    };
    responses: {
      /** @description Success */
      200: {
        content: {
          "application/json": components["schemas"]["WebPlayerSession"];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
      /** @description Not Found */
      404: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
    };
  };
  /** Tear down a Webplayer Session */
  v1WebPlayerDestroySession: {
    parameters: {
      path: {
        /** @description Webplayer Session identifier */
        sessionId: string;
      };
    };
    responses: {
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Retrieve the list of allowed domains for all Webplayer sessions */
  v1WebPlayerAllowedDomains: {
    responses: {
      /** @description Success */
      200: {
        content: {
          "application/json": components["schemas"]["WebPlayerSession"];
        };
      };
      /** @description Bad Request */
      400: {
        content: {
          "application/json": components["schemas"]["UserError"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * List available network connections
   * @description You must have the domain administrator or project administrator role to list network connections.
   */
  v1ListNetworkConnections: {
    responses: {
      /** @description Success */
      200: {
        content: {
          "application/json": components["schemas"]["NetworkConnectionOffsetPaginationResult"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Create a new Network Connection
   * @description You must have the domain administrator role to create a network connection.
   */
  v1CreateNetworkConnection: {
    /** @description Network Connection Options */
    requestBody: {
      content: {
        "application/json": components["schemas"]["CreateNetworkConnectionOptions"];
      };
    };
    responses: {
    };
  };
  /**
   * Update Network Connection
   * @description You must have the domain administrator role to update a network connection.
   */
  v1UpdateNetworkConnection: {
    parameters: {
      path: {
        /** @description Network Connection Identifier - uuid */
        id: string;
      };
    };
    /** @description Network Connection Options */
    requestBody: {
      content: {
        "application/json": components["schemas"]["UpdateNetworkConnectionOptions"];
      };
    };
    responses: {
    };
  };
  /**
   * Delete an existing Network Connection
   * @description You must have the domain administrator role to delete a network connection.
   */
  v1DeleteNetworkConnection: {
    parameters: {
      path: {
        /** @description Network Connection Identifier - uuid */
        id: string;
      };
    };
    responses: {
      /** @description Success */
      204: {
        content: never;
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /**
   * Update Network Connection (partial)
   * @description Only updates the specified attributes. You must have the domain administrator role to update a network connection.
   */
  v1PartialUpdateNetworkConnection: {
    parameters: {
      path: {
        /** @description Network Connection Identifier - uuid */
        id: string;
      };
    };
    /** @description Network Connection Options */
    requestBody: {
      content: {
        "application/json": components["schemas"]["UpdateNetworkConnectionOptions"];
      };
    };
    responses: {
    };
  };
  /**
   * List available network providers
   * @description Provides a list of registered network providers to be used when [creating network connections](#post-/v1/network/connections). You
   * must have the domain administrator role to list network providers.
   */
  v1ListNetworkProviders: {
    responses: {
      /** @description Success */
      200: {
        content: {
          "application/json": components["schemas"]["NetworkConnectionProviderOffsetPaginationResult"];
        };
      };
      /** @description Forbidden */
      403: {
        content: {
          "application/json": components["schemas"]["ApiError"];
        };
      };
    };
  };
  /** Get assessments by instanceId */
  getAssessmentsByInstanceId: {
    parameters: {
      path: {
        instanceId: components["parameters"]["instanceId"];
      };
    };
    responses: {
      /** @description Returns array of assessments */
      200: {
        content: {
          "application/json": components["schemas"]["Assessment"][];
        };
      };
      500: components["responses"]["500InternalServerError"];
    };
  };
  /** Create assessment */
  createAssessment: {
    parameters: {
      path: {
        instanceId: components["parameters"]["instanceId"];
      };
    };
    /** @description Create a new assessment */
    requestBody: {
      content: {
        "application/json": components["schemas"]["CreateAssessmentDto"];
      };
    };
    responses: {
      200: components["responses"]["AssessmentIdStatusResponse"];
      /** @description Invalid body */
      400: {
        content: never;
      };
      500: components["responses"]["500InternalServerError"];
    };
  };
  /** Get assessment by ID */
  getAssessmentById: {
    parameters: {
      path: {
        instanceId: components["parameters"]["instanceId"];
        assessmentId: components["parameters"]["assessmentId"];
      };
    };
    responses: {
      200: components["responses"]["AssessmentResponse"];
      404: components["responses"]["404NotFound"];
      500: components["responses"]["500InternalServerError"];
    };
  };
  /** Delete assessment */
  deleteAssessment: {
    parameters: {
      path: {
        instanceId: components["parameters"]["instanceId"];
        assessmentId: components["parameters"]["assessmentId"];
      };
    };
    responses: {
      204: components["responses"]["204SuccessNoContent"];
      404: components["responses"]["404NotFound"];
      500: components["responses"]["500InternalServerError"];
    };
  };
  /** Update assessment state and begin device monitoring */
  startMonitoring: {
    parameters: {
      path: {
        instanceId: components["parameters"]["instanceId"];
        assessmentId: components["parameters"]["assessmentId"];
      };
    };
    responses: {
      204: components["responses"]["204SuccessNoContent"];
      404: components["responses"]["404NotFound"];
      500: components["responses"]["500InternalServerError"];
    };
  };
  /** Update assessment state and stop device monitoring */
  stopMonitoring: {
    parameters: {
      path: {
        instanceId: components["parameters"]["instanceId"];
        assessmentId: components["parameters"]["assessmentId"];
      };
    };
    responses: {
      204: components["responses"]["204SuccessNoContent"];
      404: components["responses"]["404NotFound"];
      500: components["responses"]["500InternalServerError"];
    };
  };
  /** Update assessment state and execute MATRIX tests */
  runTests: {
    parameters: {
      path: {
        instanceId: components["parameters"]["instanceId"];
        assessmentId: components["parameters"]["assessmentId"];
      };
    };
    /** @description Execute MATRIX tests */
    requestBody?: {
      content: {
        "application/json": components["schemas"]["TestAssessmentDto"];
      };
    };
    responses: {
      200: components["responses"]["AssessmentIdStatusResponse"];
      /** @description Assessment status invalid */
      400: {
        content: never;
      };
      404: components["responses"]["404NotFound"];
      500: components["responses"]["500InternalServerError"];
    };
  };
  /** Download report */
  downloadReport: {
    parameters: {
      query: {
        format: components["parameters"]["format"];
      };
      path: {
        instanceId: components["parameters"]["instanceId"];
        assessmentId: components["parameters"]["assessmentId"];
      };
    };
    responses: {
      /** @description Returns the HTML file of the report */
      200: {
        content: {
          "text/html": string;
          "application/json": string;
        };
      };
      /** @description Assessment status invalid */
      400: {
        content: never;
      };
      404: components["responses"]["404NotFound"];
      500: components["responses"]["500InternalServerError"];
    };
  };
}

declare const createAppEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * List all apps installed on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').app.list();
     */
    list: () => Promise<{
        apps?: components["schemas"]["AgentApp"][] | null;
        frontmost?: string | null;
    }>;
    /**
     * Run an app on the device.
     * @param bundleId The bundle ID of the app to run e.g. `com.corellium.cafe`
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').app.run('com.corellium.cafe');
     */
    run: (bundleId: paths["/v1/instances/{instanceId}/agent/v1/app/apps/{bundleId}/run"]["post"]["parameters"]["path"]["bundleId"]) => Promise<Record<string, never>>;
    /**
     * Install an app on the device.
     * @param body The request body.
     * @param body.path The path to the app to install.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').app.install({ path });
     */
    install: (body: paths["/v1/instances/{instanceId}/agent/v1/app/install"]["post"]["requestBody"]["content"]["application/json"]) => Promise<never>;
    /**
     * Uninstall an app from the device.
     * @param bundleId The bundle ID of the app to uninstall e.g. `com.corellium.cafe`
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').app.uninstall('com.corellium.cafe');
     */
    uninstall: (bundleId: paths["/v1/instances/{instanceId}/agent/v1/app/apps/{bundleId}/uninstall"]["post"]["parameters"]["path"]["bundleId"]) => Promise<Record<string, never>>;
    /**
     * Get the status of the app.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').app.statuses();
     */
    statuses: () => Promise<{
        apps?: components["schemas"]["AgentApp"][] | null;
        frontmost?: string | null;
    }>;
    /**
     * Get the icon of the app.
     * @param bundleIds The bundle IDs of the apps to get the icons for.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').app.icons(['com.corellium.cafe', 'com.apple.mobilesafari']);
     */
    icons: (bundleIds: paths["/v1/instances/{instanceId}/agent/v1/app/icons"]["get"]["parameters"]["query"]["bundleID"]) => Promise<{
        icon?: string | null;
    }[]>;
    /**
     * Kill an app on the device.
     * @param bundleId The bundle ID of the app to kill e.g. `com.corellium.cafe`
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').app.kill('com.corellium.cafe');
     */
    kill: (bundleId: paths["/v1/instances/{instanceId}/agent/v1/app/apps/{bundleId}/kill"]["post"]["parameters"]["path"]["bundleId"]) => Promise<Record<string, never>>;
    openGApps: {
        /**
         * Install OpenGApps on the device.
         * @param body The request body.
         * @param body.url The URL to the OpenGApps package e.g. `http://downloads.sourceforge.net/project/opengapps/arm64/20220119/open_gapps-arm64-11.0-pico-20220119.zip?r=&ts=1653516572&use_mirror=gigenet`
         * @param body.hash The hash of the OpenGApps package e.g. `58398bf7628f38ef07eaeb3abe26f3ebf0474f4d5ecdac0852bd5de3c15cc828`
         * @param body.fingerprint The fingerprint of the OpenGApps package e.g. `google/flame/flame:11/RP1A.200720.009/6720564:user/release-keys__2020-09-05`
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').app.openGApps.install({ url, hash, fingerprint });
         */
        install: (body: {
            url: string;
            hash: string;
            fingerprint: string;
        }) => Promise<never>;
    };
};

declare const createAuthEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * Change the password of the user.
     * @param body The request body.
     * @param body.userId The user ID.
     * @param body.oldPassword The old password.
     * @param body.newPassword The new password.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.auth.changePassword({ userId, oldPassword, newPassword });
     */
    changePassword: (body: {
        userId: paths["/v1/users/change-password"]["post"]["requestBody"]["content"]["application/json"]["user"];
        oldPassword: paths["/v1/users/change-password"]["post"]["requestBody"]["content"]["application/json"]["old-password"];
        newPassword: paths["/v1/users/change-password"]["post"]["requestBody"]["content"]["application/json"]["new-password"];
    }) => Promise<never>;
    /**
     * Reset the password of the user.
     * @param body The request body.
     * @param body.token The reset password token.
     * @param body.totpToken The TOTP token.
     * @param body.newPassword The new password.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.auth.resetPassword({ token, totpToken, newPassword });
     */
    resetPassword: (body: {
        token: paths["/v1/users/reset-password"]["post"]["requestBody"]["content"]["application/json"]["token"];
        totpToken: paths["/v1/users/reset-password"]["post"]["requestBody"]["content"]["application/json"]["totpToken"];
        newPassword: paths["/v1/users/reset-password"]["post"]["requestBody"]["content"]["application/json"]["new-password"];
    }) => Promise<never>;
    /**
     * Send a reset password email to the user.
     * @param body The request body.
     * @param body.email The email address of the user.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.auth.sendResetPasswordEmail({ email });
     */
    sendResetPasswordEmail: (body: paths["/v1/users/send-reset-link"]["post"]["requestBody"]["content"]["application/json"]) => Promise<never>;
    /**
     * Agree to the terms of service.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.auth.consent();
     */
    consent: () => Promise<{
        agreedToTerms?: string | null;
    }>;
};

declare const createAuthProviderEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * Update an authentication provider.
     * @param body The request body.
     * @param body.providerType The provider type.
     * @param body.enabled Whether the provider is enabled.
     * @param body.label The provider label.
     * @param body.config The provider configuration.
     * @param body.config.clientId The client ID.
     * @param body.config.clientSecret The client secret.
     * @param body.config.discoveryUrl The discovery URL.
     * @param body.config.invitedOnly Whether the provider is invited only.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.authProvider.update({ providerType, enabled, label, config });
     */
    update: (body: paths["/v1/domain/{domainId}/auth/{providerId}"]["put"]["requestBody"]["content"]["application/json"]) => Promise<{
        identifier: string;
        id?: string | null;
        providerType: string;
        provider?: string | null;
        label: string;
        name?: string | null;
        authorizationUrl?: string | null;
        default: boolean;
        enabled: boolean;
        config?: components["schemas"]["OpenIDConfig"];
        createdBy?: string | null;
        createdAt: string;
        updatedAt: string;
    }>;
    /**
     * Delete an authentication provider.
     * @param domainId The domain ID.
     * @param providerId The provider ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.authProvider.delete(domainId, providerId);
     */
    delete: (domainId: paths["/v1/domain/{domainId}/auth/{providerId}"]["delete"]["parameters"]["path"]["domainId"], providerId: paths["/v1/domain/{domainId}/auth/{providerId}"]["delete"]["parameters"]["path"]["providerId"]) => Promise<Record<string, never>>;
    /**
     * List authentication providers.
     * @param domainId The domain ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.authProvider.get(domainId);
     */
    list: (domainId: paths["/v1/domain/{domainId}/auth"]["get"]["parameters"]["path"]["domainId"]) => Promise<Record<string, never>>;
    /**
     * Create an authentication provider.
     * @param body The request body.
     * @param body.providerType The provider type.
     * @param body.enabled Whether the provider is enabled.
     * @param body.label The provider label.
     * @param body.config The provider configuration.
     * @param body.config.clientId The client ID.
     * @param body.config.clientSecret The client secret.
     * @param body.config.discoveryUrl The discovery URL.
     * @param body.config.invitedOnly Whether the provider is invited only.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.authProvider.create({ providerType, enabled, label, config });
     */
    create: (body: paths["/v1/domain/{domainId}/auth"]["post"]["requestBody"]["content"]["application/json"]) => Promise<{
        identifier: string;
        id?: string | null;
        providerType: string;
        provider?: string | null;
        label: string;
        name?: string | null;
        authorizationUrl?: string | null;
        default: boolean;
        enabled: boolean;
        config?: components["schemas"]["OpenIDConfig"];
        createdBy?: string | null;
        createdAt: string;
        updatedAt: string;
    }>;
};

declare const createConnectEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string, baseUrl: string) => {
    quickConnect: {
        /**
         * Get the quick connect command.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').connect.quickConnect.get();
         */
        get: () => Promise<string>;
    };
    eth0IP: {
        /**
         * Get the IP address of the eth0 interface.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').connect.eth0IP.get();
         */
        get: () => Promise<{
            value?: string | null;
        }>;
    };
    adbAuthSetting: {
        /**
         * Get the ADB authentication setting.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').connect.adbAuthSetting.get();
         */
        get: () => Promise<{
            enabled?: boolean | null;
        }>;
        /**
         * Set the ADB authentication setting.
         * @param body The request body.
         * @param body.enabled Whether ADB authentication is enabled.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').connect.adbAuthSetting.set({ enabled });
         */
        set: (body: paths["/v1/instances/{instanceId}/agent/v1/system/adbauth"]["put"]["requestBody"]["content"]["application/json"]) => Promise<never>;
    };
    wifi: {
        connect: () => Promise<unknown>;
        disconnect: () => Promise<unknown>;
    };
};

declare const createConsoleEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * Get the console output of the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').console.get();
     */
    get: () => Promise<{
        url?: string | null;
    }>;
};

declare const createCoreTraceEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * Start CoreTrace on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').coretrace.start();
     */
    start: () => Promise<never>;
    /**
     * Stop CoreTrace on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').coretrace.stop();
     */
    stop: () => Promise<never>;
    /**
     * Get running threads of CoreTrace on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').coretrace.get();
     */
    threads: () => Promise<{
        kernelId?: string | null;
        name?: string | null;
        pid?: number | null;
        threads?: components["schemas"]["KernelThread"][] | null;
    }[]>;
    /**
     * Clear CoreTrace logs on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').coretrace.log();
     */
    clear: () => Promise<never>;
};

declare const createCustomNetworkEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * List all custom networks.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.customNetwork.list();
     */
    list: () => Promise<{
        total: number;
        count: number;
        limit: number;
        offset: number;
        results: components["schemas"]["NetworkConnection"][];
    }>;
    /**
     * Create a custom network by ID.
     * @param body The custom network OpenVPN confguration.
     * @param body.name The name of the custom network.
     * @param body.config The OpenVPN configuration.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.customNetwork.get('123');
     */
    create: (body: paths["/v1/network/connections"]["post"]["requestBody"]["content"]["application/json"]) => Promise<never>;
    /**
     * Update a custom network.
     * @param customNetworkId The custom network ID.
     * @param body The custom network OpenVPN confguration.
     * @param body.name The name of the custom network.
     * @param body.config The OpenVPN configuration.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.customNetwork.update('123', { name, config });
     */
    update: (customNetworkId: paths["/v1/network/connections/{id}"]["patch"]["parameters"]["path"]["id"], body: {
        name?: string;
        config?: string;
    }) => Promise<never>;
    /**
     * Delete a custom network.
     * @param customNetworkId The custom network ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.customNetwork.delete('123');
     */
    delete: (customNetworkId: paths["/v1/network/connections/{id}"]["delete"]["parameters"]["path"]["id"]) => Promise<never>;
    providers: {
        /**
         * List all custom network providers.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.customNetwork.providers.list();
         */
        list: () => Promise<{
            total: number;
            count: number;
            limit: number;
            offset: number;
            results: components["schemas"]["NetworkConnectionProvider"][];
        }>;
    };
};

type PatchedInstanceInputProperties = ({
    text: string;
    keyDuration?: number;
} | {
    start: [number, number][];
    end: [number, number][];
    bezierPoints?: number[][][];
    startButtons: components['schemas']['Button'][];
    endButtons?: components['schemas']['Button'][];
    normalized?: boolean;
    wait?: number;
    duration: number;
} | {
    position: [number, number][];
    buttons?: components['schemas']['Button'][];
    normalized?: boolean;
    wait?: number;
})[];
declare const createDeviceEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string, baseUrl: string) => {
    /**
     * Delete a device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').delete();
     */
    delete: () => Promise<never>;
    /**
     * Get a device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').get();
     */
    get: () => Promise<{
        id?: string | null;
        name?: string | null;
        key?: string | null;
        flavor?: string | null;
        type?: string | null;
        project?: string | null;
        state?: components["schemas"]["InstanceState"];
        stateChanged?: string | null;
        startedAt?: string | null;
        userTask?: string | null;
        taskState?: string | null;
        error?: string | null;
        bootOptions?: components["schemas"]["InstanceBootOptions"];
        serviceIp?: string | null;
        wifiIp?: string | null;
        secondaryIp?: string | null;
        services?: components["schemas"]["InstanceServices"];
        panicked?: boolean | null;
        created?: string | null;
        model?: string | null;
        fwpackage?: string | null;
        os?: string | null;
        agent?: components["schemas"]["InstanceAgentState"];
        netmon?: components["schemas"]["InstanceNetmonState"];
        netdump?: components["schemas"]["InstanceNetdumpState"];
        exposePort?: string | null;
        fault?: boolean | null;
        patches?: string[] | null;
        createdBy?: components["schemas"]["createdBy"];
    }>;
    /**
     * Update a device.
     * @param body The request body.
     * @param body.name The name of the device.
     * @param body.state The state of the device e.g. `on`, `off`, `paused`, `deleting`.
     * @param body.os The OS version of the device e.g. `14.0.0`.
     * @param body.bootOptions The boot options of the device.
     * @param body.bootOptions.bootArgs Boot arguments to provide to the kernel
     * @param body.bootOptions.restoreBootArgs Boot arguments to provide to the kernel when restoring
     * @param body.bootOptions.udid UDID of the device
     * @param body.bootOptions.ecid Assigned ECID
     * @param body.bootOptions.randomSeed Random seed to provide to boot if any
     * @param body.bootOptions.pac Enable PAC
     * @param body.bootOptions.aprr Enable APRR
     * @param body.bootOptions.additionalTags Additional tags to provide to boot
     * @param body.proxy The proxy settings for the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').update({ name: 'My Device' });
     */
    update: (body: paths["/v1/instances/{instanceId}"]["patch"]["requestBody"]["content"]["application/json"]) => Promise<{
        id?: string | null;
        name?: string | null;
        key?: string | null;
        flavor?: string | null;
        type?: string | null;
        project?: string | null;
        state?: components["schemas"]["InstanceState"];
        stateChanged?: string | null;
        startedAt?: string | null;
        userTask?: string | null;
        taskState?: string | null;
        error?: string | null;
        bootOptions?: components["schemas"]["InstanceBootOptions"];
        serviceIp?: string | null;
        wifiIp?: string | null;
        secondaryIp?: string | null;
        services?: components["schemas"]["InstanceServices"];
        panicked?: boolean | null;
        created?: string | null;
        model?: string | null;
        fwpackage?: string | null;
        os?: string | null;
        agent?: components["schemas"]["InstanceAgentState"];
        netmon?: components["schemas"]["InstanceNetmonState"];
        netdump?: components["schemas"]["InstanceNetdumpState"];
        exposePort?: string | null;
        fault?: boolean | null;
        patches?: string[] | null;
        createdBy?: components["schemas"]["createdBy"];
    }>;
    /**
     * Start the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').start();
     */
    start: () => Promise<never>;
    /**
     * Stop the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').stop();
     */
    stop: () => Promise<never>;
    /**
     * Reboot the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').reboot();
     */
    reboot: () => Promise<never>;
    /**
     * Pause the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').pause();
     */
    pause: () => Promise<never>;
    /**
     * Resume the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').resume();
     */
    resume: () => Promise<never>;
    /**
     * Lock the device (iOS only)
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').lock();
     */
    lock: () => Promise<never>;
    /**
     * Unlock the device (iOS only)
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').unlock();
     */
    unlock: () => Promise<never>;
    websocket: {
        /**
         * Get the websocket URL for the device.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').websocket.get();
         */
        get: () => Promise<{
            url?: string | null;
        }>;
    };
    state: {
        /**
         * Get the status of the device.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').state.get();
         */
        get: () => Promise<"on" | "off" | "booting" | "deleting" | "creating" | "restoring" | "paused" | "rebooting" | "error">;
    };
    gpio: {
        /**
         * Get the GPIO list of the device.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').gpio.list();
         */
        list: () => Promise<{
            led?: components["schemas"]["GpioStateDefinition"];
            button?: components["schemas"]["GpioStateDefinition"];
            switch?: components["schemas"]["GpioStateDefinition"];
        }>;
        /**
         * Set the GPIO list of the device.
         * @param body The request body.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').gpio.set({ button: { bitCount: 2 }});
         */
        set: (body: paths["/v1/instances/{instanceId}/gpios"]["put"]["requestBody"]["content"]["application/json"]) => Promise<{
            led?: components["schemas"]["GpioStateDefinition"];
            button?: components["schemas"]["GpioStateDefinition"];
            switch?: components["schemas"]["GpioStateDefinition"];
        }>;
    };
    sensors: {
        /**
         * Get the sensor list of the device.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').sensors.get();
         */
        get: () => Promise<{
            acceleration?: number[] | null;
            gyroscope?: number[] | null;
            magnetic?: number[] | null;
            orientation?: number[] | null;
            temperature?: number | null;
            proximity?: number | null;
            light?: number | null;
            pressure?: number | null;
            humidity?: number | null;
        }>;
        /**
         * Set the sensor list of the device.
         * @param body The request body.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').sensors.set({ acceleration: acceleration: [0, 9.81, 0] });
         */
        set: (body: paths["/v1/instances/{instanceId}/peripherals"]["put"]["requestBody"]["content"]["application/json"]) => Promise<{
            acceleration?: number[] | null;
            gyroscope?: number[] | null;
            magnetic?: number[] | null;
            orientation?: number[] | null;
            temperature?: number | null;
            proximity?: number | null;
            light?: number | null;
            pressure?: number | null;
            humidity?: number | null;
        }>;
    };
    /**
     * Restore a backup to the device (iOS only)
     * @param body The request body.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').restoreBackup(body);
     */
    restoreBackup: (body: paths["/v1/instances/{instanceId}/restoreBackup"]["post"]["requestBody"]) => Promise<never>;
    /**
     * Take a screenshot of the device.
     * @param format The format of the screenshot.
     * @param scale The scale of the screenshot.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').takeScreenshot(format, scale);
     */
    takeScreenshot: (format: paths["/v1/instances/{instanceId}/screenshot.{format}"]["get"]["parameters"]["path"]["format"], scale?: number) => Promise<string>;
    /**
     * Rotate the device.
     * @param orientation The orientation to rotate the device to.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').rotate('landscape');
     */
    rotate: (orientation: "landscape-inverted" | "landscape" | "portrait-inverted" | "portrait") => Promise<never>;
    /**
     * Send input to the device.
     * @param body The request body.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').input([{ buttons: ['finger'], position: [[300, 600]], wait: 0 }]);
     */
    input: (body: PatchedInstanceInputProperties) => Promise<{
        eta?: number | null;
    }>;
    /**
     * Upgrade the OS of the device (iOS only)
     * @param body The request body.
     * @param body.os The OS to upgrade to.
     * @param body.osbuild The OS build to upgrade to.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').upgrade({ os: '14.3', osbuild: '18C66' });
     */
    upgrade: (body: paths["/v1/instances/{instanceId}/upgrade"]["post"]["requestBody"]["content"]["application/json"]) => Promise<never>;
    /**
     * Determine whether the device is ready.
     * @returns {boolean} Whether the device is ready.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').ready();
     */
    ready: () => Promise<boolean>;
    hostname: {
        /**
         * Set the hostname of the device.
         * @param body The request body.
         * @param body.hostname The hostname to set.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').hostname.set({ hostname: 'my-hostname' });
         */
        set: (body: paths["/v1/instances/{instanceId}/agent/v1/system/setHostname"]["post"]["requestBody"]["content"]["application/json"]) => Promise<never>;
    };
    property: {
        /**
         * Get a system property of the device.
         * @param body The request body.
         * @param body.property The property to get.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').property.get({ property: 'corellium.opengapps' });
         */
        get: (body: paths["/v1/instances/{instanceId}/agent/v1/system/getprop"]["post"]["requestBody"]["content"]["application/json"]) => Promise<{
            value?: string | null;
        }>;
    };
    /**
     * Send a command to the device.
     * @param type Passed in the `type` field of the agent command
     * @param op Passed in the `op` field of the agent command
     * @param params Any other parameters to include in the command
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').send('app', 'list');'
     */
    send: (type: string, op: string, parameters?: Record<string, unknown>) => Promise<unknown>;
    frida: {
        /**
         * Run Frida on the device.
         * @param targetPid The PID of the target process.
         * @param targetName The name of the target process.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').frida.run('123', 'MyApp');
         */
        run: (targetPid: string, targetName: string) => Promise<unknown>;
        /**
         * List Frida processes on the device.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').frida.list();
         */
        list: () => Promise<unknown>;
        /**
         * Run Frida Kill on the device.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').frida.kill();
         */
        kill: () => Promise<unknown>;
    };
    sslPinning: {
        /**
         * Check if SSL pinning is enabled on the device.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').sslPinning.get();
         */
        get: () => Promise<unknown>;
        /**
         * Set the SSL pinning state of the device.
         * @param enabled Whether to enable SSL pinning.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').sslPinning.set(true);
         */
        set: (enabled: boolean) => Promise<unknown>;
    };
    uiAutomation: {
        /**
         * Set the UI automation state of the device.
         * @param enabled Whether to enable UI automation.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').uiAutomation.set(true);
         */
        set: (enabled: boolean) => Promise<unknown>;
    };
    disableAutolockAssertion: {
        /**
         * Acquire the disable autolock assertion.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').disableAutolockAssertion.acquire();
         */
        acquire: () => Promise<unknown>;
        /**
         * Release the disable autolock assertion.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').disableAutolockAssertion.release();
         */
        release: () => Promise<unknown>;
    };
};

declare const createDevicesEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * Create a new device.
     * @param body The request body.
     * @param body.project The project ID.
     * @param body.name The name of the device.
     * @param body.flavor The flavor of the device e.g. `ranchu`, `iphone6`, `iphone6plus`, `ipodtouch6`, `ipadmini4wifi`, `iphone6s`, `iphone6splus`, `iphonese`, `iphone7`, `iphone7plus`, `iphone8`, `iphone8plus`, `iphonex`, `iphonexs`, `iphonexsmax`, `iphonexsmaxww`, `iphonexr`, `iphone11`, `iphone11pro`, `iphone11promax`, `iphonese2`, `iphone12m`, `iphone12`, `iphone12p`, `iphone12pm`, `iphone13`, `iphone13m`, `iphone13p`, `iphone13pm`.
     * @param body.os The OS version of the device e.g. `14.0.0`.
     * @param body.osbuild The OS build of the device e.g. `18A373`.
     * @param body.fwpackage The firmware package to use for the device.
     * @param body.origFwPackageUrl The URL that the firmware package used to create this instance is available at.
     * @param body.encrypt Whether to encrypt the device.
     * @param body.overrideWifiMAC The MAC address to use for the device.
     * @param body.snapshot The snapshot ID for this instance to be cloned from if defined.
     * @param body.key The key used to encrypt the device.
     * @param body.sharedSnapshot The shared snapshot ID for this instance to be cloned from if defined.
     * @param body.sharedSnapshotPassword The shared snapshot password for this instance to be cloned from if defined.
     * @param body.patches The patches to apply to the device e.g. `jailbroken` | `corelliumd` | `nonjailbroken`. Jailbroken by default.
     * @param body.volume The volume options of the device.
     * @param body.volume.allocate The amount of storage to allocate for the device.
     * @param body.volume.partitions The partitions of the device.
     * @param body.volume.computeNode The compute node to use for the device.
     * @param body.bootOptions The boot options of the device.
     * @param body.bootOptions.kernelSlide The Kernel slide value for an iOS device. Defaults to zero. When set to an empty value, the slide will be randomized.
     * @param body.bootOptions.udid Predefined Unique Device ID (UDID) for iOS device
     * @param body.bootOptions.screen Change the screen metrics for Ranchu devices `XxY[:DPI]`, e.g. `720x1280:280`
     * @param body.bootOptions.additionalTags An array of addition features to utilize e.g. `["kalloc", "gpu", "no-keyboard", "nodevmode", "sep-cons-ext", "iboot-jailbreak", "llb-jailbreak", "rom-jailbreak"]`
     * @param body.bootOptions.kernel Custom kernel to pass to the device on creation
     * @param body.bootOptions.vmmio[] Paremeters to export a VM address space range (and IRQ & DMA functionality) over TCP to different models running on different machines or inside a different VM e.g. `{ start: 0x100000000, size: 0x1000000, irq: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], port: 1234 }`
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.devices.create({ project: 'projectId', name: 'My New Device', flavor: 'ranchu', os: '14.0.0' });
     */
    create: ({ patches, ...body }: Omit<paths["/v1/instances"]["post"]["requestBody"]["content"]["application/json"], "patches"> & {
        patches?: "corelliumd" | "jailbroken" | "nonjailbroken";
    }) => Promise<{
        id: string;
        state: components["schemas"]["InstanceState"];
    }>;
    /**
     * List all devices.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.devices.list();
     */
    list: () => Promise<{
        id?: string | null;
        name?: string | null;
        key?: string | null;
        flavor?: string | null;
        type?: string | null;
        project?: string | null;
        state?: components["schemas"]["InstanceState"];
        stateChanged?: string | null;
        startedAt?: string | null;
        userTask?: string | null;
        taskState?: string | null;
        error?: string | null;
        bootOptions?: components["schemas"]["InstanceBootOptions"];
        serviceIp?: string | null;
        wifiIp?: string | null;
        secondaryIp?: string | null;
        services?: components["schemas"]["InstanceServices"];
        panicked?: boolean | null;
        created?: string | null;
        model?: string | null;
        fwpackage?: string | null;
        os?: string | null;
        agent?: components["schemas"]["InstanceAgentState"];
        netmon?: components["schemas"]["InstanceNetmonState"];
        netdump?: components["schemas"]["InstanceNetdumpState"];
        exposePort?: string | null;
        fault?: boolean | null;
        patches?: string[] | null;
        createdBy?: components["schemas"]["createdBy"];
    }[]>;
    /**
     * Search for a device by name.
     * @param name The name of the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.devices.search('My Device');
     */
    search: (name: string) => Promise<{
        id?: string | null;
        name?: string | null;
        key?: string | null;
        flavor?: string | null;
        type?: string | null;
        project?: string | null;
        state?: components["schemas"]["InstanceState"];
        stateChanged?: string | null;
        startedAt?: string | null;
        userTask?: string | null;
        taskState?: string | null;
        error?: string | null;
        bootOptions?: components["schemas"]["InstanceBootOptions"];
        serviceIp?: string | null;
        wifiIp?: string | null;
        secondaryIp?: string | null;
        services?: components["schemas"]["InstanceServices"];
        panicked?: boolean | null;
        created?: string | null;
        model?: string | null;
        fwpackage?: string | null;
        os?: string | null;
        agent?: components["schemas"]["InstanceAgentState"];
        netmon?: components["schemas"]["InstanceNetmonState"];
        netdump?: components["schemas"]["InstanceNetdumpState"];
        exposePort?: string | null;
        fault?: boolean | null;
        patches?: string[] | null;
        createdBy?: components["schemas"]["createdBy"];
    }[]>;
};

declare const createFileEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * Get a file from a device.
     * @param filePath The path of the file to get e.g. `/etc/hosts`
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').file('/etc/hosts').get();
     */
    get: (filePath: paths["/v1/instances/{instanceId}/agent/v1/file/device/{filePath}"]["get"]["parameters"]["path"]["filePath"]) => Promise<string>;
    /**
     * Create a file on a device.
     * @param filePath The path of the file to create e.g. `/etc/hosts`
     * @param body The file content.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').file('/etc/hosts').create('/etc/hosts', File);
     */
    create: (filePath: paths["/v1/instances/{instanceId}/agent/v1/file/device/{filePath}"]["put"]["parameters"]["path"]["filePath"], body: paths["/v1/instances/{instanceId}/agent/v1/file/device/{filePath}"]["put"]["requestBody"]["content"]["application/octet-stream"]) => Promise<never>;
    /**
     * Delete a file from a device.
     * @param filePath The path of the file to delete e.g. `/etc/hosts`
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').file('/etc/hosts').delete();
     */
    delete: (filePath: paths["/v1/instances/{instanceId}/agent/v1/file/device/{filePath}"]["delete"]["parameters"]["path"]["filePath"]) => Promise<never>;
    /**
     * Generate a temporary filename.
     * @description Returns a temporary random filename that is guranteed to be unique on the device's filesystem at the time of invocation of this method.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').file.generateFilename();
     */
    generateFilename: () => Promise<string>;
    /**
     * Update a file on a device.
     * @param filePath The path of the file to update e.g. `/etc/hosts`
     * @param body The file content.
     * @param body.path The new path of the file e.g. `/etc/hosts`
     * @param body.mode The new mode of the file e.g. `644`
     * @param body.uid The new owner of the file e.g. `0`
     * @param body.gid The new group of the file e.g. `0`
     */
    update: (filePath: paths["/v1/instances/{instanceId}/agent/v1/file/device/{filePath}"]["patch"]["parameters"]["path"]["filePath"], body: paths["/v1/instances/{instanceId}/agent/v1/file/device/{filePath}"]["patch"]["requestBody"]["content"]["application/json"]) => Promise<never>;
};

declare const createHyperTraceEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * Start HyperTrace on the device.
     * @param body The request body.
     * @param body.ranges The ranges to trace e.g. `[['0x1000', '0x2000']]`
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').hypertrace.start({ ranges: [['0x1000', '0x2000']] });
     */
    start: (body: paths["/v1/instances/{instanceId}/btrace/enable"]["post"]["requestBody"]["content"]["application/json"]) => Promise<never>;
    /**
     * Stop HyperTrace on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').hypertrace.stop();
     */
    stop: () => Promise<never>;
    /**
     * Get HyperTrace ranges on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').hypertrace.ranges();
     */
    ranges: () => Promise<{
        kext?: string | null;
        range?: string[] | null;
    }[]>;
    /**
     * Pre-authorize a HyperTrace download.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').hypertrace.authorize();
     */
    authorize: () => Promise<Record<string, never>>;
    /**
     * Clear HyperTrace logs on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').hypertrace.clear();
     */
    clear: () => Promise<never>;
};

declare const createImageEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * List all images.
     * @param projectId The project ID to filter images by.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.image.list();
     */
    list: (projectId?: string) => Promise<{
        status: string;
        id?: string | null;
        name?: string | null;
        type?: "fwbinary" | "kernel" | "devicetree" | "ramdisk" | "loaderfile" | "sepfw" | "seprom" | "bootrom" | "llb" | "iboot" | "ibootdata" | "fwpackage" | "partition" | "backup" | null;
        filename?: string | null;
        uniqueid?: string | null;
        size?: number | null;
        project?: string | null;
        created_at?: string | null;
        updated_at?: string | null;
    }[]>;
    /**
     * Create a new image.
     * @param body The request body.
     * @param body.type The type of the image e.g. `binary`.
     * @param body.encoding The encoding of the image e.g. `plain`.
     * @param body.encapsulated Whether the uploaded file is encapsulated inside a zip file e.g. `true`.
     * @param body.name The name of the image.
     * @param body.project The project ID.
     * @param body.instance The instance ID.
     * @param body.file The image file.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.image.create({ type: 'binary', encoding: 'plain', encapsulated: true, name: 'My Image', project: 'projectId', instance: 'instanceId', file: File });
     */
    create: (body: Omit<paths["/v1/images"]["post"]["requestBody"]["content"]["multipart/form-data"], "file"> & {
        file: File;
    }) => Promise<{
        status: string;
        id?: string | null;
        name?: string | null;
        type?: "fwbinary" | "kernel" | "devicetree" | "ramdisk" | "loaderfile" | "sepfw" | "seprom" | "bootrom" | "llb" | "iboot" | "ibootdata" | "fwpackage" | "partition" | "backup" | null;
        filename?: string | null;
        uniqueid?: string | null;
        size?: number | null;
        project?: string | null;
        created_at?: string | null;
        updated_at?: string | null;
    }>;
    /**
     * Get an image.
     * @param imageId The image ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.image.get('123');
     */
    get: (imageId: paths["/v1/images/{imageId}"]["get"]["parameters"]["path"]["imageId"]) => Promise<{
        status: string;
        id?: string | null;
        name?: string | null;
        type?: "fwbinary" | "kernel" | "devicetree" | "ramdisk" | "loaderfile" | "sepfw" | "seprom" | "bootrom" | "llb" | "iboot" | "ibootdata" | "fwpackage" | "partition" | "backup" | null;
        filename?: string | null;
        uniqueid?: string | null;
        size?: number | null;
        project?: string | null;
        created_at?: string | null;
        updated_at?: string | null;
    }>;
    /**
     * Update an image.
     * @param imageId The image ID.
     * @param body The request body.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.image.update('123', File);
     */
    update: (imageId: paths["/v1/images/{imageId}"]["post"]["parameters"]["path"]["imageId"], body: paths["/v1/images/{imageId}"]["post"]["requestBody"]["content"]["binary"]) => Promise<{
        status: string;
        id?: string | null;
        name?: string | null;
        type?: "fwbinary" | "kernel" | "devicetree" | "ramdisk" | "loaderfile" | "sepfw" | "seprom" | "bootrom" | "llb" | "iboot" | "ibootdata" | "fwpackage" | "partition" | "backup" | null;
        filename?: string | null;
        uniqueid?: string | null;
        size?: number | null;
        project?: string | null;
        created_at?: string | null;
        updated_at?: string | null;
    }>;
    /**
     * Delete an image.
     * @param imageId The image ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.image.delete('123');
     */
    delete: (imageId: paths["/v2/images/{imageId}"]["delete"]["parameters"]["path"]["imageId"]) => Promise<never>;
};

declare const createKernelHookEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * List all hooks installed on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').kernelHook.list();
     */
    list: () => Promise<{
        identifier?: string | null;
        label?: string | null;
        address?: string | null;
        patch?: string | null;
        patchType?: "csmfcc" | "csmfvm" | null;
        enabled?: boolean | null;
        createdAt?: string | null;
        updatedAt?: string | null;
        instanceId?: string | null;
    }[]>;
    /**
     * Create a new hook on the device.
     * @param body The request body.
     * @param body.label The label of the hook e.g. `My hook`.
     * @param body.address The address of the hook e.g. `0xfffffff006ae8864`.
     * @param body.patch The patch of the hook e.g. `print("Hello, world\n")`.
     * @param body.patchType The patch type of the hook - `csmfcc` or `csmfvm`.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').kernelHook.create({ label: 'My hook', address: '0xfffffff006ae8864', patch: 'print("Hello, world\n")', patchType: 'csmfcc' });
     */
    create: (body: paths["/v1/instances/{instanceId}/hooks"]["post"]["requestBody"]["content"]["application/json"]) => Promise<{
        identifier?: string | null;
        label?: string | null;
        address?: string | null;
        patch?: string | null;
        patchType?: "csmfcc" | "csmfvm" | null;
        enabled?: boolean | null;
        createdAt?: string | null;
        updatedAt?: string | null;
        instanceId?: string | null;
    }>;
    /**
     * Get a hook from the device.
     * @param hookId The ID of the hook to get e.g. `123`.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').kernelHook.get('123');
     */
    get: (hookId: paths["/v1/hooks/{hookId}"]["get"]["parameters"]["path"]["hookId"]) => Promise<{
        identifier?: string | null;
        label?: string | null;
        address?: string | null;
        patch?: string | null;
        patchType?: "csmfcc" | "csmfvm" | null;
        enabled?: boolean | null;
        createdAt?: string | null;
        updatedAt?: string | null;
        instanceId?: string | null;
    }>;
    /**
     * Update a hook on the device.
     * @param hookId The ID of the hook to update e.g. `123`.
     * @param body The request body.
     * @param body.label The label of the hook e.g. `My hook`.
     * @param body.address The address of the hook e.g. `0xfffffff006ae8864`.
     * @param body.patch The patch of the hook e.g. `print("Hello, world\n")`.
     * @param body.patchType The patch type of the hook - `csmfcc` or `csmfvm`.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').kernelHook.update('123', { label: 'My hook', address: '0xfffffff006ae8864', patch: 'print("Hello, world\n")', patchType: 'csmfcc' });
     */
    update: (hookId: paths["/v1/hooks/{hookId}"]["put"]["parameters"]["path"]["hookId"], body: paths["/v1/hooks/{hookId}"]["put"]["requestBody"]["content"]["application/json"]) => Promise<{
        identifier?: string | null;
        label?: string | null;
        address?: string | null;
        patch?: string | null;
        patchType?: "csmfcc" | "csmfvm" | null;
        enabled?: boolean | null;
        createdAt?: string | null;
        updatedAt?: string | null;
        instanceId?: string | null;
    }>;
    /**
     * Delete a hook from the device.
     * @param hookId The ID of the hook to delete e.g. `123`.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').kernelHook.delete('123');
     */
    delete: (hookId: paths["/v1/hooks/{hookId}"]["delete"]["parameters"]["path"]["hookId"]) => Promise<never>;
    /**
     * Execute all hooks on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').kernelHook.run();
     */
    run: () => Promise<never>;
    /**
     * Clear all hooks on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').kernelHook.clear();
     */
    clear: () => Promise<never>;
};

declare const createMatrixEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string, baseUrl: string) => {
    /**
     * Run a MATRIX assessment.
     * @param body The request body.
     * @param body.bundleId The bundle ID of the assessment to run.
     * @param body.input The input to provide to the assessment.
     * @param body.keywords The keywords to provide to the assessment.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').matrix.run({ bundleId: 'com.corellium.cafe' });
     */
    run: (body: {
        bundleId: components["schemas"]["CreateAssessmentDto"]["bundleId"];
        input?: PatchedInstanceInputProperties;
        keywords?: string[];
    }) => Promise<{
        status: "complete" | "failed" | "generatingReport" | "monitoring" | "new" | "readyForTesting" | "startingMonitoring" | "stoppingMonitoring" | "testing";
        createdAt?: string;
        updatedAt?: string;
        createdBy?: string;
        reportId?: string;
        bundle?: {
            id?: string;
            name?: string;
            version?: string;
        };
        results?: {
            pass?: number;
            fail?: number;
            info?: number;
            error?: number;
        };
        metadata?: {
            corelliumVersion?: string;
        };
        instanceId: string;
        bundleId: string;
        wordlistId?: string;
        id?: string;
    }>;
    assessment: {
        /**
         * Get a MATRIX assessment.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').matrix.assessment.get('456');
         */
        get: (assessmentId: string) => Promise<{
            status: "complete" | "failed" | "generatingReport" | "monitoring" | "new" | "readyForTesting" | "startingMonitoring" | "stoppingMonitoring" | "testing";
            createdAt?: string;
            updatedAt?: string;
            createdBy?: string;
            reportId?: string;
            bundle?: {
                id?: string;
                name?: string;
                version?: string;
            };
            results?: {
                pass?: number;
                fail?: number;
                info?: number;
                error?: number;
            };
            metadata?: {
                corelliumVersion?: string;
            };
            instanceId: string;
            bundleId: string;
            wordlistId?: string;
            id?: string;
        }>;
        /**
         * List MATRIX assessments.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').matrix.assessment.list();
         */
        list: () => Promise<({
            createdAt?: string;
            updatedAt?: string;
            createdBy?: string;
            reportId?: string;
            bundle?: {
                id?: string;
                name?: string;
                version?: string;
            };
            results?: {
                pass?: number;
                fail?: number;
                info?: number;
                error?: number;
            };
            metadata?: {
                corelliumVersion?: string;
            };
        } & {
            instanceId: string;
            bundleId: string;
            wordlistId?: string;
        } & {
            id?: string;
        } & {
            status: string;
        })[]>;
        /**
         * Delete a MATRIX assessment.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').matrix.assessment.delete('456');
         */
        delete: (assessmentId: string) => Promise<never>;
        /**
         * Download a MATRIX assessment.
         * @param assessmentId The assessment ID.
         * @param format The format to download the assessment in.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').matrix.assessment.download('456', 'html');
         */
        download: (assessmentId: string, format?: "html" | "json") => Promise<string | ({
            createdAt?: string;
            updatedAt?: string;
            createdBy?: string;
            reportId?: string;
            bundle?: {
                id?: string;
                name?: string;
                version?: string;
            };
            results?: {
                pass?: number;
                fail?: number;
                info?: number;
                error?: number;
            };
            metadata?: {
                corelliumVersion?: string;
            };
        } & {
            instanceId: string;
            bundleId: string;
            wordlistId?: string;
        } & {
            id?: string;
        } & {
            status: string;
        })>;
    };
};

declare const createMediaEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * Play media on the device.
     * @param body The request body.
     * @param body.url The URL of the media to play.
     * @param body.imageId The image ID of the media to play.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').media.play({ url: 'https://example.com/video.mp4' });
     */
    start: (body: paths["/v1/instances/{instanceId}/media/play"]["post"]["requestBody"]["content"]["application/json"]) => Promise<never>;
    /**
     * Stop media on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').media.stop();
     */
    stop: () => Promise<never>;
};

declare const createMessagingEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * Send an SMS message to a device (iOS only)
     * @param body - The message to send
     * @param body.number - The phone number to send the message to
     * @param body.message - The message to send
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.messaging.receive({ number: '+1234567890', message: 'Hello, World!' });
     */
    receive: (body: {
        number: string;
        message: string;
    }) => Promise<never>;
};

declare const createModelEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * Get the list of models on the Corellium instance.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.model.list();
     */
    list: () => Promise<{
        type: string;
        name: string;
        flavor: string;
        description?: string | null;
        model: string;
        boardConfig?: string | null;
        platform?: string | null;
        cpid?: number | null;
        bdid?: number | null;
        peripherals?: boolean | null;
    }[]>;
    software: {
        /**
         * Get the list of software for a model.
         * @param modelId The model ID to filter software by.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.model.software.list('123');
         */
        list: (modelId: paths["/v1/models/{model}/software"]["get"]["parameters"]["path"]["model"]) => Promise<{
            version?: string | null;
            buildid?: string | null;
            AndroidFlavor?: string | null;
            APIVersion?: string | null;
            sha256sum?: string | null;
            sha1sum?: string | null;
            md5sum?: string | null;
            size?: number | null;
            uniqueId?: string | null;
            metadata?: Record<string, unknown> | null;
            releasedate?: string | null;
            uploaddate?: string | null;
            url?: string | null;
            orig_url?: string | null;
            filename?: string | null;
        }[]>;
    };
};

declare const createNetworkMonitorEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * Download the network monitor pcap file.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').networkMonitor.download();
     */
    download: () => Promise<string>;
    /**
     * Start the network monitor on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').networkMonitor.start();
     */
    start: () => Promise<never>;
    /**
     * Stop the network monitor on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').networkMonitor.stop();
     */
    stop: () => Promise<never>;
    advanced: {
        /**
         * Start the advanced network monitor on the device.
         * @param body The request body.
         * @param body.portRanges A list of port ranges to filter on.
         * @param body.srcPorts A list of source ports to filter on.
         * @param body.dstPorts A list of destination ports to filter on.
         * @param body.ports A list of ports to filter on.
         * @param body.protocols A list of protocols to filter on.
         * @param body.processes A list of processes to filter on.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').networkMonitor.advanced.start({ portRanges: [1, 2, 3] });
         */
        start: (body: paths["/v1/instances/{instanceId}/netdump/enable"]["post"]["requestBody"]) => Promise<never>;
        /**
         * Stop the advanced network monitor on the device.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').networkMonitor.advanced.stop();
         */
        stop: () => Promise<never>;
        /**
         * Download the advanced network monitor pcap file.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.device('123').networkMonitor.advanced.download();
         */
        download: () => Promise<string>;
    };
};

declare const createPanicEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * List all panics on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').panic.list();
     */
    list: () => Promise<Record<string, never>[]>;
    /**
     * Clear all panics on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').panic.clear();
     */
    clear: () => Promise<never>;
};

declare const createPortForwardingEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    create: () => Promise<never>;
    delete: () => Promise<never>;
};

declare const createProfileEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId: string) => {
    /**
     * List all profiles on the device.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').profile.list();
     */
    list: () => Promise<{
        profiles: string[];
    }>;
    /**
     * Install a profile on the device.
     * @param body The profile data.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').profile.install(File);
     */
    install: (body: paths["/v1/instances/{instanceId}/agent/v1/profile/install"]["post"]["requestBody"]["content"]["application/octet-stream"]) => Promise<never>;
    /**
     * Delete a profile from the device.
     * @param profileId The profile ID to delete.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').profile.delete('123');
     */
    delete: (profileId: paths["/v1/instances/{instanceId}/agent/v1/profile/profiles/{profileId}"]["delete"]["parameters"]["path"]["profileId"]) => Promise<never>;
};

declare const createProjectEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, projectId: string) => {
    /**
     * Get a project by ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.project('123').get();
     */
    get: () => Promise<{
        id: string;
        name?: string | null;
        settings?: components["schemas"]["ProjectSettings"];
        quotas?: components["schemas"]["ProjectQuota"];
        quotasUsed?: components["schemas"]["ProjectUsage"];
    }>;
    /**
     * Delete a project by ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.project('123').delete();
     */
    delete: () => Promise<never>;
    /**
     * Update a project by ID.
     * @param body The project settings.
     * @param body.name The project name.
     * @param body.settings The project settings.
     * @param body.settings.internetAccess Whether the project has internet access.
     * @param body.settings.connection The project connection.
     * @param body.settings.dhcp Whether the project uses DHCP.
     * @param body.quotas The project quotas.
     * @param body.quotas.cores The project core quota.
     * @param body.quotas.instances The project instance quota.
     * @param body.quotas.ram The project RAM quota.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.project('123').update({ name: 'My Project' });
     */
    update: (body: paths["/v1/projects/{projectId}"]["patch"]["requestBody"]["content"]["application/json"]) => Promise<{
        id: string;
        name?: string | null;
        settings?: components["schemas"]["ProjectSettings"];
        quotas?: components["schemas"]["ProjectQuota"];
        quotasUsed?: components["schemas"]["ProjectUsage"];
    }>;
    device: {
        /**
         * List all devices in a project.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.project('123').device.list();
         */
        list: () => Promise<{
            id?: string | null;
            name?: string | null;
            key?: string | null;
            flavor?: string | null;
            type?: string | null;
            project?: string | null;
            state?: components["schemas"]["InstanceState"];
            stateChanged?: string | null;
            startedAt?: string | null;
            userTask?: string | null;
            taskState?: string | null;
            error?: string | null;
            bootOptions?: components["schemas"]["InstanceBootOptions"];
            serviceIp?: string | null;
            wifiIp?: string | null;
            secondaryIp?: string | null;
            services?: components["schemas"]["InstanceServices"];
            panicked?: boolean | null;
            created?: string | null;
            model?: string | null;
            fwpackage?: string | null;
            os?: string | null;
            agent?: components["schemas"]["InstanceAgentState"];
            netmon?: components["schemas"]["InstanceNetmonState"];
            netdump?: components["schemas"]["InstanceNetdumpState"];
            exposePort?: string | null;
            fault?: boolean | null;
            patches?: string[] | null;
            createdBy?: components["schemas"]["createdBy"];
        }[]>;
    };
    vpn: {
        /**
         * Get the VPN configuration for a project.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.project('123').vpn.get();
         */
        get: () => Promise<string>;
    };
    keys: {
        /**
         * List all keys in a project.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.project('123').keys.list();
         */
        list: () => Promise<{
            identifier?: string | null;
            kind: "ssh" | "adb";
            project?: string | null;
            key: string;
            fingerprint?: string | null;
            updatedAt?: string | null;
            createdAt?: string | null;
        }[]>;
        /**
         * Add a key to a project.
         * @param body The key data.
         * @param body.kind The key kind e.g. `ssh` or `adb`.
         * @param body.name The key name e.g. `My Key`.
         * @param body.key The key e.g. `ssh-rsa ...`.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.project('123').keys.add({ kind: 'ssh', name: 'My Key', key: 'ssh-rsa ...' });
         */
        add: (body: paths["/v1/projects/{projectId}/keys"]["post"]["requestBody"]["content"]["application/json"]) => Promise<{
            identifier?: string | null;
            kind: "ssh" | "adb";
            project?: string | null;
            key: string;
            fingerprint?: string | null;
            updatedAt?: string | null;
            createdAt?: string | null;
        }>;
        /**
         * Delete a key from a project.
         * @param keyId The key ID.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.project('123').keys.delete('456');
         */
        delete: (keyId: paths["/v1/projects/{projectId}/keys/{keyId}"]["delete"]["parameters"]["path"]["keyId"]) => Promise<never>;
    };
};

declare const createProjectsEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * Create a new project.
     * @param body The project settings.
     * @param body.name The project name.
     * @param body.settings The project settings.
     * @param body.settings.internetAccess Whether the project has internet access.
     * @param body.settings.connection The project connection.
     * @param body.settings.dhcp Whether the project uses DHCP.
     * @param body.quotas The project quotas.
     * @param body.quotas.cores The project core quota.
     * @param body.quotas.instances The project instance quota.
     * @param body.quotas.ram The project RAM quota.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.project.create({ name: 'My Project' });
     */
    create: (body: Omit<paths["/v1/projects"]["post"]["requestBody"]["content"]["application/json"], "settings" | "id"> & {
        settings?: Omit<components["schemas"]["ProjectSettings"], "internet-access"> & {
            internetAccess: boolean;
        };
    }) => Promise<{
        id: string;
        name?: string | null;
        settings?: components["schemas"]["ProjectSettings"];
        quotas?: components["schemas"]["ProjectQuota"];
        quotasUsed?: components["schemas"]["ProjectUsage"];
    }>;
    /**
     * List all projects.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.project.list();
     */
    list: () => Promise<{
        id: string;
        name?: string | null;
        settings?: components["schemas"]["ProjectSettings"];
        quotas?: components["schemas"]["ProjectQuota"];
        quotasUsed?: components["schemas"]["ProjectUsage"];
    }[]>;
    /**
     * Search for a project by name.
     * @param name The project name.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.project.search('My Project');
     */
    search: (name: string) => Promise<{
        id: string;
        name?: string | null;
        settings?: components["schemas"]["ProjectSettings"];
        quotas?: components["schemas"]["ProjectQuota"];
        quotasUsed?: components["schemas"]["ProjectUsage"];
    } | undefined>;
};

declare const createRoleEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * List all roles.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.role.list();
     */
    list: () => Promise<{
        role: "admin" | "_member_";
        project: string;
        user: string;
    }[]>;
    /**
     * Add a role for a user or team to a project.
     * @param projectId The project ID.
     * @param roleId The role ID.
     * @param options The user or team ID.
     * @param options.userId The user ID.
     * @param options.teamId The team ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.role.add('123', '456', { userId: '789' });
     * @example const response = await corellium.role.add('123', '456', { teamId: '789' });
     */
    add: (projectId: paths["/v1/roles/projects/{projectId}/users/{userId}/roles/{roleId}"]["put"]["parameters"]["path"]["projectId"], roleId: paths["/v1/roles/projects/{projectId}/users/{userId}/roles/{roleId}"]["put"]["parameters"]["path"]["roleId"], options: {
        teamId: paths["/v1/roles/projects/{projectId}/teams/{teamId}/roles/{roleId}"]["put"]["parameters"]["path"]["teamId"];
    } | {
        userId: paths["/v1/roles/projects/{projectId}/users/{userId}/roles/{roleId}"]["put"]["parameters"]["path"]["userId"];
    }) => Promise<never>;
    /**
     * Delete a role for a user or team from a project.
     * @param projectId The project ID.
     * @param roleId The role ID.
     * @param options The user or team ID.
     * @param options.userId The user ID.
     * @param options.teamId The team ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.role.delete('123', '456', { userId: '789' });
     * @example const response = await corellium.role.delete('123', '456', { teamId: '789' });
     */
    delete: (projectId: paths["/v1/roles/projects/{projectId}/users/{userId}/roles/{roleId}"]["delete"]["parameters"]["path"]["projectId"], roleId: paths["/v1/roles/projects/{projectId}/users/{userId}/roles/{roleId}"]["delete"]["parameters"]["path"]["roleId"], options: {
        teamId: paths["/v1/roles/projects/{projectId}/teams/{teamId}/roles/{roleId}"]["delete"]["parameters"]["path"]["teamId"];
    } | {
        userId: paths["/v1/roles/projects/{projectId}/users/{userId}/roles/{roleId}"]["delete"]["parameters"]["path"]["userId"];
    }) => Promise<never>;
};

declare const createSnapshotEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, instanceId?: string) => {
    /**
     * List all snapshots.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').snapshot.list();
     */
    list: () => Promise<{
        id: string;
        name: string;
        instance: string;
        status: components["schemas"]["SnapshotStatus"];
        date: number;
        fresh: boolean;
        live: boolean;
        local: boolean;
        model?: string | null;
        sharing?: components["schemas"]["SnapshotSharing"];
    }[]>;
    /**
     * Get a snapshot.
     * @param snapshotId The snapshot ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.snapshot.get('123');
     * @example const response = await corellium.device('123').snapshot.get('123');
     */
    get: (snapshotId: paths["/v1/snapshots/{snapshotId}"]["get"]["parameters"]["path"]["snapshotId"]) => Promise<{
        id: string;
        name: string;
        instance: string;
        status: components["schemas"]["SnapshotStatus"];
        date: number;
        fresh: boolean;
        live: boolean;
        local: boolean;
        model?: string | null;
        sharing?: components["schemas"]["SnapshotSharing"];
    }>;
    /**
     * Create a snapshot.
     * @param body The snapshot data.
     * @param body.name The snapshot name.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').snapshot.create({ name: 'Snapshot' });
     */
    create: (body: paths["/v1/instances/{instanceId}/snapshots"]["post"]["requestBody"]["content"]["application/json"]) => Promise<{
        id: string;
        name: string;
        instance: string;
        status: components["schemas"]["SnapshotStatus"];
        date: number;
        fresh: boolean;
        live: boolean;
        local: boolean;
        model?: string | null;
        sharing?: components["schemas"]["SnapshotSharing"];
    }>;
    /**
     * Delete a snapshot.
     * @param snapshotId The snapshot ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.snapshot.delete('123');
     * @example const response = await corellium.device('123').snapshot.delete('123');
     */
    delete: (snapshotId: paths["/v1/snapshots/{snapshotId}"]["delete"]["parameters"]["path"]["snapshotId"]) => Promise<never>;
    /**
     * Update a snapshot.
     * @param snapshotId The snapshot ID.
     * @param body The snapshot data.
     * @param body.name The snapshot name.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.snapshot.update('123', { name: 'Snapshot' });
     * @example const response = await corellium.device('123').snapshot.update('123', { name: 'Snapshot' });
     */
    update: (snapshotId: paths["/v1/snapshots/{snapshotId}"]["patch"]["parameters"]["path"]["snapshotId"], body: paths["/v1/instances/{instanceId}/snapshots/{snapshotId}"]["patch"]["requestBody"]["content"]["application/json"]) => Promise<{
        id: string;
        name: string;
        instance: string;
        status: components["schemas"]["SnapshotStatus"];
        date: number;
        fresh: boolean;
        live: boolean;
        local: boolean;
        model?: string | null;
        sharing?: components["schemas"]["SnapshotSharing"];
    }>;
    /**
     * Restore a snapshot.
     * @param snapshotId The snapshot ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.device('123').snapshot.restore('123');
     */
    restore: (snapshotId: paths["/v1/instances/{instanceId}/snapshots/{snapshotId}/restore"]["post"]["parameters"]["path"]["snapshotId"]) => Promise<never>;
    sharing: {
        /**
         * Share a snapshot.
         * @param snapshotId The snapshot ID.
         * @param body The sharing data.
         * @param body.sharingType The sharing type e.g. `publicLink`, `domainRestrictedLink`, `passwordPublicLink` or `emailInvite.`.
         * @param body.password The password for the sharing type `passwordPublicLink`.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.snapshot.sharing.create('123', { sharingType: 'publicLink' });
         */
        create: (snapshotId: paths["/v1/snapshots/{snapshotId}/share"]["post"]["parameters"]["path"]["snapshotId"], body: paths["/v1/snapshots/{snapshotId}/share"]["post"]["requestBody"]["content"]["application/json"]) => Promise<{
            id: string;
            name: string;
            instance: string;
            status: components["schemas"]["SnapshotStatus"];
            date: number;
            fresh: boolean;
            live: boolean;
            local: boolean;
            model?: string | null;
            sharing?: components["schemas"]["SnapshotSharing"];
        }>;
        /**
         * Allow access to a shared snapshot.
         * @param snapshotId The snapshot ID.
         * @param body The sharing data.
         * @param body.members The members to allow access e.g. `['jane@acme.com', 'john@acme.com']`.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.snapshot.sharing.allow('123', { members: ['jane@acme.com', 'john@acme.com'] });
         */
        allow: (snapshotId: paths["/v1/snapshots/{snapshotId}/permissions"]["post"]["parameters"]["path"]["snapshotId"], body: paths["/v1/snapshots/{snapshotId}/permissions"]["post"]["requestBody"]["content"]["application/json"]) => Promise<{
            id: string;
            name: string;
            instance: string;
            status: components["schemas"]["SnapshotStatus"];
            date: number;
            fresh: boolean;
            live: boolean;
            local: boolean;
            model?: string | null;
            sharing?: components["schemas"]["SnapshotSharing"];
        }>;
        /**
         * Revoke access to a shared snapshot.
         * @param snapshotId The snapshot ID.
         * @param body The sharing data.
         * @param body.members The members to revoke access  e.g. `['jane@acme.com', 'john@acme.com']`.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.snapshot.sharing.revoke('123', { members: ['jane@acme.com', 'john@acme.com'] });
         */
        revoke: (snapshotId: paths["/v1/snapshots/{snapshotId}/permissions"]["delete"]["parameters"]["path"]["snapshotId"], body: paths["/v1/snapshots/{snapshotId}/permissions"]["delete"]["requestBody"]["content"]["application/json"]) => Promise<{
            id: string;
            name: string;
            instance: string;
            status: components["schemas"]["SnapshotStatus"];
            date: number;
            fresh: boolean;
            live: boolean;
            local: boolean;
            model?: string | null;
            sharing?: components["schemas"]["SnapshotSharing"];
        }>;
        /**
         * List all shared snapshots.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.snapshot.sharing.list();
         */
        list: () => Promise<{
            sharedWithUser: components["schemas"]["SharedSnapshotsInfo"];
            sharedByUser: components["schemas"]["SharedSnapshotsInfo"];
        }>;
        /**
         * Accept a snapshot shared with you.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example await corellium.snapshot.sharing.accept({ sharingType: 'passwordPublicLink', password: 'abcd' });
         */
        accept: (body: paths["/v1/snapshots/accept"]["post"]["requestBody"]["content"]["application/json"]) => Promise<{
            id: string;
            name: string;
            instance: string;
            status: components["schemas"]["SnapshotStatus"];
            date: number;
            fresh: boolean;
            live: boolean;
            local: boolean;
            model?: string | null;
            sharing?: components["schemas"]["SnapshotSharing"];
        }>;
    };
};

declare const createTeamEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * List all teams.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.team.list();
     */
    list: () => Promise<{
        id: string;
        label: string;
        users?: components["schemas"]["User"][] | null;
    }[]>;
    /**
     * Get a team.
     * @param teamId The team ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.team.get('123');
     */
    get: (teamId: string) => Promise<{
        id: string;
        label: string;
        users?: components["schemas"]["User"][] | null;
    } | undefined>;
    /**
     * Create a team.
     * @param body The request body.
     * @param body.name The team name.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.team.create({ name: 'Team' });
     */
    create: (body: paths["/v1/teams"]["post"]["requestBody"]["content"]["application/json"]) => Promise<{
        id?: string | null;
    }>;
    /**
     * Update a team.
     * @param teamId The team ID.
     * @param body The request body.
     * @param body.name The team name.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.team.update('123', { name: 'Team' });
     */
    update: (teamId: paths["/v1/teams/{teamId}"]["patch"]["parameters"]["path"]["teamId"], body: paths["/v1/teams/{teamId}"]["patch"]["requestBody"]["content"]["application/json"]) => Promise<never>;
    /**
     * Delete a team.
     * @param teamId The team ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.team.delete('123');
     */
    delete: (teamId: paths["/v1/teams/{teamId}"]["delete"]["parameters"]["path"]["teamId"]) => Promise<never>;
    users: {
        /**
         * Add a user to a team.
         * @param teamId The team ID.
         * @param userId The user ID.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.team.users.create('123', '456');
         */
        create: (teamId: paths["/v1/teams/{teamId}/users/{userId}"]["put"]["parameters"]["path"]["teamId"], userId: paths["/v1/teams/{teamId}/users/{userId}"]["put"]["parameters"]["path"]["userId"]) => Promise<never>;
        /**
         * Delete a user from a team.
         * @param teamId The team ID.
         * @param userId The user ID.
         * @returns The response data.
         * @throws {Error} The error message.
         * @example const response = await corellium.team.users.delete('123', '456');
         */
        delete: (teamId: paths["/v1/teams/{teamId}/users/{userId}"]["delete"]["parameters"]["path"]["teamId"], userId: paths["/v1/teams/{teamId}/users/{userId}"]["delete"]["parameters"]["path"]["userId"]) => Promise<never>;
    };
};

declare const createTokenEndpoints: (baseUrl: string, Authorization: string) => {
    /**
     * Generate an API Token for the current user.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.token.create();
     */
    create: () => Promise<{
        apiToken: string;
    }>;
    /**
     * Delete the API Token for the current user.
     * @returns `void`.
     * @throws {Error} The error message.
     * @example await corellium.token.delete();
     */
    delete: () => Promise<void>;
};

declare const createUserEndpoints: (api: ReturnType<typeof createFetchClient<paths>>) => {
    /**
     * Create a user.
     * @param body The request body.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.user.create(body);
     */
    create: (body: paths["/v1/users"]["post"]["requestBody"]["content"]["application/json"]) => Promise<Record<string, never>>;
    /**
     * Delete a user.
     * @param userId The user ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.user.delete('123');
     */
    delete: (userId: paths["/v1/users/{userId}"]["delete"]["parameters"]["path"]["userId"]) => Promise<Record<string, never>>;
    /**
     * Update a user.
     * @param userId The user ID.
     * @param body The request body.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.user.update('123', body);
     */
    update: (userId: paths["/v1/users/{userId}"]["patch"]["parameters"]["path"]["userId"], body: paths["/v1/users/{userId}"]["patch"]["requestBody"]["content"]["application/json"]) => Promise<Record<string, never>>;
};

declare const createWebplayerEndpoints: (api: ReturnType<typeof createFetchClient<paths>>, baseUrl: string, Authorization: string) => {
    /**
     * Get a webplayer session.
     * @param sessionId The session ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.webplayer.get('123');
     */
    get: (sessionId: string) => Promise<{
        identifier: string;
        token: string;
        expiration: number;
    }>;
    /**
     * List all webplayer sessions.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.webplayer.list();
     */
    list: () => Promise<{
        identifier: string;
        token: string;
        expiration: number;
    }[]>;
    /**
     * Refresh a webplayer session.
     * @param sessionId The session ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.webplayer.refresh('123');
     */
    refresh: (sessionId: string) => Promise<{
        identifier: string;
        token: string;
        expiration: number;
    }>;
    /**
     * Create a new webplayer session.
     * @param body The request body.
     * @param body.projectId The project ID.
     * @param body.instanceId The device ID.
     * @param body.expiresIn The session expiration time.
     * @param body.features The session features e.g. `{ apps: true, connect: true }`.
     * @param body.clientId The client ID.
     * @returns The response data.
     * @throws {Error} The error message.
     * @example const response = await corellium.webplayer.create({ projectId: '123', instanceId: '456', expiresIn: 3600, features: { apps: true, connect: true }, clientId: '789' });
     */
    create: (body: components["schemas"]["WebPlayerCreateSessionRequest"]) => Promise<{
        identifier: string;
        token: string;
        expiration: number;
    }>;
    /**
     * Delete a webplayer session.
     * @param sessionId The session ID.
     * @throws {Error} The error message.
     * @example await corellium.webplayer.delete('123');
     */
    delete: (sessionId: string) => Promise<never>;
    domains: {
        /**
         * Retrieve the list of allowed domains for all Webplayer sessions.
         * @throws {Error} The error message.
         * @example await corellium.webplayer.domains.list();
         */
        list: () => Promise<{
            identifier: string;
            token: string;
            expiration: number;
        }>;
    };
};

type CorelliumOptions = {
    endpoint?: string;
};
type AuthenticationMethod = string | {
    username: string;
    password: string;
};
declare class Corellium {
    auth: ReturnType<typeof createAuthEndpoints>;
    authProvider: ReturnType<typeof createAuthProviderEndpoints>;
    customNetwork: ReturnType<typeof createCustomNetworkEndpoints>;
    device: (deviceId: string) => ReturnType<typeof createDeviceEndpoints> & {
        app: ReturnType<typeof createAppEndpoints>;
        connect: ReturnType<typeof createConnectEndpoints>;
        console: ReturnType<typeof createConsoleEndpoints>;
        coreTrace: ReturnType<typeof createCoreTraceEndpoints>;
        file: ReturnType<typeof createFileEndpoints>;
        hyperTrace: ReturnType<typeof createHyperTraceEndpoints>;
        kernelHook: ReturnType<typeof createKernelHookEndpoints>;
        matrix: ReturnType<typeof createMatrixEndpoints>;
        media: ReturnType<typeof createMediaEndpoints>;
        messaging: ReturnType<typeof createMessagingEndpoints>;
        networkMonitor: ReturnType<typeof createNetworkMonitorEndpoints>;
        panic: ReturnType<typeof createPanicEndpoints>;
        portForwarding: ReturnType<typeof createPortForwardingEndpoints>;
        profile: ReturnType<typeof createProfileEndpoints>;
        snapshot: ReturnType<typeof createSnapshotEndpoints>;
    };
    devices: ReturnType<typeof createDevicesEndpoints>;
    image: ReturnType<typeof createImageEndpoints>;
    model: ReturnType<typeof createModelEndpoints>;
    projects: ReturnType<typeof createProjectsEndpoints>;
    project: (projectId: string) => ReturnType<typeof createProjectEndpoints>;
    role: ReturnType<typeof createRoleEndpoints>;
    snapshot: ReturnType<typeof createSnapshotEndpoints>;
    team: ReturnType<typeof createTeamEndpoints>;
    token: ReturnType<typeof createTokenEndpoints>;
    user: ReturnType<typeof createUserEndpoints>;
    webplayer: ReturnType<typeof createWebplayerEndpoints>;
    /**
     * Create a new Corellium TypeScript SDK instance.
     * @param apiToken The Corellium API token e.g. `1234567890abcdef`.
     * @param options The Corellium SDK options.
     * @param options.endpoint The Corellium API endpoint e.g. `https://acme.enterprise.corellium.com`.
     * @returns The Corellium TypeScript SDK instance.
     * @example const corellium = new Corellium('1234567890abcdef');
     */
    constructor(authentication: AuthenticationMethod, options?: CorelliumOptions);
}

export { Corellium };
