///
import { ILogger, IResolver } from 'agentstack';
import { WebApplicationSettings } from './WebApplicationSettings';
import { HttpError } from '../utils/HttpErrors';
import { Identity } from '../utils/Identity';
import { Attachments } from './Attachment';
import { IncomingHttpHeaders } from "http";
import { WebRequest } from './WebRequest';
import { WebResponse } from './WebResponse';
import { WebCookies } from './WebCookies';
export interface WebContext extends IResolver {
readonly req: WebRequest;
readonly res: WebResponse;
readonly error: Error | HttpError | any;
verbose: boolean;
readonly identity: Identity;
readonly logger: ILogger;
readonly settings: T;
readonly state: any;
readonly ip: string;
readonly url: string;
readonly href: string;
readonly publicUrl: string;
readonly origin: string;
readonly protocol: string;
readonly hostname: string;
readonly port: number;
readonly path: string;
readonly method: string;
readonly params: any;
readonly query: any;
readonly headers: IncomingHttpHeaders;
readonly cookies: WebCookies;
fingerprint(): any;
readonly country: string | null;
readonly attachments: Attachments;
accepts(...type: Array): string | false;
is(...type: Array): string | false | null;
range(max: number): any;
status: number;
type: string;
length: number;
lastModified: Date;
etag: string;
body: any;
vary(field: string): void;
attachment(filename: string): void;
redirect(url: string): void;
get(name: string): number | string | string[] | undefined;
set(name: string, value: number | string | string[]): void;
append(name: string, value: number | string): void;
remove(name: string): void;
}