/**
 * Result type for predictable error handling
 * Following the pattern specified in architecture.md
 */
type TSuccess<T> = {
    ok: true;
    value: T;
};
type TFailure<E = string> = {
    ok: false;
    error: E;
};
export type TResult<T, E = string> = TSuccess<T> | TFailure<E>;
export type TApiError = {
    message: string;
    statusCode?: number;
    details?: Record<string, any>;
};
/**
 * Helper functions for creating and handling results
 */
export declare function success<T>(value: T): TSuccess<T>;
export declare function failure<E = string>(error: E): TFailure<E>;
export declare function isSuccess<T, E>(result: TResult<T, E>): result is TSuccess<T>;
export declare function isFailure<T, E>(result: TResult<T, E>): result is TFailure<E>;
export declare function unwrap<T, E>(result: TResult<T, E>): T;
export declare function unwrapOr<T, E>(result: TResult<T, E>, defaultValue: T): T;
export declare function mapResult<T, U, E>(result: TResult<T, E>, fn: (value: T) => U): TResult<U, E>;
export declare function tryCatch<T>(fn: () => Promise<T>, errorTransform?: (error: any) => string | TApiError): Promise<TResult<T, string | TApiError>>;
export {};
//# sourceMappingURL=result.d.ts.map