import type { A2aAgentCard, A2aAgentRecord, Agent, AgentListQuery, AgentPresenceInfo, Channel, ChannelMemberInfo, CreateObserverTokenRequest, CreateAgentRequest, CreateAgentResponse, UpdateAgentRequest, UpdateObserverTokenRequest, UpdateWorkspaceRequest, Workspace, ObserverToken, CreateWorkspaceResponse, WorkspaceLookup, SystemPrompt, SetSystemPromptRequest, CreateWebhookRequest, CreateWebhookResponse, Webhook, WebhookTriggerRequest, WebhookTriggerResponse, CreateSubscriptionRequest, CreateSubscriptionResponse, EventSubscription, ActivityItem, DmMessage, DmReceivedEvent, WorkspaceDmConversation, TokenRotateResponse, MessageListQuery, MessageCreatedEvent, MessageReadEvent, MessageReactedEvent, MessageUpdatedEvent, MessageWithMeta, ReactionGroup, SpawnAgentRequest, SpawnAgentResponse, ReleaseAgentRequest, ReleaseAgentResponse, RegisterA2aOptions, RegisterA2aResponse, RemoveA2aAgentResponse, DirectoryAgent, DirectorySearchResult, ImportSkillsRequest, PublishToDirectoryRequest, RouteResult, RoutingConfig, SearchDirectoryQuery, UpdateRoutingConfigRequest, ListDirectoryQuery, UpdateDirectoryAgentRequest, DirectoryRating, RateDirectoryAgentRequest, RouteFeedbackRequest, RouteFeedbackResult, SkillSearchQuery, SkillSearchResult, ActionDefinition, RegisterActionRequest, BindAgentToNodeRequest, CreateNodeRequest, CreateNodeResponse, NodeAgentBinding, NodeListQuery, NodeRosterEntry, Trigger, CreateTriggerRequest, UpdateTriggerRequest, SessionEvent, EmitSessionEventRequest, ListSessionEventsQuery, CertificationRun, SubmitCertificationRequest, MonitorCertificationRequest, ConsoleMessageLog, ConsoleMessagesQuery, ConsoleOverview, ConsoleAgentStat, ConsoleAgentStatsQuery, ConsoleWindowQuery, ConsoleCostStats, ThreadReplyEvent, WsClientEvent, AgentStatusActiveEvent, AgentStatusChangedEvent, AgentStatusOfflineEvent, ChannelCreatedEvent, ChannelUpdatedEvent, ChannelArchivedEvent, MemberJoinedEvent, MemberLeftEvent, ChannelMutedEvent, ChannelUnmutedEvent, FileUploadedEvent, WebhookReceivedEvent, ActionInvokedEvent, ActionCompletedEvent, ActionDeniedEvent, ActionFailedEvent, DeliveryAcceptedEvent, DeliveryDeliveredEvent, DeliveryDeferredEvent, DeliveryFailedEvent, GroupDmReceivedEvent } from './types.js';
import { AgentClient, type AgentClientOptions } from './agent.js';
import { type RetryPolicyInput } from './client.js';
import { type WsClientOptions } from './ws.js';
import { type RegisterAgentInput, type RegisterOrRotateInput, type ResolvedIdentity } from './identity.js';
export interface RelayCastOptions {
    /**
     * Workspace admin key (`rk_live_*`) for administration or observer token
     * (`ot_live_*`) for read-only REST and workspace realtime observation.
     */
    apiKey: string;
    baseUrl?: string;
    retryPolicy?: RetryPolicyInput;
    ws?: Omit<WsClientOptions, 'token' | 'baseUrl'>;
    /**
     * Optional User-Agent-style identifier for the originActor driving requests
     * (e.g. `'claude-code/2.3 (model=opus-4.8)'`, `'codex'`, `'human'`). Sent as
     * the `X-Relaycast-Origin-Actor` header on every request so server-side telemetry
     * can attribute traffic to a originActor.
     */
    originActor?: string;
    /**
     * Optional Agent Relay distinct telemetry id. Sent as
     * `X-Agent-Relay-Distinct-Id` on HTTP requests so Relaycast telemetry can be
     * joined to Agent Relay CLI telemetry without sending user-identifying data.
     */
    agentRelayDistinctId?: string;
    /**
     * Optional Agent Relay Cloud user id of the signed-in operator, sent as
     * `X-Agent-Relay-User-Id`. Doubles as the distinct id when
     * `agentRelayDistinctId` is unset.
     */
    agentRelayUserId?: string;
    /** Optional hashed machine id, sent as `X-Agent-Relay-Machine-Id`. */
    agentRelayMachineId?: string;
    /** Optional Agent Relay Cloud organization id, for group analytics. */
    agentRelayOrgId?: string;
    /** Optional organization slug, for readable analytics breakdowns. */
    agentRelayOrgSlug?: string;
}
/** Identity fields accepted by the unauthenticated workspace bootstrap calls. */
export interface WorkspaceIdentityOptions {
    agentRelayDistinctId?: string;
    agentRelayMachineId?: string;
    agentRelayUserId?: string;
    agentRelayOrgId?: string;
    agentRelayOrgSlug?: string;
}
export interface WorkspaceBootstrapOptions extends WorkspaceIdentityOptions {
    apiKey?: string;
    baseUrl?: string;
}
export interface WorkspaceLookupOptions extends WorkspaceIdentityOptions {
    baseUrl?: string;
}
export interface AgentReconnectOptions {
    apiToken: string;
    agent?: AgentClientOptions;
}
export type EnsureWorkspaceResponse = {
    existed: boolean;
    name: string;
} & CreateWorkspaceResponse;
interface ChannelListOptions {
    includeArchived?: boolean;
}
type RegisterTypedIdentityInput = Omit<CreateAgentRequest, 'type'>;
export declare class RelayCast {
    private client;
    private ws;
    private identityHint;
    private workspaceIdHint;
    constructor(options: RelayCastOptions);
    connect(): void;
    disconnect(): void;
    private onEvent;
    on: {
        messageCreated: (handler: (e: MessageCreatedEvent) => void) => (() => void);
        messageUpdated: (handler: (e: MessageUpdatedEvent) => void) => (() => void);
        threadReply: (handler: (e: ThreadReplyEvent) => void) => (() => void);
        messageRead: (handler: (e: MessageReadEvent) => void) => (() => void);
        messageReacted: (handler: (e: MessageReactedEvent) => void) => (() => void);
        dmReceived: (handler: (e: DmReceivedEvent) => void) => (() => void);
        groupDmReceived: (handler: (e: GroupDmReceivedEvent) => void) => (() => void);
        agentStatusChanged: (handler: (e: AgentStatusChangedEvent) => void) => (() => void);
        agentActive: (handler: (e: AgentStatusActiveEvent) => void) => (() => void);
        agentOffline: (handler: (e: AgentStatusOfflineEvent) => void) => (() => void);
        channelCreated: (handler: (e: ChannelCreatedEvent) => void) => (() => void);
        channelUpdated: (handler: (e: ChannelUpdatedEvent) => void) => (() => void);
        channelArchived: (handler: (e: ChannelArchivedEvent) => void) => (() => void);
        memberJoined: (handler: (e: MemberJoinedEvent) => void) => (() => void);
        memberLeft: (handler: (e: MemberLeftEvent) => void) => (() => void);
        channelMuted: (handler: (e: ChannelMutedEvent) => void) => (() => void);
        channelUnmuted: (handler: (e: ChannelUnmutedEvent) => void) => (() => void);
        fileUploaded: (handler: (e: FileUploadedEvent) => void) => (() => void);
        webhookReceived: (handler: (e: WebhookReceivedEvent) => void) => (() => void);
        actionInvoked: (handler: (e: ActionInvokedEvent) => void) => (() => void);
        actionCompleted: (handler: (e: ActionCompletedEvent) => void) => (() => void);
        actionFailed: (handler: (e: ActionFailedEvent) => void) => (() => void);
        actionDenied: (handler: (e: ActionDeniedEvent) => void) => (() => void);
        deliveryAccepted: (handler: (e: DeliveryAcceptedEvent) => void) => (() => void);
        deliveryDelivered: (handler: (e: DeliveryDeliveredEvent) => void) => (() => void);
        deliveryDeferred: (handler: (e: DeliveryDeferredEvent) => void) => (() => void);
        deliveryFailed: (handler: (e: DeliveryFailedEvent) => void) => (() => void);
        connected: (handler: () => void) => (() => void);
        disconnected: (handler: () => void) => (() => void);
        error: (handler: () => void) => (() => void);
        reconnecting: (handler: (attempt: number) => void) => (() => void);
        permanentlyDisconnected: (handler: (attempt: number) => void) => (() => void);
        resynced: (handler: (info: {
            replayed: number;
            gapDetected: boolean;
        }) => void) => (() => void);
        any: (handler: (e: WsClientEvent) => void) => (() => void);
    };
    static createWorkspace(name: string, options?: string | WorkspaceBootstrapOptions): Promise<CreateWorkspaceResponse>;
    private static createWorkspaceWithStatus;
    static lookupWorkspace(name: string, options?: string | WorkspaceLookupOptions): Promise<WorkspaceLookup | null>;
    static ensureWorkspace(name: string, options?: string | WorkspaceBootstrapOptions): Promise<EnsureWorkspaceResponse>;
    private rememberIdentity;
    private resolveWorkspaceId;
    private resolveIdentityInternal;
    private registerWithLegacySuffix;
    private registerTypedIdentity;
    registerAgent(data: RegisterAgentInput): Promise<CreateAgentResponse>;
    registerOrRotate(data: RegisterOrRotateInput): Promise<CreateAgentResponse>;
    resolveIdentity(): Promise<ResolvedIdentity>;
    reconnect(data: AgentReconnectOptions, options?: AgentClientOptions): Promise<AgentClient>;
    agent(data: RegisterTypedIdentityInput): Promise<CreateAgentResponse>;
    human(data: RegisterTypedIdentityInput): Promise<CreateAgentResponse>;
    system(data: RegisterTypedIdentityInput): Promise<CreateAgentResponse>;
    registerA2a(options: RegisterA2aOptions): Promise<RegisterA2aResponse>;
    listA2aAgents(): Promise<A2aAgentRecord[]>;
    removeA2aAgent(name: string): Promise<RemoveA2aAgentResponse>;
    getA2aAgentCard(name: string): Promise<A2aAgentCard>;
    route(skill: string, message?: string): Promise<RouteResult>;
    searchDirectory(query: SearchDirectoryQuery): Promise<DirectorySearchResult[]>;
    publishToDirectory(data: PublishToDirectoryRequest): Promise<DirectoryAgent>;
    importSkills(data: ImportSkillsRequest): Promise<DirectoryAgent | null>;
    searchSkills(query?: SkillSearchQuery): Promise<SkillSearchResult[]>;
    routeFeedback(data: RouteFeedbackRequest): Promise<RouteFeedbackResult>;
    listDirectory(query?: ListDirectoryQuery): Promise<DirectoryAgent[]>;
    getDirectoryAgent(slug: string): Promise<DirectoryAgent>;
    updateDirectoryAgent(slug: string, data: UpdateDirectoryAgentRequest): Promise<DirectoryAgent>;
    deleteDirectoryAgent(slug: string): Promise<void>;
    listDirectoryRatings(slug: string): Promise<DirectoryRating[]>;
    rateDirectoryAgent(slug: string, data: RateDirectoryAgentRequest): Promise<DirectoryRating>;
    getRoutingConfig(): Promise<RoutingConfig>;
    updateRoutingConfig(data: UpdateRoutingConfigRequest): Promise<RoutingConfig>;
    workspace: {
        info: () => Promise<Workspace>;
        reconnect: (data: AgentReconnectOptions, options?: AgentClientOptions) => Promise<AgentClient>;
        update: (data: UpdateWorkspaceRequest) => Promise<Workspace>;
        delete: () => Promise<void>;
    };
    observerTokens: {
        create: (data: CreateObserverTokenRequest) => Promise<ObserverToken>;
        list: () => Promise<ObserverToken[]>;
        get: (id: string) => Promise<ObserverToken>;
        update: (id: string, data: UpdateObserverTokenRequest) => Promise<ObserverToken>;
        rotate: (id: string) => Promise<ObserverToken>;
        revoke: (id: string) => Promise<void>;
    };
    systemPrompt: {
        get: () => Promise<SystemPrompt>;
        set: (data: SetSystemPromptRequest) => Promise<SystemPrompt>;
    };
    channels: {
        list: (opts?: ChannelListOptions) => Promise<Channel[]>;
        get: (name: string) => Promise<Channel & {
            members: ChannelMemberInfo[];
        }>;
    };
    messages: {
        list: (channel: string, opts?: MessageListQuery) => Promise<MessageWithMeta[]>;
        get: (id: string) => Promise<MessageWithMeta>;
        thread: (id: string, opts?: MessageListQuery) => Promise<{
            parent: MessageWithMeta;
            replies: MessageWithMeta[];
        }>;
        reactions: (id: string) => Promise<ReactionGroup[]>;
    };
    agents: {
        register: (data: CreateAgentRequest) => Promise<CreateAgentResponse>;
        list: (query?: AgentListQuery) => Promise<Agent[]>;
        get: (name: string) => Promise<Agent>;
        me: (apiToken?: string) => Promise<Agent>;
        rotateToken: (name: string) => Promise<TokenRotateResponse>;
        update: (name: string, data: UpdateAgentRequest) => Promise<Agent>;
        delete: (name: string) => Promise<void>;
        presence: () => Promise<AgentPresenceInfo[]>;
        registerOrGet: (data: CreateAgentRequest) => Promise<CreateAgentResponse>;
        registerAgent: (data: RegisterAgentInput) => Promise<CreateAgentResponse>;
        registerOrRotate: (data: RegisterOrRotateInput) => Promise<CreateAgentResponse>;
        resolveIdentity: () => Promise<ResolvedIdentity>;
        spawn: (data: SpawnAgentRequest) => Promise<SpawnAgentResponse>;
        release: (data: ReleaseAgentRequest) => Promise<ReleaseAgentResponse>;
        events: {
            emit: (name: string, data: EmitSessionEventRequest) => Promise<SessionEvent>;
            list: (name: string, query?: ListSessionEventsQuery) => Promise<SessionEvent[]>;
        };
    };
    webhooks: {
        create: (data: CreateWebhookRequest) => Promise<CreateWebhookResponse>;
        createInbound: (data: CreateWebhookRequest) => Promise<CreateWebhookResponse>;
        list: () => Promise<Webhook[]>;
        delete: (id: string) => Promise<void>;
        trigger: (webhookId: string, data: WebhookTriggerRequest, token: string) => Promise<WebhookTriggerResponse>;
    };
    subscriptions: {
        create: (data: CreateSubscriptionRequest) => Promise<CreateSubscriptionResponse>;
        list: () => Promise<EventSubscription[]>;
        get: (id: string) => Promise<EventSubscription>;
        delete: (id: string) => Promise<void>;
    };
    actions: {
        register: (data: RegisterActionRequest) => Promise<ActionDefinition>;
        list: () => Promise<ActionDefinition[]>;
        get: (name: string) => Promise<ActionDefinition>;
        delete: (name: string) => Promise<void>;
    };
    nodes: {
        create: (data: CreateNodeRequest) => Promise<CreateNodeResponse>;
        list: (query?: NodeListQuery) => Promise<NodeRosterEntry[]>;
        get: (name: string) => Promise<NodeRosterEntry>;
        listAgents: (name: string) => Promise<NodeAgentBinding[]>;
        bindAgent: (name: string, data: BindAgentToNodeRequest) => Promise<NodeAgentBinding>;
        unbindAgent: (name: string, agentName: string) => Promise<void>;
    };
    triggers: {
        create: (data: CreateTriggerRequest) => Promise<Trigger>;
        list: () => Promise<Trigger[]>;
        get: (id: string) => Promise<Trigger>;
        update: (id: string, data: UpdateTriggerRequest) => Promise<Trigger>;
        delete: (id: string) => Promise<void>;
    };
    certify: {
        submit: (data: SubmitCertificationRequest) => Promise<CertificationRun>;
        get: (id: string) => Promise<CertificationRun>;
        /** Public badge SVG URL for a certification run (served without an auth header). */
        badgeUrl: (id: string) => string;
        monitor: (data: MonitorCertificationRequest) => Promise<CertificationRun>;
    };
    console: {
        messages: (query?: ConsoleMessagesQuery) => Promise<ConsoleMessageLog[]>;
        stats: (query?: ConsoleWindowQuery) => Promise<ConsoleOverview>;
        agents: (query?: ConsoleAgentStatsQuery) => Promise<ConsoleAgentStat[]>;
        costs: (query?: ConsoleWindowQuery) => Promise<ConsoleCostStats>;
    };
    activity: (limit?: number) => Promise<ActivityItem[]>;
    allDmConversations: () => Promise<WorkspaceDmConversation[]>;
    dmMessages: (conversationId: string, opts?: {
        limit?: number;
        before?: string;
        after?: string;
    }) => Promise<DmMessage[]>;
    as(agentToken: string, options?: AgentClientOptions): AgentClient;
}
export {};
//# sourceMappingURL=relay.d.ts.map