import type { Readable } from 'node:stream'; import type { Adapter } from './Adapter.js'; import type { Lock } from './Lock.js'; import type { Properties } from './Properties.js'; import type { User } from './User.js'; export interface Resource { adapter: Adapter; baseUrl: URL; getLocks(): Promise; getLocksByUser(user: User): Promise; createLockForUser(user: User): Promise; getProperties(): Promise; getStream(range?: { start: number; end: number; }): Promise; setStream(input: Readable, user: User, mediaType?: string): Promise; create(user: User): Promise; delete(user: User): Promise; copy(destination: URL, baseUrl: URL, user: User): Promise; move(destination: URL, baseUrl: URL, user: User): Promise; getLength(): Promise; getEtag(): Promise; getMediaType(): Promise; getCanonicalName(): Promise; getCanonicalPath(): Promise; getCanonicalUrl(): Promise; isCollection(): Promise; getInternalMembers(user: User): Promise; }