import type { Observable } from 'rxjs'; import type { AnyFunction, AnyJson, Callback, DefinitionRpc } from '@polkadot/types/types'; import type { ApiTypes, PromiseResult, Push, RxResult, UnsubscribePromise } from './base.js'; export type { AugmentedRpc } from '@polkadot/rpc-core/types'; export interface RxRpcResult extends RxResult { raw(...args: Parameters): Observable; meta: DefinitionRpc; } export interface PromiseRpcResult extends PromiseResult { raw(...args: Parameters): Promise; raw(...args: Push, Callback>): UnsubscribePromise; meta: DefinitionRpc; } export type RpcMethodResult = ApiType extends 'rxjs' ? RxRpcResult : PromiseRpcResult; export type DecoratedRpcSection = { [M in keyof Section]: Section[M] extends AnyFunction ? RpcMethodResult : never; }; export type RawRpcType = (method: string, ...params: unknown[]) => ApiType extends 'rxjs' ? Observable : Promise; export type DecoratedRpc = { [S in keyof AllSections]: DecoratedRpcSection; } & RawRpcType;