import { IdType } from "./DataTypes";
/**
 * Result errors
 * Indexable type
 */
export interface IResultErrors {
    readonly [key: string]: string[];
}
/**
 * Operation result interface
 */
export interface IActionResult<D extends object = {}> {
    /**
     * Status code
     */
    readonly status?: number;
    /**
     * Result data
     */
    readonly data?: D;
    /**
     * Result errors
     */
    readonly errors?: IResultErrors;
    /**
     * Title
     */
    title?: string;
    /**
     * Detail
     */
    detail?: string;
    /**
     * Trace id
     */
    traceId?: string;
    /**
     * Type
     */
    type?: string;
    /**
     * Field name
     */
    field?: string;
    /**
     * Success or not
     */
    readonly ok: boolean;
}
/**
 * Action result with id
 */
export type IdActionResult<T extends IdType = number> = IActionResult<{
    id: T;
}>;
/**
 * Action result with message data
 */
export type MsgActionResult = IActionResult<{
    msg: string;
}>;
/**
 * Action result with id, message data
 */
export type IdMsgActionResult<T extends IdType = number> = IActionResult<{
    id: T;
    msg: string;
}>;
/**
 * Action result with dynamic data
 */
export type DynamicActionResult = IActionResult<Record<string, any>>;
