export type AtmConfig = {
  globalVariables: Record<string, string>;
  inputs: Array<Record<string, Record<string, string>>>;
  [key: string]: any;
};

export type AtmInfo = {
  version?: string;
  testName?: string;
}

export type AtmTestConfig = {
  info?: {
    testName?: string;
    version?: string;
  };
  configs: AtmConfig;
  steps?: TestStep[];
};

export enum TestStepType {
  Request = "request",
  AssertEquals = "assert-equals",
  AssertGreater = "assert-greater",
  AssertLess = "assert-less",
  AssertIs = "assert-is",
  AssertExists = "assert-exists",
  Each = "each",
  AssertIn = "assert-in",
  AssertContains = "assert-contains",
  AssertMatches = "assert-matches",
  AssertCompares = "assert-compares",
  If = "if",
}

export type TestStep = {
  type?: TestStepType;
  method?: string;
  url?: string;
  var?: string;
  params?: Record<string, string>;
  body?: any;
  mode?: string;
  headers?: Record<string, string>;
  expression?: string;
  expression1?: string;
  expression2?: string;
  value?: string;
  values?: string[];
  stoponfail?: string;
  steps?: TestStep[];
  mTLS?: boolean;
  insecureSkipVerify?: boolean;
  certPath?: string;
};
