import * as grpc from '@grpc/grpc-js'; import type { ChannelCredentials, ClientOptions, ServiceDefinition, ClientUnaryCall, ClientReadableStream, ClientDuplexStream, Metadata, CallOptions, ServiceError } from '@grpc/grpc-js'; import type { SessionConfig, CreateSessionResponse, DestroyRequest, DestroyResponse, SessionInfoRequest, SessionInfo, HealthRequest, HealthResponse, InjectMessageRequest, RemoveMessageRequest, GetContextRequest, GetContextResponse, ClearContextRequest, ContextOpResult, ClientEvent, RuntimeEvent, DispatchRequest, DispatchResponse, TerminateRequest, TerminateResponse } from './types.js'; /** Node-style callback for a unary RPC: receives an error or the response value. */ export type UnaryCallback = (err: ServiceError | null, value?: T) => void; /** Strongly-typed client for the Zero Runtime agent service; unary RPCs are callback-style, streaming RPCs return a duplex stream. */ export interface AgentRuntimeClient extends grpc.Client { /** Create a new agent session from the given configuration. */ CreateSession(request: SessionConfig, callback: UnaryCallback): ClientUnaryCall; CreateSession(request: SessionConfig, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; CreateSession(request: SessionConfig, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; /** Destroy an existing session, ending the call. */ DestroySession(request: DestroyRequest, callback: UnaryCallback): ClientUnaryCall; DestroySession(request: DestroyRequest, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; DestroySession(request: DestroyRequest, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; /** Fetch the current state and metadata of a session. */ GetSessionInfo(request: SessionInfoRequest, callback: UnaryCallback): ClientUnaryCall; GetSessionInfo(request: SessionInfoRequest, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; GetSessionInfo(request: SessionInfoRequest, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; /** Check service health, including active vs. maximum session counts. */ Health(request: HealthRequest, callback: UnaryCallback): ClientUnaryCall; Health(request: HealthRequest, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; Health(request: HealthRequest, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; /** Insert a message into a session's conversation context. */ InjectMessage(request: InjectMessageRequest, callback: UnaryCallback): ClientUnaryCall; InjectMessage(request: InjectMessageRequest, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; InjectMessage(request: InjectMessageRequest, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; /** Remove a message from a session's conversation context by id. */ RemoveMessage(request: RemoveMessageRequest, callback: UnaryCallback): ClientUnaryCall; RemoveMessage(request: RemoveMessageRequest, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; RemoveMessage(request: RemoveMessageRequest, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; /** Retrieve a session's conversation context (optionally the last N messages). */ GetContext(request: GetContextRequest, callback: UnaryCallback): ClientUnaryCall; GetContext(request: GetContextRequest, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; GetContext(request: GetContextRequest, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; /** Clear a session's conversation context, optionally keeping the system prompt. */ ClearContext(request: ClearContextRequest, callback: UnaryCallback): ClientUnaryCall; ClearContext(request: ClearContextRequest, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; ClearContext(request: ClearContextRequest, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; /** Bidirectional event stream: send {@link ClientEvent}s, receive {@link RuntimeEvent}s. */ EventStream(metadata?: Metadata, options?: Partial): ClientDuplexStream; EventStream(options?: Partial): ClientDuplexStream; /** Dispatch a session to a registered agent. */ Dispatch(request: DispatchRequest, callback: UnaryCallback): ClientUnaryCall; Dispatch(request: DispatchRequest, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; Dispatch(request: DispatchRequest, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; /** Terminate a dispatched session. */ Terminate(request: TerminateRequest, callback: UnaryCallback): ClientUnaryCall; Terminate(request: TerminateRequest, metadata: Metadata, callback: UnaryCallback): ClientUnaryCall; Terminate(request: TerminateRequest, metadata: Metadata, options: Partial, callback: UnaryCallback): ClientUnaryCall; } /** Constructor for {@link AgentRuntimeClient}: `(address, credentials, options?)`. */ export interface AgentRuntimeClientConstructor { new (address: string, credentials: ChannelCredentials, options?: Partial): AgentRuntimeClient; service: ServiceDefinition; } /** @internal Build/cache the client constructor from the loaded descriptor; prefer {@link createAgentRuntimeClient}. */ export declare function getAgentRuntimeClientConstructor(): AgentRuntimeClientConstructor; /** Options for {@link createAgentRuntimeClient}. */ export interface CreateClientOptions { /** Explicit credentials; if omitted, {@link selectChannelCredentials} uses `insecure`. */ credentials?: ChannelCredentials; /** Plaintext vs TLS when `credentials` is unset. Defaults to TLS. */ insecure?: boolean; /** Additional channel/client transport options (keep-alive, max message size, ...). */ channelOptions?: Partial; } /** @internal Select channel credentials: TLS by default, plaintext when `insecure`. */ export declare function selectChannelCredentials(insecure?: boolean): ChannelCredentials; /** Create an {@link AgentRuntimeClient} at `address`; credentials from `options.credentials` else {@link selectChannelCredentials}. */ export declare function createAgentRuntimeClient(address: string, options?: CreateClientOptions): AgentRuntimeClient; export type { ClientDuplexStream, ClientReadableStream, ClientUnaryCall, ChannelCredentials };