polkadot-api 0.5.5 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { HexString, Enum, Binary, Descriptors, QueryFromDescriptors, TxFromDescriptors, EventsFromDescriptors, ConstFromDescriptors, BlockHeader, RuntimeDescriptor } from '@polkadot-api/substrate-bindings';
1
+ import { HexString, SS58String, Enum, Binary, Descriptors, QueryFromDescriptors, TxFromDescriptors, EventsFromDescriptors, ConstFromDescriptors, BlockHeader, RuntimeDescriptor } from '@polkadot-api/substrate-bindings';
2
2
  export { AccountId, AssetDescriptor, Binary, Codec, ConstFromDescriptors, Enum, EnumVariant, ErrorsFromDescriptors, EventsFromDescriptors, FixedSizeBinary, GetEnum, HexString, PlainDescriptor, QueryFromDescriptors, ResultPayload, RuntimeDescriptor, SS58String, StorageDescriptor, TxDescriptor, TxFromDescriptors, _Enum } from '@polkadot-api/substrate-bindings';
3
3
  import { Observable } from 'rxjs';
4
4
  import { BlockInfo, SystemEvent as SystemEvent$1 } from '@polkadot-api/observable-client';
@@ -148,7 +148,7 @@ type Transaction<Arg extends {} | undefined, Pallet extends string, Name extends
148
148
  signSubmitAndWatch: TxObservable<Asset>;
149
149
  signAndSubmit: TxFunction<Asset>;
150
150
  getEncodedData: TxCall;
