polkadot-js/api

View on GitHub
packages/types/src/util/storage.ts

Summary

Maintainability
A
0 mins
Test Coverage
// Copyright 2017-2024 @polkadot/types authors & contributors
// SPDX-License-Identifier: Apache-2.0

import type { StorageEntryTypeLatest } from '../interfaces/metadata/index.js';
import type { SiLookupTypeId } from '../interfaces/scaleInfo/index.js';
import type { InterfaceTypes, Registry } from '../types/index.js';

import { getSiName } from '../metadata/util/index.js';

/** @internal */
export function unwrapStorageSi (type: StorageEntryTypeLatest): SiLookupTypeId {
  return type.isPlain
    ? type.asPlain
    : type.asMap.value;
}

/** @internal */
export function unwrapStorageType (registry: Registry, type: StorageEntryTypeLatest, isOptional?: boolean): keyof InterfaceTypes {
  const outputType = getSiName(registry.lookup, unwrapStorageSi(type));

  return isOptional
    ? `Option<${outputType}>` as unknown as keyof InterfaceTypes
    : outputType as keyof InterfaceTypes;
}