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