import { ApiTFOption } from "../type";

export type BaseCommandProps =
  | {
      command: "Fileman";
      subcommand: "fileop" | "mkdir";
    }
  | {
      command: "SubDomain";
      subcommand: "listsubdomains" | "delsubdomain";
    };

// Fileman FileOp

export type FilemanFileOpOperations =
  | "copy"
  | "move"
  | "rename"
  | "extract"
  | "compress"
  | "trash";

export type FilemanFileOpCompressOperationMetadata =
  | "zip"
  | "tar.gz"
  | "tar.bz2"
  | "tar"
  | "gz"
  | "bz2";

export type FilemanFileOpProps = {
  operation: FilemanFileOpOperations;
  sourceFiles: string | string[];
  destFiles?: string | string[];
  metadata?: FilemanFileOpCompressOperationMetadata;
  doubleDecode?: boolean;
};

// Fileman mkdir

export type FilemanMkdirProps = {
  path: string;
  name: string;
  permissions?: string;
};

// SubDomain List SubDomains

export type SubDomainListSubDomainsProps = {
  regex: string;
  return_https_redirect_status?: ApiTFOption;
};

// SubDomain Add Subdomain

export type SubDomainAddSubDomainProps = {
  domain: string;
  rootdomain: string;
  canoff?: ApiTFOption;
  dir?: string;
  disallowdot?: ApiTFOption;
};

// SubDomain Del Sub Domain

export type SubDomainDelSubDomain = {
  domain: string;
};

// SSL Toggle SSL Redirect

export type SSLToggleSSLRedirect = {
  domains: string;
  state: string | number;
};
