///
import { IResource, ReturnCallback, SimpleCallback, Return2Callback, ResourceType, ResourcePropertyValue } from '../IResource';
import { Readable, Writable } from 'stream';
import { FSManager, FSPath } from '../../../manager/v1/FSManager';
import { RequestContext, MethodCallArgs } from '../../../server/v1/MethodCallArgs';
import { LockKind } from '../lock/LockKind';
import { Lock } from '../lock/Lock';
export interface IWrappableResource extends IResource {
parent: IResource;
fsManager: FSManager;
create(callback: SimpleCallback, ctx?: RequestContext, data?: T): any;
delete(callback: SimpleCallback, ctx?: RequestContext, data?: T): any;
moveTo(parent: IResource, newName: string, overwrite: boolean, callback: SimpleCallback, ctx?: RequestContext, data?: T): any;
rename(newName: string, callback: Return2Callback, ctx?: RequestContext, data?: T): any;
write(targetSource: boolean, callback: ReturnCallback, finalSize?: number, ctx?: RequestContext, data?: T): any;
read(targetSource: boolean, callback: ReturnCallback, ctx?: RequestContext, data?: T): any;
mimeType(targetSource: boolean, callback: ReturnCallback, ctx?: RequestContext, data?: T): any;
size(targetSource: boolean, callback: ReturnCallback, ctx?: RequestContext, data?: T): any;
getLocks(callback: ReturnCallback, ctx?: RequestContext, data?: T): any;
setLock(lock: Lock, callback: SimpleCallback, ctx?: RequestContext, data?: T): any;
removeLock(uuid: string, callback: ReturnCallback, ctx?: RequestContext, data?: T): any;
getAvailableLocks(callback: ReturnCallback, ctx?: RequestContext, data?: T): any;
getLock(uuid: string, callback: ReturnCallback, ctx?: RequestContext, data?: T): any;
addChild(resource: IResource, callback: SimpleCallback, ctx?: RequestContext, data?: T): any;
removeChild(resource: IResource, callback: SimpleCallback, ctx?: RequestContext, data?: T): any;
getChildren(callback: ReturnCallback, ctx?: RequestContext, data?: T): any;
setProperty(name: string, value: ResourcePropertyValue, callback: SimpleCallback, ctx?: RequestContext, data?: T): any;
getProperty(name: string, callback: ReturnCallback, ctx?: RequestContext, data?: T): any;
removeProperty(name: string, callback: SimpleCallback, ctx?: RequestContext, data?: T): any;
getProperties(callback: ReturnCallback