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 +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +68 -40
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +83 -53
- package/dist/index.mjs.map +1 -1
- package/dist/min/index.d.ts +3 -3
- package/dist/min/index.js +1 -1
- package/dist/min/index.js.map +1 -1
- package/package.json +10 -10
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
423
|
-
const actualArgs =
|
|
424
|
-
|
|
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
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
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
|
|
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
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
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, "
|
|
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
|
|
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,
|
|
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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,8BAGO;AACP,IAAAA,gBAA2C;;;ACL3C,IAAAC,eAAoC;;;ACApC,kBAAuD;AAOhD,IAAM,UAAN,MAAc;AAAA,EAIX,YAAY,KAAqB,WAAqB;AAH9D,wBAAU;AACV,wBAAU;AAGR,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,EACpB;AACF;AACO,SAAS,kBAAkB,SAAkC;AAClE,SAAQ,QAAgB;AAC1B;AACA,SAAS,oBAAoB,SAAkB,KAAqB;AAClE,SAAQ,QAAgB,WAAW,GAAG;AACxC;AACA,IAAM,gBAAgB,CAAC,KAAqB,cAC1C,IAAK,QAAgB,KAAK,SAAS;AAM9B,IAAM,gBAAgB,CAC3B,WACA,cACe;AACf,MAAI;AACJ,MAAI,UAAyC;AAE7C,kBAAgB,IAAI,QAAiB,CAAC,QAAQ;AAC5C,cAAU;AAAA,EACZ,CAAC;AAED,QAAM,4BAAwB,2BAAc,CAAC,UAAU,UAAU,SAAS,CAAC;AAC3E,wBAAsB,UAAU,CAAC,CAAC,GAAGC,UAAS,MAAM;AAClD,QAAI,GAAG;AACL,YAAM,UAAU,cAAc,GAAGA,UAAS;AAC1C,UAAI,SAAS;AACX,gBAAQ,OAAO;AACf,kBAAU;AAAA,MACZ,OAAO;AACL,wBAAgB,QAAQ,QAAQ,OAAO;AAAA,MACzC;AAAA,IACF,WAAW,CAAC,SAAS;AACnB,sBAAgB,IAAI,QAAiB,CAAC,QAAQ;AAC5C,kBAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,QAAM,SAAS,sBAAsB;AAAA,QACnC,oBAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC;AAAA,QAC1B,iBAAI,CAAC,CAAC,GAAGA,UAAS,MAAM,cAAc,GAAIA,UAAS,CAAC;AAAA,EACtD;AACA,SAAO,SAAS,MAAM;AAEtB,SAAO;AACT;AAOO,IAAM,sBACX,CAAC,YAAwB,gBACzB,CAAC,gBAAwD;AACvD,WAAS,iBAAiB,SAAkB;AAC1C,UAAM,MAAM,kBAAkB,OAAO;AACrC,UAAM,WAAW,oBAAoB,SAAS,WAAW;AACzD,WAAO,YAAY,GAAG,MAAM;AAAA,EAC9B;AAEA,QAAM,eAA6B,CAAC,YAA2B;AAC7D,QAAI,SAAS;AACX,aAAO,iBAAiB,OAAO;AAAA,IACjC;AAEA,WAAO,WAAW,OAAO,EAAE,KAAK,gBAAgB;AAAA,EAClD;AACA,QAAM,gBAAgB,YAAY;AAChC,UAAM,UAAU,MAAM,WAAW,OAAO;AACxC,WAAO,CAAC,QACN,YAAY,GAAG,MAAM,oBAAoB,SAAS,WAAW;AAAA,EACjE;AACA,QAAM,qBAAqB,CACzB,WACA,MACA,cAEA,2BAAc,CAAC,UAAU,mBAAmB,IAAI,GAAG,cAAc,CAAC,CAAC,EAAE;AAAA,QACnE,iBAAI,CAAC,CAAC,KAAKC,aAAY,MAAM;AAC3B,UAAI,CAACA,cAAa,GAAG,GAAG;AACtB,cAAM,MAAM;AAAA,MACd;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEF,QAAM,wBACJ,CACE,WACA,QACA,UAEF,CAAC,gBACC,2BAAc;AAAA,IACZ,QAAQ,KAAK,UAAU,YAAY,MAAM,CAAC;AAAA,IAC1C,cAAc;AAAA,EAChB,CAAC,EAAE;AAAA,QACD,iBAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,aAAY,MAAM;AAChC,UAAI,CAACA,cAAa,GAAG,GAAG;AACtB,cAAM,MAAM;AAAA,MACd;AACA,aAAO,CAAC,GAAG,GAAG;AAAA,IAChB,CAAC;AAAA,EACH;AAEJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ADpHK,IAAM,sBAAsB,CACjC,YACA,MACA,WACAC,yBACqB;AACrB,QAAM,EAAE,cAAc,mBAAmB,IAAIA;AAAA,IAAoB,CAAC,QAChE,IAAI,gBAAgB,cAAc,YAAY,IAAI;AAAA,EACpD;AACA,QAAM,gBAAgB,MACpB,IAAI,MAAM,uCAAuC,UAAU,IAAI,IAAI,GAAG;AAExE,QAAM,gBAAgB,oBAAI,QAA2B;AACrD,QAAM,sBAAsB,CAAC,QAAwB;AACnD,QAAI,cAAc,IAAI,GAAG,GAAG;AAC1B,aAAO,cAAc,IAAI,GAAG;AAAA,IAC9B;AAEA,UAAM,SAAS,IAAI,SAAS,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,UAAU;AACrE,UAAM,WAAW,QAAQ,UAAU,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAC9D,UAAM,SAAS,IAAI,eAChB,cAAc,YAAY,IAAI,EAC9B,IAAI,SAAS,KAAK;AACrB,kBAAc,IAAI,KAAK,MAAM;AAC7B,WAAO;AAAA,EACT;AAEA,QAAM,KAAK,CAAC,YAA2B;AACrC,QAAI,SAAS;AACX,UAAI,CAAC,aAAa,OAAO;AAAG,cAAM,cAAc;AAChD,aAAO,oBAAoB,kBAAkB,OAAO,CAAC;AAAA,IACvD;AACA,eAAO;AAAA,MACL,mBAAmB,WAAW,MAAM,aAAa,EAAE;AAAA,YACjD,kBAAI,mBAAmB;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,OAAO,OAAO,IAAI,EAAE,aAAa,CAAC;AAC3C;;;AEvDA,IAAAC,eAA0D;;;ACA1D,IAAAC,eAAiD;AAE1C,IAAM,kBAAyD,oBAAM;AAAA,EAC1E,WAAW,MAAM,IAAI,2BAAc,CAAC;AAAA,EACpC,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,qBAAqB;AACvB,CAAC;;;ACPD,mBAA2B;AAC3B,IAAAC,eAA+C;AAExC,SAAS,yBACd,QACA,QACY;AACZ,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI,eAAoC;AACxC,QAAI,SAAS;AAEb,UAAM,UAAU,SACZ,MAAM;AACJ,oBAAc,YAAY;AAC1B,aAAO,IAAI,wBAAW,CAAC;AAAA,IACzB,IACA;AAEJ,mBAAe,OAAO,UAAU;AAAA,MAC9B,MAAM,CAAC,UAAU;AACf,gBAAQ,KAAK;AACb,sBAAc,YAAY;AAC1B,iBAAS;AAAA,MACX;AAAA,MACA,OAAO,CAAC,MAAM;AACZ,gBAAQ,oBAAoB,SAAS,OAAO;AAC5C,eAAO,CAAC;AAAA,MACV;AAAA,MACA,UAAU,MAAM;AACd,gBAAQ,oBAAoB,SAAS,OAAO;AAC5C,eAAO,IAAI,MAAM,uCAAuC,CAAC;AAAA,MAC3D;AAAA,IACF,CAAC;AAGD,QAAI,CAAC;AAAQ,cAAQ,iBAAiB,SAAS,OAAO;AAAA,EACxD,CAAC;AACH;;;ACrCA,IAAAC,eAAiE;AAE1D,IAAM,iBACX,CACE,QACA,aAAa,aAEf,CAAC,YACC,IAAI,wBAAc,CAAC,aAAa;AAC9B,MAAI;AACJ,QAAM,SAAS,oBAAI,IAA2B;AAC9C,QAAM,qBAAqB,oBAAI,IAA0B;AACzD,QAAM,UAAU,oBAAI,IAAiB;AAErC,MAAI,YAAY;AAChB,MAAI,kBAAkB;AACtB,MAAI,cAAc;AAElB,QAAM,mBAAmB,MAAM;AAC7B,UAAM,SAAS,OAAO,IAAI,eAAe;AACzC,QAAI,CAAC,QAAQ;AACX,UACE,mBAAmB,SAAS,MAC3B,OAAO,oBAAoB,eAAe,gBAAgB,SAC3D;AACA,iBAAS,SAAS;AAAA,MACpB;AACA;AAAA,IACF;AACA,UAAM,MAAM;AACZ,WAAO,OAAO,GAAG;AACjB,QAAI,gBAAgB,KAAK;AACvB,cAAQ,IAAI,KAAK,CAAC,CAAC;AAAA,IACrB;AACA,uBAAmB;AAAA,MACjB;AAAA,MACA,OAAO,UAAU;AAAA,QACf,KAAK,GAAM;AACT,cAAI,gBAAgB,KAAK;AACvB,qBAAS,KAAK,CAAC;AAAA,UACjB,OAAO;AACL,oBAAQ,IAAI,GAAG,EAAG,KAAK,CAAC;AAAA,UAC1B;AAAA,QACF;AAAA,QACA,WAAW;AACT,6BAAmB,OAAO,GAAG;AAC7B,cAAI,QAAQ,aAAa;AACvB;AACA,mBAAO,QAAQ,IAAI,WAAW,GAAG;AAC/B,sBAAQ,IAAI,WAAW,EAAG,QAAQ,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC;AACzD,sBAAQ,OAAO,WAAW;AAC1B,kBAAI,mBAAmB,IAAI,WAAW,GAAG;AACvC;AAAA,cACF;AACA;AAAA,YACF;AAAA,UACF;AACA,2BAAiB;AAAA,QACnB;AAAA,QACA,MAAM,GAAQ;AACZ,mBAAS,MAAM,CAAC;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,oBAAkB,QAAQ,UAAU;AAAA,IAClC,KAAK,aAAgB;AACnB,YAAM,MAAM;AACZ,aAAO;AAAA,QACL;AAAA,YACA,oBAAM,MAAM,OAAO,aAAa,GAAG,CAAC;AAAA,MACtC;AACA,UAAI,mBAAmB,OAAO,YAAY;AACxC,yBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,IACA,MAAM,GAAQ;AACZ,eAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,WAAW;AACT,UAAI,mBAAmB,SAAS,GAAG;AACjC,iBAAS,SAAS;AAAA,MACpB;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO,MAAM;AACX,uBAAmB,QAAQ,CAAC,iBAAiB,aAAa,YAAY,CAAC;AACvE,oBAAgB,YAAY;AAC5B,WAAO,MAAM;AACb,YAAQ,MAAM;AAAA,EAChB;AACF,CAAC;;;AC7FL,IAAAC,eAAyC;AAElC,IAAM,UACX,CAAO,QAAiC,eACxC,CAAC,YACC,IAAI,wBAAc,CAAC,aAAa;AAC9B,MAAI,qBAAqB,IAAI,MAAoB;AACjD,MAAI,cAAc;AAElB,QAAM,qBAAqB,CAAC,UAAa;AACvC,UAAM,MAAM,IAAI,0BAAa;AAC7B,uBAAmB,KAAK,GAAG;AAC3B,QAAI,mBAAmB,SAAS,YAAY;AAC1C,yBAAmB,CAAC,EAAE,YAAY;AAClC,2BAAqB,mBAAmB,MAAM,CAAC;AAAA,IACjD;AAEA,UAAM,eAAe,OAAO,KAAK,EAAE,UAAU;AAAA,MAC3C,KAAKC,QAAO;AACV,cAAM,QAAQ,mBAAmB,QAAQ,GAAG;AAC5C,2BAAmB,MAAM,GAAG,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;AACjE,6BAAqB,mBAAmB,MAAM,KAAK;AAEnD,iBAAS,KAAKA,MAAK;AAAA,MACrB;AAAA,MACA,MAAM,OAAO;AACX,iBAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,WAAW;AACT,cAAM,QAAQ,mBAAmB,QAAQ,GAAG;AAC5C,2BAAmB,OAAO,OAAO,CAAC;AAElC,YAAI,mBAAmB,WAAW,KAAK;AACrC,mBAAS,SAAS;AAAA,MACtB;AAAA,IACF,CAAC;AACD,QAAI,IAAI,YAAY;AAAA,EACtB;AAEA,QAAM,oBAAoB,QAAQ,UAAU;AAAA,IAC1C,KAAK,OAAO;AACV,yBAAmB,KAAK;AAAA,IAC1B;AAAA,IACA,MAAM,KAAK;AACT,eAAS,MAAM,GAAG;AAAA,IACpB;AAAA,IACA,WAAW;AACT,UAAI,mBAAmB,WAAW;AAAG,iBAAS,SAAS;AACvD,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAED,SAAO,MAAM;AACX,sBAAkB,YAAY;AAC9B,uBAAmB,QAAQ,CAAC,QAAQ,IAAI,YAAY,CAAC;AAAA,EACvD;AACF,CAAC;;;AJPE,IAAM,mBAAmB,CAC9B,QACA,MACA,WACAC,yBACgB;AAChB,QAAM,EAAE,cAAc,sBAAsB,IAAIA;AAAA,IAAoB,CAAC,QACnE,IAAI,gBAAgB,WAAW,QAAQ,IAAI;AAAA,EAC7C;AACA,QAAM,gBAAgB,MACpB,IAAI,MAAM,oCAAoC,MAAM,IAAI,IAAI,GAAG;AAEjE,QAAM,UAAU,UAAU,WAAW;AAAA,IACnC,sBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,aAAa;AAAA,IAC7D;AAAA,MAAe,CAAC,CAAC,KAAK,MACpB,UAAU,UAAU,MAAM,IAAI,EAAE;AAAA,YAC9B,kBAAI,CAAC,WAAW;AACd,gBAAM,UAAU,OAAO;AAAA,YACrB,CAAC,MAAM,EAAE,MAAM,SAAS,UAAU,EAAE,MAAM,MAAM,SAAS;AAAA,UAC3D;AACA,iBAAO,QAAQ,IAAI,CAAC,MAAM;AACxB,mBAAO;AAAA,cACL,MAAM;AAAA,gBACJ,OAAO,EAAE;AAAA,gBACT;AAAA,cACF;AAAA,cACA,SAAS,EAAE,MAAM,MAAM;AAAA,YACzB;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA;AAAA,EACF;AAEA,QAAM,QAAoB,CAAC,MACzB,QAAQ,SAAK,uBAAS,CAAC,MAAO,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAE,CAAC;AAEvE,QAAM,OAAkB,UAAM,6BAAe,OAAO;AAEpD,QAAMC,UAAsB,CAAC,WAC3B,OACG,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,MAAM,SAAS,IAAI,EACxD,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK;AAE7B,SAAO,EAAE,OAAO,MAAM,QAAAA,SAAQ,aAAa;AAC7C;;;AHvFA,+BAA+C;;;AQP/C,IAAAC,gBAAsB;AACtB,IAAAC,eAA8B;AAkB9B,IAAM,gBAAgB,CAAC,YAAiB;AACtC,MAAI,OAAO,YAAY;AAAU,WAAO;AAExC,SAAO,OAAO,KAAK,OAAO,EAAE;AAAA,IAC1B,CAAC,MACE,MAAM,QAAQ,OAAO,QAAQ,OAAO,YACpC,MAAM,YAAY,QAAQ,kBAAkB;AAAA,EACjD;AACF;AAEO,IAAM,yBAAyB,CACpC,KACA,QACA,WACAC,yBAC0B;AAC1B,QAAM,EAAE,cAAc,mBAAmB,IAAIA;AAAA,IAAoB,CAAC,QAChE,IAAI,gBAAgB,iBAAiB,KAAK,MAAM;AAAA,EAClD;AACA,QAAM,WAAW,GAAG,GAAG,IAAI,MAAM;AACjC,QAAM,gBAAgB,MACpB,IAAI,MAAM,0CAA0C,QAAQ,GAAG;AAEjE,QAAM,KAAK,IAAI,SAAqB;AAClC,UAAM,UAAU,KAAK,KAAK,SAAS,CAAC;AACpC,UAAM,oBAAoB,cAAc,OAAO;AAC/C,UAAM,EAAE,QAAQ,IAAI,IAAI,IAAiB,oBAAoB,UAAU,CAAC;AACxE,UAAM,KAAK,OAAO;AAElB,UAAM,UAAU,mBAAmB,WAAW,IAAI,aAAa,EAAE;AAAA,UAC/D,uBAAS,CAAC,QAAQ;AAChB,cAAM,SAAS,IAAI,eAAe,iBAAiB,KAAK,MAAM;AAC9D,eAAO,UACJ,MAAM,IAAI,cAAU,qBAAM,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,EAChD,SAAK,kBAAI,OAAO,MAAM,GAAG,CAAC;AAAA,MAC/B,CAAC;AAAA,IACH;AAEA,WAAO,yBAAyB,SAAS,MAAM;AAAA,EACjD;AAEA,SAAO,OAAO,OAAO,IAAI,EAAE,aAAa,CAAC;AAC3C;;;AC5DA,IAAAC,eAAoE;AAkDpE,IAAMC,iBAAgB,CAAC,YAAiB;AACtC,MAAI,OAAO,YAAY;AAAU,WAAO;AAExC,SAAO,OAAO,KAAK,OAAO,EAAE;AAAA,IAC1B,CAAC,MACE,MAAM,QAAQ,OAAO,QAAQ,OAAO,YACpC,MAAM,YAAY,QAAQ,kBAAkB;AAAA,EACjD;AACF;AAEO,IAAM,qBAAqB,CAChC,QACA,MACA,WACAC,yBAC2B;AAC3B,QAAM,EAAE,cAAc,eAAe,sBAAsB,IACzDA,qBAAoB,CAAC,QAAQ,IAAI,gBAAgB,aAAa,QAAQ,IAAI,CAAC;AAE7E,QAAM,gBAAgB,MACpB,IAAI,MAAM,sCAAsC,MAAM,IAAI,IAAI,GAAG;AACnE,QAAM,cAAc,CAAC,SACnB,IAAI,MAAM,6BAA6B,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG;AAElE,QAAM,aAAa,IAAI,SAAqB;AAC1C,UAAM,UAAU,KAAK,KAAK,SAAS,CAAC;AACpC,UAAM,aACJ,YAAY,UAAU,YAAY,cAAc,KAAK,MAAM,GAAG,EAAE,IAAI;AAEtE,WAAO,UAAU,YAAY,SAAS,UAAU,YAAY,EAAE;AAAA,UAC5D,2BAAa,CAAC;AAAA,MACd,sBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,aAAa;AAAA,MAC7D,QAAQ,CAAC,CAAC,OAAO,GAAG,MAAM;AACxB,cAAM,SAAS,IAAI,eAAe,aAAa,QAAQ,IAAI;AAC3D,eAAO,UACJ,SAAS,MAAM,MAAM,SAAS,MAAM,OAAO,IAAI,GAAG,UAAU,CAAC,EAC7D,SAAK,kBAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE,CAAC;AAAA,MACzC,GAAG,CAAC;AAAA,UACJ,mCAAqB,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG;AAAA,UAC9C;AAAA,QAAI,CAAC,EAAE,KAAK,OAAO,MACjB,QAAQ,OAAO,OAAO,WAAW,OAAO,IAAI,GAAG;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,UAAU,SAAqB;AAC9C,UAAM,UAAU,KAAK,KAAK,SAAS,CAAC;AACpC,UAAM,oBAAoBD,eAAc,OAAO;AAC/C,UAAM,EAAE,QAAQ,IAAI,IAAI,IAAiB,oBAAoB,UAAU,CAAC;AACxE,UAAM,KAAK,OAAO;AAElB,UAAME,gBAAe,MAAM,cAAc;AACzC,UAAM,UAAU,UAAU;AAAA,MACxB;AAAA,MACA;AAAA,MACA,CAAC,QAAQ;AACP,YAAI,CAACA,cAAa,GAAG;AAAG,gBAAM,cAAc;AAC5C,cAAM,SAAS,IAAI,eAAe,aAAa,QAAQ,IAAI;AAC3D,cAAM,aAAa,KAAK,WAAW,OAAO,MAAM,OAAO,KAAK,MAAM,GAAG,EAAE;AACvE,YAAI,SAAS,cAAc,CAAC;AAAmB,gBAAM,YAAY,IAAI;AACrE,eAAO,OAAO,IAAI,GAAG,UAAU;AAAA,MACjC;AAAA,MACA;AAAA,MACA,CAAC,MAAM,QAAQ;AACb,cAAM,SAAS,IAAI,eAAe,aAAa,QAAQ,IAAI;AAC3D,eAAO,SAAS,OAAO,OAAO,WAAW,OAAO,IAAI,IAAI;AAAA,MAC1D;AAAA,IACF;AACA,WAAO,yBAAyB,SAAS,MAAM;AAAA,EACjD;AAEA,QAAM,aAAa,UAAU,SAAqB;AAChD,UAAM,UAAU,KAAK,KAAK,SAAS,CAAC;AACpC,UAAM,oBAAoBF,eAAc,OAAO;AAC/C,UAAM,EAAE,QAAQ,IAAI,IAAI,IAAiB,oBAAoB,UAAU,CAAC;AACxE,UAAM,KAAK,OAAO;AAElB,UAAME,gBAAe,MAAM,cAAc;AACzC,UAAM,UAAU,UAAU;AAAA,MACxB;AAAA,MACA;AAAA,MACA,CAAC,QAAQ;AACP,YAAI,CAACA,cAAa,GAAG;AAAG,gBAAM,cAAc;AAE5C,cAAM,SAAS,IAAI,eAAe,aAAa,QAAQ,IAAI;AAC3D,YAAI,KAAK,SAAS,OAAO;AAAK,gBAAM,YAAY,IAAI;AACpD,cAAM,aACJ,KAAK,SAAS,KAAK,oBAAoB,KAAK,MAAM,GAAG,EAAE,IAAI;AAC7D,YAAI,KAAK,WAAW,OAAO,OAAO,eAAe;AAC/C,gBAAM,YAAY,IAAI;AACxB,eAAO,OAAO,IAAI,GAAG,UAAU;AAAA,MACjC;AAAA,MACA;AAAA,MACA,CAAC,QAAQ,QAAQ;AACf,cAAM,SAAS,IAAI,eAAe,aAAa,QAAQ,IAAI;AAC3D,eAAO,OAAO,IAAI,CAAC,EAAE,KAAK,MAAM,OAAO;AAAA,UACrC,SAAS,OAAO,WAAW,GAAG;AAAA,UAC9B,OAAO,OAAO,IAAI,KAAK;AAAA,QACzB,EAAE;AAAA,MACJ;AAAA,IACF;AACA,WAAO,yBAAyB,SAAS,MAAM;AAAA,EACjD;AAEA,QAAM,YAAY,CAAC,SAA4B,YAC7C,QAAQ;AAAA,IACN,QAAQ,IAAI,CAAC,SAAS,SAAS,GAAI,UAAU,CAAC,GAAG,MAAM,OAAO,IAAI,IAAK,CAAC;AAAA,EAC1E;AAEF,SAAO,EAAE,cAAc,UAAU,WAAW,YAAY,WAAW;AACrE;;;AClKA,gCAUO;AACP,IAAAC,gBAAkC;AAClC,IAAAC,gBAWO;AA8BP,IAAM,+BAA+B,CACnC,cACA,UACsC;AACtC,QAAM,SAAS,aACZ,OAAO,CAAC,MAAM,EAAE,MAAM,SAAS,oBAAoB,EAAE,MAAM,UAAU,KAAK,EAC1E,IAAI,CAAC,MAAM,EAAE,KAAK;AAErB,QAAM,YAAY,OAAO,OAAO,SAAS,CAAC;AAC1C,QAAM,KACJ,UAAU,SAAS,YAAY,UAAU,MAAM,SAAS;AAE1D,SAAO,EAAE,IAAI,OAAO;AACtB;AA6DO,IAAM,eAAe,CAC1B,WACA,WACG;AACH,QAAM,MAAM,CAAC,WACX;AAAA,IACE,UAAU,WAAW;AAAA,UACnB,oBAAK,CAAC;AAAA,UACN,wBAAS,CAAC,cAAc,UAAU,YAAY,IAAI,UAAU,IAAI,CAAC;AAAA,UACjE,mBAAI,CAAC,YAAY;AACf,YAAI,CAAC;AAAS,gBAAM,IAAI,MAAM,SAAS;AACvC,eAAO,EAAE,MAAM,cAA+B;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,IACA,IAAI,yBAAsB,CAAC,aAAa;AACtC,YAAM,eAAe,UAAU,SAAS,EAAE,EAAE,UAAU,QAAQ;AAC9D,mBAAa;AAAA,QACX,OAAO,aAAa,EAAE,EAAE,UAAU;AAAA,UAChC,MAAM,GAAG;AACP,qBAAS,MAAM,CAAC;AAAA,UAClB;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEF,QAAM,UAAU,CAAC,gBACf,IAAI,WAAW,EAAE;AAAA,QACf,wBAAS,CAAC,WAAW;AACnB,aAAO,OAAO,SAAS,kBACnB,kBAAG,MAAM,IACT,UAAU,UAAU,OAAO,MAAM,IAAI,EAAE;AAAA,YACrC,mBAAI,CAAC,YAAY;AAAA,UACf,GAAG;AAAA,UACH,GAAG;AAAA,YACD;AAAA,YACA,OAAO,OAAO,MAAM,KAAK;AAAA,UAC3B;AAAA,QACF,EAAE;AAAA,MACJ;AAAA,IACN,CAAC;AAAA,EACH;AAEF,QAAM,SAAS,OACb,oBAMA,6BAAc,QAAQ,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM;AAC9C,QAAI,EAAE,SAAS;AAAa,YAAM;AAClC,UAAM,SAKF,EAAE,GAAG,EAAE;AACX,WAAO,OAAO;AACd,WAAO;AAAA,EACT,CAAC;AAEH,SAAO,EAAE,SAAS,OAAO;AAC3B;AAEA,IAAM,oBAAgB,sCAAO,iCAAM,gCAAM,gCAAM,8BAAI,CAAC,EAAE;AAE/C,IAAM,gBAAgB,CAM3B,QACA,MACA,eACA,WACA,SACA,QAMAC,yBAC+C;AAC/C,QAAM,EAAE,cAAc,mBAAmB,IAAIA;AAAA,IAAoB,CAAC,QAChE,IAAI,gBAAgB,UAAU,QAAQ,IAAI;AAAA,EAC5C;AACA,QAAM,gBAAgB,MACpB,IAAI,MAAM,iCAAiC,MAAM,IAAI,IAAI,GAAG;AAE9D,QAAM,KAAK,CAAC,QAAmB;AAC7B,UAAM,yBAAyB,CAC7B,EAAE,gBAAgB,OAAO,CAAC,UAAU,UAAU,EAAE,GAChDC,MACA,SAAkC,CAAC,MAChC;AACH,UAAI,eAAe;AACnB,UAAI,OAAO,OAAO;AAChB,YAAI,kBAAkB;AACpB,gBAAM,IAAI,MAAM,4BAA4B;AAC9C,uBAAe,EAAE,GAAG,QAAQ,OAAO,SAAS,OAAO,KAAK,EAAE;AAAA,MAC5D;AAEA,YAAM,EAAE,UAAU,MAAM,IAAI,eAAe,UAAU,QAAQ,IAAI;AACjE,aAAO;AAAA,QACL,UAAU,iCAAO;AAAA,cACf,0BAAW,IAAI,WAAW,QAAQ,GAAG,MAAM,IAAIA,IAAG,CAAC;AAAA,QACrD;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,UAAM,eAAe,CAACA,MAAU,SAAkC,CAAC,MACjE,mBAAmB,WAAW,MAAM,aAAa,EAAE;AAAA,UACjD,mBAAI,CAAC,QAAQ,uBAAuB,KAAKA,MAAK,MAAM,CAAC;AAAA,IACvD;AAEF,UAAM,iBAAyB,CAAC,YAA2B;AACzD,UAAI,SAAS;AACX,YAAI,CAAC,aAAa,OAAO,GAAG;AAC1B,gBAAM,cAAc;AAAA,QACtB;AACA,eAAO,uBAAuB,kBAAkB,OAAO,GAAG,GAAG,EAAE;AAAA,MACjE;AACA,iBAAO,8BAAe,aAAa,GAAG,EAAE,SAAK,mBAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAAA,IACtE;AAEA,UAAM,QAAQ,CAAC,MAAsB,YACnC,aAAa,KAAK,OAAO,EAAE;AAAA,UACzB,8BAAe,UAAU,UAAU;AAAA,UACnC,oBAAK,CAAC;AAAA,UACN;AAAA,QAAS,CAAC,CAAC,EAAE,UAAU,OAAO,GAAG,SAAS,MACxC,OAAO,MAAM,SAAS,QAAQ,GAAG,WAAW,MAAM;AAAA,MACpD;AAAA,IACF;AAEF,UAAM,OAAwB,CAAC,MAAM,gBACnC,8BAAe,MAAM,MAAM,OAAO,CAAC,EAAE,KAAK,mBAAK;AAEjD,UAAM,gBAAmC,CAAC,MAAM,YAC9C,KAAK,MAAM,OAAO,EAAE,KAAK,QAAQ,MAAM;AAEzC,UAAM,qBAA0C,CAAC,MAAM,YACrD,MAAM,MAAM,OAAO,EAAE;AAAA,UACnB,wBAAS,CAAC,WAAW;AACnB,cAAM,SAAK,qBAAM,MAAM;AACvB,eAAO,QACJ,QAAQ,EAAE,EACV,SAAK,yBAAU,EAAE,MAAM,UAAmB,GAAG,CAAC,CAAC;AAAA,MACpD,CAAC;AAAA,IACH;AAEF,UAAM,mBAAmB,YAAY;AACnC,YAAM,WAAW,MAAM,eAAe,GAAG,QAAQ;AACjD,YAAM,SAAS,QAAQ,SAAS;AAChC,YAAM,MAAM,SAAS,kCAAQ,IAAI,MAAM,EAAE;AACzC,YAAM,WAAO,yBAAM,0BAAW,SAAS,8BAAI,IAAI,GAAG,CAAC,CAAC;AAEpD,iBAAO;AAAA,QACL,UACG,MAAM,MAAM,oDAAoD,IAAI,EACpE;AAAA,cACC,mBAAI,CAAC,MAAM;AACT,kBAAM,SAAS,cAAc,CAAC;AAC9B,gBAAI,CAAC;AAAQ,oBAAM,IAAI,MAAM,6BAA6B;AAC1D,mBAAO,OAAO,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,UACtC,CAAC;AAAA,QACH;AAAA,MACJ;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA,aAAa;AAAA,QACX,MAAM;AAAA,QACN,WAAO,gCAAK,MAAM,GAAU;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO,OAAO,OAAO,IAAI,EAAE,aAAa,CAAC;AAC3C;;;AC3TA,IAAAC,gBAA8D;;;ACA9D,IAAAC,6BAA0B;AAC1B,IAAAC,gBAAmB;;;ACDnB,IAAAC,gBAA8B;AAC9B,IAAAC,6BAMO;AACP,+BAA+C;AAC/C,IAAAC,gBAAwB;AAGjB,IAAM,QAAQ,IAAI,WAAW;AAEpC,IAAM,4BAAwB,oCAAQ,QAAQ,EAAE,aAAa,oBAAM;AAAA,EACjE;AAAA,EACA;AACF,CAAC,EAAE,IAAI,CAAC;AAED,IAAM,qBAAqB,CAAC,QACjC,IAAI,UACD,SAAS,IAAI,IAAI,SAAS,MAAM,uBAAuB,IAAI,EAC3D,SAAK,mBAAI,CAAC,eAAW,uBAAQ,MAAO,CAAC,CAAC;AAEpC,IAAM,qBAAqB,CAAC,UAAkB,aAAwB;AAC3E,QAAM,eAAW,sCAAY,SAAS,MAAM;AAC5C,QAAM,qBAAiB,4CAAkB,QAAQ;AAEjD,QAAM,WAAW,SAAS,QACvB,KAAK,CAAC,MAAM,EAAE,SAAS,QAAQ,EAC/B,UAAW,KAAK,CAAC,MAAM,EAAE,SAAS,SAAS;AAE9C,QAAM,gBAAgB,SAAS,SAAS,IAAI;AAC5C,QAAM,mBAAmB,eAAe,gBAAgB,SAAS,IAAI,EAAE;AAEvE,MAAI,cAAc,SAAS;AAAU,UAAM,IAAI,MAAM,cAAc;AAEnE,QAAM,WAAW,eAAe;AAAA,IAC9B,cAAc,MAAM,QAAQ,EAAE;AAAA,EAChC,EAAE;AAEF,aAAO,kBAAG,SAAS,iBAAiB,SAAS,KAAK,EAAE,QAAQ,CAAC,CAAC;AAChE;;;ADrCO,IAAM,2BAA2B,CAAC,YACvC,kBAAG;AAAA,EACD,OAAO,qCAAU,IAAI,GAAG;AAAA,EACxB,kBAAkB;AACpB,CAAC;;;AETH,IAAAC,gBAAwB;AACxB,IAAAC,6BAA2C;AAC3C,IAAAC,gBAAwB;AAIxB,SAAS,eAAe,GAAW;AACjC,MAAI,IAAI;AACR,SAAO,EAAE,IAAI,IAAI;AACf;AACA,UAAM;AAAA,EACR;AACA,SAAO;AACT;AAEA,IAAM,aAAS;AAAA,MACb,kCAAM,CAAC,EAAE;AAAA,EACT,CAAC,UAA6C;AAC5C,UAAM,SAAS,KAAK,IAAI,MAAM,UAAU,IAAI,CAAC;AAC7C,UAAM,OAAO,KAAK,IAAI,KAAK,IAAI,eAAe,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;AACvE,UAAM,QAAS,MAAM,QAAQ,UAAW;AACxC,WAAO,+BAAI,IAAI,OAAO,KAAK;AAAA,EAC7B;AACF;AAEA,IAAM,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC;AACxB,IAAM,iBAAiB,CAC5B,OACA,QACoB;AACpB,MAAI,CAAC;AACH,WAAO,mBAAmB,GAAG,EAAE;AAAA,UAC7B,mBAAI,CAAC,sBAAsB;AAAA,QACzB;AAAA,QACA,OAAO;AAAA,MACT,EAAE;AAAA,IACJ;AAEF,QAAM,EAAE,QAAQ,YAAY,IAAI;AAChC,aAAO,kBAAG;AAAA,IACR,sBAAkB,uBAAQ,IAAI,EAAE;AAAA,IAChC,OAAO,OAAO;AAAA,MACZ;AAAA,MACA,OAAO,cAAc;AAAA,IACvB,CAAC;AAAA,EACH,CAAC;AACH;;;AC9CA,IAAAC,gBAAmB;AACnB,IAAAC,6BAKO;AAIP,IAAM,cAAU,mCAAO;AAAA,EACrB,KAAK;AAAA,EACL,WAAO,uCAAO,kCAAM,QAAQ,CAAC;AAC/B,CAAC,EAAE;AAEI,IAAM,uBAAuB,CAClC,KACA,cAEA,kBAAG;AAAA,EACD,OAAO,QAAQ;AAAA,IACb;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,kBAAkB;AACpB,CAAC;;;ACzBH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,gBAAoB;AAIb,IAAM,eAAwC,CAAC,QACpD,mBAAmB,GAAG,EAAE;AAAA,MACtB,mBAAI,CAAC,sBAAsB,EAAE,OAAO,OAAO,iBAAiB,EAAE;AAChE;;;ACPF,IAAAC,gBAAoB;AACpB,IAAAC,6BAA2C;AAG3C,IAAAC,iBAA+B;AAE/B,IAAM,eAAe;AAAA,EACnB,GAAG,8BAAG;AAAA,EACN,GAAG,+BAAI;AAAA,EACP,GAAG,+BAAI;AAAA,EACP,GAAG,+BAAI;AACT;AAEO,IAAM,aAAsC,CAAC,QAClD,IAAI,UACD,MAAM,IAAI,IAAI,qCAAiC,sBAAM,IAAI,IAAI,CAAC,EAC9D;AAAA,MACC,mBAAI,CAAC,WAAW;AACd,UAAM,YAAQ,wBAAQ,MAAM;AAC5B,UAAM,UAAU,aAAa,MAAM,MAAmB;AACtD,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,oDAAoD;AACtE,WAAO,mCAAQ,IAAI,QAAQ,KAAK,CAAC;AAAA,EACnC,CAAC;AAAA,MACD,mBAAI,CAAC,WAAW,EAAE,OAAO,kBAAkB,MAAM,EAAE;AACrD;;;ACzBJ,IAAAC,gBAAoB;AAIb,IAAM,mBAA4C,CAAC,EAAE,SAAS,MACnE,mBAAmB,gBAAgB,QAAQ,EAAE;AAAA,MAC3C,mBAAI,CAAC,sBAAsB,EAAE,kBAAkB,OAAO,MAAM,EAAE;AAChE;;;ACPF,IAAAC,gBAAoB;AAIb,IAAM,iBAA0C,CAAC,EAAE,SAAS,MACjE,mBAAmB,uBAAuB,QAAQ,EAAE;AAAA,MAClD,mBAAI,CAAC,sBAAsB,EAAE,kBAAkB,OAAO,MAAM,EAAE;AAChE;;;ATGF,IAAAC,6BAAsB;AAGf,IAAM,cAAc,CACzB,cAM8B;AAC9B,SAAO,CAAC,QAAQ,UAAU,SAAS,WAAW;AAC5C,WAAO,UAAU,mBAAmB,QAAQ,IAAI,EAAE;AAAA,UAChD,oBAAK,CAAC;AAAA,UACN,wBAAS,CAAC,QAAQ;AAChB,cAAM,sBAAsB;AAAA,UAC1B,UAAU,IAAI;AAAA,UACd;AAAA,UACA;AAAA,UACA,IAAI,QAAQ;AAAA,UACZ,MAAM,OAAO;AAAA,QACf;AAEA,cAAM,YAAY,QAAQ,WAAW,SACjC,EAAE,QAAQ,OAAO,UAAU,QAAQ,aAAa,QAAQ,OAAO,IAC/D;AAEJ,mBAAO;AAAA,UACL,IAAI,SAAS,UAAU,iBAAiB;AAAA,YACtC,CAAC,EAAE,YAAY,MAAM,iBAAiB,MAAM;AAC1C,kBAAI,eAAe;AACjB,uBAAO,eAAe,WAAW,mBAAmB;AAEtD,kBAAI,eAAe;AACjB,uBAAO,yBAAyB,QAAQ,OAAO,EAAE;AAEnD,kBAAI,eAAe;AACjB,uBAAO,qBAAqB,QAAQ,OAAO,IAAI,QAAQ,KAAK;AAE9D,oBAAM,KAAK,cAAsB,UAA4B;AAC7D,kBAAI,CAAC,IAAI;AACP,oBACE,IAAI,eAAe,gBAAgB,IAAI,MAAM,oCAC7C,IAAI,eAAe,gBAAgB,gBAAgB,MAAM;AAEzD,6BAAO,kBAAG;AAAA,oBACR,OAAO;AAAA,oBACP,kBAAkB;AAAA,kBACpB,CAAC;AAEH,sBAAM,IAAI,MAAM,iCAAiC,UAAU,EAAE;AAAA,cAC/D;AACA,qBAAO,GAAG,mBAAmB;AAAA,YAC/B;AAAA,UACF;AAAA,QACF,EAAE;AAAA,cACA;AAAA,YAAS,CAAC,qBACR,OAAO;AAAA,cACL;AAAA,cACA,OAAO;AAAA,gBACL,IAAI,SAAS,UAAU,iBAAiB;AAAA,kBACtC,CAAC,EAAE,WAAW,GAAG,QAAQ;AAAA,oBACvB;AAAA,oBACA,EAAE,YAAY,GAAG,iBAAiB,GAAG,EAAE;AAAA,kBACzC;AAAA,gBACF;AAAA,cACF;AAAA,cACA,IAAI;AAAA,cACJ,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AXnEA,IAAM,iBAAiB,CACrB,aACA,oBAMA,WACA,cACgB;AAChB,QAAM,aAAa,cAAc,YAAY,WAAW,SAAS;AAEjE,QAAM,EAAE,SAAS,MAAM,YAAY,IAAI;AACvC,QAAM,QAAQ,CAAC;AACf,aAAW,UAAU,SAAS;AAC5B,sCAAkB,CAAC;AACnB,UAAM,CAAC,UAAU,IAAI,QAAQ,MAAM;AACnC,eAAW,QAAQ,YAAY;AAC7B,YAAM,MAAM,EAAE,IAAI,IAAI;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,QACA,oBAAoB,YAAY,WAAW,IAAI,CAAC;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,KAAK,CAAC;AACZ,aAAW,UAAU,SAAS;AAC5B,gCAAe,CAAC;AAChB,UAAM,CAAC,EAAE,SAAS,IAAI,QAAQ,MAAM;AACpC,eAAW,QAAQ,WAAW;AAC5B,SAAG,MAAM,EAAE,IAAI,IAAI;AAAA,QACjB;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,oBAAoB,YAAY,UAAU,IAAI,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,CAAC;AAChB,aAAW,UAAU,SAAS;AAC5B,wCAAmB,CAAC;AACpB,UAAM,CAAC,EAAE,EAAE,SAAS,IAAI,QAAQ,MAAM;AACtC,eAAW,QAAQ,WAAW;AAC5B,aAAO,MAAM,EAAE,IAAI,IAAI;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA,oBAAoB,YAAY,UAAU,IAAI,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,CAAC;AACnB,aAAW,UAAU,SAAS;AAC5B,8CAAsB,CAAC;AACvB,UAAM,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,IAAI,QAAQ,MAAM;AAC1C,eAAW,QAAQ,WAAW;AAC5B,gBAAU,MAAM,EAAE,IAAI,IAAI;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA,oBAAoB,YAAY,UAAU,IAAI,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAO,CAAC;AACd,aAAW,OAAO,aAAa;AAC7B,8BAAc,CAAC;AACf,UAAM,UAAU,YAAY,GAAG;AAC/B,eAAW,UAAU,SAAS;AAC5B,WAAK,GAAG,EAAE,MAAM,IAAI;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA,oBAAoB,YAAY,QAAQ,MAAM,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EACX;AACF;AAEO,SAAS,aAAa,UAA2C;AACtE,QAAM,gBAA6B,wBAAAC,cAAgB,QAAQ;AAC3D,QAAM,aAAS,8CAAoB,SAAS;AAC5C,QAAM,YAAY,OAAO,WAAW;AAEpC,QAAM,qBAAqB,YAAY,SAAS;AAChD,QAAM,YAAY,aAAa,WAAW,MAAM;AAChD,QAAM,EAAE,QAAQ,SAAS,eAAe,IAAI;AAC5C,QAAM,EAAE,iBAAiB,IAAI;AAE7B,SAAO;AAAA,IACL;AAAA,IAEA,iBAAiB,UAAU;AAAA,IAC3B,mBAAmB,UAAM,8BAAe,UAAU,UAAU;AAAA,IAE5D,aAAa,UAAU;AAAA,IACvB,eAAe,UAAM,8BAAe,UAAU,WAAW;AAAA,IAEzD,iBAAiB,UAAU;AAAA,IAC3B,cAAc,CAAC,aAAiB,8BAAe,UAAU,MAAM,IAAI,CAAC;AAAA,IAEpE,gBAAgB,CAAC,aACf,8BAAe,UAAU,QAAQ,QAAQ,IAAI,CAAC;AAAA,IAEhD;AAAA,IACA;AAAA,IAEA,aAAa,CAAwB,gBACnC,eAAe,aAAa,oBAAoB,WAAW,SAAS;AAAA,IAEtE,SAAS,MAAM;AACb,gBAAU,SAAS;AACnB,aAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AACF;;;AqBrIA,IAAAC,6BAMO;","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"]}
|