import type { Observable } from 'rxjs'; import type { StorageKey, u64 } from '@polkadot/types'; import type { Hash } from '@polkadot/types/interfaces'; import type { StorageEntry } from '@polkadot/types/primitive/types'; import type { AnyFunction, AnyTuple, Callback, Codec, IStorageKey } from '@polkadot/types/types'; import type { ApiTypes, DropLast, EmptyBase, MethodResult, PaginationOptions, PromiseOrObs, ReturnCodec, UnsubscribePromise } from './base.js'; type StorageEntryObservableMulti = (args: unknown[]) => Observable; interface StorageEntryPromiseMulti { (args: unknown[]): Promise; (args: unknown[], callback: Callback): UnsubscribePromise; } export interface StorageEntryPromiseOverloads { (arg1?: unknown, arg2?: unknown, arg3?: unknown): Promise; (arg1?: unknown, arg2?: unknown, arg3?: unknown): Promise; (callback: Callback): UnsubscribePromise; (arg: unknown, callback: Callback): UnsubscribePromise; (arg1: unknown, arg2: unknown, callback: Callback): UnsubscribePromise; (arg1: unknown, arg2: unknown, arg3: unknown, callback: Callback): UnsubscribePromise; } export interface StorageEntryPromiseOverloadsAt { (arg1?: unknown, arg2?: unknown, arg3?: unknown): Promise; (arg1?: unknown, arg2?: unknown, arg3?: unknown): Promise; } export type GenericStorageEntryFunction = (...args: unknown[]) => Observable; export type QueryableStorageEntry = ApiType extends 'rxjs' ? AugmentedQuery<'rxjs', GenericStorageEntryFunction, A> : AugmentedQuery<'promise', GenericStorageEntryFunction, A> & StorageEntryPromiseOverloads; export type QueryableStorageEntryAt = ApiType extends 'rxjs' ? AugmentedQueryAt<'rxjs', GenericStorageEntryFunction, A> : AugmentedQueryAt<'promise', GenericStorageEntryFunction, A> & StorageEntryPromiseOverloadsAt; export interface StorageEntryBase extends StorageEntryBaseAt { /** * @deprecated Use api.at() */ at: >(hash: Hash | Uint8Array | string, ...args: Parameters) => PromiseOrObs; creator: StorageEntry; /** * @deprecated Use api.at() */ entriesAt: , K extends AnyTuple = A>(hash: Hash | Uint8Array | string, ...args: DropLast>) => PromiseOrObs, T][]>; /** * @deprecated Use api.at() */ keysAt: (hash: Hash | Uint8Array | string, ...args: DropLast>) => PromiseOrObs[]>; /** * @deprecated Use api.at() */ sizeAt: (hash: Hash | Uint8Array | string, ...args: Parameters) => PromiseOrObs; multi: ApiType extends 'rxjs' ? StorageEntryObservableMulti> : StorageEntryPromiseMulti>; } export interface StorageEntryBaseAt { entries: , K extends AnyTuple = A>(...args: DropLast>) => PromiseOrObs, T][]>; entriesPaged: , K extends AnyTuple = A>(opts: PaginationOptions[0]>) => PromiseOrObs, T][]>; hash: (...args: Parameters) => PromiseOrObs; is: (key: IStorageKey) => key is IStorageKey; key: (...args: Parameters) => string; keyPrefix: (...args: DropLast>) => string; keys: (...args: DropLast>) => PromiseOrObs[]>; keysPaged: (opts: PaginationOptions[0]>) => PromiseOrObs[]>; size: (...args: Parameters) => PromiseOrObs; } export type QueryableModuleStorage = Record>; export type QueryableModuleStorageAt = Record>; export type QueryableStorageMultiArg = QueryableStorageEntry | [ QueryableStorageEntry, ...unknown[] ]; export type QueryableStorageMultiBase = (calls: QueryableStorageMultiArg[]) => Observable; export interface QueryableStorageMultiPromise { (calls: QueryableStorageMultiArg[], callback: Callback): UnsubscribePromise; (calls: QueryableStorageMultiArg[]): Promise; } export type QueryableStorageMulti = ApiType extends 'rxjs' ? QueryableStorageMultiBase : QueryableStorageMultiPromise; export type AugmentedQuery = MethodResult & StorageEntryBase; export type AugmentedQueryAt = MethodResult & StorageEntryBaseAt; export type AugmentedQueryDoubleMap = AugmentedQuery; export interface AugmentedQueries extends EmptyBase { } export interface QueryableStorage extends AugmentedQueries { [key: string]: QueryableModuleStorage; } export interface QueryableStorageAt extends AugmentedQueries { [key: string]: QueryableModuleStorageAt; } export {};