import { DevToolsInternalContext, InternalAnonymousAuthStorage } from "devframe/node";
import * as _$_vitejs_devtools_kit0 from "@vitejs/devtools-kit";
import { DevToolsDockEntry, DevToolsDocksUserSettings, DevToolsMessageEntry, DevToolsNodeContext, DevToolsServerCommandEntry, RpcDefinitionsToFunctions, ViteDevToolsNodeContext } from "@vitejs/devtools-kit";
import * as _$h3 from "h3";
import { SharedStatePatch } from "devframe/utils/shared-state";
import { Plugin, ResolvedConfig, ViteDevServer } from "vite";
import * as _$devframe from "devframe";
import * as _$devframe_rpc0 from "devframe/rpc";
import * as _$birpc from "birpc";

//#region src/node/context.d.ts
declare function createDevToolsContext(viteConfig: ResolvedConfig, viteServer?: ViteDevServer): Promise<ViteDevToolsNodeContext>;
//#endregion
//#region src/node/rpc/anonymous/auth.d.ts
interface DevToolsAuthInput {
  authToken: string;
  ua: string;
  origin: string;
}
interface DevToolsAuthReturn {
  isTrusted: boolean;
}
//#endregion
//#region src/node/rpc/internal/messages-list.d.ts
interface MessagesListResult {
  entries: DevToolsMessageEntry[];
  removedIds: string[];
  /** The version cursor — pass back as `since` on next call */
  version: number;
}
//#endregion
//#region src/node/rpc/index.d.ts
declare const builtinRpcDeclarations: readonly [{
  name: "vite:core:open-in-editor";
  type?: "action" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[path: string], Promise<void>>>) | undefined;
  handler?: ((path: string) => Promise<void>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[path: string], Promise<void>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[path: string], Promise<void>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[path: string], Promise<void>>> | undefined;
}, {
  name: "vite:core:open-in-finder";
  type?: "action" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[path: string], Promise<void>>>) | undefined;
  handler?: ((path: string) => Promise<void>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[path: string], Promise<void>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[path: string], Promise<void>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[path: string], Promise<void>>> | undefined;
}, {
  name: "vite:anonymous:auth";
  type?: "action" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[query: DevToolsAuthInput], Promise<DevToolsAuthReturn>>>) | undefined;
  handler?: ((query: DevToolsAuthInput) => Promise<DevToolsAuthReturn>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[query: DevToolsAuthInput], Promise<DevToolsAuthReturn>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[query: DevToolsAuthInput], Promise<DevToolsAuthReturn>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[query: DevToolsAuthInput], Promise<DevToolsAuthReturn>>> | undefined;
}, {
  name: "devtoolskit:internal:commands:execute";
  type?: "action" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[id: string, ...args: any[]], Promise<unknown>>>) | undefined;
  handler?: ((id: string, ...args: any[]) => Promise<unknown>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[id: string, ...args: any[]], Promise<unknown>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[id: string, ...args: any[]], Promise<unknown>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[id: string, ...args: any[]], Promise<unknown>>> | undefined;
}, {
  name: "devtoolskit:internal:commands:list";
  type?: "static" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[], Promise<DevToolsServerCommandEntry[]>>>) | undefined;
  handler?: (() => Promise<DevToolsServerCommandEntry[]>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[], Promise<DevToolsServerCommandEntry[]>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[], Promise<DevToolsServerCommandEntry[]>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[], Promise<DevToolsServerCommandEntry[]>>> | undefined;
}, {
  name: "devtoolskit:internal:docks:on-launch";
  type?: "action" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[entryId: string], Promise<void>>>) | undefined;
  handler?: ((entryId: string) => Promise<void>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[entryId: string], Promise<void>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[entryId: string], Promise<void>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[entryId: string], Promise<void>>> | undefined;
}, {
  name: "devtoolskit:internal:messages:add";
  type?: "action" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[input: _$_vitejs_devtools_kit0.DevToolsMessageEntryInput], Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry>>>) | undefined;
  handler?: ((input: _$_vitejs_devtools_kit0.DevToolsMessageEntryInput) => Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[input: _$_vitejs_devtools_kit0.DevToolsMessageEntryInput], Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[input: _$_vitejs_devtools_kit0.DevToolsMessageEntryInput], Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[input: _$_vitejs_devtools_kit0.DevToolsMessageEntryInput], Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry>>> | undefined;
}, {
  name: "devtoolskit:internal:messages:clear";
  type?: "action" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[], Promise<void>>>) | undefined;
  handler?: (() => Promise<void>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[], Promise<void>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[], Promise<void>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[], Promise<void>>> | undefined;
}, {
  name: "devtoolskit:internal:messages:list";
  type?: "static" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[since?: number | undefined], Promise<MessagesListResult>>>) | undefined;
  handler?: ((since?: number | undefined) => Promise<MessagesListResult>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[since?: number | undefined], Promise<MessagesListResult>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[since?: number | undefined], Promise<MessagesListResult>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[since?: number | undefined], Promise<MessagesListResult>>> | undefined;
}, {
  name: "devtoolskit:internal:messages:remove";
  type?: "action" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[id: string], Promise<void>>>) | undefined;
  handler?: ((id: string) => Promise<void>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[id: string], Promise<void>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[id: string], Promise<void>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[id: string], Promise<void>>> | undefined;
}, {
  name: "devtoolskit:internal:messages:update";
  type?: "action" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[id: string, patch: Partial<_$_vitejs_devtools_kit0.DevToolsMessageEntryInput>], Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry | null>>>) | undefined;
  handler?: ((id: string, patch: Partial<_$_vitejs_devtools_kit0.DevToolsMessageEntryInput>) => Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry | null>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[id: string, patch: Partial<_$_vitejs_devtools_kit0.DevToolsMessageEntryInput>], Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry | null>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[id: string, patch: Partial<_$_vitejs_devtools_kit0.DevToolsMessageEntryInput>], Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry | null>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[id: string, patch: Partial<_$_vitejs_devtools_kit0.DevToolsMessageEntryInput>], Promise<_$_vitejs_devtools_kit0.DevToolsMessageEntry | null>>> | undefined;
}, {
  name: "devtoolskit:internal:rpc:server:list";
  type?: "static" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[], Promise<{
    [k: string]: {
      type: any;
      cacheable: boolean;
    };
  }>>>) | undefined;
  handler?: (() => Promise<{
    [k: string]: {
      type: any;
      cacheable: boolean;
    };
  }>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[], Promise<{
    [k: string]: {
      type: any;
      cacheable: boolean;
    };
  }>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[], Promise<{
    [k: string]: {
      type: any;
      cacheable: boolean;
    };
  }>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[], Promise<{
    [k: string]: {
      type: any;
      cacheable: boolean;
    };
  }>>> | undefined;
}, {
  name: "devtoolskit:internal:terminals:list";
  type?: "static" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[], Promise<_$_vitejs_devtools_kit0.DevToolsTerminalSessionBase[]>>>) | undefined;
  handler?: (() => Promise<_$_vitejs_devtools_kit0.DevToolsTerminalSessionBase[]>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[], Promise<_$_vitejs_devtools_kit0.DevToolsTerminalSessionBase[]>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[], Promise<_$_vitejs_devtools_kit0.DevToolsTerminalSessionBase[]>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[], Promise<_$_vitejs_devtools_kit0.DevToolsTerminalSessionBase[]>>> | undefined;
}, {
  name: "devtoolskit:internal:terminals:read";
  type?: "query" | undefined;
  cacheable?: boolean;
  args?: undefined;
  returns?: undefined;
  jsonSerializable?: boolean;
  agent?: _$devframe.RpcFunctionAgentOptions;
  setup?: ((context: _$_vitejs_devtools_kit0.ViteDevToolsNodeContext) => _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[id: string], Promise<{
    buffer: string[];
    ts: number;
  }>>>) | undefined;
  handler?: ((id: string) => Promise<{
    buffer: string[];
    ts: number;
  }>) | undefined;
  dump?: _$devframe_rpc0.RpcDump<[id: string], Promise<{
    buffer: string[];
    ts: number;
  }>, _$_vitejs_devtools_kit0.ViteDevToolsNodeContext> | undefined;
  snapshot?: boolean;
  __resolved?: _$devframe_rpc0.RpcFunctionSetupResult<[id: string], Promise<{
    buffer: string[];
    ts: number;
  }>> | undefined;
  __promise?: _$devframe_rpc0.Thenable<_$devframe_rpc0.RpcFunctionSetupResult<[id: string], Promise<{
    buffer: string[];
    ts: number;
  }>>> | undefined;
}];
type BuiltinServerFunctions = RpcDefinitionsToFunctions<typeof builtinRpcDeclarations>;
declare module '@vitejs/devtools-kit' {
  interface DevToolsRpcServerFunctions extends BuiltinServerFunctions {}
  interface DevToolsRpcClientFunctions {
    'devframe:auth:revoked': () => Promise<void>;
    'devframe:messages:updated': () => Promise<void>;
    'devframe:rpc:client-state:patch': (key: string, patches: SharedStatePatch[], syncId: string) => Promise<void>;
    'devframe:rpc:client-state:updated': (key: string, fullState: any, syncId: string) => Promise<void>;
    'devframe:terminals:updated': () => Promise<void>;
  }
  interface DevToolsRpcSharedStates {
    'devframe:commands': DevToolsServerCommandEntry[];
    'devframe:docks': DevToolsDockEntry[];
    'devframe:user-settings': DevToolsDocksUserSettings;
  }
}
//#endregion
//#region src/node/plugins/index.d.ts
interface DevToolsOptions {
  /**
   * Include the Vite builtin devtools UI.
   *
   * @default true
   */
  builtinDevTools?: boolean;
  /**
   * Options for building static DevTools output alongside `vite build`.
   */
  build?: {
    /**
     * Automatically build DevTools when running `vite build`.
     *
     * @default false
     */
    withApp?: boolean;
    /**
     * Output directory for the DevTools build (relative to root).
     * Defaults to Vite's `build.outDir`.
     */
    outDir?: string;
  };
}
declare function DevTools(options?: DevToolsOptions): Promise<Plugin[]>;
//#endregion
//#region src/node/ws.d.ts
interface CreateWsServerOptions {
  cwd: string;
  websocket: {
    port?: number;
    host: string;
    https?: DevToolsNodeContext['viteConfig']['server']['https'] | false;
  };
  base?: string;
  context: DevToolsNodeContext;
}
//#endregion
//#region src/node/server.d.ts
declare function createDevToolsMiddleware(options: CreateWsServerOptions): Promise<{
  h3: _$h3.App;
  rpc: _$birpc.BirpcGroup<_$devframe.DevToolsRpcClientFunctions, _$devframe.DevToolsRpcServerFunctions, false>;
  middleware: _$h3.NodeListener;
  getConnectionMeta: () => Promise<_$devframe.ConnectionMeta>;
}>;
//#endregion
export { type BuiltinServerFunctions, DevTools, type DevToolsInternalContext, type InternalAnonymousAuthStorage, createDevToolsContext, createDevToolsMiddleware };