// Code generated by tools/openapigen. DO NOT EDIT.
export type GeoKind = string;
export type OnlineAPISupport = number;
export type ProcessState = string;
export type Protocol = string;
export type SubLinkProvider = unknown;
export type staticEgressResolver = string;
export type trafficLocalApplyAction = number;
export type transportBits = number;

export interface AllSetting {
  datepicker: string;
  expireDiff: number;
  externalTrafficInformEnable: boolean;
  externalTrafficInformURI: string;
  ipLimitAllowlist: string;
  ldapAutoCreate: boolean;
  ldapAutoDelete: boolean;
  ldapBaseDN: string;
  ldapBindDN: string;
  ldapDefaultExpiryDays: number;
  ldapDefaultLimitIP: number;
  ldapDefaultTotalGB: number;
  ldapEnable: boolean;
  ldapFlagField: string;
  ldapHost: string;
  ldapInboundTags: string;
  ldapInsecureSkipVerify: boolean;
  ldapInvertFlag: boolean;
  ldapPassword: string;
  ldapPort: number;
  ldapSyncCron: string;
  ldapTruthyValues: string;
  ldapUseTLS: boolean;
  ldapUserAttr: string;
  ldapUserFilter: string;
  ldapVlessField: string;
  outboundDownThreshold: number;
  pageSize: number;
  panelOutbound: string;
  remarkTemplate: string;
  restartXrayOnClientDisable: boolean;
  sessionMaxAge: number;
  smtpCpu: number;
  smtpEnable: boolean;
  smtpEnabledEvents: string;
  smtpEncryptionType: string;
  smtpFrom: string;
  smtpFromName: string;
  smtpHost: string;
  smtpMemory: number;
  smtpPassword: string;
  smtpPort: number;
  smtpTo: string;
  smtpUsername: string;
  subAnnounce: string;
  subCertFile: string;
  subClashAutoDetect: boolean;
  subClashEnable: boolean;
  subClashEnableRouting: boolean;
  subClashPath: string;
  subClashRules: string;
  subClashURI: string;
  subClashUserAgentRegex: string;
  subDomain: string;
  subEnable: boolean;
  subEnableRouting: boolean;
  subEncrypt: boolean;
  subHideSettings: boolean;
  subIncyEnableRouting: boolean;
  subIncyRoutingRules: string;
  subJsonAlwaysArray: boolean;
  subJsonAutoDetect: boolean;
  subJsonEnable: boolean;
  subJsonFinalMask: string;
  subJsonMux: string;
  subJsonObservatory: string;
  subJsonPath: string;
  subJsonRules: string;
  subJsonURI: string;
  subJsonUserAgentRegex: string;
  subKeyFile: string;
  subListen: string;
  subPath: string;
  subPort: number;
  subProfileUrl: string;
  subRoutingRules: string;
  subShowIdentityOnAllLinks: boolean;
  subSupportUrl: string;
  subThemeDir: string;
  subTitle: string;
  subURI: string;
  subUpdates: number;
  tgBotAPIServer: string;
  tgBotBackup: boolean;
  tgBotChatId: string;
  tgBotEnable: boolean;
  tgBotProxy: string;
  tgBotToken: string;
  tgCpu: number;
  tgEnabledEvents: string;
  tgLang: string;
  tgMemory: number;
  tgRunTime: string;
  timeLocation: string;
  trafficDiff: number;
  trustedProxyCIDRs: string;
  twoFactorEnable: boolean;
  twoFactorToken: string;
  warpUpdateInterval: number;
  webBasePath: string;
  webCertFile: string;
  webDomain: string;
  webKeyFile: string;
  webListen: string;
  webPort: number;
}

