import type {Constraints} from '@appium/types';
import {VERBOSITY} from './constants';

const DESIRED_CAP_CONSTRAINTS = {
  browserName: {
    isString: true,
  },
  browserVersion: {
    isString: true,
  },
  acceptInsecureCerts: {
    isBoolean: true,
  },
  pageLoadStrategy: {
    isString: true,
  },
  proxy: {
    isObject: true,
  },
  setWindowRect: {
    isBoolean: true,
  },
  timeouts: {
    isObject: true,
  },
  unhandledPromptBehavior: {
    isString: true,
  },
  systemPort: {
    isNumber: true,
  },
  marionettePort: {
    isNumber: true,
  },
  geckodriverExecutable: {
    isString: true,
  },
  verbosity: {
    isString: true,
    inclusionCaseInsensitive: Object.values(VERBOSITY) as [string, ...string[]],
  },
  androidStorage: {
    isString: true,
    inclusionCaseInsensitive: ['auto', 'app', 'internal', 'sdcard'],
  },
  'moz:firefoxOptions': {
    isObject: true,
  },
} as const satisfies Constraints;

export const desiredCapConstraints = DESIRED_CAP_CONSTRAINTS;
