type SafeReturn<T, K = Error> = Partial<{
    data: T;
    error: K;
}> & ({
    data: T;
    error?: never;
} | {
    data?: never;
    error: K;
});
type TrySafeFn<T, K> = (resolve: (data: T) => void, reject: (reason: K) => void) => SafeReturn<T, K> | Promise<SafeReturn<T, K>> | void | Promise<void>;
declare function trySafe<T = void, E = Error>(fn: TrySafeFn<T, E>): Promise<SafeReturn<T, E>>;

export { type SafeReturn, type TrySafeFn, trySafe };
