import type { Container, ContainersStorage } from '../containers';
import type { IServerContext } from '../../types';
import type { RequestMessage } from '../message';
import type { IRequestContextCacheConfiguration, IRequestContextIncoming, IRequestContextOutgoing, IRequestContextForwarded, IRequestContextError, IRequestContextOverrides } from './types';
export declare class RequestContextSnapshot<TContext extends IServerContext = any> {
    protected provided: Pick<TContext, 'transport'> & Pick<RequestContextSnapshot<TContext>, 'incoming' | 'outgoing' | 'storage' | 'flags' | 'overrides'> & Partial<Pick<RequestContextSnapshot<TContext>, 'messages' | 'state' | 'seed' | 'container' | 'forwarded' | 'error' | 'cache'>>;
    TPlain: Pick<RequestContextSnapshot<TContext>['provided'], 'flags' | 'overrides' | 'seed' | 'transport'> & {
        transport: TContext['transport'];
        messages: RequestMessage['TPlain'][];
        state: RequestContextSnapshot<TContext>['state'];
        cache: RequestContextSnapshot<TContext>['cache'];
        incoming: Omit<IRequestContextIncoming, 'raw' | 'stream'>;
        outgoing: Omit<IRequestContextOutgoing, 'raw' | 'stream'>;
        forwarded?: Omit<IRequestContextForwarded, 'incoming' | 'outgoing' | 'messages'> & {
            incoming: Omit<IRequestContextIncoming, 'raw' | 'stream'>;
            outgoing?: Omit<IRequestContextOutgoing, 'raw' | 'stream'>;
            messages?: RequestMessage['TPlain'][];
        };
        container?: Container['TPlain'];
        error?: RequestContextSnapshot<TContext>['error'];
    };
    TCache: {
        messages: RequestMessage['TCache'][];
        outgoing: Omit<IRequestContextOutgoing, 'raw' | 'stream'> & {
            raw?: {
                data?: string;
            };
            dataRaw?: string;
        };
    };
    transport: TContext['transport'];
    flags: Partial<Record<TContext['flag'], boolean>>;
    storage: ContainersStorage;
    cache: IRequestContextCacheConfiguration;
    state: object;
    incoming: IRequestContextIncoming;
    outgoing: IRequestContextOutgoing;
    messages: RequestMessage[];
    /** Expectation schema overrides */
    overrides?: IRequestContextOverrides;
    forwarded?: IRequestContextForwarded;
    error?: IRequestContextError;
    container?: Container<any>;
    seed?: number;
    constructor(provided: Pick<TContext, 'transport'> & Pick<RequestContextSnapshot<TContext>, 'incoming' | 'outgoing' | 'storage' | 'flags' | 'overrides'> & Partial<Pick<RequestContextSnapshot<TContext>, 'messages' | 'state' | 'seed' | 'container' | 'forwarded' | 'error' | 'cache'>>);
    assign<T extends Partial<RequestContextSnapshot<TContext>['provided']>>(payload: T): this & T;
    pick<K extends keyof RequestContextSnapshot<TContext>['provided']>(keys: K[]): Pick<RequestContextSnapshot<TContext>, K>;
    omit<K extends keyof RequestContextSnapshot<TContext>['provided']>(keys: K[]): Omit<RequestContextSnapshot<TContext>, K>;
    unset<K extends keyof RequestContextSnapshot<TContext>['provided']>(keys: K[]): Omit<RequestContextSnapshot<TContext>, K>;
    clone(): RequestContextSnapshot<TContext>;
    toPlain(): RequestContextSnapshot<TContext>['TPlain'];
    toCache(): RequestContextSnapshot<TContext>['TCache'];
    static build<TContext extends IServerContext>(configuration: RequestContextSnapshot<TContext>['provided']): RequestContextSnapshot<TContext>;
}
//# sourceMappingURL=snapshot.d.ts.map