export interface AllSettingView {
  datepicker: string;
  expireDiff: number;
  externalTrafficInformEnable: boolean;
  externalTrafficInformURI: string;
  hasApiToken: boolean;
  hasLdapPassword: boolean;
  hasNordSecret: boolean;
  hasSmtpPassword: boolean;
  hasTgBotToken: boolean;
  hasTwoFactorToken: boolean;
  hasWarpSecret: boolean;
  ipLimitAllowlist: string;
  ldapAutoCreate: boolean;
  ldapAutoDelete: boolean;
  ldapBaseDN: string;
  ldapBindDN: string;
  ldapDefaultExpiryDays: number;
  ldapDefaultLimitIP: number;
  ldapDefaultTotalGB: number;
  ldapEnable: boolean;
  ldapFlagField: string;
  ldapHost: string;
  ldapInboundTags: string;
  ldapInsecureSkipVerify: boolean;
  ldapInvertFlag: boolean;
  ldapPassword: string;
  ldapPort: number;
  ldapSyncCron: string;
  ldapTruthyValues: string;
  ldapUseTLS: boolean;
  ldapUserAttr: string;
  ldapUserFilter: string;
  ldapVlessField: string;
  outboundDownThreshold: number;
  pageSize: number;
  panelOutbound: string;
  remarkTemplate: string;
  restartXrayOnClientDisable: boolean;
  sessionMaxAge: number;
  smtpCpu: number;
  smtpEnable: boolean;
  smtpEnabledEvents: string;
  smtpEncryptionType: string;
  smtpFrom: string;
  smtpFromName: string;
  smtpHost: string;
  smtpMemory: number;
  smtpPassword: string;
  smtpPort: number;
  smtpTo: string;
  smtpUsername: string;
  subAnnounce: string;
  subCertFile: string;
  subClashAutoDetect: boolean;
  subClashEnable: boolean;
  subClashEnableRouting: boolean;
  subClashPath: string;
  subClashRules: string;
  subClashURI: string;
  subClashUserAgentRegex: string;
  subDomain: string;
  subEnable: boolean;
  subEnableRouting: boolean;
  subEncrypt: boolean;
  subHideSettings: boolean;
  subIncyEnableRouting: boolean;
  subIncyRoutingRules: string;
  subJsonAlwaysArray: boolean;
  subJsonAutoDetect: boolean;
  subJsonEnable: boolean;
  subJsonFinalMask: string;
  subJsonMux: string;
  subJsonObservatory: string;
  subJsonPath: string;
  subJsonRules: string;
  subJsonURI: string;
  subJsonUserAgentRegex: string;
  subKeyFile: string;
  subListen: string;
  subPath: string;
  subPort: number;
  subProfileUrl: string;
  subRoutingRules: string;
  subShowIdentityOnAllLinks: boolean;
  subSupportUrl: string;
  subThemeDir: string;
  subTitle: string;
  subURI: string;
  subUpdates: number;
  tgBotAPIServer: string;
  tgBotBackup: boolean;
  tgBotChatId: string;
  tgBotEnable: boolean;
  tgBotProxy: string;
  tgBotToken: string;
  tgCpu: number;
  tgEnabledEvents: string;
  tgLang: string;
  tgMemory: number;
  tgRunTime: string;
  timeLocation: string;
  trafficDiff: number;
  trustedProxyCIDRs: string;
  twoFactorEnable: boolean;
  twoFactorToken: string;
  warpUpdateInterval: number;
  webBasePath: string;
  webCertFile: string;
  webDomain: string;
  webKeyFile: string;
  webListen: string;
  webPort: number;
}

export interface AmneziaWGLogs {
  events: string[];
  peers: PeerActivity[];
  running: boolean;
}

export interface ApiToken {
  createdAt: number;
  enabled: boolean;
  expiresAt: number;
  id: number;
  name: string;
  scope: string;
  token: string;
}

export interface ApiTokenView {
  createdAt: number;
  enabled: boolean;
  expiresAt: number;
  id: number;
  name: string;
  scope: string;
  token?: string;
}

export interface Client {
  adTag?: string;
  allowedIPs?: string[];
  allowedIPsByInbound?: Record<number, string[]>;
  auth?: string;
  comment: string;
  created_at?: number;
  email: string;
  enable: boolean;
  expiryTime: number;
  flow?: string;
  forwardedPorts?: string;
  group?: string;
  id?: string;
  keepAlive?: number;
  limitIp: number;
  password?: string;
  preSharedKey?: string;
  privateKey?: string;
  publicKey?: string;
  reset: number;
  resetDay: number;
  resetMax: number;
  reverse?: ClientReverse | null;
  secret?: string;
  security: string;
  subId: string;
  tgId: number;
  totalGB: number;
  trafficReset?: string;
  trafficResetDay?: number;
  updated_at?: number;
}

