import type { CompanionParticipationProjection as ProtoCompanionParticipationProjection } from './generated/runtime/v1/agent_service.js';
import type { RuntimeCallOptions } from './types.js';
import type { RuntimeAgentClient } from './types-client-interfaces.js';
import type { RuntimeAgentLocalIdentity, RuntimeScopedBindingAttachment } from './types-runtime-agent.js';
type ProtectedScopeHelper = {
    getCallOptions(scopes: readonly string[], baseOptions?: RuntimeCallOptions): Promise<RuntimeCallOptions>;
};
export type RuntimeCompanionParticipationSurfaceKind = 'avatar_companion' | 'desktop_companion_panel' | 'avatar_debug_workbench';
export type RuntimeCompanionParticipationTriggerSource = 'user_explicit' | 'scheduled_proactive' | 'domain_event';
export type RuntimeCompanionParticipationStatus = 'idle' | 'admission_pending' | 'blocked' | 'running' | 'candidate_ready' | 'committed_by_owner' | 'failed' | 'canceled';
export type RuntimeCompanionParticipationProjection = {
    projectionId: string;
    agentId: string;
    surfaceKind: RuntimeCompanionParticipationSurfaceKind;
    profileRef: string;
    roomOrchestrationRef: string;
    triggerSource: RuntimeCompanionParticipationTriggerSource;
    status: RuntimeCompanionParticipationStatus;
    candidateRef?: string;
    commitRef?: string;
    refusalReason?: string;
    presentationRef?: string;
    auditRef: string;
    observedAt?: string;
    conversationAnchorId: string;
    turnId?: string;
    streamId?: string;
};
export type RuntimeCompanionParticipationBaseRequest = RuntimeAgentLocalIdentity & {
    conversationAnchorId: string;
    subjectUserId?: string;
    scopedBinding?: RuntimeScopedBindingAttachment;
    surfaceKind: RuntimeCompanionParticipationSurfaceKind;
    triggerSource: RuntimeCompanionParticipationTriggerSource;
    profileRef?: string;
    roomOrchestrationRef?: string;
    requestId?: string;
};
export type RuntimeCompanionParticipationRequest = RuntimeCompanionParticipationBaseRequest & {
    text: string;
    threadId?: string;
    worldId?: string;
    maxOutputTokens?: number;
};
export type RuntimeCompanionParticipationCancelRequest = RuntimeCompanionParticipationBaseRequest & {
    projectionId?: string;
    turnId?: string;
    reason?: string;
};
export type RuntimeCompanionParticipationReplayRequest = RuntimeCompanionParticipationBaseRequest & {
    projectionId: string;
};
export type RuntimeCompanionParticipationReplay = {
    replayRef: string;
    projection: RuntimeCompanionParticipationProjection;
};
export type RuntimeCompanionParticipationModule = {
    getProjection(request: RuntimeCompanionParticipationBaseRequest, options?: RuntimeCallOptions): Promise<RuntimeCompanionParticipationProjection>;
    request(request: RuntimeCompanionParticipationRequest, options?: RuntimeCallOptions): Promise<RuntimeCompanionParticipationProjection>;
    cancel(request: RuntimeCompanionParticipationCancelRequest, options?: RuntimeCallOptions): Promise<RuntimeCompanionParticipationProjection>;
    openReplay(request: RuntimeCompanionParticipationReplayRequest, options?: RuntimeCallOptions): Promise<RuntimeCompanionParticipationReplay>;
};
export declare function decodeCompanionParticipationProjection(projection: ProtoCompanionParticipationProjection | undefined): RuntimeCompanionParticipationProjection;
export declare function createRuntimeCompanionParticipationModule(input: {
    appId: string;
    agent: RuntimeAgentClient;
    protectedAccess: ProtectedScopeHelper;
    resolveSubjectUserId: (explicit?: string) => Promise<string>;
}): RuntimeCompanionParticipationModule;
export {};
//# sourceMappingURL=runtime-companion-participation.d.ts.map