import type { RuntimeEventDomain } from '../runtime/events/index.js';
export type GatewayMethodTransport = 'http' | 'ws' | 'internal';
export type GatewayMethodSource = 'builtin' | 'plugin';
export type GatewayMethodAccess = 'public' | 'authenticated' | 'admin' | 'remote-peer';
export type GatewayEventTransport = 'sse' | 'ws' | 'internal';
export interface GatewayHttpBinding {
    readonly method: 'GET' | 'POST' | 'PATCH' | 'DELETE';
    readonly path: string;
}
export interface GatewayMethodDescriptor {
    readonly id: string;
    readonly title: string;
    readonly description: string;
    readonly category: string;
    readonly source: GatewayMethodSource;
    readonly access: GatewayMethodAccess;
    readonly transport: readonly GatewayMethodTransport[];
    readonly scopes: readonly string[];
    readonly http?: GatewayHttpBinding | undefined;
    readonly events?: readonly string[] | undefined;
    readonly inputSchema?: Record<string, unknown> | undefined;
    readonly outputSchema?: Record<string, unknown> | undefined;
    readonly pluginId?: string | undefined;
    readonly dangerous?: boolean | undefined;
    readonly invokable?: boolean | undefined;
    readonly metadata?: Record<string, unknown> | undefined;
}
export interface GatewayEventDescriptor {
    readonly id: string;
    readonly title: string;
    readonly description: string;
    readonly category: string;
    readonly source: GatewayMethodSource;
    readonly transport: readonly GatewayEventTransport[];
    readonly scopes: readonly string[];
    readonly domains?: readonly RuntimeEventDomain[] | undefined;
    readonly wireEvents?: readonly string[] | undefined;
    readonly outputSchema?: Record<string, unknown> | undefined;
    readonly pluginId?: string | undefined;
    readonly metadata?: Record<string, unknown> | undefined;
}
export interface GatewayMethodInvocationContext {
    readonly principalId?: string | undefined;
    readonly principalKind?: 'user' | 'bot' | 'service' | 'token' | 'remote-peer' | undefined;
    readonly admin?: boolean | undefined;
    readonly scopes?: readonly string[] | undefined;
    readonly clientKind?: string | undefined;
    readonly authToken?: string | undefined;
    readonly metadata?: Record<string, unknown> | undefined;
}
export interface GatewayMethodInvocation {
    readonly body?: unknown | undefined;
    readonly query?: Record<string, unknown> | undefined;
    readonly context: GatewayMethodInvocationContext;
}
export type GatewayMethodHandler = (input: GatewayMethodInvocation) => unknown | Promise<unknown>;
export interface GatewayMethodListOptions {
    readonly category?: string | undefined;
    readonly source?: GatewayMethodSource | undefined;
    readonly pluginId?: string | undefined;
}
export interface GatewayEventListOptions {
    readonly category?: string | undefined;
    readonly source?: GatewayMethodSource | undefined;
    readonly pluginId?: string | undefined;
    readonly domain?: RuntimeEventDomain | undefined;
}
export declare const EMPTY_OBJECT_SCHEMA: {
    readonly type: "object";
    readonly properties: {};
    readonly additionalProperties: false;
};
export declare const STRING_SCHEMA: {
    readonly type: "string";
};
export declare const BOOLEAN_SCHEMA: {
    readonly type: "boolean";
};
export declare const NUMBER_SCHEMA: {
    readonly type: "number";
};
export declare const JSON_VALUE_SCHEMA: Record<string, unknown>;
export declare const JSON_OBJECT_SCHEMA: Record<string, unknown>;
export declare const JSON_ARRAY_SCHEMA: Record<string, unknown>;
export declare function arraySchema(itemSchema: Record<string, unknown>): Record<string, unknown>;
export declare function objectSchema(properties: Record<string, Record<string, unknown>>, required?: readonly string[], options?: {
    readonly additionalProperties?: boolean;
}): Record<string, unknown>;
export declare const GATEWAY_HTTP_BINDING_SCHEMA: Record<string, unknown>;
export declare const METHOD_DESCRIPTOR_SCHEMA: Record<string, unknown>;
export declare const EVENT_DESCRIPTOR_SCHEMA: Record<string, unknown>;
export declare function listOutputSchema(key: string, itemSchema: Record<string, unknown>): Record<string, unknown>;
export declare function entityOutputSchema(key: string, entitySchema: Record<string, unknown>): Record<string, unknown>;
export declare function actionResultOutputSchema(key: string, entitySchema: Record<string, unknown>): Record<string, unknown>;
export declare function bodyEnvelopeSchema(properties?: Record<string, Record<string, unknown>>, required?: readonly string[]): Record<string, unknown>;
export declare function methodDescriptor(input: Omit<GatewayMethodDescriptor, 'source' | 'transport' | 'access'> & Partial<Pick<GatewayMethodDescriptor, 'source' | 'transport' | 'access'>>): GatewayMethodDescriptor;
export declare function eventDescriptor(input: Omit<GatewayEventDescriptor, 'source'> & Partial<Pick<GatewayEventDescriptor, 'source'>>): GatewayEventDescriptor;
export declare function runtimeEventId(domain: RuntimeEventDomain): string;
export declare function runtimeDomainEvent(domain: RuntimeEventDomain, description: string): GatewayEventDescriptor;
//# sourceMappingURL=method-catalog-shared.d.ts.map