/// <reference types="node" />
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<IResource>): 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<string>): void;
    writeXML(xmlObject: XMLElement | object): void;
    setCode(code: number, message?: string): void;
}
export default MethodCallArgs;
export declare type RequestContext = MethodCallArgs;