export interface ClientInbound {
  clientId: number;
  createdAt: number;
  flowOverride: string;
  inboundId: number;
}

export interface ClientPageResponse {
  filtered: number;
  groups: string[];
  items: ClientSlim[];
  page: number;
  pageSize: number;
  summary: ClientsSummary;
  total: number;
}

export interface ClientRecord {
  adTag: string;
  allowedIPs: string;
  auth: string;
  comment: string;
  createdAt: number;
  email: string;
  enable: boolean;
  expiryTime: number;
  flow: string;
  forwardedPorts: string;
  group: string;
  id: number;
  keepAlive: number;
  limitHwid: number;
  limitIp: number;
  password: string;
  preSharedKey: string;
  privateKey: string;
  publicKey: string;
  reset: number;
  resetDay: number;
  resetMax: number;
  reverse: unknown;
  secret: string;
  security: string;
  subId: string;
  tgId: number;
  totalGB: number;
  trafficReset: string;
  trafficResetDay: number;
  updatedAt: number;
  uuid: string;
}

export interface ClientReverse {
  tag: string;
}

export interface ClientSlim {
  comment?: string;
  createdAt: number;
  email: string;
  enable: boolean;
  expiryTime: number;
  group?: string;
  inboundIds: number[];
  limitHwid: number;
  limitIp: number;
  reset: number;
  resetDay: number;
  resetMax: number;
  subId: string;
  totalGB: number;
  traffic?: ClientTraffic | null;
  updatedAt: number;
}

export interface ClientTraffic {
  down: number;
  email: string;
  enable: boolean;
  expiryTime: number;
  id: number;
  inboundId: number;
  lastOnline: number;
  lastSubFetch: number;
  reset: number;
  resetCount: number;
  resetDay: number;
  resetMax: number;
  subId: string;
  total: number;
  up: number;
  uuid: string;
}

export interface ClientsSummary {
  active: number;
  deactive: string[];
  deactiveCount: number;
  depleted: string[];
  depletedCount: number;
  expiring: string[];
  expiringCount: number;
  online: string[];
  onlineCount: number;
  total: number;
}

export interface FallbackParentInfo {
  masterId: number;
  path?: string;
}

export interface GeoCategory {
  attributes: string[];
  code: string;
  entries: number;
}

export interface GeoCategoryPage {
  items: GeoCategory[];
  total: number;
}

export interface GeoEntry {
  kind: string;
  value: string;
}

export interface GeoEntryPage {
  items: GeoEntry[];
  total: number;
}

export interface GeoFile {
  categories: number;
  error?: string;
  kind: GeoKind;
  modifiedAt: number;
  name: string;
  size: number;
}

export interface GeodataTokenIssue {
  code?: string;
  file?: string;
  reason: string;
  token: string;
}

export interface HistoryOfSeeders {
  id: number;
  seederName: string;
}

export interface Host {
  address: string;
  allowInsecure: boolean;
  alpn: string[];
  createdAt: number;
  echConfigList: string;
  excludeFromSubTypes: string[];
  finalMask: string;
  fingerprint: string;
  groupId: string;
  hostHeader: string;
  id: number;
  inboundId: number;
  isDisabled: boolean;
  isHidden: boolean;
  keepSniBlank: boolean;
  mihomoIpVersion: string;
  mihomoX25519: boolean;
  muxParams: unknown;
  nodeGuids?: string[];
  overrideSniFromAddress: boolean;
  path: string;
  pinnedPeerCertSha256: string[];
  port: number;
  remark: string;
  security: string;
  serverDescription: string;
  shuffleHost: boolean;
  sni: string;
  sockoptParams: unknown;
  sortOrder: number;
  tags: string[];
  updatedAt: number;
  verifyPeerCertByName: string;
  vlessRoute: string;
}

