{"version":3,"sources":["../src/client.ts","../src/constants.ts","../src/runtime.ts","../src/event.ts","../src/utils/shareLatest.ts","../src/utils/firstValueFromWithSignal.ts","../src/utils/concatMapEager.ts","../src/utils/lossLessExhaustMap.ts","../src/runtime-call.ts","../src/storage.ts","../src/tx.ts","../src/get-create-tx.ts","../src/signed-extensions/user/ChargeTransactionPayment.ts","../src/signed-extensions/utils.ts","../src/signed-extensions/user/CheckMortality.ts","../src/signed-extensions/user/ChargeAssetTxPayment.ts","../src/signed-extensions/chain/index.ts","../src/signed-extensions/chain/CheckGenesis.ts","../src/signed-extensions/chain/CheckNonce.ts","../src/signed-extensions/chain/CheckSpecVersion.ts","../src/signed-extensions/chain/CheckTxVersion.ts","../src/re-exports.ts"],"sourcesContent":["import { Descriptors } from \"@polkadot-api/substrate-bindings\"\nimport {\n  SubstrateClient,\n  createClient as createRawClient,\n} from \"@polkadot-api/substrate-client\"\nimport { Observable, firstValueFrom } from \"rxjs\"\nimport { ConstantEntry, createConstantEntry } from \"./constants\"\nimport { EvClient, createEventEntry } from \"./event\"\nimport { BlockInfo, getObservableClient } from \"@polkadot-api/observable-client\"\nimport { compatibilityHelper, getRuntimeApi } from \"./runtime\"\nimport { RuntimeCall, createRuntimeCallEntry } from \"./runtime-call\"\nimport { createStorageEntry, type StorageEntry } from \"./storage\"\nimport { TxEntry, createTxEntry, getSubmitFns } from \"./tx\"\nimport { HintedSignedExtensions, PolkadotClient, TypedApi } from \"./types\"\nimport { getCreateTx } from \"./get-create-tx\"\nimport { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport type { PolkadotSigner } from \"@polkadot-api/polkadot-signer\"\n\nconst createTypedApi = <D extends Descriptors>(\n  descriptors: D,\n  createTxFromSigner: (\n    signer: PolkadotSigner,\n    callData: Uint8Array,\n    atBlock: BlockInfo,\n    hinted?: HintedSignedExtensions,\n  ) => Observable<Uint8Array>,\n  chainHead: ReturnType<ReturnType<typeof getObservableClient>[\"chainHead$\"]>,\n  submitFns: ReturnType<typeof getSubmitFns>,\n): TypedApi<D> => {\n  const runtimeApi = getRuntimeApi(descriptors.checksums, chainHead)\n\n  const { pallets, apis: runtimeApis } = descriptors\n  const query = {} as Record<string, Record<string, StorageEntry<any, any>>>\n  for (const pallet in pallets) {\n    query[pallet] ||= {}\n    const [stgEntries] = pallets[pallet]\n    for (const name in stgEntries) {\n      query[pallet][name] = createStorageEntry(\n        pallet,\n        name,\n        chainHead,\n        compatibilityHelper(runtimeApi, stgEntries[name]),\n      )\n    }\n  }\n\n  const tx = {} as Record<string, Record<string, TxEntry<any, any, any, any>>>\n  for (const pallet in pallets) {\n    tx[pallet] ||= {}\n    const [, txEntries] = pallets[pallet]\n    for (const name in txEntries) {\n      tx[pallet][name] = createTxEntry(\n        pallet,\n        name,\n        descriptors.asset,\n        chainHead,\n        submitFns,\n        createTxFromSigner,\n        compatibilityHelper(runtimeApi, txEntries[name]),\n      )\n    }\n  }\n\n  const events = {} as Record<string, Record<string, EvClient<any>>>\n  for (const pallet in pallets) {\n    events[pallet] ||= {}\n    const [, , evEntries] = pallets[pallet]\n    for (const name in evEntries) {\n      events[pallet][name] = createEventEntry(\n        pallet,\n        name,\n        chainHead,\n        compatibilityHelper(runtimeApi, evEntries[name]),\n      )\n    }\n  }\n\n  const constants = {} as Record<string, Record<string, ConstantEntry<any>>>\n  for (const pallet in pallets) {\n    constants[pallet] ||= {}\n    const [, , , , ctEntries] = pallets[pallet]\n    for (const name in ctEntries) {\n      constants[pallet][name] = createConstantEntry(\n        pallet,\n        name,\n        chainHead,\n        compatibilityHelper(runtimeApi, ctEntries[name]),\n      )\n    }\n  }\n\n  const apis = {} as Record<string, Record<string, RuntimeCall<any, any>>>\n  for (const api in runtimeApis) {\n    apis[api] ||= {}\n    const methods = runtimeApis[api]\n    for (const method in methods) {\n      apis[api][method] = createRuntimeCallEntry(\n        api,\n        method,\n        chainHead,\n        compatibilityHelper(runtimeApi, methods[method]),\n      )\n    }\n  }\n\n  return {\n    query: query,\n    tx: tx,\n    event: events,\n    apis,\n    constants,\n    runtime: runtimeApi,\n  } as any\n}\n\nexport function createClient(provider: JsonRpcProvider): PolkadotClient {\n  const rawClient: SubstrateClient = createRawClient(provider)\n  const client = getObservableClient(rawClient)\n  const chainHead = client.chainHead$()\n\n  const createTxFromSigner = getCreateTx(chainHead)\n  const submitFns = getSubmitFns(chainHead, client)\n  const { submit, submit$: submitAndWatch } = submitFns\n\n  return {\n    finalized$: chainHead.finalized$,\n    bestBlocks$: chainHead.bestBlocks$,\n    getBlockHeader: (hash?: string) =>\n      firstValueFrom(chainHead.header$(hash ?? null)),\n    getBlockBody: chainHead.body$,\n    destroy: () => {\n      chainHead.unfollow()\n      client.destroy()\n    },\n    submit,\n    submitAndWatch,\n    getTypedApi: <D extends Descriptors>(descriptors: D) =>\n      createTypedApi(descriptors, createTxFromSigner, chainHead, submitFns),\n  }\n}\n","import { firstValueFrom, map } from \"rxjs\"\nimport { ChainHead$, RuntimeContext } from \"@polkadot-api/observable-client\"\nimport {\n  CompatibilityHelper,\n  IsCompatible,\n  Runtime,\n  getRuntimeContext,\n} from \"./runtime\"\n\nexport interface ConstantEntry<T> {\n  (): Promise<T>\n  (runtime: Runtime): T\n  isCompatible: IsCompatible\n}\n\nexport const createConstantEntry = <T>(\n  palletName: string,\n  name: string,\n  chainHead: ChainHead$,\n  compatibilityHelper: CompatibilityHelper,\n): ConstantEntry<T> => {\n  const { isCompatible, compatibleRuntime$ } = compatibilityHelper((ctx) =>\n    ctx.checksumBuilder.buildConstant(palletName, name),\n  )\n  const checksumError = () =>\n    new Error(`Incompatible runtime entry Constant(${palletName}.${name})`)\n\n  const cachedResults = new WeakMap<RuntimeContext, T>()\n  const getValueWithContext = (ctx: RuntimeContext) => {\n    if (cachedResults.has(ctx)) {\n      return cachedResults.get(ctx)!\n    }\n\n    const pallet = ctx.metadata.pallets.find((p) => p.name === palletName)\n    const constant = pallet?.constants.find((c) => c.name === name)!\n    const result = ctx.dynamicBuilder\n      .buildConstant(palletName, name)\n      .dec(constant.value)\n    cachedResults.set(ctx, result)\n    return result\n  }\n\n  const fn = (runtime?: Runtime): any => {\n    if (runtime) {\n      if (!isCompatible(runtime)) throw checksumError()\n      return getValueWithContext(getRuntimeContext(runtime))\n    }\n    return firstValueFrom(\n      compatibleRuntime$(chainHead, null, checksumError).pipe(\n        map(getValueWithContext),\n      ),\n    )\n  }\n\n  return Object.assign(fn, { isCompatible })\n}\n","import { Observable, combineLatest, filter, map } from \"rxjs\"\nimport {\n  ChainHead$,\n  RuntimeContext,\n  getObservableClient,\n} from \"@polkadot-api/observable-client\"\n\nexport class Runtime {\n  protected _ctx: unknown\n  protected _checksums: string[]\n\n  private constructor(ctx: RuntimeContext, checksums: string[]) {\n    this._ctx = ctx\n    this._checksums = checksums\n  }\n}\nexport function getRuntimeContext(runtime: Runtime): RuntimeContext {\n  return (runtime as any)._ctx\n}\nfunction getImportedChecksum(runtime: Runtime, idx: number): string {\n  return (runtime as any)._checksums[idx]\n}\nconst createRuntime = (ctx: RuntimeContext, checksums: string[]) =>\n  new (Runtime as any)(ctx, checksums)\n\nexport type RuntimeApi = Observable<Runtime> & {\n  latest: () => Promise<Runtime>\n}\n\nexport const getRuntimeApi = (\n  checksums: Promise<string[]>,\n  chainHead: ReturnType<ReturnType<typeof getObservableClient>[\"chainHead$\"]>,\n): RuntimeApi => {\n  let latestRuntime: Promise<Runtime>\n  let resolve: ((r: Runtime) => void) | null = null\n\n  latestRuntime = new Promise<Runtime>((res) => {\n    resolve = res\n  })\n\n  const runtimeWithChecksums$ = combineLatest([chainHead.runtime$, checksums])\n  runtimeWithChecksums$.subscribe(([x, checksums]) => {\n    if (x) {\n      if (resolve) {\n        resolve(createRuntime(x, checksums))\n        resolve = null\n      } else {\n        latestRuntime = Promise.resolve(createRuntime(x, checksums))\n      }\n    } else if (!resolve) {\n      latestRuntime = new Promise<Runtime>((res) => {\n        resolve = res\n      })\n    }\n  })\n\n  const result = runtimeWithChecksums$.pipe(\n    filter(([x]) => Boolean(x)),\n    map(([x, checksums]) => createRuntime(x!, checksums)),\n  ) as RuntimeApi\n  result.latest = () => latestRuntime\n\n  return result\n}\n\nexport interface IsCompatible {\n  (): Promise<boolean>\n  (runtime: Runtime): boolean\n}\n\nexport const compatibilityHelper =\n  (runtimeApi: RuntimeApi, checksumIdx: number) =>\n  (getChecksum: (ctx: RuntimeContext) => string | null) => {\n    function isCompatibleSync(runtime: Runtime) {\n      const ctx = getRuntimeContext(runtime)\n      const checksum = getImportedChecksum(runtime, checksumIdx)\n      return getChecksum(ctx) === checksum\n    }\n\n    const isCompatible: IsCompatible = (runtime?: Runtime): any => {\n      if (runtime) {\n        return isCompatibleSync(runtime)\n      }\n\n      return runtimeApi.latest().then(isCompatibleSync)\n    }\n    const waitChecksums = async () => {\n      const runtime = await runtimeApi.latest()\n      return (ctx: RuntimeContext) =>\n        getChecksum(ctx) === getImportedChecksum(runtime, checksumIdx)\n    }\n    const compatibleRuntime$ = (\n      chainHead: ChainHead$,\n      hash: string | null,\n      error: () => Error,\n    ) =>\n      combineLatest([chainHead.getRuntimeContext$(hash), waitChecksums()]).pipe(\n        map(([ctx, isCompatible]) => {\n          if (!isCompatible(ctx)) {\n            throw error()\n          }\n          return ctx\n        }),\n      )\n\n    const withCompatibleRuntime =\n      <T>(\n        chainHead: ChainHead$,\n        mapper: (x: T) => string,\n        error: () => Error,\n      ) =>\n      (source$: Observable<T>): Observable<[T, RuntimeContext]> =>\n        combineLatest([\n          source$.pipe(chainHead.withRuntime(mapper)),\n          waitChecksums(),\n        ]).pipe(\n          map(([[x, ctx], isCompatible]) => {\n            if (!isCompatible(ctx)) {\n              throw error()\n            }\n            return [x, ctx]\n          }),\n        )\n\n    return {\n      isCompatible,\n      waitChecksums,\n      withCompatibleRuntime,\n      compatibleRuntime$,\n    }\n  }\nexport type CompatibilityHelper = ReturnType<typeof compatibilityHelper>\n","import { Observable, firstValueFrom, map, mergeMap } from \"rxjs\"\nimport { BlockInfo, ChainHead$ } from \"@polkadot-api/observable-client\"\nimport { CompatibilityHelper, IsCompatible } from \"./runtime\"\nimport { concatMapEager, shareLatest } from \"./utils\"\n\nexport type EventPhase =\n  | { type: \"ApplyExtrinsic\"; value: number }\n  | { type: \"Finalization\" }\n  | { type: \"Initialization\" }\n\nexport type EvWatch<T> = (filter?: (value: T) => boolean) => Observable<{\n  meta: {\n    block: BlockInfo\n    phase: EventPhase\n  }\n  payload: T\n}>\n\nexport type EvPull<T> = () => Promise<\n  Array<{\n    meta: {\n      block: BlockInfo\n      phase: EventPhase\n    }\n    payload: T\n  }>\n>\n\nexport type EvFilter<T> = (collection: SystemEvent[\"event\"][]) => Array<T>\n\nexport type EvClient<T> = {\n  watch: EvWatch<T>\n  pull: EvPull<T>\n  filter: EvFilter<T>\n  isCompatible: IsCompatible\n}\n\ntype SystemEvent = {\n  phase: EventPhase\n  event: {\n    type: string\n    value: {\n      type: string\n      value: any\n    }\n  }\n  topics: Array<any>\n}\n\nexport const createEventEntry = <T>(\n  pallet: string,\n  name: string,\n  chainHead: ChainHead$,\n  compatibilityHelper: CompatibilityHelper,\n): EvClient<T> => {\n  const { isCompatible, withCompatibleRuntime } = compatibilityHelper((ctx) =>\n    ctx.checksumBuilder.buildEvent(pallet, name),\n  )\n  const checksumError = () =>\n    new Error(`Incompatible runtime entry Event(${pallet}.${name})`)\n\n  const shared$ = chainHead.finalized$.pipe(\n    withCompatibleRuntime(chainHead, (x) => x.hash, checksumError),\n    concatMapEager(([block]) =>\n      chainHead.eventsAt$(block.hash).pipe(\n        map((events) => {\n          const winners = events.filter(\n            (e) => e.event.type === pallet && e.event.value.type === name,\n          )\n          return winners.map((x) => {\n            return {\n              meta: {\n                phase: x.phase,\n                block,\n              },\n              payload: x.event.value.value,\n            }\n          })\n        }),\n      ),\n    ),\n    shareLatest,\n  )\n\n  const watch: EvWatch<T> = (f) =>\n    shared$.pipe(mergeMap((x) => (f ? x.filter((d) => f(d.payload)) : x)))\n\n  const pull: EvPull<T> = () => firstValueFrom(shared$)\n\n  const filter: EvFilter<T> = (events) =>\n    events\n      .filter((e) => e.type === pallet && e.value.type === name)\n      .map((x) => x.value.value)\n\n  return { watch, pull, filter, isCompatible }\n}\n","import { Observable, ReplaySubject, share } from \"rxjs\"\n\nexport const shareLatest: <T>(base: Observable<T>) => Observable<T> = share({\n  connector: () => new ReplaySubject(1),\n  resetOnError: true,\n  resetOnComplete: true,\n  resetOnRefCountZero: true,\n})\n","import { AbortError } from \"@polkadot-api/utils\"\nimport { Observable, Subscription, noop } from \"rxjs\"\n\nexport function firstValueFromWithSignal<T>(\n  source: Observable<T>,\n  signal?: AbortSignal,\n): Promise<T> {\n  return new Promise((resolve, reject) => {\n    let subscription: Subscription | null = null\n    let isDone = false\n\n    const onAbort = signal\n      ? () => {\n          subscription?.unsubscribe()\n          reject(new AbortError())\n        }\n      : noop\n\n    subscription = source.subscribe({\n      next: (value) => {\n        resolve(value)\n        subscription?.unsubscribe()\n        isDone = true\n      },\n      error: (e) => {\n        signal?.removeEventListener(\"abort\", onAbort)\n        reject(e)\n      },\n      complete: () => {\n        signal?.removeEventListener(\"abort\", onAbort)\n        reject(new Error(\"Observable completed without emitting\"))\n      },\n    })\n\n    // the observable could have emitted synchronously\n    if (!isDone) signal?.addEventListener(\"abort\", onAbort)\n  })\n}\n","import { defer, Observable, ObservableInput, Subscription } from \"rxjs\"\n\nexport const concatMapEager =\n  <I, O>(\n    mapper: (outterValue: I, index: number) => ObservableInput<O>,\n    concurrent = Infinity,\n  ) =>\n  (source$: Observable<I>) =>\n    new Observable<O>((observer) => {\n      let topSubscription: Subscription\n      const queues = new Map<number, Observable<O>>()\n      const innerSubscriptions = new Map<number, Subscription>()\n      const results = new Map<number, O[]>()\n\n      let mapperIdx = 0\n      let subscriptionIdx = 0\n      let observerIdx = 0\n\n      const nextSubscription = () => {\n        const inner$ = queues.get(subscriptionIdx)\n        if (!inner$) {\n          if (\n            innerSubscriptions.size === 0 &&\n            (typeof topSubscription === \"undefined\" || topSubscription.closed)\n          ) {\n            observer.complete()\n          }\n          return\n        }\n        const idx = subscriptionIdx++\n        queues.delete(idx)\n        if (observerIdx !== idx) {\n          results.set(idx, [])\n        }\n        innerSubscriptions.set(\n          idx,\n          inner$.subscribe({\n            next(x: O) {\n              if (observerIdx === idx) {\n                observer.next(x)\n              } else {\n                results.get(idx)!.push(x)\n              }\n            },\n            complete() {\n              innerSubscriptions.delete(idx)\n              if (idx === observerIdx) {\n                observerIdx++\n                while (results.has(observerIdx)) {\n                  results.get(observerIdx)!.forEach((x) => observer.next(x))\n                  results.delete(observerIdx)\n                  if (innerSubscriptions.has(observerIdx)) {\n                    break\n                  }\n                  observerIdx++\n                }\n              }\n              nextSubscription()\n            },\n            error(e: any) {\n              observer.error(e)\n            },\n          }),\n        )\n      }\n\n      topSubscription = source$.subscribe({\n        next(outterValue: I) {\n          const idx = mapperIdx++\n          queues.set(\n            idx,\n            defer(() => mapper(outterValue, idx)),\n          )\n          if (innerSubscriptions.size < concurrent) {\n            nextSubscription()\n          }\n        },\n        error(e: any) {\n          observer.error(e)\n        },\n        complete() {\n          if (innerSubscriptions.size === 0) {\n            observer.complete()\n          }\n        },\n      })\n\n      return () => {\n        innerSubscriptions.forEach((subscription) => subscription.unsubscribe())\n        topSubscription.unsubscribe()\n        queues.clear()\n        results.clear()\n      }\n    })\n","import { Observable, Subscription } from \"rxjs\"\n\nconst EMPTY_VALUE = Symbol(\"EMPTY_VALUE\")\ntype EMPTY_VALUE = typeof EMPTY_VALUE\n\nexport const lossLessExhaustMap =\n  <I, O>(mapper: (x: I) => Observable<O>) =>\n  (source$: Observable<I>): Observable<O> =>\n    new Observable((observer) => {\n      let innerSubscription: Subscription | null = null\n      let queuedValue: I | EMPTY_VALUE = EMPTY_VALUE\n      let isOutterDone = false\n\n      const setInnerSubscription = () => {\n        const observable = mapper(queuedValue as I)\n        queuedValue = EMPTY_VALUE\n        innerSubscription = observable.subscribe({\n          next(vv) {\n            observer.next(vv)\n          },\n          error(ee) {\n            observer.error(ee)\n          },\n          complete() {\n            if (queuedValue !== EMPTY_VALUE) setInnerSubscription()\n            else {\n              innerSubscription = null\n              if (isOutterDone) observer.complete()\n            }\n          },\n        })\n      }\n\n      const subscription = source$.subscribe({\n        next(v) {\n          queuedValue = v\n          if (!innerSubscription) setInnerSubscription()\n        },\n        error(e) {\n          observer.error(e)\n        },\n        complete() {\n          if (!innerSubscription) observer.complete()\n          isOutterDone = true\n        },\n      })\n\n      return () => {\n        innerSubscription?.unsubscribe()\n        subscription.unsubscribe()\n      }\n    })\n","import { firstValueFromWithSignal } from \"@/utils\"\nimport { toHex } from \"@polkadot-api/utils\"\nimport { map, mergeMap } from \"rxjs\"\nimport { ChainHead$ } from \"@polkadot-api/observable-client\"\nimport { CompatibilityHelper, IsCompatible } from \"./runtime\"\n\ntype CallOptions = Partial<{\n  at: string\n  signal: AbortSignal\n}>\n\ntype WithCallOptions<Args extends Array<any>> = Args[\"length\"] extends 0\n  ? [options?: CallOptions]\n  : [...args: Args, options?: CallOptions]\n\nexport interface RuntimeCall<Args extends Array<any>, Payload> {\n  (...args: WithCallOptions<Args>): Promise<Payload>\n  isCompatible: IsCompatible\n}\n\nconst isOptionalArg = (lastArg: any) => {\n  if (typeof lastArg !== \"object\") return false\n\n  return Object.keys(lastArg).every(\n    (k) =>\n      (k === \"at\" && typeof lastArg.at === \"string\") ||\n      (k === \"signal\" && lastArg.signal instanceof AbortSignal),\n  )\n}\n\nexport const createRuntimeCallEntry = (\n  api: string,\n  method: string,\n  chainHead: ChainHead$,\n  compatibilityHelper: CompatibilityHelper,\n): RuntimeCall<any, any> => {\n  const { isCompatible, compatibleRuntime$ } = compatibilityHelper((ctx) =>\n    ctx.checksumBuilder.buildRuntimeCall(api, method),\n  )\n  const callName = `${api}_${method}`\n  const checksumError = () =>\n    new Error(`Incompatible runtime entry RuntimeCall(${callName})`)\n\n  const fn = (...args: Array<any>) => {\n    const lastArg = args[args.length - 1]\n    const isLastArgOptional = isOptionalArg(lastArg)\n    const { signal, at: _at }: CallOptions = isLastArgOptional ? lastArg : {}\n    const at = _at ?? null\n\n    const result$ = compatibleRuntime$(chainHead, at, checksumError).pipe(\n      mergeMap((ctx) => {\n        const codecs = ctx.dynamicBuilder.buildRuntimeCall(api, method)\n        return chainHead\n          .call$(at, callName, toHex(codecs.args.enc(args)))\n          .pipe(map(codecs.value.dec))\n      }),\n    )\n\n    return firstValueFromWithSignal(result$, signal)\n  }\n\n  return Object.assign(fn, { isCompatible })\n}\n","import { firstValueFromWithSignal, lossLessExhaustMap } from \"@/utils\"\nimport { StorageItemInput, StorageResult } from \"@polkadot-api/substrate-client\"\nimport { Observable, debounceTime, distinctUntilChanged, map } from \"rxjs\"\nimport { ChainHead$ } from \"@polkadot-api/observable-client\"\nimport { CompatibilityHelper, IsCompatible } from \"./runtime\"\n\ntype CallOptions = Partial<{\n  at: string\n  signal: AbortSignal\n}>\n\ntype WithCallOptions<Args extends Array<any>> = [\n  ...args: Args,\n  options?: CallOptions,\n]\n\ntype PossibleParents<A extends Array<any>> = A extends [...infer Left, any]\n  ? Left | PossibleParents<Left>\n  : []\n\ntype StorageEntryWithoutKeys<Payload> = {\n  isCompatible: IsCompatible\n  getValue: (options?: CallOptions) => Promise<Payload>\n  watchValue: (bestOrFinalized?: \"best\" | \"finalized\") => Observable<Payload>\n}\n\ntype StorageEntryWithKeys<Args extends Array<any>, Payload> = {\n  isCompatible: IsCompatible\n  getValue: (...args: [...WithCallOptions<Args>]) => Promise<Payload>\n  watchValue: (\n    ...args: [...Args, bestOrFinalized?: \"best\" | \"finalized\"]\n  ) => Observable<Payload>\n  getValues: (\n    keys: Array<[...Args]>,\n    options?: CallOptions,\n  ) => Promise<Array<Payload>>\n  getEntries: (\n    ...args: WithCallOptions<PossibleParents<Args>>\n  ) => Promise<Array<{ keyArgs: Args; value: NonNullable<Payload> }>>\n}\n\nexport type StorageEntry<Args extends Array<any>, Payload> = Args extends []\n  ? StorageEntryWithoutKeys<Payload>\n  : StorageEntryWithKeys<Args, Payload>\n\nexport type Storage$ = <Type extends StorageItemInput[\"type\"]>(\n  hash: string | null,\n  type: Type,\n  key: string,\n  childTrie: string | null,\n) => Observable<StorageResult<Type>>\n\nconst isOptionalArg = (lastArg: any) => {\n  if (typeof lastArg !== \"object\") return false\n\n  return Object.keys(lastArg).every(\n    (k) =>\n      (k === \"at\" && typeof lastArg.at === \"string\") ||\n      (k === \"signal\" && lastArg.signal instanceof AbortSignal),\n  )\n}\n\nexport const createStorageEntry = (\n  pallet: string,\n  name: string,\n  chainHead: ChainHead$,\n  compatibilityHelper: CompatibilityHelper,\n): StorageEntry<any, any> => {\n  const { isCompatible, waitChecksums, withCompatibleRuntime } =\n    compatibilityHelper((ctx) => ctx.checksumBuilder.buildStorage(pallet, name))\n\n  const checksumError = () =>\n    new Error(`Incompatible runtime entry Storage(${pallet}.${name})`)\n  const invalidArgs = (args: Array<any>) =>\n    new Error(`Invalid Arguments calling ${pallet}.${name}(${args})`)\n\n  const watchValue = (...args: Array<any>) => {\n    const lastArg = args[args.length - 1]\n    const actualArgs =\n      lastArg === \"best\" || lastArg === \"finalized\" ? args.slice(0, -1) : args\n\n    return chainHead[lastArg === \"best\" ? \"best$\" : \"finalized$\"].pipe(\n      debounceTime(0),\n      withCompatibleRuntime(chainHead, (x) => x.hash, checksumError),\n      lossLessExhaustMap(([block, ctx]) => {\n        const codecs = ctx.dynamicBuilder.buildStorage(pallet, name)\n        return chainHead\n          .storage$(block.hash, \"value\", () => codecs.enc(...actualArgs))\n          .pipe(map((val) => ({ val, codecs })))\n      }),\n      distinctUntilChanged((a, b) => a.val === b.val),\n      map(({ val, codecs }) =>\n        val === null ? codecs.fallback : codecs.dec(val),\n      ),\n    )\n  }\n\n  const getValue = async (...args: Array<any>) => {\n    const lastArg = args[args.length - 1]\n    const isLastArgOptional = isOptionalArg(lastArg)\n    const { signal, at: _at }: CallOptions = isLastArgOptional ? lastArg : {}\n    const at = _at ?? null\n\n    const isCompatible = await waitChecksums()\n    const result$ = chainHead.storage$(\n      at,\n      \"value\",\n      (ctx) => {\n        const codecs = ctx.dynamicBuilder.buildStorage(pallet, name)\n        const actualArgs = args.length === codecs.len ? args : args.slice(0, -1)\n        if (args !== actualArgs && !isLastArgOptional) throw invalidArgs(args)\n        if (!isCompatible(ctx)) throw checksumError()\n        return codecs.enc(...actualArgs)\n      },\n      null,\n      (data, ctx) => {\n        const codecs = ctx.dynamicBuilder.buildStorage(pallet, name)\n        return data === null ? codecs.fallback : codecs.dec(data)\n      },\n    )\n    return firstValueFromWithSignal(result$, signal)\n  }\n\n  const getEntries = async (...args: Array<any>) => {\n    const lastArg = args[args.length - 1]\n    const isLastArgOptional = isOptionalArg(lastArg)\n    const { signal, at: _at }: CallOptions = isLastArgOptional ? lastArg : {}\n    const at = _at ?? null\n\n    const isCompatible = await waitChecksums()\n    const result$ = chainHead.storage$(\n      at,\n      \"descendantsValues\",\n      (ctx) => {\n        const codecs = ctx.dynamicBuilder.buildStorage(pallet, name)\n        if (args.length > codecs.len) throw invalidArgs(args)\n        const actualArgs =\n          args.length > 0 && isLastArgOptional ? args.slice(0, -1) : args\n        if (args.length === codecs.len && actualArgs === args)\n          throw invalidArgs(args)\n        if (!isCompatible(ctx)) throw checksumError()\n        return codecs.enc(...actualArgs)\n      },\n      null,\n      (values, ctx) => {\n        const codecs = ctx.dynamicBuilder.buildStorage(pallet, name)\n        return values.map(({ key, value }) => ({\n          keyArgs: codecs.keyDecoder(key),\n          value: codecs.dec(value),\n        }))\n      },\n    )\n    return firstValueFromWithSignal(result$, signal)\n  }\n\n  const getValues = (keyArgs: Array<Array<any>>, options?: CallOptions) =>\n    Promise.all(\n      keyArgs.map((args) => getValue(...(options ? [...args, options] : args))),\n    )\n\n  return { isCompatible, getValue, getValues, getEntries, watchValue }\n}\n","import {\n  AssetDescriptor,\n  Binary,\n  Enum,\n  HexString,\n} from \"@polkadot-api/substrate-bindings\"\nimport { mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport {\n  Observable,\n  concat,\n  firstValueFrom,\n  lastValueFrom,\n  map,\n  mergeMap,\n  of,\n  startWith,\n  take,\n  withLatestFrom,\n} from \"rxjs\"\nimport {\n  BlockInfo,\n  RuntimeContext,\n  SystemEvent,\n  getObservableClient,\n} from \"@polkadot-api/observable-client\"\nimport { TrackedTx } from \"@polkadot-api/observable-client\"\nimport {\n  CompatibilityHelper,\n  IsCompatible,\n  Runtime,\n  getRuntimeContext,\n} from \"./runtime\"\nimport { PolkadotSigner } from \"../../signers/polkadot-signer/dist/index.mjs\"\n\nexport type TxBroadcastEvent =\n  | { type: \"broadcasted\" }\n  | { type: \"bestChainBlockIncluded\"; block: { hash: string; index: number } }\n  | ({\n      type: \"finalized\"\n    } & TxFinalizedPayload)\nexport type TxEvent = TxBroadcastEvent | { type: \"signed\"; tx: HexString }\n\nexport type TxFinalizedPayload = {\n  ok: boolean\n  events: Array<SystemEvent[\"event\"]>\n  block: { hash: string; index: number }\n}\n\nconst getTxSuccessFromSystemEvents = (\n  systemEvents: Array<SystemEvent>,\n  txIdx: number,\n): Omit<TxFinalizedPayload, \"block\"> => {\n  const events = systemEvents\n    .filter((x) => x.phase.type === \"ApplyExtrinsic\" && x.phase.value === txIdx)\n    .map((x) => x.event)\n\n  const lastEvent = events[events.length - 1]\n  const ok =\n    lastEvent.type === \"System\" && lastEvent.value.type === \"ExtrinsicSuccess\"\n\n  return { ok, events }\n}\n\ntype TxFunction<Asset> = (\n  from: PolkadotSigner,\n  hintedSignExtensions?: Partial<\n    void extends Asset\n      ? {\n          tip: bigint\n          mortal: { mortal: false } | { mortal: true; period: number }\n        }\n      : {\n          tip: bigint\n          mortal: { mortal: false } | { mortal: true; period: number }\n          asset: Asset\n        }\n  >,\n) => Promise<TxFinalizedPayload>\n\ntype TxObservable<Asset> = (\n  from: PolkadotSigner,\n  hintedSignExtensions?: Partial<\n    void extends Asset\n      ? {\n          tip: bigint\n          mortal: { mortal: false } | { mortal: true; period: number }\n        }\n      : {\n          tip: bigint\n          mortal: { mortal: false } | { mortal: true; period: number }\n          asset: Asset\n        }\n  >,\n) => Observable<TxEvent>\n\ninterface TxCall {\n  (): Promise<Binary>\n  (runtime: Runtime): Binary\n}\n\ntype TxSigned<Asset> = (\n  from: PolkadotSigner,\n  hintedSignExtensions?: Partial<\n    void extends Asset\n      ? {\n          tip: bigint\n          mortal: { mortal: false } | { mortal: true; period: number }\n        }\n      : {\n          tip: bigint\n          mortal: { mortal: false } | { mortal: true; period: number }\n          asset: Asset\n        }\n  >,\n) => Promise<string>\n\nexport type Transaction<\n  Arg extends {} | undefined,\n  Pallet extends string,\n  Name extends string,\n  Asset,\n> = {\n  sign: TxSigned<Asset>\n  signSubmitAndWatch: TxObservable<Asset>\n  signAndSubmit: TxFunction<Asset>\n  getEncodedData: TxCall\n  decodedCall: Enum<{\n    type: Pallet\n    value: Enum<{\n      type: Name\n      value: Arg\n    }>\n  }>\n}\n\nexport interface TxEntry<\n  Arg extends {} | undefined,\n  Pallet extends string,\n  Name extends string,\n  Asset,\n> {\n  (\n    ...args: Arg extends undefined ? [] : [data: Arg]\n  ): Transaction<Arg, Pallet, Name, Asset>\n  isCompatible: IsCompatible\n}\n\nexport const getSubmitFns = (\n  chainHead: ReturnType<ReturnType<typeof getObservableClient>[\"chainHead$\"]>,\n  client: ReturnType<typeof getObservableClient>,\n) => {\n  const tx$ = (tx: string) =>\n    concat(\n      chainHead.finalized$.pipe(\n        take(1),\n        mergeMap((finalized) => chainHead.validateTx$(tx, finalized.hash)),\n        map((isValid) => {\n          if (!isValid) throw new Error(\"Invalid\")\n          return { type: \"broadcasted\" as \"broadcasted\" }\n        }),\n      ),\n      new Observable<TrackedTx>((observer) => {\n        const subscription = chainHead.trackTx$(tx).subscribe(observer)\n        subscription.add(\n          client.broadcastTx$(tx).subscribe({\n            error(e) {\n              observer.error(e)\n            },\n          }),\n        )\n        return subscription\n      }),\n    )\n\n  const submit$ = (transaction: HexString): Observable<TxBroadcastEvent> =>\n    tx$(transaction).pipe(\n      mergeMap((result) => {\n        return result.type !== \"finalized\"\n          ? of(result)\n          : chainHead.eventsAt$(result.block.hash).pipe(\n              map((events) => ({\n                ...result,\n                ...getTxSuccessFromSystemEvents(\n                  events,\n                  Number(result.block.index),\n                ),\n              })),\n            )\n      }),\n    )\n\n  const submit = async (\n    transaction: HexString,\n  ): Promise<{\n    ok: boolean\n    events: Array<SystemEvent[\"event\"]>\n    block: { hash: string; index: number }\n  }> =>\n    lastValueFrom(submit$(transaction)).then((x) => {\n      if (x.type !== \"finalized\") throw null\n      const result: {\n        ok: boolean\n        events: Array<SystemEvent[\"event\"]>\n        block: { hash: string; index: number }\n        type?: any\n      } = { ...x }\n      delete result.type\n      return result\n    })\n\n  return { submit$, submit }\n}\n\nexport const createTxEntry = <\n  Arg extends {} | undefined,\n  Pallet extends string,\n  Name extends string,\n  Asset extends AssetDescriptor<any>,\n>(\n  pallet: Pallet,\n  name: Name,\n  assetChecksum: Asset,\n  chainHead: ReturnType<ReturnType<typeof getObservableClient>[\"chainHead$\"]>,\n  submits: ReturnType<typeof getSubmitFns>,\n  signer: (\n    from: PolkadotSigner,\n    callData: Uint8Array,\n    atBlock: BlockInfo,\n    hinted?: Partial<{}>,\n  ) => Observable<Uint8Array>,\n  compatibilityHelper: CompatibilityHelper,\n): TxEntry<Arg, Pallet, Name, Asset[\"_type\"]> => {\n  const { isCompatible, compatibleRuntime$ } = compatibilityHelper((ctx) =>\n    ctx.checksumBuilder.buildCall(pallet, name),\n  )\n  const checksumError = () =>\n    new Error(`Incompatible runtime entry Tx(${pallet}.${name})`)\n\n  const fn = (arg?: Arg): any => {\n    const getCallDataWithContext = (\n      { dynamicBuilder, asset: [assetEnc, assetCheck] }: RuntimeContext,\n      arg: any,\n      hinted: Partial<{ asset: any }> = {},\n    ) => {\n      let returnHinted = hinted\n      if (hinted.asset) {\n        if (assetChecksum !== assetCheck)\n          throw new Error(`Incompatible runtime asset`)\n        returnHinted = { ...hinted, asset: assetEnc(hinted.asset) }\n      }\n\n      const { location, codec } = dynamicBuilder.buildCall(pallet, name)\n      return {\n        callData: Binary.fromBytes(\n          mergeUint8(new Uint8Array(location), codec.enc(arg)),\n        ),\n        hinted: returnHinted,\n      }\n    }\n\n    const getCallData$ = (arg: any, hinted: Partial<{ asset: any }> = {}) =>\n      compatibleRuntime$(chainHead, null, checksumError).pipe(\n        map((ctx) => getCallDataWithContext(ctx, arg, hinted)),\n      )\n\n    const getEncodedData: TxCall = (runtime?: Runtime): any => {\n      if (runtime) {\n        if (!isCompatible(runtime)) {\n          throw checksumError()\n        }\n        return getCallDataWithContext(getRuntimeContext(runtime), arg).callData\n      }\n      return firstValueFrom(getCallData$(arg).pipe(map((x) => x.callData)))\n    }\n\n    const sign$ = (from: PolkadotSigner, _hinted: any) =>\n      getCallData$(arg, _hinted).pipe(\n        withLatestFrom(chainHead.finalized$),\n        take(1),\n        mergeMap(([{ callData, hinted }, finalized]) =>\n          signer(from, callData.asBytes(), finalized, hinted),\n        ),\n      )\n\n    const sign: TxSigned<Asset> = (from, _hinted) =>\n      firstValueFrom(sign$(from, _hinted)).then(toHex)\n\n    const signAndSubmit: TxFunction<Asset> = (from, _hinted) =>\n      sign(from, _hinted).then(submits.submit)\n\n    const signSubmitAndWatch: TxObservable<Asset> = (from, _hinted) =>\n      sign$(from, _hinted).pipe(\n        mergeMap((result) => {\n          const tx = toHex(result)\n          return submits\n            .submit$(tx)\n            .pipe(startWith({ type: \"signed\" as const, tx }))\n        }),\n      )\n\n    return {\n      decodedCall: Enum(pallet, Enum(name, arg as any)) as Enum<{\n        type: Pallet\n        value: any\n      }>,\n      getEncodedData,\n      sign,\n      signSubmitAndWatch,\n      signAndSubmit,\n    }\n  }\n\n  return Object.assign(fn, { isCompatible })\n}\n","import { Observable, combineLatest, mergeMap, of, take } from \"rxjs\"\nimport { BlockInfo, ChainHead$ } from \"@polkadot-api/observable-client\"\nimport { HintedSignedExtensions } from \"./types\"\nimport {\n  ChargeAssetTxPayment,\n  ChargeTransactionPayment,\n  CheckMortality,\n} from \"./signed-extensions/user\"\nimport * as chainSignedExtensions from \"./signed-extensions/chain\"\nimport type { PolkadotSigner } from \"@polkadot-api/polkadot-signer\"\nimport { _void } from \"@polkadot-api/substrate-bindings\"\nimport { empty } from \"./signed-extensions/utils\"\n\nexport const getCreateTx = (\n  chainHead: ChainHead$,\n): ((\n  signer: PolkadotSigner,\n  callData: Uint8Array,\n  atBlock: BlockInfo,\n  hinted?: HintedSignedExtensions,\n) => Observable<Uint8Array>) => {\n  return (signer, callData, atBlock, hinted) => {\n    return chainHead.getRuntimeContext$(atBlock.hash).pipe(\n      take(1),\n      mergeMap((ctx) => {\n        const signedExtensionsCtx = {\n          metadata: ctx.metadata,\n          chainHead: chainHead,\n          callData: callData,\n          at: atBlock.hash,\n          from: signer.publicKey,\n        }\n\n        const mortality = hinted?.mortality?.mortal\n          ? { period: hinted.mortality.period, blockNumber: atBlock.number }\n          : undefined\n\n        return combineLatest(\n          ctx.metadata.extrinsic.signedExtensions.map(\n            ({ identifier, type, additionalSigned }) => {\n              if (identifier === \"CheckMortality\")\n                return CheckMortality(mortality, signedExtensionsCtx)\n\n              if (identifier === \"ChargeTransactionPayment\")\n                return ChargeTransactionPayment(hinted?.tip ?? 0n)\n\n              if (identifier === \"ChargeAssetTxPayment\")\n                return ChargeAssetTxPayment(hinted?.tip ?? 0n, hinted?.asset)\n\n              const fn = chainSignedExtensions[identifier as \"CheckGenesis\"]\n              if (!fn) {\n                if (\n                  ctx.dynamicBuilder.buildDefinition(type) === _void &&\n                  ctx.dynamicBuilder.buildDefinition(additionalSigned) === _void\n                )\n                  return of({\n                    value: empty,\n                    additionalSigned: empty,\n                  })\n\n                throw new Error(`Unsupported signed-extension: ${identifier}`)\n              }\n              return fn(signedExtensionsCtx)\n            },\n          ),\n        ).pipe(\n          mergeMap((signedExtensions) =>\n            signer.sign(\n              callData,\n              Object.fromEntries(\n                ctx.metadata.extrinsic.signedExtensions.map(\n                  ({ identifier }, idx) => [\n                    identifier,\n                    { identifier, ...signedExtensions[idx] },\n                  ],\n                ),\n              ),\n              ctx.metadataRaw,\n              atBlock.number,\n            ),\n          ),\n        )\n      }),\n    )\n  }\n}\n","import { compactBn } from \"@polkadot-api/substrate-bindings\"\nimport { of } from \"rxjs\"\nimport { empty } from \"../utils\"\nimport { SignedExtension } from \"../internal-types\"\n\nexport const ChargeTransactionPayment = (tip: bigint): SignedExtension =>\n  of({\n    value: compactBn.enc(tip),\n    additionalSigned: empty,\n  })\n","import { map, noop, of } from \"rxjs\"\nimport {\n  V15,\n  Storage,\n  Twox64Concat,\n  u32,\n} from \"@polkadot-api/substrate-bindings\"\nimport { getDynamicBuilder, getLookupFn } from \"@polkadot-api/metadata-builders\"\nimport { fromHex } from \"@polkadot-api/utils\"\nimport type { ChainExtensionCtx } from \"./internal-types\"\n\nexport const empty = new Uint8Array()\n\nconst genesisHashStorageKey = Storage(\"System\")(\"BlockHash\", noop, [\n  u32,\n  Twox64Concat,\n]).enc(0)\n\nexport const genesisHashFromCtx = (ctx: ChainExtensionCtx) =>\n  ctx.chainHead\n    .storage$(ctx.at, \"value\", () => genesisHashStorageKey, null)\n    .pipe(map((result) => fromHex(result!)))\n\nexport const systemVersionProp$ = (propName: string, metadata: V15) => {\n  const lookupFn = getLookupFn(metadata.lookup)\n  const dynamicBuilder = getDynamicBuilder(metadata)\n\n  const constant = metadata.pallets\n    .find((x) => x.name === \"System\")!\n    .constants!.find((s) => s.name === \"Version\")!\n\n  const systemVersion = lookupFn(constant.type)\n  const systemVersionDec = dynamicBuilder.buildDefinition(constant.type).dec\n\n  if (systemVersion.type !== \"struct\") throw new Error(\"not a struct\")\n\n  const valueEnc = dynamicBuilder.buildDefinition(\n    systemVersion.value[propName].id,\n  ).enc\n\n  return of(valueEnc(systemVersionDec(constant.value)[propName]))\n}\n","import { map, of } from \"rxjs\"\nimport { Bytes, enhanceEncoder, u16 } from \"@polkadot-api/substrate-bindings\"\nimport { fromHex } from \"@polkadot-api/utils\"\nimport { genesisHashFromCtx } from \"../utils\"\nimport { ChainExtensionCtx, SignedExtension } from \"../internal-types\"\n\nfunction trailingZeroes(n: number) {\n  let i = 0\n  while (!(n & 1)) {\n    i++\n    n >>= 1\n  }\n  return i\n}\n\nconst mortal = enhanceEncoder(\n  Bytes(2).enc,\n  (value: { period: number; phase: number }) => {\n    const factor = Math.max(value.period >> 12, 1)\n    const left = Math.min(Math.max(trailingZeroes(value.period) - 1, 1), 15)\n    const right = (value.phase / factor) << 4\n    return u16.enc(left | right)\n  },\n)\n\nconst zero = new Uint8Array([0])\nexport const CheckMortality = (\n  input: { period: number; blockNumber: number } | undefined,\n  ctx: ChainExtensionCtx,\n): SignedExtension => {\n  if (!input)\n    return genesisHashFromCtx(ctx).pipe(\n      map((additionalSigned) => ({\n        additionalSigned,\n        value: zero,\n      })),\n    )\n\n  const { period, blockNumber } = input\n  return of({\n    additionalSigned: fromHex(ctx.at),\n    value: mortal({\n      period,\n      phase: blockNumber % period,\n    }),\n  })\n}\n","import { of } from \"rxjs\"\nimport {\n  Bytes,\n  Option,\n  Struct,\n  compact,\n} from \"@polkadot-api/substrate-bindings\"\nimport { empty } from \"../utils\"\nimport { SignedExtension } from \"../internal-types\"\n\nconst encoder = Struct({\n  tip: compact,\n  asset: Option(Bytes(Infinity)),\n}).enc\n\nexport const ChargeAssetTxPayment = (\n  tip: number | bigint,\n  asset: Uint8Array | undefined,\n): SignedExtension =>\n  of({\n    value: encoder({\n      tip,\n      asset,\n    }),\n    additionalSigned: empty,\n  })\n","export * from \"./CheckGenesis\"\nexport * from \"./CheckNonce\"\nexport * from \"./CheckSpecVersion\"\nexport * from \"./CheckTxVersion\"\n","import { map } from \"rxjs\"\nimport type { GetChainSignedExtension } from \"../internal-types\"\nimport { empty, genesisHashFromCtx } from \"../utils\"\n\nexport const CheckGenesis: GetChainSignedExtension = (ctx) =>\n  genesisHashFromCtx(ctx).pipe(\n    map((additionalSigned) => ({ value: empty, additionalSigned })),\n  )\n","import { map } from \"rxjs\"\nimport { compact, u16, u32, u64, u8 } from \"@polkadot-api/substrate-bindings\"\nimport type { GetChainSignedExtension } from \"../internal-types\"\nimport { empty } from \"../utils\"\nimport { fromHex, toHex } from \"@polkadot-api/utils\"\n\nconst lenToDecoder = {\n  1: u8.dec,\n  2: u16.dec,\n  4: u32.dec,\n  8: u64.dec,\n}\n\nexport const CheckNonce: GetChainSignedExtension = (ctx) =>\n  ctx.chainHead\n    .call$(ctx.at, \"AccountNonceApi_account_nonce\", toHex(ctx.from))\n    .pipe(\n      map((result) => {\n        const bytes = fromHex(result)\n        const decoder = lenToDecoder[bytes.length as 2 | 4 | 8]\n        if (!decoder)\n          throw new Error(\"AccountNonceApi_account_nonce retrieved wrong data\")\n        return compact.enc(decoder(bytes))\n      }),\n      map((value) => ({ value, additionalSigned: empty })),\n    )\n","import { map } from \"rxjs\"\nimport type { GetChainSignedExtension } from \"../internal-types\"\nimport { empty, systemVersionProp$ } from \"../utils\"\n\nexport const CheckSpecVersion: GetChainSignedExtension = ({ metadata }) =>\n  systemVersionProp$(\"spec_version\", metadata).pipe(\n    map((additionalSigned) => ({ additionalSigned, value: empty })),\n  )\n","import { map } from \"rxjs\"\nimport type { GetChainSignedExtension } from \"../internal-types\"\nimport { empty, systemVersionProp$ } from \"../utils\"\n\nexport const CheckTxVersion: GetChainSignedExtension = ({ metadata }) =>\n  systemVersionProp$(\"transaction_version\", metadata).pipe(\n    map((additionalSigned) => ({ additionalSigned, value: empty })),\n  )\n","export type {\n  Codec,\n  SS58String,\n  HexString,\n  GetEnum,\n  PlainDescriptor,\n  AssetDescriptor,\n  TxDescriptor,\n  StorageDescriptor,\n  QueryFromDescriptors,\n  TxFromDescriptors,\n  EventsFromDescriptors,\n  ErrorsFromDescriptors,\n  ConstFromDescriptors,\n  RuntimeDescriptor,\n  ResultPayload,\n  FixedSizeBinary,\n} from \"@polkadot-api/substrate-bindings\"\nexport {\n  AccountId,\n  Binary,\n  Enum,\n  _Enum,\n} from \"@polkadot-api/substrate-bindings\"\n"],"mappings":"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","names":["firstValueFrom","map","checksums","isCompatible","compatibilityHelper","map","firstValueFrom","map","Observable","Observable","compatibilityHelper","map","firstValueFrom","filter","map","mergeMap","compatibilityHelper","map","isOptionalArg","compatibilityHelper","isCompatible","toHex","Observable","firstValueFrom","map","mergeMap","mergeMap","map","Observable","compatibilityHelper","arg","firstValueFrom","toHex","combineLatest","mergeMap","of","take","of","map","noop","of","of","map","of","fromHex","map","of","fromHex","of","Bytes","Bytes","of","map","map","map","compact","u16","u32","fromHex","toHex","u16","u32","map","compact","map","map","map","map","take","mergeMap","combineLatest","of","firstValueFrom","Binary","Enum"]}