/**
 * Copyright 2025 The Artinet Project
 * SPDX-License-Identifier: Apache-2.0
 */
import { A2A } from "../types/index.js";
import { Agent, ServiceParams as CreateAgentParams } from "../services/a2a/index.js";
import { ExtendedAgentCardProvider } from "@a2a-js/sdk/server";
import { UserBuilder } from "@a2a-js/sdk/server/express";
export interface ServerParams {
    basePath?: string;
    port?: number;
    /**
     * Your agentCard must have {@link A2A.AgentCard.supportsAuthenticatedExtendedCard} set to true
     */
    extendedAgentCard?: A2A.AgentCard | ExtendedAgentCardProvider;
    agent: Agent | CreateAgentParams;
    agentCardPath?: string;
    register?: boolean;
    userBuilder?: UserBuilder;
}
export declare function isCreateAgentParams(agentOrParams: Agent | CreateAgentParams): agentOrParams is CreateAgentParams;
export declare function ensureAgent(agentOrParams: Agent | CreateAgentParams): Agent;
export declare function registerAgent(agentCard: A2A.AgentCard): Promise<{
    protocolVersion: string;
    name: string;
    description: string;
    url: string;
    version: string;
    capabilities: {
        streaming?: boolean | undefined;
        pushNotifications?: boolean | undefined;
        stateTransitionHistory?: boolean | undefined;
        extensions?: {
            uri: string;
            description?: string | undefined;
            required?: boolean | undefined;
            params?: Record<string, unknown> | undefined;
        }[] | undefined;
    };
    defaultInputModes: string[];
    defaultOutputModes: string[];
    skills: {
        id: string;
        name: string;
        description: string;
        tags: string[];
        examples?: string[] | undefined;
        inputModes?: string[] | undefined;
        outputModes?: string[] | undefined;
        security?: Record<string, string[]>[] | undefined;
    }[];
    preferredTransport?: string | undefined;
    additionalInterfaces?: {
        url: string;
        transport: string;
    }[] | undefined;
    iconUrl?: string | undefined;
    provider?: {
        organization: string;
        url: string;
    } | undefined;
    documentationUrl?: string | undefined;
    securitySchemes?: Record<string, {
        type: "apiKey";
        in: "query" | "header" | "cookie";
        name: string;
        description?: string | undefined;
    } | {
        type: "http";
        scheme: string;
        description?: string | undefined;
        bearerFormat?: string | undefined;
    } | {
        type: "oauth2";
        flows: {
            authorizationCode?: {
                authorizationUrl: string;
                tokenUrl: string;
                scopes: Record<string, string>;
                refreshUrl?: string | undefined;
            } | undefined;
            clientCredentials?: {
                tokenUrl: string;
                scopes: Record<string, string>;
                refreshUrl?: string | undefined;
            } | undefined;
            implicit?: {
                authorizationUrl: string;
                scopes: Record<string, string>;
                refreshUrl?: string | undefined;
            } | undefined;
            password?: {
                tokenUrl: string;
                scopes: Record<string, string>;
                refreshUrl?: string | undefined;
            } | undefined;
        };
        description?: string | undefined;
        oauth2MetadataUrl?: string | undefined;
    } | {
        type: "openIdConnect";
        openIdConnectUrl: string;
        description?: string | undefined;
    } | {
        type: "mutualTLS";
        description?: string | undefined;
    }> | undefined;
    security?: Record<string, string[]>[] | undefined;
    supportsAuthenticatedExtendedCard?: boolean | undefined;
    signatures?: {
        protected: string;
        signature: string;
        header?: Record<string, unknown> | undefined;
    }[] | undefined;
}>;
