import { Ok } from '@hazae41/result';
import { RpcId } from './request.js';

interface RpcOkInit<T = unknown> {
    readonly jsonrpc: "2.0";
    readonly id: RpcId;
    readonly result: T;
}
declare namespace RpcOkInit {
    function from<T>(response: RpcOk<T>): RpcOkInit<T>;
}
declare class RpcOk<T = unknown> extends Ok<T> {
    readonly id: RpcId;
    readonly result: T;
    readonly jsonrpc = "2.0";
    constructor(id: RpcId, result: T);
    static from<T>(init: RpcOkInit<T>): RpcOk<T>;
    static rewrap<T extends Ok.Infer<T>>(id: RpcId, result: T): RpcOk<Ok.Inner<T>>;
    toJSON(): RpcOkInit<T>;
}

export { RpcOk, RpcOkInit };