151
- getEstimatedFees: () => Promise<bigint>;
151
+ getEstimatedFees: (from: Uint8Array | SS58String, hintedSignExtensions?: HintedSignExtensions<Asset>) => Promise<bigint>;
152
152
  decodedCall: Enum<{
153
153
  [P in Pallet]: Enum<{
154
154
  [N in Name]: Arg;
@@ -223,7 +223,7 @@ interface PolkadotClient {
223
223
  getFinalizedBlock: () => Promise<BlockInfo>;
224
224
  bestBlocks$: Observable<BlockInfo[]>;
225
225
  getBestBlocks: () => Promise<BlockInfo[]>;
226
- watchBlockBlody: (hash: string) => Observable<HexString[]>;
226
+ watchBlockBody: (hash: string) => Observable<HexString[]>;
227
227
  getBlockBody: (hash: string) => Promise<HexString[]>;
228
228
  getBlockHeader: (hash?: string) => Promise<BlockHeader>;
229
229
  submit: (transaction: HexString) => Promise<TxFinalizedPayload>;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { HexString, Enum, Binary, Descriptors, QueryFromDescriptors, TxFromDescriptors, EventsFromDescriptors, ConstFromDescriptors, BlockHeader, RuntimeDescriptor } from '@polkadot-api/substrate-bindings';
1
+ import { HexString, SS58String, Enum, Binary, Descriptors, QueryFromDescriptors, TxFromDescriptors, EventsFromDescriptors, ConstFromDescriptors, BlockHeader, RuntimeDescriptor } from '@polkadot-api/substrate-bindings';
2
2
  export { AccountId, AssetDescriptor, Binary, Codec, ConstFromDescriptors, Enum, EnumVariant, ErrorsFromDescriptors, EventsFromDescriptors, FixedSizeBinary, GetEnum, HexString, PlainDescriptor, QueryFromDescriptors, ResultPayload, RuntimeDescriptor, SS58String, StorageDescriptor, TxDescriptor, TxFromDescriptors, _Enum } from '@polkadot-api/substrate-bindings';
3
3
  import { Observable } from 'rxjs';
4
4
  import { BlockInfo, SystemEvent as SystemEvent$1 } from '@polkadot-api/observable-client';
@@ -148,7 +148,7 @@ type Transaction<Arg extends {} | undefined, Pallet extends string, Name extends
148
148
  signSubmitAndWatch: TxObservable<Asset>;
149
149
  signAndSubmit: TxFunction<Asset>;
150
150
  getEncodedData: TxCall;
151
- getEstimatedFees: () => Promise<bigint>;
151
+ getEstimatedFees: (from: Uint8Array | SS58String, hintedSignExtensions?: HintedSignExtensions<Asset>) => Promise<bigint>;
152
152
  decodedCall: Enum<{
153
153
  [P in Pallet]: Enum<{
154
154
  [N in Name]: Arg;
@@ -223,7 +223,7 @@ interface PolkadotClient {
223
223
  getFinalizedBlock: () => Promise<BlockInfo>;
224
224
  bestBlocks$: Observable<BlockInfo[]>;
225
225
  getBestBlocks: () => Promise<BlockInfo[]>;
226
- watchBlockBlody: (hash: string) => Observable<HexString[]>;
226
+ watchBlockBody: (hash: string) => Observable<HexString[]>;
227
227
  getBlockBody: (hash: string) => Promise<HexString[]>;
228
228
  getBlockHeader: (hash?: string) => Promise<BlockHeader>;
229
229
  submit: (transaction: HexString) => Promise<TxFinalizedPayload>;
package/dist/index.js CHANGED
@@ -28,6 +28,7 @@ __export(src_exports, {
28
28
  AccountId: () => import_substrate_bindings8.AccountId,
29
29
  Binary: () => import_substrate_bindings8.Binary,
30
30
  Enum: () => import_substrate_bindings8.Enum,
31
+ FixedSizeBinary: () => import_substrate_bindings8.FixedSizeBinary,
31
32
  _Enum: () => import_substrate_bindings8._Enum,
32
33
  createClient: () => createClient
33
34
  });
@@ -371,7 +372,7 @@ var createEventEntry = (pallet, name, chainHead, compatibilityHelper2) => {
371
372
  };
372
373
 
373
374
  // src/client.ts
374
- var import_observable_client = require("@polkadot-api/observable-client");
375
+ var import_observable_client2 = require("@polkadot-api/observable-client");
375
376
 
376
377
  // src/runtime-call.ts
377
378
  var import_utils4 = require("@polkadot-api/utils");
@@ -407,6 +408,7 @@ var createRuntimeCallEntry = (api, method, chainHead, compatibilityHelper2) => {
407
408
 
408
409
  // src/storage.ts
409
410
  var import_rxjs9 = require("rxjs");
411
+ var import_observable_client = require("@polkadot-api/observable-client");
410
412
  var isOptionalArg2 = (lastArg) => {
411
413
  if (typeof lastArg !== "object")
412
414
  return false;
@@ -415,13 +417,19 @@ var isOptionalArg2 = (lastArg) => {
415
417
  );
416
418
  };
417
419
  var createStorageEntry = (pallet, name, chainHead, compatibilityHelper2) => {
420
+ const isSystemNumber = pallet === "System" && name === "Number";
418
421
  const { isCompatible, waitChecksums, withCompatibleRuntime } = compatibilityHelper2((ctx) => ctx.checksumBuilder.buildStorage(pallet, name));
419
422
  const checksumError = () => new Error(`Incompatible runtime entry Storage(${pallet}.${name})`);
420
423
  const invalidArgs = (args) => new Error(`Invalid Arguments calling ${pallet}.${name}(${args})`);
421
424
  const watchValue = (...args) => {
422
- const lastArg = args[args.length - 1];
423
- const actualArgs = lastArg === "best" || lastArg === "finalized" ? args.slice(0, -1) : args;
424
- return chainHead[lastArg === "best" ? "best$" : "finalized$"].pipe(
425
+ const target = args[args.length - 1];
426
+ const actualArgs = target === "best" || target === "finalized" ? args.slice(0, -1) : args;
427
+ if (isSystemNumber)
428
+ return chainHead.bestBlocks$.pipe(
429
+ (0, import_rxjs9.map)((blocks) => blocks.at(target === "best" ? 0 : -1).number),
430
+ (0, import_rxjs9.distinctUntilChanged)()
431
+ );
432
+ return chainHead[target === "best" ? "best$" : "finalized$"].pipe(
425
433
  (0, import_rxjs9.debounceTime)(0),
426
434
  withCompatibleRuntime(chainHead, (x) => x.hash, checksumError),
427
435
  raceMap(([block, ctx]) => {
@@ -439,25 +447,44 @@ var createStorageEntry = (pallet, name, chainHead, compatibilityHelper2) => {
439
447
  const isLastArgOptional = isOptionalArg2(lastArg);
440
448
  const { signal, at: _at } = isLastArgOptional ? lastArg : {};
441
449
  const at = _at ?? null;
442
- const isCompatible2 = await waitChecksums();
443
- const result$ = chainHead.storage$(
444
- at,
445
- "value",
446
- (ctx) => {
447
- if (!isCompatible2(ctx))
448
- throw checksumError();
449
- const codecs = ctx.dynamicBuilder.buildStorage(pallet, name);
450
- const actualArgs = args.length === codecs.len ? args : args.slice(0, -1);
451
- if (args !== actualArgs && !isLastArgOptional)
452
- throw invalidArgs(args);
453
- return codecs.enc(...actualArgs);
454
- },
455
- null,
456
- (data, ctx) => {
457
- const codecs = ctx.dynamicBuilder.buildStorage(pallet, name);
458
- return data === null ? codecs.fallback : codecs.dec(data);
459
- }
460
- );
450
+ let result$;
451
+ if (isSystemNumber) {
452
+ result$ = chainHead.bestBlocks$.pipe(
453
+ (0, import_rxjs9.map)((blocks) => {
454
+ if (at === "finalized" || !at)
455
+ return blocks.at(-1);
456
+ if (at === "best")
457
+ return blocks.at(0);
458
+ return blocks.find((block) => block.hash === at);
459
+ }),
460
+ (0, import_rxjs9.map)((block) => {
461
+ if (!block)
462
+ throw new import_observable_client.NotBestBlockError();
463
+ return block.number;
464
+ }),
465
+ (0, import_rxjs9.distinctUntilChanged)()
466
+ );
467
+ } else {
468
+ const isCompatible2 = await waitChecksums();
469
+ result$ = chainHead.storage$(
470
+ at,
471
+ "value",
472
+ (ctx) => {
473
+ if (!isCompatible2(ctx))
474
+ throw checksumError();
475
+ const codecs = ctx.dynamicBuilder.buildStorage(pallet, name);
476
+ const actualArgs = args.length === codecs.len ? args : args.slice(0, -1);
477
+ if (args !== actualArgs && !isLastArgOptional)
478
+ throw invalidArgs(args);
479
+ return codecs.enc(...actualArgs);
480
+ },
481
+ null,
482
+ (data, ctx) => {
483
+ const codecs = ctx.dynamicBuilder.buildStorage(pallet, name);
484
+ return data === null ? codecs.fallback : codecs.dec(data);
485
+ }
486
+ );
487
+ }
461
488
  return firstValueFromWithSignal(result$, signal);
462
489
  };
463
490
  const getEntries = async (...args) => {
@@ -501,12 +528,14 @@ var createStorageEntry = (pallet, name, chainHead, compatibilityHelper2) => {
501
528
  var import_substrate_bindings = require("@polkadot-api/substrate-bindings");
502
529
  var import_utils6 = require("@polkadot-api/utils");
503
530
  var import_rxjs10 = require("rxjs");
531
+ var import_signer = require("@polkadot-api/signer");
504
532
  var getTxSuccessFromSystemEvents = (systemEvents, txIdx) => {
505
533
  const events = systemEvents.filter((x) => x.phase.type === "ApplyExtrinsic" && x.phase.value === txIdx).map((x) => x.event);
506
534
  const lastEvent = events[events.length - 1];
507
535
  const ok = lastEvent.type === "System" && lastEvent.value.type === "ExtrinsicSuccess";
508
536
  return { ok, events };
509
537
  };
538
+ var accountIdEnc = (0, import_substrate_bindings.AccountId)().enc;
510
539
  var getSubmitFns = (chainHead, client) => {
511
540
  const tx$ = (tx) => (0, import_rxjs10.concat)(
512
541
  chainHead.finalized$.pipe(
@@ -552,7 +581,10 @@ var getSubmitFns = (chainHead, client) => {
552
581
  });
553
582
  return { submit$, submit };
554
583
  };
555
- var feeDetailsDec = (0, import_substrate_bindings.Option)((0, import_substrate_bindings.Tuple)(import_substrate_bindings.u128, import_substrate_bindings.u128, import_substrate_bindings.u128)).dec;
584
+ var queryInfoRawDec = (0, import_substrate_bindings.Tuple)(import_substrate_bindings.compact, import_substrate_bindings.compact, import_substrate_bindings.u8, import_substrate_bindings.u128).dec;
585
+ var queryInfoDec = (input) => queryInfoRawDec(input)[3];
586
+ var fakeSignature = new Uint8Array(64);
587
+ var getFakeSignature = () => fakeSignature;
556
588
  var createTxEntry = (pallet, name, assetChecksum, chainHead, submits, signer, compatibilityHelper2) => {
557
589
  const { isCompatible, compatibleRuntime$ } = compatibilityHelper2(
558
590
  (ctx) => ctx.checksumBuilder.buildCall(pallet, name)
@@ -601,20 +633,16 @@ var createTxEntry = (pallet, name, assetChecksum, chainHead, submits, signer, co
601
633
  return submits.submit$(tx).pipe((0, import_rxjs10.startWith)({ type: "signed", tx }));
602
634
  })
603
635
  );
604
- const getEstimatedFees = async () => {
605
- const encoded = (await getEncodedData()).asBytes();
606
- const preLen = encoded.length + 103;
607
- const len = preLen + import_substrate_bindings.compact.enc(preLen).length;
608
- const args = (0, import_utils6.toHex)((0, import_utils6.mergeUint8)(encoded, import_substrate_bindings.u32.enc(len)));
636
+ const getEstimatedFees = async (from, _hinted) => {
637
+ const fakeSigner = (0, import_signer.getPolkadotSigner)(
638
+ from instanceof Uint8Array ? from : accountIdEnc(from),
639
+ "Sr25519",
640
+ getFakeSignature
641
+ );
642
+ const encoded = (0, import_utils6.fromHex)(await sign(fakeSigner, _hinted));
643
+ const args = (0, import_utils6.toHex)((0, import_utils6.mergeUint8)(encoded, import_substrate_bindings.u32.enc(encoded.length)));
609
644
  return (0, import_rxjs10.firstValueFrom)(
610
- chainHead.call$(null, "TransactionPaymentCallApi_query_call_fee_details", args).pipe(
611
- (0, import_rxjs10.map)((x) => {
612
- const result = feeDetailsDec(x);
613
- if (!result)
614
- throw new Error("Unable to calculate tx fees");
615
- return result.reduce((a, b) => a + b);
616
- })
617
- )
645
+ chainHead.call$(null, "TransactionPaymentApi_query_info", args).pipe((0, import_rxjs10.map)(queryInfoDec))
618
646
  );
619
647
  };
620
648
  return {
@@ -787,7 +815,7 @@ var getCreateTx = (chainHead) => {
787
815
  at: atBlock.hash,
788
816
  from: signer.publicKey
789
817
  };
790
- const mortality = hinted?.mortality?.mortal ? { period: hinted.mortality.period, blockNumber: atBlock.number } : void 0;
818
+ const mortality = !hinted?.mortality ? { period: 64, blockNumber: atBlock.number } : hinted.mortality.mortal ? { period: hinted.mortality.period, blockNumber: atBlock.number } : void 0;
791
819
  return (0, import_rxjs19.combineLatest)(
792
820
  ctx.metadata.extrinsic.signedExtensions.map(
793
821
  ({ identifier, type, additionalSigned }) => {
@@ -914,7 +942,7 @@ var createTypedApi = (descriptors, createTxFromSigner, chainHead, submitFns) =>
914
942
  };
915
943
  function createClient(provider) {
916
944
  const rawClient = (0, import_substrate_client.createClient)(provider);
917
- const client = (0, import_observable_client.getObservableClient)(rawClient);
945
+ const client = (0, import_observable_client2.getObservableClient)(rawClient);
918
946
  const chainHead = client.chainHead$();
919
947
  const createTxFromSigner = getCreateTx(chainHead);
920
948
  const submitFns = getSubmitFns(chainHead, client);
@@ -926,7 +954,7 @@ function createClient(provider) {
926
954
  getFinalizedBlock: () => (0, import_rxjs20.firstValueFrom)(chainHead.finalized$),
927
955
  bestBlocks$: chainHead.bestBlocks$,
928
956
  getBestBlocks: () => (0, import_rxjs20.firstValueFrom)(chainHead.bestBlocks$),
929
- watchBlockBlody: chainHead.body$,
957
+ watchBlockBody: chainHead.body$,
930
958
  getBlockBody: (hash) => (0, import_rxjs20.firstValueFrom)(chainHead.body$(hash)),
931
959
  getBlockHeader: (hash) => (0, import_rxjs20.firstValueFrom)(chainHead.header$(hash ?? null)),
932
960
  submit,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../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/raceMap.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":["export * from \"./client\"\nexport * from \"./re-exports\"\nexport type { EventPhase } from \"./event\"\nexport type { PolkadotSigner } from \"@polkadot-api/polkadot-signer\"\nexport type { PolkadotClient, TypedApi, FixedSizeArray } from \"./types\"\nexport type {\n TxBroadcastEvent,\n TxEvent,\n TxFinalizedPayload,\n Transaction,\n} from \"./tx\"\n","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 const { getChainSpecData } = rawClient\n\n return {\n getChainSpecData,\n\n finalizedBlock$: chainHead.finalized$,\n getFinalizedBlock: () => firstValueFrom(chainHead.finalized$),\n\n bestBlocks$: chainHead.bestBlocks$,\n getBestBlocks: () => firstValueFrom(chainHead.bestBlocks$),\n\n watchBlockBlody: chainHead.body$,\n getBlockBody: (hash: string) => firstValueFrom(chainHead.body$(hash)),\n\n getBlockHeader: (hash?: string) =>\n firstValueFrom(chainHead.header$(hash ?? null)),\n\n submit,\n submitAndWatch,\n\n getTypedApi: <D extends Descriptors>(descriptors: D) =>\n createTypedApi(descriptors, createTxFromSigner, chainHead, submitFns),\n\n destroy: () => {\n chainHead.unfollow()\n client.destroy()\n },\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 const runtime = createRuntime(x, checksums)\n if (resolve) {\n resolve(runtime)\n resolve = null\n } else {\n latestRuntime = Promise.resolve(runtime)\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\nexport const raceMap =\n <I, O>(mapper: (x: I) => Observable<O>, concurrent: number) =>\n (source$: Observable<I>) =>\n new Observable<O>((observer) => {\n let innerSubscriptions = new Array<Subscription>()\n let isOuterDone = false\n\n const createSubscription = (value: I) => {\n const sub = new Subscription()\n innerSubscriptions.push(sub)\n if (innerSubscriptions.length > concurrent) {\n innerSubscriptions[0].unsubscribe()\n innerSubscriptions = innerSubscriptions.slice(1)\n }\n\n const subscription = mapper(value).subscribe({\n next(value) {\n const index = innerSubscriptions.indexOf(sub)\n innerSubscriptions.slice(0, index).forEach((s) => s.unsubscribe())\n innerSubscriptions = innerSubscriptions.slice(index)\n\n observer.next(value)\n },\n error(error) {\n observer.error(error)\n },\n complete() {\n const index = innerSubscriptions.indexOf(sub)\n innerSubscriptions.splice(index, 1)\n\n if (innerSubscriptions.length === 0 && isOuterDone)\n observer.complete()\n },\n })\n sub.add(subscription)\n }\n\n const outerSubscription = source$.subscribe({\n next(value) {\n createSubscription(value)\n },\n error(err) {\n observer.error(err)\n },\n complete() {\n if (innerSubscriptions.length === 0) observer.complete()\n isOuterDone = true\n },\n })\n\n return () => {\n outerSubscription.unsubscribe()\n innerSubscriptions.forEach((sub) => sub.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, raceMap } 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 raceMap(([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 }, 4),\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 if (!isCompatible(ctx)) throw checksumError()\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 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 if (!isCompatible(ctx)) throw checksumError()\n\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 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 Option,\n Tuple,\n compact,\n u128,\n u32,\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 HintedSignExtensions<Asset> = Partial<\n void extends Asset\n ? {\n tip: bigint\n mortality: { mortal: false } | { mortal: true; period: number }\n }\n : {\n tip: bigint\n mortality: { mortal: false } | { mortal: true; period: number }\n asset: Asset\n }\n>\n\ntype TxFunction<Asset> = (\n from: PolkadotSigner,\n hintedSignExtensions?: HintedSignExtensions<Asset>,\n) => Promise<TxFinalizedPayload>\n\ntype TxObservable<Asset> = (\n from: PolkadotSigner,\n hintedSignExtensions?: HintedSignExtensions<Asset>,\n) => Observable<TxEvent>\n\ninterface TxCall {\n (): Promise<Binary>\n (runtime: Runtime): Binary\n}\n\ntype TxSigned<Asset> = (\n from: PolkadotSigner,\n hintedSignExtensions?: HintedSignExtensions<Asset>,\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 getEstimatedFees: () => Promise<bigint>\n decodedCall: Enum<{ [P in Pallet]: Enum<{ [N in Name]: Arg }> }>\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\nconst feeDetailsDec = Option(Tuple(u128, u128, u128)).dec\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 const getEstimatedFees = async () => {\n const encoded = (await getEncodedData()).asBytes()\n const preLen = encoded.length + 103 // TODO: `103` accounts for the extra aprox length that it's added into the extrinsic once it's signed. In the future we should improve this.\n const len = preLen + compact.enc(preLen).length\n const args = toHex(mergeUint8(encoded, u32.enc(len)))\n\n return firstValueFrom(\n chainHead\n .call$(null, \"TransactionPaymentCallApi_query_call_fee_details\", args)\n .pipe(\n map((x) => {\n const result = feeDetailsDec(x)\n if (!result) throw new Error(\"Unable to calculate tx fees\")\n return result.reduce((a, b) => a + b)\n }),\n ),\n )\n }\n\n return {\n getEstimatedFees,\n decodedCall: {\n type: pallet,\n value: Enum(name, arg as 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 V14,\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: V14 | 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 type EnumVariant,\n _Enum,\n} from \"@polkadot-api/substrate-bindings\"\n"],"mappings":"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","names":["import_rxjs","import_rxjs","checksums","isCompatible","compatibilityHelper","import_rxjs","import_rxjs","import_rxjs","import_rxjs","import_rxjs","value","compatibilityHelper","filter","import_utils","import_rxjs","compatibilityHelper","import_rxjs","isOptionalArg","compatibilityHelper","isCompatible","import_utils","import_rxjs","compatibilityHelper","arg","import_rxjs","import_substrate_bindings","import_rxjs","import_rxjs","import_substrate_bindings","import_utils","import_rxjs","import_substrate_bindings","import_utils","import_rxjs","import_substrate_bindings","import_rxjs","import_rxjs","import_substrate_bindings","import_utils","import_rxjs","import_rxjs","import_substrate_bindings","createRawClient","import_substrate_bindings"]}
1
+ {"version":3,"sources":["../src/index.ts","../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/raceMap.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":["export * from \"./client\"\nexport * from \"./re-exports\"\nexport type { EventPhase } from \"./event\"\nexport type { PolkadotSigner } from \"@polkadot-api/polkadot-signer\"\nexport type { PolkadotClient, TypedApi, FixedSizeArray } from \"./types\"\nexport type {\n TxBroadcastEvent,\n TxEvent,\n TxFinalizedPayload,\n Transaction,\n} from \"./tx\"\n","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 const { getChainSpecData } = rawClient\n\n return {\n getChainSpecData,\n\n finalizedBlock$: chainHead.finalized$,\n getFinalizedBlock: () => firstValueFrom(chainHead.finalized$),\n\n bestBlocks$: chainHead.bestBlocks$,\n getBestBlocks: () => firstValueFrom(chainHead.bestBlocks$),\n\n watchBlockBody: chainHead.body$,\n getBlockBody: (hash: string) => firstValueFrom(chainHead.body$(hash)),\n\n getBlockHeader: (hash?: string) =>\n firstValueFrom(chainHead.header$(hash ?? null)),\n\n submit,\n submitAndWatch,\n\n getTypedApi: <D extends Descriptors>(descriptors: D) =>\n createTypedApi(descriptors, createTxFromSigner, chainHead, submitFns),\n\n destroy: () => {\n chainHead.unfollow()\n client.destroy()\n },\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 const runtime = createRuntime(x, checksums)\n if (resolve) {\n resolve(runtime)\n resolve = null\n } else {\n latestRuntime = Promise.resolve(runtime)\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\nexport const raceMap =\n <I, O>(mapper: (x: I) => Observable<O>, concurrent: number) =>\n (source$: Observable<I>) =>\n new Observable<O>((observer) => {\n let innerSubscriptions = new Array<Subscription>()\n let isOuterDone = false\n\n const createSubscription = (value: I) => {\n const sub = new Subscription()\n innerSubscriptions.push(sub)\n if (innerSubscriptions.length > concurrent) {\n innerSubscriptions[0].unsubscribe()\n innerSubscriptions = innerSubscriptions.slice(1)\n }\n\n const subscription = mapper(value).subscribe({\n next(value) {\n const index = innerSubscriptions.indexOf(sub)\n innerSubscriptions.slice(0, index).forEach((s) => s.unsubscribe())\n innerSubscriptions = innerSubscriptions.slice(index)\n\n observer.next(value)\n },\n error(error) {\n observer.error(error)\n },\n complete() {\n const index = innerSubscriptions.indexOf(sub)\n innerSubscriptions.splice(index, 1)\n\n if (innerSubscriptions.length === 0 && isOuterDone)\n observer.complete()\n },\n })\n sub.add(subscription)\n }\n\n const outerSubscription = source$.subscribe({\n next(value) {\n createSubscription(value)\n },\n error(err) {\n observer.error(err)\n },\n complete() {\n if (innerSubscriptions.length === 0) observer.complete()\n isOuterDone = true\n },\n })\n\n return () => {\n outerSubscription.unsubscribe()\n innerSubscriptions.forEach((sub) => sub.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, raceMap } from \"@/utils\"\nimport { StorageItemInput, StorageResult } from \"@polkadot-api/substrate-client\"\nimport { Observable, debounceTime, distinctUntilChanged, map } from \"rxjs\"\nimport { ChainHead$, NotBestBlockError } 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 isSystemNumber = pallet === \"System\" && name === \"Number\"\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 target = args[args.length - 1]\n const actualArgs =\n target === \"best\" || target === \"finalized\" ? args.slice(0, -1) : args\n\n if (isSystemNumber)\n return chainHead.bestBlocks$.pipe(\n map((blocks) => blocks.at(target === \"best\" ? 0 : -1)!.number),\n distinctUntilChanged(),\n )\n\n return chainHead[target === \"best\" ? \"best$\" : \"finalized$\"].pipe(\n debounceTime(0),\n withCompatibleRuntime(chainHead, (x) => x.hash, checksumError),\n raceMap(([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 }, 4),\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 let result$: Observable<any>\n if (isSystemNumber) {\n result$ = chainHead.bestBlocks$.pipe(\n map((blocks) => {\n if (at === \"finalized\" || !at) return blocks.at(-1)\n if (at === \"best\") return blocks.at(0)\n return blocks.find((block) => block.hash === at)\n }),\n map((block) => {\n if (!block) throw new NotBestBlockError()\n return block.number\n }),\n distinctUntilChanged(),\n )\n } else {\n const isCompatible = await waitChecksums()\n result$ = chainHead.storage$(\n at,\n \"value\",\n (ctx) => {\n if (!isCompatible(ctx)) throw checksumError()\n const codecs = ctx.dynamicBuilder.buildStorage(pallet, name)\n const actualArgs =\n args.length === codecs.len ? args : args.slice(0, -1)\n if (args !== actualArgs && !isLastArgOptional) throw invalidArgs(args)\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 }\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 if (!isCompatible(ctx)) throw checksumError()\n\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 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 AccountId,\n AssetDescriptor,\n Binary,\n Enum,\n HexString,\n SS58String,\n Tuple,\n compact,\n u128,\n u32,\n u8,\n} from \"@polkadot-api/substrate-bindings\"\nimport { fromHex, 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\"\nimport { getPolkadotSigner } from \"@polkadot-api/signer\"\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 HintedSignExtensions<Asset> = Partial<\n void extends Asset\n ? {\n tip: bigint\n mortality: { mortal: false } | { mortal: true; period: number }\n }\n : {\n tip: bigint\n mortality: { mortal: false } | { mortal: true; period: number }\n asset: Asset\n }\n>\n\ntype TxFunction<Asset> = (\n from: PolkadotSigner,\n hintedSignExtensions?: HintedSignExtensions<Asset>,\n) => Promise<TxFinalizedPayload>\n\ntype TxObservable<Asset> = (\n from: PolkadotSigner,\n hintedSignExtensions?: HintedSignExtensions<Asset>,\n) => Observable<TxEvent>\n\ninterface TxCall {\n (): Promise<Binary>\n (runtime: Runtime): Binary\n}\n\ntype TxSigned<Asset> = (\n from: PolkadotSigner,\n hintedSignExtensions?: HintedSignExtensions<Asset>,\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 getEstimatedFees: (\n from: Uint8Array | SS58String,\n hintedSignExtensions?: HintedSignExtensions<Asset>,\n ) => Promise<bigint>\n decodedCall: Enum<{ [P in Pallet]: Enum<{ [N in Name]: Arg }> }>\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\nconst accountIdEnc = AccountId().enc\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\nconst queryInfoRawDec = Tuple(compact, compact, u8, u128).dec\nconst queryInfoDec = (input: string): bigint => queryInfoRawDec(input)[3]\nconst fakeSignature = new Uint8Array(64)\nconst getFakeSignature = () => fakeSignature\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 const getEstimatedFees = async (\n from: Uint8Array | SS58String,\n _hinted?: any,\n ) => {\n const fakeSigner = getPolkadotSigner(\n from instanceof Uint8Array ? from : accountIdEnc(from),\n \"Sr25519\",\n getFakeSignature,\n )\n const encoded = fromHex(await sign(fakeSigner, _hinted))\n const args = toHex(mergeUint8(encoded, u32.enc(encoded.length)))\n\n return firstValueFrom(\n chainHead\n .call$(null, \"TransactionPaymentApi_query_info\", args)\n .pipe(map(queryInfoDec)),\n )\n }\n\n return {\n getEstimatedFees,\n decodedCall: {\n type: pallet,\n value: Enum(name, arg as 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: Parameters<typeof CheckMortality>[0] =\n !hinted?.mortality\n ? { period: 64, blockNumber: atBlock.number }\n : hinted.mortality.mortal\n ? { period: hinted.mortality.period, blockNumber: atBlock.number }\n : undefined // immortal\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 V14,\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: V14 | 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} from \"@polkadot-api/substrate-bindings\"\nexport {\n AccountId,\n Binary,\n FixedSizeBinary,\n Enum,\n type EnumVariant,\n _Enum,\n} from \"@polkadot-api/substrate-bindings\"\n"],"mappings":"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","names":["import_rxjs","import_rxjs","checksums","isCompatible","compatibilityHelper","import_rxjs","import_rxjs","import_rxjs","import_rxjs","import_rxjs","value","compatibilityHelper","filter","import_observable_client","import_utils","import_rxjs","compatibilityHelper","import_rxjs","isOptionalArg","compatibilityHelper","isCompatible","import_utils","import_rxjs","compatibilityHelper","arg","import_rxjs","import_substrate_bindings","import_rxjs","import_rxjs","import_substrate_bindings","import_utils","import_rxjs","import_substrate_bindings","import_utils","import_rxjs","import_substrate_bindings","import_rxjs","import_rxjs","import_substrate_bindings","import_utils","import_rxjs","import_rxjs","import_substrate_bindings","createRawClient","import_substrate_bindings"]}