import type { Registry } from 'https://deno.land/x/polkadot@0.2.33/types-codec/types/index.ts';import type { HexString } from 'https://deno.land/x/polkadot@0.2.33/util/types.ts';
import { isString, isU8a, u8aToU8a } from 'https://deno.land/x/polkadot@0.2.33/util/mod.ts';
import { MetadataVersioned } from './MetadataVersioned.ts';
const EMPTY_METADATA = new Uint8Array([0x6d, 0x65, 0x74, 0x61, 9]);
const VERSION_IDX = EMPTY_METADATA.length - 1;
function decodeU8a (registry: Registry, u8a: Uint8Array): MetadataVersioned | Uint8Array { if (u8a.length === 0) { return EMPTY_METADATA; } else if (u8a[VERSION_IDX] === 9) { try { return new MetadataVersioned(registry, u8a); } catch { u8a[VERSION_IDX] = 10;
return u8a; } }
return u8a;}
export class Metadata extends MetadataVersioned { constructor (registry: Registry, value?: Uint8Array | HexString | Map<string, unknown> | Record<string, unknown>) {
super( registry, isU8a(value) || isString(value) ? decodeU8a(registry, u8aToU8a(value)) : value );
}}