import { SdkAuthResult, AuthResult, RegisterInput, RegistrationResult, MessageResult, ProjectInvitationPreview, ProjectMember, AppNotesUser, ProjectAccess, AppNotesRole, ProjectInvitation, ProjectInviteLink, RoomAccessRule, AppNotesProject, ThreadListScope, AppNotesThread, ThreadUnreadSummary, CreateThreadInput as CreateThreadInput$1, UpdateThreadInput, AppNotesComment, AppNotesAttachment } from '@appnotes/contracts'; export { AppNotesAttachment, AppNotesComment, AppNotesProject, AppNotesRole, AppNotesThread, AppNotesUser, AuthResult, MessageResult, ProjectAccess, ProjectInvitation, ProjectInvitationPreview, ProjectInviteLink, ProjectMember, RegisterInput, RegistrationResult, RoomAccessRule, SdkAuthResult, ThreadUnreadSummary, UpdateThreadInput } from '@appnotes/contracts'; type CreateThreadInput = Omit; type ThreadScope = ThreadListScope; type AppNotesClientOptions = { baseUrl: string; projectKey: string; getAccessToken?: () => string | null | Promise; getRefreshToken?: () => string | null | Promise; onSessionRefresh?: (session: Session) => void | Promise; credentials?: RequestCredentials; authenticationScope?: "global" | "project"; refreshMode?: "token" | "cookie"; fetch?: typeof globalThis.fetch; }; type AppNotesIntegrationClientOptions = { baseUrl: string; projectKey: string; apiKey: string; fetch?: typeof globalThis.fetch; }; declare class AppNotesApiError extends Error { readonly status: number; readonly details: unknown; constructor(status: number, message: string, details?: unknown); } type AppNotesHttpTransportOptions = { baseUrl: string; credentials?: RequestCredentials; fetch?: typeof globalThis.fetch; }; declare class AppNotesHttpTransport { private readonly baseUrl; private readonly credentials?; private readonly requestFetch; constructor(options: AppNotesHttpTransportOptions); assetUrl(path: string | null | undefined): string | null; request(path: string, options?: RequestInit & { accessToken?: string; responseType?: "json" | "blob"; }): Promise; } declare class AppNotesClient { private readonly projectKey; private readonly getAccessToken?; private readonly getRefreshToken?; private readonly onSessionRefresh?; private readonly authenticationScope; private readonly refreshMode; private readonly transport; private refreshPromise; private lastRefreshedSession; constructor(options: AppNotesClientOptions); assetUrl(path: string | null | undefined): string | null; login(email: string, password: string, otp?: string): Promise; refresh(refreshToken: string): Promise; register(input: RegisterInput): Promise; verifyEmail(token: string): Promise; resendEmailVerification(email: string): Promise; requestPasswordReset(email: string): Promise; resetPassword(token: string, password: string): Promise; getProjectInvitation(token: string): Promise<{ invitation: ProjectInvitationPreview; }>; acceptProjectInvitation(token: string): Promise<{ member: ProjectMember; }>; me(): Promise<{ user: AppNotesUser; }>; logout(): Promise; listProjects(): Promise<{ projects: ProjectAccess[]; }>; createProject(name: string): Promise; getProject(): Promise; listProjectMembers(): Promise<{ members: ProjectMember[]; }>; addProjectMember(email: string, role: Exclude): Promise<{ invitation: ProjectInvitation; }>; createProjectInviteLink(role: Exclude): Promise<{ inviteLink: ProjectInviteLink; }>; updateProjectMemberRole(userId: string, role: Exclude): Promise<{ member: ProjectMember; }>; updateProjectMemberRoomAccess(userId: string, roomAccess: RoomAccessRule): Promise<{ member: ProjectMember; }>; removeProjectMember(userId: string): Promise<{ member: ProjectMember; }>; updateAllowedOrigins(allowedOrigins: string[]): Promise<{ project: AppNotesProject; }>; listThreads(input: { roomId: string; roomName?: string; pageId?: string; scope?: ThreadScope; search?: string; status?: AppNotesThread["status"]; authorId?: string; pageBinding?: "any" | "current" | "unbound"; cursor?: string; limit?: number; }): Promise<{ items: AppNotesThread[]; authors?: AppNotesUser[]; nextCursor: string | null; unread?: ThreadUnreadSummary; }>; getThread(threadId: string): Promise; markThreadRead(threadId: string, readThrough: string): Promise; createThread(input: CreateThreadInput): Promise; updateThread(threadId: string, input: UpdateThreadInput): Promise; addComment(threadId: string, body: string): Promise; uploadAttachment(threadId: string, file: Blob, options?: { commentId?: string; fileName?: string; }): Promise<{ attachment: AppNotesAttachment; thread: AppNotesThread; }>; deleteAttachment(attachmentId: string): Promise; downloadAttachment(attachmentId: string): Promise; setThreadStatus(threadId: string, status: AppNotesThread["status"]): Promise; setThreadPinned(threadId: string, isPinned: boolean): Promise; archiveThread(threadId: string): Promise; restoreThread(threadId: string): Promise; clearArchive(roomId: string): Promise; private request; private refreshSession; } /** Server-side client for the personal API-key integration endpoints. */ declare class AppNotesIntegrationClient { private readonly projectKey; private readonly apiKey; private readonly transport; constructor(options: AppNotesIntegrationClientOptions); createNote(input: CreateThreadInput): Promise; updateNote(noteId: string, input: UpdateThreadInput): Promise; addComment(noteId: string, body: string): Promise; updateComment(noteId: string, commentId: string, body: string): Promise; uploadAttachment(noteId: string, file: Blob, options?: { commentId?: string; fileName?: string; }): Promise<{ attachment: AppNotesAttachment; thread: AppNotesThread; }>; deleteAttachment(attachmentId: string): Promise; downloadAttachment(attachmentId: string): Promise; private request; } export { AppNotesApiError, AppNotesClient, type AppNotesClientOptions, AppNotesHttpTransport, type AppNotesHttpTransportOptions, AppNotesIntegrationClient, type AppNotesIntegrationClientOptions, type CreateThreadInput, type ThreadScope };