///
import { IResource, ReturnCallback, ResourceType } from '../../resource/v1/IResource';
import { BasicPrivilege } from '../../user/v1/privilege/IPrivilegeManager';
import { EventsName, DetailsType } from './webDAVServer/Events';
import { XMLElement } from 'xml-js-builder';
import { WebDAVServer } from './webDAVServer/WebDAVServer';
import { FSPath } from '../../manager/v1/FSManager';
import { IUser } from '../../user/v1/IUser';
import * as http from 'http';
export declare class MethodCallArgs {
server: WebDAVServer;
request: http.IncomingMessage;
response: http.ServerResponse;
exit: () => void;
callback: () => void;
contentLength: number;
isSource: boolean;
depth: number;
host: string;
path: FSPath;
uri: string;
resource: IResource;
resourceType: ResourceType;
data: Buffer | Int8Array;
user: IUser;
protected constructor(server: WebDAVServer, request: http.IncomingMessage, response: http.ServerResponse, exit: () => void, callback: () => void);
static create(server: WebDAVServer, request: http.IncomingMessage, response: http.ServerResponse, callback: (error: Error, mca: MethodCallArgs) => void): void;
noBodyExpected(callback: () => void): void;
checkIfHeader(defaultResource: IResource, callback: () => void): void;
requireCustomPrivilege(privileges: string | string[], resource: IResource, callback: () => void): void;
requirePrivilege(privileges: BasicPrivilege | BasicPrivilege[], resource: IResource, callback: () => void): void;
requireErCustomPrivilege(privileges: string | string[], resource: IResource, callback: (error: Error, can: boolean) => void): void;
requireErPrivilege(privileges: BasicPrivilege | BasicPrivilege[], resource: IResource, callback: (error: Error, can: boolean) => void): void;
askForAuthentication(checkForUser: boolean, callback: (error: Error) => void): void;
accept(regex: RegExp[]): number;
findHeader(name: string, defaultValue?: string): string;
getResource(callback: ReturnCallback): void;
dateISO8601(ticks: number): string;
invokeEvent(event: EventsName, subjectResource?: IResource, details?: DetailsType): void;
wrapEvent(event: EventsName, subjectResource?: IResource, details?: DetailsType): () => void;
fullUri(uri?: string): string;
prefixUri(): string;
getResourcePath(resource: IResource, callback: ReturnCallback): void;
writeXML(xmlObject: XMLElement | object): void;
setCode(code: number, message?: string): void;
}
export default MethodCallArgs;
export declare type RequestContext = MethodCallArgs;