import * as url from 'url';
import { SockDaemonClient } from 'sock-daemon/client';
import { Server } from '../index.js';
import { ServerOptions } from '../state.js';
import { MessageBase } from 'sock-daemon/server';
import '../db.js';
import '@electric-sql/pglite';
import 'valibot';

type Kind = "START_SERVER" | "STOP_SERVER";
type RequestMessage = MessageBase & {
    kind: Kind;
    args?: unknown;
};
type ResponseMessage = MessageBase & {
    kind: Kind;
    result?: unknown;
};

declare class MyServiceClient extends SockDaemonClient<RequestMessage, ResponseMessage> {
    static get serviceName(): string;
    static get daemonScript(): url.URL;
    isResponse(msg: unknown): msg is ResponseMessage;
    stopServer(): Promise<void>;
    startServer(options: ServerOptions): Promise<Server>;
}

export { MyServiceClient };
