import { Metadata, IResult } from "./Result.interface";
import { ResultExecutionPromise } from "./Types";
import { ResultDto } from "./ResultDto";
export declare class Result implements IResult {
    #private;
    statusCode: number | string;
    success: boolean;
    message: string;
    error: string;
    setMetadata(metadata: Metadata): IResult;
    addMetadata(key: string, value: string | number): IResult;
    getMetadata(): Metadata;
    addHeader(name: string, value: string): IResult;
    getHeaders(): Record<string, string> | null;
    hasMetadata(): boolean;
    setStatusCode(statusCode: number | string, success: boolean): IResult;
    getStatusCode(): number | string;
    setMessage(message: string, statusCode: number | string): IResult;
    setError(error: string, statusCode: number | string): IResult;
    hasError(): boolean;
    fromResult(result: IResult): IResult;
    hasMessage(): boolean;
    setSuccess(): void;
    isSuccess(): boolean;
    execute<RO>(promise: ResultExecutionPromise<RO>): Promise<IResult & {
        value: RO;
    }>;
    toResultDto(): ResultDto;
    static fromError(error: string, statusCode: number | string): IResult;
    static fromSuccess(): IResult;
}
