import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { ServerOptions } from "@modelcontextprotocol/sdk/server/index.js";
import { Implementation, Resource } from "@modelcontextprotocol/sdk/types.js";
import { ZodRawShape, ZodType, ZodTypeDef, ZodOptional } from "zod";
interface HerdOptions {
    token?: string;
    baseUrl?: string;
}
export interface HerdMcpServerOptions {
    info: Implementation;
    mcp?: ServerOptions;
    herd?: HerdOptions;
    transport?: {
        type: "sse" | "stdio";
        port?: number;
        path?: string;
    };
}
type PromptArgsRawShape = {
    [k: string]: ZodType<string, ZodTypeDef, string> | ZodOptional<ZodType<string, ZodTypeDef, string>>;
};
interface ResourceOptions {
    name: string;
    uriOrTemplate: string | ResourceTemplate;
    metadata?: Omit<Resource, "uri" | "name">;
    callback: Function;
}
interface ToolOptions {
    name: string;
    description?: string;
    schema?: ZodRawShape;
}
interface PromptOptions {
    name: string;
    description?: string;
    schema?: PromptArgsRawShape;
    callback: Function;
}
export declare class HerdMcpServer {
    private herd;
    private server;
    private transport?;
    private devices;
    private expressApp?;
    private httpServer?;
    private sseTransport?;
    private transportConfig;
    constructor(options: HerdMcpServerOptions);
    initializeDevices(): Promise<void>;
    resource(options: ResourceOptions, callback: Function): void;
    tool(options: ToolOptions, callback: Function): void;
    prompt(options: PromptOptions, callback: Function): void;
    start(): Promise<void>;
    stop(): Promise<void>;
}
export {};