export interface HostGroup {
  allowInsecure: boolean;
  alpn: string[];
  echConfigList: string;
  excludeFromSubTypes: string[];
  finalMask: string;
  fingerprint: string;
  groupId: string;
  hostHeader: string;
  hosts: string[];
  inboundIds: number[];
  isDisabled: boolean;
  isHidden: boolean;
  keepSniBlank: boolean;
  mihomoIpVersion: string;
  mihomoX25519: boolean;
  muxParams: string;
  nodeGuids: string[];
  overrideSniFromAddress: boolean;
  path: string;
  pinnedPeerCertSha256: string[];
  port: number;
  remark: string;
  security: string;
  serverDescription: string;
  shuffleHost: boolean;
  sni: string;
  sockoptParams: string;
  sortOrder: number;
  tags: string[];
  verifyPeerCertByName: string;
  vlessRoute: string;
}

export interface Inbound {
  clientStats: ClientTraffic[];
  disableFlow: boolean;
  down: number;
  enable: boolean;
  expiryTime: number;
  fallbackParent?: FallbackParentInfo | null;
  id: number;
  lastTrafficResetTime: number;
  listen: string;
  nodeId?: number | null;
  originNodeGuid?: string;
  port: number;
  protocol: Protocol;
  remark: string;
  settings: unknown;
  shareAddr: string;
  shareAddrStrategy: string;
  sniffing: unknown;
  streamSettings: unknown;
  subSortIndex: number;
  tag: string;
  total: number;
  trafficReset: string;
  trafficResetDay: number;
  up: number;
}

export interface InboundClientIps {
  clientEmail: string;
  id: number;
  ips: unknown;
}

export interface InboundFallback {
  alpn: string;
  childId: number;
  dest: string;
  id: number;
  masterId: number;
  name: string;
  path: string;
  sortOrder: number;
  xver: number;
}

export interface InboundOption {
  awgServer?: ServerSettings | null;
  enable: boolean;
  id: number;
  listen?: string;
  mtprotoDomain?: string;
  nodeAddress?: string;
  nodeId?: number | null;
  port: number;
  protocol: string;
  remark: string;
  shareAddr?: string;
  shareAddrStrategy?: string;
  ssMethod: string;
  tag: string;
  tlsFlowCapable: boolean;
  wgDns?: string;
  wgMtu?: number;
  wgPublicKey?: string;
}

export interface InboundTrafficSummary {
  down: number;
  enable: boolean;
  id: number;
  total: number;
  up: number;
}

export interface LogEntry {
  DateTime: string;
  Email: string;
  Event: number;
  FromAddress: string;
  Inbound: string;
  Outbound: string;
  ToAddress: string;
}

export interface MLDSA65Response {
  seed: string;
  verify: string;
}

export interface MLKEM768Response {
  client: string;
  seed: string;
}

export interface Msg {
  msg: string;
  obj: unknown;
  success: boolean;
}

export interface NewUUIDResponse {
  uuid: string;
}

export interface Node {
  activeCount: number;
  address: string;
  allowPrivateAddress: boolean;
  basePath: string;
  clientCount: number;
  configDirty: boolean;
  configDirtyAt: number;
  cpuPct: number;
  createdAt: number;
  depletedCount: number;
  disabledCount: number;
  enable: boolean;
  guid: string;
  id: number;
  inboundCount: number;
  inboundSyncMode: string;
  inboundTags: string[];
  lastError: string;
  lastHeartbeat: number;
  latencyMs: number;
  memPct: number;
  name: string;
  netDown: number;
  netUp: number;
  onlineCount: number;
  outboundTag: string;
  panelVersion: string;
  parentGuid?: string;
  pinnedCertSha256: string;
  port: number;
  remark: string;
  scheme: string;
  status: string;
  tlsVerifyMode: string;
  transitive?: boolean;
  updatedAt: number;
  uptimeSecs: number;
  xrayError: string;
  xrayState: string;
  xrayVersion: string;
}

