import { CredentialResolver } from '../auth/credentials.js'; import { type SessionShareMessage, type SessionShareToolActivity } from './session-share-projector.js'; import { type SessionShareSource } from './session-share-service.js'; export interface HostedSessionShareManifest { schemaVersion: 1; kind: 'session_document'; title: string; snapshotAt: string; description?: string; messages: SessionShareMessage[]; toolActivities: SessionShareToolActivity[]; attachments: Array<{ id: string; messageId: string; fileName: string; mimeType: string; size: number; sha256: string; }>; } export interface HostedSessionShareSnapshot { transcriptId: string; cutoffSeq: number; manifest: HostedSessionShareManifest; assets: Array<{ id: string; path: string; size: number; }>; } export interface BuildHostedSessionShareInput { expectedTranscriptId: string; expectedCutoffSeq: number; expectedMetadataUpdatedAt: string; description?: string; includeToolActivities?: boolean; attachmentIds?: string[]; } export declare class HostedSessionShareBuilder { private readonly source; constructor(source: SessionShareSource); build(conversationId: string, input: BuildHostedSessionShareInput): Promise; private loadExpectedSource; } export interface HostedShareResult { id: string; shareUrl: string; expiresAt: string; maxViews: number | null; viewCount: number; snapshotRevision: number; } export type HostedPublicationKind = 'session_document' | 'note_document' | 'static_site'; export interface HostedPublicationSnapshot { kind: HostedPublicationKind; manifest: unknown; assets: Array<{ id: string; path: string; size: number; }>; } export type HostedPublicationSummary = { id: string; title: string; description: string | null; status: 'staging' | 'active' | 'revoked'; revision: number | null; expiresAt: string; maxViews: number | null; viewCount: number; createdAt: string; updatedAt: string; kind: HostedPublicationKind; deliveryMode: 'hosted_snapshot'; owner: { type: 'user' | 'workspace'; id: string; }; workspaceId: string; createdByPrincipalId: string; }; type OwnerShare = HostedPublicationSummary; export interface HostedPublicationCapabilities { protocolVersion: string; kinds: string[]; deliveryModes: string[]; accessModes: string[]; upload: { direct: boolean; multipart: boolean; resumable: boolean; streaming: boolean; }; security?: { contentScanning: boolean; quarantineBeforeActivation: boolean; }; lifecycle: { revisions: boolean; revoke: boolean; asynchronousDeletion: boolean; }; publishing: { allowed: boolean; managedBy: 'platform_admin'; }; } export declare class HostedPublicationPublisher { private readonly credentials; private readonly fetchImpl; private readonly baseUrl; constructor(baseUrl?: string, credentials?: CredentialResolver, fetchImpl?: typeof fetch); create(snapshot: HostedSessionShareSnapshot, lifecycle: { ttlMs: number; maxViews: number | null; }): Promise; createPublication(snapshot: HostedPublicationSnapshot, lifecycle: { ttlMs: number; maxViews: number | null; }): Promise; refresh(shareId: string, expectedRevision: number, publicUrl: string, snapshot: HostedSessionShareSnapshot): Promise; refreshPublication(shareId: string, expectedRevision: number, publicUrl: string, snapshot: HostedPublicationSnapshot): Promise; listPublications(): Promise; capabilities(): Promise; revoke(shareId: string): Promise; revokePublication(shareId: string): Promise; listRevisions(shareId: string): Promise>; rollbackPublication(shareId: string, expectedRevision: number, targetRevision: number): Promise; private uploadAssets; private request; } export declare class HostedShareAuthorizationError extends Error { constructor(); } export declare class HostedShareRemoteError extends Error { readonly status: number; readonly code?: string; constructor(message: string, status: number, code?: string); } export type HostedPublicationSource = { kind: 'session' | 'note' | 'static_site'; id: string; version: string; }; export interface HostedShareBinding extends HostedShareResult { kind: HostedPublicationKind; source: HostedPublicationSource; revisionSources: Record; workspaceContext?: { workspaceRoot?: string; conversationId?: string; agentId?: string; }; transcriptId?: string; cutoffSeq?: number; title: string; description: string | null; messageCount?: number; attachmentCount: number; includeToolActivities?: boolean; attachmentIds: string[]; createdAt: string; updatedAt: string; revoked: boolean; } export declare class HostedShareBindingStore { private readonly state; list(transcriptId: string): Promise; listBySource(kind: HostedPublicationSource['kind'], id: string): Promise; listAll(): Promise; upsert(binding: HostedShareBinding): Promise; markRevoked(id: string): Promise; reconcile(remote: OwnerShare[]): Promise; } export {};