export interface NodeMutationRequest {
  address: string;
  allowPrivateAddress: boolean;
  apiToken?: string | null;
  basePath: string;
  clearApiToken?: boolean;
  enable: boolean;
  id: number;
  inboundSyncMode: string;
  inboundTags: string[];
  name: string;
  outboundTag: string;
  pinnedCertSha256: string;
  port: number;
  remark: string;
  scheme: string;
  tlsVerifyMode: string;
}

export interface NodeView {
  activeCount: number;
  address: string;
  allowPrivateAddress: boolean;
  basePath: string;
  clientCount: number;
  configDirty: boolean;
  configDirtyAt: number;
  cpuPct: number;
  createdAt: number;
  depletedCount: number;
  disabledCount: number;
  enable: boolean;
  guid: string;
  hasApiToken: boolean;
  id: number;
  inboundCount: number;
  inboundSyncMode: string;
  inboundTags: string[];
  lastError: string;
  lastHeartbeat: number;
  latencyMs: number;
  memPct: number;
  name: string;
  netDown: number;
  netUp: number;
  onlineCount: number;
  outboundTag: string;
  panelVersion: string;
  parentGuid?: string;
  pinnedCertSha256: string;
  port: number;
  remark: string;
  scheme: string;
  status: string;
  tlsVerifyMode: string;
  transitive?: boolean;
  updatedAt: number;
  uptimeSecs: number;
  xrayError: string;
  xrayState: string;
  xrayVersion: string;
}

export interface OutboundTraffics {
  down: number;
  id: number;
  tag: string;
  total: number;
  up: number;
}

export interface PanelUpdateStatus {
  exitCode: number;
  finishedAt: number;
  runId: string;
  state: string;
}

export interface PeerActivity {
  allowedIPs: string;
  down: number;
  email: string;
  endpoint: string;
  handshake: number;
  inboundId: number;
  interface: string;
  online: boolean;
  tag: string;
  up: number;
}

export interface ProbeResultUI {
  cpuPct: number;
  error: string;
  latencyMs: number;
  memPct: number;
  panelVersion: string;
  status: string;
  uptimeSecs: number;
  xrayError: string;
  xrayState: string;
  xrayVersion: string;
}

export interface RealityScanResult {
  alpn: string;
  certChainValid: boolean;
  certIssuer: string;
  certSubject: string;
  certValid: boolean;
  curveID: string;
  feasible: boolean;
  h2: boolean;
  host: string;
  ip: string;
  latencyMs: number;
  notAfter: string;
  port: number;
  privateTarget: boolean;
  reason: string;
  serverNames: string[];
  target: string;
  tls13: boolean;
  tlsVersion: string;
  x25519: boolean;
}

export interface ServerSettings {
  contentPaddingAddition?: string;
  disableCookies: boolean;
  externalInterface?: string;
  h1: string;
  h2: string;
  h3: string;
  h4: string;
  headerProtectionKey?: string;
  i1?: string;
  i2?: string;
  i3?: string;
  i4?: string;
  i5?: string;
  ipv6Enabled?: boolean;
  ipv6ExternalInterface?: string;
  ipv6Subnet?: string;
  jc: number;
  jmax: number;
  jmin: number;
  keepaliveTimeout?: string;
  maxHandshakeAttempts?: string;
  mtu?: number;
  primaryDns: string;
  privateKey: string;
  publicKey: string;
  randomTrailers: boolean;
  rejectAfterTime?: string;
  rekeyAfterTime?: string;
  rekeyTimeout?: string;
  routeThroughXray?: boolean;
  s1: number;
  s2: number;
  s3: number;
  s4: number;
  secondaryDns: string;
  subnetCidr: number;
  subnetIp: string;
}

export interface Setting {
  id: number;
  key: string;
  value: string;
}

export interface SubBalancer {
  createdAt: number;
  enabled: boolean;
  id: number;
  inboundIds: number[];
  memberWeights?: Record<number, number>;
  remark: string;
  sortOrder: number;
  strategy: string;
  updatedAt: number;
}

export interface Traffic {
  Down: number;
  IsInbound: boolean;
  IsOutbound: boolean;
  Tag: string;
  Up: number;
}

export interface User {
  id: number;
  password: string;
  username: string;
}

