polkadot-api 0.11.2 → 0.12.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/chains/paseo_asset_hub/package.json +8 -0
- package/chains/polkadot_people/package.json +8 -0
- package/dist/esm/compatibility.mjs +15 -3
- package/dist/esm/compatibility.mjs.map +1 -1
- package/dist/esm/constants.mjs +2 -1
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/event.mjs +2 -1
- package/dist/esm/event.mjs.map +1 -1
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/reexports/chains_paseo_asset_hub.mjs +2 -0
- package/dist/esm/reexports/chains_paseo_asset_hub.mjs.map +1 -0
- package/dist/esm/reexports/chains_polkadot_people.mjs +2 -0
- package/dist/esm/reexports/chains_polkadot_people.mjs.map +1 -0
- package/dist/esm/runtime-call.mjs +2 -1
- package/dist/esm/runtime-call.mjs.map +1 -1
- package/dist/esm/storage.mjs +2 -0
- package/dist/esm/storage.mjs.map +1 -1
- package/dist/esm/tx/submit-fns.mjs +39 -12
- package/dist/esm/tx/submit-fns.mjs.map +1 -1
- package/dist/esm/tx/tx.mjs +6 -1
- package/dist/esm/tx/tx.mjs.map +1 -1
- package/dist/index.d.ts +36 -45
- package/dist/index.js +66 -17
- package/dist/index.js.map +1 -1
- package/dist/reexports/chains.d.ts +2 -0
- package/dist/reexports/chains_paseo_asset_hub.d.ts +1 -0
- package/dist/reexports/chains_paseo_asset_hub.js +13 -0
- package/dist/reexports/chains_paseo_asset_hub.js.map +1 -0
- package/dist/reexports/chains_polkadot_people.d.ts +1 -0
- package/dist/reexports/chains_polkadot_people.js +13 -0
- package/dist/reexports/chains_polkadot_people.js.map +1 -0
- package/package.json +38 -15
package/dist/esm/tx/tx.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx.mjs","sources":["../../../src/tx/tx.ts"],"sourcesContent":["import { BlockInfo, getObservableClient } from \"@polkadot-api/observable-client\"\nimport { PolkadotSigner } from \"@polkadot-api/polkadot-signer\"\nimport { getPolkadotSigner } from \"@polkadot-api/signer\"\nimport {\n AccountId,\n Binary,\n Enum,\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 firstValueFrom,\n map,\n mergeMap,\n take,\n throwError,\n} from \"rxjs\"\nimport { PlainDescriptor } from \"@/descriptors\"\nimport {\n CompatibilityHelper,\n CompatibilityToken,\n getCompatibilityApi,\n} from \"../compatibility\"\nimport { createTx } from \"./create-tx\"\nimport { submit, submit$ } from \"./submit-fns\"\nimport {\n TxCall,\n TxEntry,\n TxObservable,\n TxOptions,\n TxPromise,\n TxSignFn,\n} from \"./types\"\nimport {\n isCompatible,\n mapLookupToTypedef,\n} from \"@polkadot-api/metadata-compatibility\"\n\nexport { submit, submit$ }\n\nconst accountIdEnc = AccountId().enc\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 D,\n Arg extends {} | undefined,\n Pallet extends string,\n Name extends string,\n Asset extends PlainDescriptor<any>,\n>(\n pallet: Pallet,\n name: Name,\n chainHead: ReturnType<ReturnType<typeof getObservableClient>[\"chainHead$\"]>,\n broadcast: (tx: string) => Observable<never>,\n {\n getCompatibilityLevel,\n compatibleRuntime$,\n argsAreCompatible,\n getRuntimeTypedef,\n }: CompatibilityHelper,\n): TxEntry<D, Arg, Pallet, Name, Asset> => {\n const fn = (arg?: Arg): any => {\n const getCallDataWithContext = (\n runtime: CompatibilityToken,\n arg: any,\n txOptions: Partial<{ asset: any }> = {},\n ) => {\n const ctx = getCompatibilityApi(runtime).runtime()\n if (!argsAreCompatible(runtime, ctx, arg))\n throw new Error(`Incompatible runtime entry Tx(${pallet}.${name})`)\n\n const { dynamicBuilder, assetId, lookup } = ctx\n let returnOptions = txOptions\n if (txOptions.asset) {\n if (\n assetId == null ||\n !isCompatible(\n txOptions.asset,\n mapLookupToTypedef(lookup(assetId)),\n (id) => getRuntimeTypedef(ctx, id),\n )\n )\n throw new Error(`Incompatible runtime asset`)\n returnOptions = {\n ...txOptions,\n asset: dynamicBuilder.buildDefinition(assetId).enc(txOptions.asset),\n }\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 options: returnOptions,\n }\n }\n\n const getCallData$ = (arg: any, options: Partial<{ asset: any }> = {}) =>\n compatibleRuntime$(chainHead, null).pipe(\n map(([runtime]) => getCallDataWithContext(runtime, arg, options)),\n )\n\n const getEncodedData: TxCall = (\n compatibilityToken?: CompatibilityToken,\n ): any => {\n if (!compatibilityToken)\n return firstValueFrom(getCallData$(arg).pipe(map((x) => x.callData)))\n\n return getCallDataWithContext(compatibilityToken, arg).callData\n }\n\n const sign$ = (\n from: PolkadotSigner,\n { ..._options }: Omit<TxOptions<{}>, \"at\">,\n atBlock: BlockInfo,\n ) =>\n getCallData$(arg, _options).pipe(\n mergeMap(({ callData, options }) =>\n createTx(chainHead, from, callData.asBytes(), atBlock, options),\n ),\n )\n\n const _sign = (\n from: PolkadotSigner,\n { at, ..._options }: TxOptions<{}> = {},\n ) => {\n return (\n !at || at === \"finalized\"\n ? chainHead.finalized$\n : at === \"best\"\n ? chainHead.best$\n : chainHead.bestBlocks$.pipe(\n map((x) => x.find((b) => b.hash === at)),\n )\n ).pipe(\n take(1),\n mergeMap((atBlock) =>\n atBlock\n ? sign$(from, _options, atBlock).pipe(\n map((signed) => ({\n tx: toHex(signed),\n block: atBlock,\n })),\n )\n : throwError(() => new Error(`Uknown block ${at}`)),\n ),\n )\n }\n\n const sign: TxSignFn<Asset> = (from, options) =>\n firstValueFrom(_sign(from, options)).then((x) => x.tx)\n\n const signAndSubmit: TxPromise<Asset> = (from, _options) =>\n firstValueFrom(_sign(from, _options)).then(({ tx, block }) =>\n submit(chainHead, broadcast, tx, block.hash),\n )\n\n const signSubmitAndWatch: TxObservable<Asset> = (from, _options) =>\n _sign(from, _options).pipe(\n mergeMap(({ tx, block }) =>\n submit$(chainHead, broadcast, tx, block.hash, true),\n ),\n )\n\n const getEstimatedFees = async (\n from: Uint8Array | SS58String,\n _options?: 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, _options))\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, { getCompatibilityLevel })\n}\n"],"names":["arg"],"mappings":";;;;;;;;;AA8CA,MAAM,YAAA,GAAe,WAAY,CAAA,GAAA,CAAA;AACjC,MAAM,kBAAkB,KAAM,CAAA,OAAA,EAAS,OAAS,EAAA,EAAA,EAAI,IAAI,CAAE,CAAA,GAAA,CAAA;AAC1D,MAAM,eAAe,CAAC,KAAA,KAA0B,eAAgB,CAAA,KAAK,EAAE,CAAC,CAAA,CAAA;AACxE,MAAM,aAAA,GAAgB,IAAI,UAAA,CAAW,EAAE,CAAA,CAAA;AACvC,MAAM,mBAAmB,MAAM,aAAA,CAAA;AAExB,MAAM,aAAgB,GAAA,CAO3B,MACA,EAAA,IAAA,EACA,WACA,SACA,EAAA;AAAA,EACE,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AACF,CACyC,KAAA;AACzC,EAAM,MAAA,EAAA,GAAK,CAAC,GAAmB,KAAA;AAC7B,IAAA,MAAM,yBAAyB,CAC7B,OAAA,EACAA,IACA,EAAA,SAAA,GAAqC,EAClC,KAAA;AACH,MAAA,MAAM,GAAM,GAAA,mBAAA,CAAoB,OAAO,CAAA,CAAE,OAAQ,EAAA,CAAA;AACjD,MAAA,IAAI,CAAC,iBAAA,CAAkB,OAAS,EAAA,GAAA,EAAKA,IAAG,CAAA;AACtC,QAAA,MAAM,IAAI,KAAM,CAAA,CAAA,8BAAA,EAAiC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAG,CAAA,CAAA,CAAA,CAAA;AAEpE,MAAA,MAAM,EAAE,cAAA,EAAgB,OAAS,EAAA,MAAA,EAAW,GAAA,GAAA,CAAA;AAC5C,MAAA,IAAI,aAAgB,GAAA,SAAA,CAAA;AACpB,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QACE,IAAA,OAAA,IAAW,QACX,CAAC,YAAA;AAAA,UACC,SAAU,CAAA,KAAA;AAAA,UACV,kBAAA,CAAmB,MAAO,CAAA,OAAO,CAAC,CAAA;AAAA,UAClC,CAAC,EAAA,KAAO,iBAAkB,CAAA,GAAA,EAAK,EAAE,CAAA;AAAA,SACnC;AAEA,UAAM,MAAA,IAAI,MAAM,CAA4B,0BAAA,CAAA,CAAA,CAAA;AAC9C,QAAgB,aAAA,GAAA;AAAA,UACd,GAAG,SAAA;AAAA,UACH,OAAO,cAAe,CAAA,eAAA,CAAgB,OAAO,CAAE,CAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AAAA,SACpE,CAAA;AAAA,OACF;AAEA,MAAA,MAAM,EAAE,QAAU,EAAA,KAAA,KAAU,cAAe,CAAA,SAAA,CAAU,QAAQ,IAAI,CAAA,CAAA;AACjE,MAAO,OAAA;AAAA,QACL,UAAU,MAAO,CAAA,SAAA;AAAA,UACf,UAAA,CAAW,IAAI,UAAW,CAAA,QAAQ,GAAG,KAAM,CAAA,GAAA,CAAIA,IAAG,CAAC,CAAA;AAAA,SACrD;AAAA,QACA,OAAS,EAAA,aAAA;AAAA,OACX,CAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,CAACA,IAAU,EAAA,OAAA,GAAmC,EACjE,KAAA,kBAAA,CAAmB,SAAW,EAAA,IAAI,CAAE,CAAA,IAAA;AAAA,MAClC,GAAA,CAAI,CAAC,CAAC,OAAO,MAAM,sBAAuB,CAAA,OAAA,EAASA,IAAK,EAAA,OAAO,CAAC,CAAA;AAAA,KAClE,CAAA;AAEF,IAAM,MAAA,cAAA,GAAyB,CAC7B,kBACQ,KAAA;AACR,MAAA,IAAI,CAAC,kBAAA;AACH,QAAO,OAAA,cAAA,CAAe,YAAa,CAAA,GAAG,CAAE,CAAA,IAAA,CAAK,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA,CAAA;AAEtE,MAAO,OAAA,sBAAA,CAAuB,kBAAoB,EAAA,GAAG,CAAE,CAAA,QAAA,CAAA;AAAA,KACzD,CAAA;AAEA,IAAM,MAAA,KAAA,GAAQ,CACZ,IAAA,EACA,EAAE,GAAG,QAAS,EAAA,EACd,OAEA,KAAA,YAAA,CAAa,GAAK,EAAA,QAAQ,CAAE,CAAA,IAAA;AAAA,MAC1B,QAAA;AAAA,QAAS,CAAC,EAAE,QAAU,EAAA,OAAA,EACpB,KAAA,QAAA,CAAS,SAAW,EAAA,IAAA,EAAM,QAAS,CAAA,OAAA,EAAW,EAAA,OAAA,EAAS,OAAO,CAAA;AAAA,OAChE;AAAA,KACF,CAAA;AAEF,IAAM,MAAA,KAAA,GAAQ,CACZ,IACA,EAAA,EAAE,IAAI,GAAG,QAAA,EAA4B,GAAA,EAClC,KAAA;AACH,MACE,OAAA,CAAA,CAAC,EAAM,IAAA,EAAA,KAAO,WACV,GAAA,SAAA,CAAU,UACV,GAAA,EAAA,KAAO,MACL,GAAA,SAAA,CAAU,KACV,GAAA,SAAA,CAAU,WAAY,CAAA,IAAA;AAAA,QACpB,GAAA,CAAI,CAAC,CAAA,KAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,IAAS,KAAA,EAAE,CAAC,CAAA;AAAA,OAE/C,EAAA,IAAA;AAAA,QACA,KAAK,CAAC,CAAA;AAAA,QACN,QAAA;AAAA,UAAS,CAAC,OACR,KAAA,OAAA,GACI,MAAM,IAAM,EAAA,QAAA,EAAU,OAAO,CAAE,CAAA,IAAA;AAAA,YAC7B,GAAA,CAAI,CAAC,MAAY,MAAA;AAAA,cACf,EAAA,EAAI,MAAM,MAAM,CAAA;AAAA,cAChB,KAAO,EAAA,OAAA;AAAA,aACP,CAAA,CAAA;AAAA,WACJ,GACA,WAAW,MAAM,IAAI,MAAM,CAAgB,aAAA,EAAA,EAAE,EAAE,CAAC,CAAA;AAAA,SACtD;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,IAAwB,GAAA,CAAC,IAAM,EAAA,OAAA,KACnC,eAAe,KAAM,CAAA,IAAA,EAAM,OAAO,CAAC,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA,CAAA;AAEvD,IAAM,MAAA,aAAA,GAAkC,CAAC,IAAM,EAAA,QAAA,KAC7C,eAAe,KAAM,CAAA,IAAA,EAAM,QAAQ,CAAC,CAAE,CAAA,IAAA;AAAA,MAAK,CAAC,EAAE,EAAA,EAAI,KAAM,EAAA,KACtD,OAAO,SAAW,EAAA,SAAA,EAAW,EAAI,EAAA,KAAA,CAAM,IAAI,CAAA;AAAA,KAC7C,CAAA;AAEF,IAAA,MAAM,qBAA0C,CAAC,IAAA,EAAM,aACrD,KAAM,CAAA,IAAA,EAAM,QAAQ,CAAE,CAAA,IAAA;AAAA,MACpB,QAAA;AAAA,QAAS,CAAC,EAAE,EAAA,EAAI,KAAM,EAAA,KACpB,OAAQ,CAAA,SAAA,EAAW,SAAW,EAAA,EAAA,EAAI,KAAM,CAAA,IAAA,EAAM,IAAI,CAAA;AAAA,OACpD;AAAA,KACF,CAAA;AAEF,IAAM,MAAA,gBAAA,GAAmB,OACvB,IAAA,EACA,QACG,KAAA;AACH,MAAA,MAAM,UAAa,GAAA,iBAAA;AAAA,QACjB,IAAgB,YAAA,UAAA,GAAa,IAAO,GAAA,YAAA,CAAa,IAAI,CAAA;AAAA,QACrD,SAAA;AAAA,QACA,gBAAA;AAAA,OACF,CAAA;AACA,MAAA,MAAM,UAAU,OAAQ,CAAA,MAAM,IAAK,CAAA,UAAA,EAAY,QAAQ,CAAC,CAAA,CAAA;AACxD,MAAM,MAAA,IAAA,GAAO,MAAM,UAAW,CAAA,OAAA,EAAS,IAAI,GAAI,CAAA,OAAA,CAAQ,MAAM,CAAC,CAAC,CAAA,CAAA;AAE/D,MAAO,OAAA,cAAA;AAAA,QACL,SAAA,CACG,MAAM,IAAM,EAAA,kCAAA,EAAoC,IAAI,CACpD,CAAA,IAAA,CAAK,GAAI,CAAA,YAAY,CAAC,CAAA;AAAA,OAC3B,CAAA;AAAA,KACF,CAAA;AAEA,IAAO,OAAA;AAAA,MACL,gBAAA;AAAA,MACA,WAAa,EAAA;AAAA,QACX,IAAM,EAAA,MAAA;AAAA,QACN,KAAA,EAAO,IAAK,CAAA,IAAA,EAAM,GAAU,CAAA;AAAA,OAC9B;AAAA,MACA,cAAA;AAAA,MACA,IAAA;AAAA,MACA,kBAAA;AAAA,MACA,aAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AAEA,EAAA,OAAO,MAAO,CAAA,MAAA,CAAO,EAAI,EAAA,EAAE,uBAAuB,CAAA,CAAA;AACpD;;;;"}
|
|
1
|
+
{"version":3,"file":"tx.mjs","sources":["../../../src/tx/tx.ts"],"sourcesContent":["import { BlockInfo, getObservableClient } from \"@polkadot-api/observable-client\"\nimport { PolkadotSigner } from \"@polkadot-api/polkadot-signer\"\nimport { getPolkadotSigner } from \"@polkadot-api/signer\"\nimport {\n AccountId,\n Binary,\n Enum,\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 firstValueFrom,\n map,\n mergeMap,\n take,\n throwError,\n} from \"rxjs\"\nimport { PlainDescriptor } from \"@/descriptors\"\nimport {\n CompatibilityHelper,\n CompatibilityToken,\n getCompatibilityApi,\n} from \"../compatibility\"\nimport { createTx } from \"./create-tx\"\nimport { InvalidTxError, submit, submit$ } from \"./submit-fns\"\nimport {\n TxCall,\n TxEntry,\n TxObservable,\n TxOptions,\n TxPromise,\n TxSignFn,\n} from \"./types\"\nimport {\n isCompatible,\n mapLookupToTypedef,\n} from \"@polkadot-api/metadata-compatibility\"\n\nexport { submit, submit$, InvalidTxError }\n\nconst accountIdEnc = AccountId().enc\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 D,\n Arg extends {} | undefined,\n Pallet extends string,\n Name extends string,\n Asset extends PlainDescriptor<any>,\n>(\n pallet: Pallet,\n name: Name,\n chainHead: ReturnType<ReturnType<typeof getObservableClient>[\"chainHead$\"]>,\n broadcast: (tx: string) => Observable<never>,\n {\n isCompatible: isCompatibleHelper,\n getCompatibilityLevel,\n compatibleRuntime$,\n argsAreCompatible,\n getRuntimeTypedef,\n }: CompatibilityHelper,\n): TxEntry<D, Arg, Pallet, Name, Asset> => {\n const fn = (arg?: Arg): any => {\n const getCallDataWithContext = (\n runtime: CompatibilityToken,\n arg: any,\n txOptions: Partial<{ asset: any }> = {},\n ) => {\n const ctx = getCompatibilityApi(runtime).runtime()\n if (!argsAreCompatible(runtime, ctx, arg))\n throw new Error(`Incompatible runtime entry Tx(${pallet}.${name})`)\n\n const { dynamicBuilder, assetId, lookup } = ctx\n let returnOptions = txOptions\n if (txOptions.asset) {\n if (\n assetId == null ||\n !isCompatible(\n txOptions.asset,\n mapLookupToTypedef(lookup(assetId)),\n (id) => getRuntimeTypedef(ctx, id),\n )\n )\n throw new Error(`Incompatible runtime asset`)\n returnOptions = {\n ...txOptions,\n asset: dynamicBuilder.buildDefinition(assetId).enc(txOptions.asset),\n }\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 options: returnOptions,\n }\n }\n\n const getCallData$ = (arg: any, options: Partial<{ asset: any }> = {}) =>\n compatibleRuntime$(chainHead, null).pipe(\n map(([runtime]) => getCallDataWithContext(runtime, arg, options)),\n )\n\n const getEncodedData: TxCall = (\n compatibilityToken?: CompatibilityToken,\n ): any => {\n if (!compatibilityToken)\n return firstValueFrom(getCallData$(arg).pipe(map((x) => x.callData)))\n\n return getCallDataWithContext(compatibilityToken, arg).callData\n }\n\n const sign$ = (\n from: PolkadotSigner,\n { ..._options }: Omit<TxOptions<{}>, \"at\">,\n atBlock: BlockInfo,\n ) =>\n getCallData$(arg, _options).pipe(\n mergeMap(({ callData, options }) =>\n createTx(chainHead, from, callData.asBytes(), atBlock, options),\n ),\n )\n\n const _sign = (\n from: PolkadotSigner,\n { at, ..._options }: TxOptions<{}> = {},\n ) => {\n return (\n !at || at === \"finalized\"\n ? chainHead.finalized$\n : at === \"best\"\n ? chainHead.best$\n : chainHead.bestBlocks$.pipe(\n map((x) => x.find((b) => b.hash === at)),\n )\n ).pipe(\n take(1),\n mergeMap((atBlock) =>\n atBlock\n ? sign$(from, _options, atBlock).pipe(\n map((signed) => ({\n tx: toHex(signed),\n block: atBlock,\n })),\n )\n : throwError(() => new Error(`Uknown block ${at}`)),\n ),\n )\n }\n\n const sign: TxSignFn<Asset> = (from, options) =>\n firstValueFrom(_sign(from, options)).then((x) => x.tx)\n\n const signAndSubmit: TxPromise<Asset> = (from, _options) =>\n firstValueFrom(_sign(from, _options)).then(({ tx, block }) =>\n submit(chainHead, broadcast, tx, block.hash),\n )\n\n const signSubmitAndWatch: TxObservable<Asset> = (from, _options) =>\n _sign(from, _options).pipe(\n mergeMap(({ tx, block }) =>\n submit$(chainHead, broadcast, tx, block.hash, true),\n ),\n )\n\n const getEstimatedFees = async (\n from: Uint8Array | SS58String,\n _options?: 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, _options))\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, {\n getCompatibilityLevel,\n isCompatible: isCompatibleHelper,\n })\n}\n"],"names":["arg"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { JsonRpcProvider } from '@polkadot-api/json-rpc-provider';
|
|
2
|
-
import {
|
|
2
|
+
import { BlockInfo, SystemEvent as SystemEvent$1 } from '@polkadot-api/observable-client';
|
|
3
3
|
import { HexString, Binary, SS58String, Enum, BlockHeader } from '@polkadot-api/substrate-bindings';
|
|
4
4
|
export { AccountId, Binary, Codec, Enum, EnumVariant, FixedSizeBinary, GetEnum, HexString, ResultPayload, SS58AddressInfo, SS58String, _Enum, getSs58AddressInfo } from '@polkadot-api/substrate-bindings';
|
|
5
5
|
import { ChainSpecData } from '@polkadot-api/substrate-client';
|
|
6
6
|
import { Observable } from 'rxjs';
|
|
7
|
-
import { CompatibilityLevel
|
|
7
|
+
import { CompatibilityLevel } from '@polkadot-api/metadata-compatibility';
|
|
8
8
|
export { CompatibilityLevel } from '@polkadot-api/metadata-compatibility';
|
|
9
9
|
import { DescriptorValues } from '@polkadot-api/codegen';
|
|
10
10
|
export { DescriptorValues } from '@polkadot-api/codegen';
|
|
@@ -67,52 +67,40 @@ type ErrorsFromPalletsDef<T extends PalletsTypedef<any, any, any, any, any>> = E
|
|
|
67
67
|
type ConstFromPalletsDef<T extends PalletsTypedef<any, any, any, any, any>> = ExtractPlain<T["__const"]>;
|
|
68
68
|
|
|
69
69
|
declare class CompatibilityToken<D = unknown> {
|
|
70
|
-
protected _descriptors: D;
|
|
71
70
|
private constructor();
|
|
71
|
+
protected _phantom(value: D): void;
|
|
72
72
|
}
|
|
73
|
-
interface
|
|
74
|
-
runtime: () => RuntimeContext;
|
|
75
|
-
typedefNodes: TypedefNode[];
|
|
76
|
-
getPalletEntryPoint: (opType: OpType, pallet: string, name: string) => EntryPoint;
|
|
77
|
-
getApiEntryPoint: (name: string, method: string) => EntryPoint;
|
|
78
|
-
}
|
|
79
|
-
declare const enum OpType {
|
|
80
|
-
Storage = "storage",
|
|
81
|
-
Tx = "tx",
|
|
82
|
-
Event = "events",
|
|
83
|
-
Error = "errors",
|
|
84
|
-
Const = "constants"
|
|
85
|
-
}
|
|
86
|
-
declare const compatibilityHelper: (descriptors: Promise<CompatibilityToken>, getDescriptorEntryPoint: (descriptorApi: CompatibilityTokenApi) => EntryPoint, getRuntimeEntryPoint: (ctx: RuntimeContext) => EntryPoint) => {
|
|
87
|
-
getCompatibilityLevel: WithOptionalRuntime<number, unknown>;
|
|
88
|
-
getCompatibilityLevels: (descriptors: CompatibilityToken, ctx?: RuntimeContext) => {
|
|
89
|
-
args: CompatibilityLevel;
|
|
90
|
-
values: CompatibilityLevel;
|
|
91
|
-
};
|
|
92
|
-
waitDescriptors: () => Promise<CompatibilityToken<unknown>>;
|
|
93
|
-
withCompatibleRuntime: <T>(chainHead: ChainHead$, mapper: (x: T) => string) => (source$: Observable<T>) => Observable<[T, CompatibilityToken, RuntimeContext]>;
|
|
94
|
-
compatibleRuntime$: (chainHead: ChainHead$, hash: string | null) => Observable<[CompatibilityToken<unknown>, RuntimeContext]>;
|
|
95
|
-
argsAreCompatible: (descriptors: CompatibilityToken, ctx: RuntimeContext, args: unknown) => boolean;
|
|
96
|
-
valuesAreCompatible: (descriptors: CompatibilityToken, ctx: RuntimeContext, values: unknown) => boolean;
|
|
97
|
-
getRuntimeTypedef: (ctx: RuntimeContext, id: number) => TypedefNode;
|
|
98
|
-
};
|
|
99
|
-
type CompatibilityHelper = ReturnType<typeof compatibilityHelper>;
|
|
100
|
-
type WithOptionalRuntime<T, D> = {
|
|
73
|
+
interface CompatibilityFunctions<D> {
|
|
101
74
|
/**
|
|
102
|
-
* Returns the
|
|
75
|
+
* Returns the `CompatibilityLevel` for this call comparing the descriptors
|
|
76
|
+
* generated on dev time with the current live metadata.
|
|
103
77
|
*/
|
|
104
|
-
(): Promise<
|
|
105
|
-
/**
|
|
106
|
-
* Returns the result synchronously with the loaded runtime.
|
|
107
|
-
*/
|
|
108
|
-
(runtime: CompatibilityToken<D>): T;
|
|
109
|
-
};
|
|
110
|
-
interface CompatibilityFunctions<D> {
|
|
78
|
+
getCompatibilityLevel(): Promise<CompatibilityLevel>;
|
|
111
79
|
/**
|
|
112
80
|
* Returns the `CompatibilityLevel` for this call comparing the descriptors
|
|
113
81
|
* generated on dev time with the current live metadata.
|
|
82
|
+
*
|
|
83
|
+
* @param compatibilityToken CompatibilityToken awaited from
|
|
84
|
+
* typedApi.compatibilityToken.
|
|
85
|
+
*/
|
|
86
|
+
getCompatibilityLevel(compatibilityToken: CompatibilityToken<D>): CompatibilityLevel;
|
|
87
|
+
/**
|
|
88
|
+
* Returns whether this call is compatible based on the CompatibilityLevel
|
|
89
|
+
* threshold.
|
|
90
|
+
*
|
|
91
|
+
* @param threshold CompatibilityLevel threshold to use, inclusive.
|
|
114
92
|
*/
|
|
115
|
-
|
|
93
|
+
isCompatible(threshold: CompatibilityLevel): Promise<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* Returns whether this call is compatible based on the CompatibilityLevel
|
|
96
|
+
* threshold.
|
|
97
|
+
*
|
|
98
|
+
* @param threshold CompatibilityLevel threshold to use,
|
|
99
|
+
* inclusive.
|
|
100
|
+
* @param compatibilityToken CompatibilityToken awaited from
|
|
101
|
+
* typedApi.compatibilityToken.
|
|
102
|
+
*/
|
|
103
|
+
isCompatible(threshold: CompatibilityLevel, compatibilityToken: CompatibilityToken<D>): boolean;
|
|
116
104
|
}
|
|
117
105
|
|
|
118
106
|
interface ConstantEntry<D, T> extends CompatibilityFunctions<D> {
|
|
@@ -472,10 +460,10 @@ interface TxEntry<D, Arg extends {} | undefined, Pallet extends string, Name ext
|
|
|
472
460
|
(...args: Arg extends undefined ? [] : [data: Arg]): Transaction<Arg, Pallet, Name, Asset>;
|
|
473
461
|
}
|
|
474
462
|
|
|
475
|
-
declare
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
463
|
+
declare class InvalidTxError extends Error {
|
|
464
|
+
error: any;
|
|
465
|
+
constructor(e: any);
|
|
466
|
+
}
|
|
479
467
|
|
|
480
468
|
type StorageApi<D, A extends Record<string, Record<string, {
|
|
481
469
|
KeyArgs: Array<any>;
|
|
@@ -518,6 +506,9 @@ type TypedApi<D extends ChainDefinition> = {
|
|
|
518
506
|
constants: ConstApi<D, ConstFromPalletsDef<D["descriptors"]["pallets"]>>;
|
|
519
507
|
compatibilityToken: Promise<CompatibilityToken<D>>;
|
|
520
508
|
};
|
|
509
|
+
type TransactionValidityError<D extends ChainDefinition> = (D["descriptors"]["apis"]["TaggedTransactionQueue"]["validate_transaction"][1] & {
|
|
510
|
+
success: false;
|
|
511
|
+
})["value"];
|
|
521
512
|
interface PolkadotClient {
|
|
522
513
|
/**
|
|
523
514
|
* Retrieve the ChainSpecData as it comes from the [JSON-RPC
|
|
@@ -654,4 +645,4 @@ type FixedSizeArray<L extends number, T> = Array<T> & {
|
|
|
654
645
|
*/
|
|
655
646
|
declare function createClient(provider: JsonRpcProvider): PolkadotClient;
|
|
656
647
|
|
|
657
|
-
export { type ApisTypedef, type ChainDefinition, type ConstFromPalletsDef, type DescriptorEntry, type ErrorsFromPalletsDef, type EventPhase, type EventsFromPalletsDef, type FixedSizeArray, type PalletsTypedef, type PlainDescriptor, type PolkadotClient, type QueryFromPalletsDef, type RuntimeDescriptor, type StorageDescriptor, type Transaction, type TxBestBlocksState, type TxBroadcastEvent, type TxBroadcasted, type TxCall, type TxDescriptor, type TxEntry, type TxEvent, type TxEventsPayload, type TxFinalized, type TxFinalizedPayload, type TxFromPalletsDef, type TxInBestBlocksFound, type TxInBestBlocksNotFound, type TxObservable, type TxOptions, type TxPromise, type TxSignFn, type TxSigned, type TypedApi, createClient
|
|
648
|
+
export { type ApisTypedef, type ChainDefinition, type ConstFromPalletsDef, type DescriptorEntry, type ErrorsFromPalletsDef, type EventPhase, type EventsFromPalletsDef, type FixedSizeArray, InvalidTxError, type PalletsTypedef, type PlainDescriptor, type PolkadotClient, type QueryFromPalletsDef, type RuntimeDescriptor, type StorageDescriptor, type Transaction, type TransactionValidityError, type TxBestBlocksState, type TxBroadcastEvent, type TxBroadcasted, type TxCall, type TxDescriptor, type TxEntry, type TxEvent, type TxEventsPayload, type TxFinalized, type TxFinalizedPayload, type TxFromPalletsDef, type TxInBestBlocksFound, type TxInBestBlocksNotFound, type TxObservable, type TxOptions, type TxPromise, type TxSignFn, type TxSigned, type TypedApi, createClient };
|
package/dist/index.js
CHANGED
|
@@ -10,9 +10,10 @@ var signer = require('@polkadot-api/signer');
|
|
|
10
10
|
var metadataBuilders = require('@polkadot-api/metadata-builders');
|
|
11
11
|
|
|
12
12
|
class CompatibilityToken {
|
|
13
|
+
constructor() {
|
|
14
|
+
}
|
|
13
15
|
// @ts-ignore
|
|
14
|
-
|
|
15
|
-
this._descriptors = _descriptors;
|
|
16
|
+
_phantom(value) {
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
const compatibilityTokenApi = /* @__PURE__ */ new WeakMap();
|
|
@@ -91,6 +92,10 @@ const compatibilityHelper = (descriptors, getDescriptorEntryPoint, getRuntimeEnt
|
|
|
91
92
|
descriptors,
|
|
92
93
|
(runtime) => minCompatLevel(getCompatibilityLevels(runtime))
|
|
93
94
|
);
|
|
95
|
+
const isCompatible = withOptionalToken(
|
|
96
|
+
descriptors,
|
|
97
|
+
(threshold, runtime) => getCompatibilityLevel(runtime) >= threshold
|
|
98
|
+
);
|
|
94
99
|
const waitDescriptors = () => descriptors;
|
|
95
100
|
const compatibleRuntime$ = (chainHead, hash) => rxjs.combineLatest([waitDescriptors(), chainHead.getRuntimeContext$(hash)]);
|
|
96
101
|
const withCompatibleRuntime = (chainHead, mapper) => (source$) => rxjs.combineLatest([
|
|
@@ -122,6 +127,7 @@ const compatibilityHelper = (descriptors, getDescriptorEntryPoint, getRuntimeEnt
|
|
|
122
127
|
);
|
|
123
128
|
};
|
|
124
129
|
return {
|
|
130
|
+
isCompatible,
|
|
125
131
|
getCompatibilityLevel,
|
|
126
132
|
getCompatibilityLevels,
|
|
127
133
|
waitDescriptors,
|
|
@@ -133,11 +139,18 @@ const compatibilityHelper = (descriptors, getDescriptorEntryPoint, getRuntimeEnt
|
|
|
133
139
|
};
|
|
134
140
|
};
|
|
135
141
|
const minCompatLevel = (levels) => Math.min(levels.args, levels.values);
|
|
136
|
-
const withOptionalToken = (compatibilityToken, fn) => (
|
|
142
|
+
const withOptionalToken = (compatibilityToken, fn) => (...args) => {
|
|
143
|
+
const lastElement = args.at(-1);
|
|
144
|
+
if (lastElement instanceof CompatibilityToken) {
|
|
145
|
+
return fn(...args);
|
|
146
|
+
}
|
|
147
|
+
return compatibilityToken.then((token) => fn(...args, token));
|
|
148
|
+
};
|
|
137
149
|
|
|
138
150
|
const createConstantEntry = (palletName, name, {
|
|
139
151
|
valuesAreCompatible,
|
|
140
152
|
waitDescriptors,
|
|
153
|
+
isCompatible,
|
|
141
154
|
getCompatibilityLevel
|
|
142
155
|
}) => {
|
|
143
156
|
const cachedResults = /* @__PURE__ */ new WeakMap();
|
|
@@ -165,7 +178,7 @@ const createConstantEntry = (palletName, name, {
|
|
|
165
178
|
}
|
|
166
179
|
return waitDescriptors().then(fn);
|
|
167
180
|
};
|
|
168
|
-
return Object.assign(fn, { getCompatibilityLevel });
|
|
181
|
+
return Object.assign(fn, { isCompatible, getCompatibilityLevel });
|
|
169
182
|
};
|
|
170
183
|
|
|
171
184
|
const shareLatest = rxjs.share({
|
|
@@ -350,6 +363,7 @@ const continueWith = (mapper) => (source) => new rxjs.Observable((observer) => {
|
|
|
350
363
|
});
|
|
351
364
|
|
|
352
365
|
const createEventEntry = (pallet, name, chainHead, {
|
|
366
|
+
isCompatible,
|
|
353
367
|
getCompatibilityLevel,
|
|
354
368
|
withCompatibleRuntime,
|
|
355
369
|
argsAreCompatible,
|
|
@@ -387,7 +401,7 @@ const createEventEntry = (pallet, name, chainHead, {
|
|
|
387
401
|
const watch = (f) => shared$.pipe(rxjs.mergeMap((x) => f ? x.filter((d) => f(d.payload)) : x));
|
|
388
402
|
const pull = () => rxjs.firstValueFrom(shared$);
|
|
389
403
|
const filter = (events) => events.filter((e) => e.type === pallet && e.value.type === name).map((x) => x.value.value);
|
|
390
|
-
return { watch, pull, filter, getCompatibilityLevel };
|
|
404
|
+
return { watch, pull, filter, getCompatibilityLevel, isCompatible };
|
|
391
405
|
};
|
|
392
406
|
|
|
393
407
|
const isOptionalArg$1 = (lastArg) => {
|
|
@@ -397,6 +411,7 @@ const isOptionalArg$1 = (lastArg) => {
|
|
|
397
411
|
);
|
|
398
412
|
};
|
|
399
413
|
const createRuntimeCallEntry = (api, method, chainHead, {
|
|
414
|
+
isCompatible,
|
|
400
415
|
getCompatibilityLevel,
|
|
401
416
|
compatibleRuntime$,
|
|
402
417
|
argsAreCompatible,
|
|
@@ -425,7 +440,7 @@ const createRuntimeCallEntry = (api, method, chainHead, {
|
|
|
425
440
|
);
|
|
426
441
|
return firstValueFromWithSignal(result$, signal);
|
|
427
442
|
};
|
|
428
|
-
return Object.assign(fn, { getCompatibilityLevel });
|
|
443
|
+
return Object.assign(fn, { getCompatibilityLevel, isCompatible });
|
|
429
444
|
};
|
|
430
445
|
|
|
431
446
|
const isOptionalArg = (lastArg) => {
|
|
@@ -435,6 +450,7 @@ const isOptionalArg = (lastArg) => {
|
|
|
435
450
|
);
|
|
436
451
|
};
|
|
437
452
|
const createStorageEntry = (pallet, name, chainHead, {
|
|
453
|
+
isCompatible,
|
|
438
454
|
getCompatibilityLevel,
|
|
439
455
|
getCompatibilityLevels,
|
|
440
456
|
waitDescriptors,
|
|
@@ -556,6 +572,7 @@ const createStorageEntry = (pallet, name, chainHead, {
|
|
|
556
572
|
keyArgs.map((args) => getValue(...options ? [...args, options] : args))
|
|
557
573
|
);
|
|
558
574
|
return {
|
|
575
|
+
isCompatible,
|
|
559
576
|
getCompatibilityLevel,
|
|
560
577
|
getValue,
|
|
561
578
|
getValues,
|
|
@@ -734,6 +751,9 @@ const createTx = (chainHead, signer, callData, atBlock, hinted = {}) => chainHea
|
|
|
734
751
|
})
|
|
735
752
|
);
|
|
736
753
|
|
|
754
|
+
var __defProp = Object.defineProperty;
|
|
755
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
756
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
|
|
737
757
|
const hashFromTx = (tx) => utils.toHex(substrateBindings.Blake2256(utils.fromHex(tx)));
|
|
738
758
|
const computeState = (analized$, blocks$) => new rxjs.Observable((observer) => {
|
|
739
759
|
const analyzedBlocks = /* @__PURE__ */ new Map();
|
|
@@ -751,20 +771,26 @@ const computeState = (analized$, blocks$) => new rxjs.Observable((observer) => {
|
|
|
751
771
|
const analyzedNumber = pinnedBlocks.blocks.get(analyzed.hash).number;
|
|
752
772
|
const isFinalized = analyzedNumber <= pinnedBlocks.blocks.get(pinnedBlocks.finalized).number;
|
|
753
773
|
const found = analyzed.found.type;
|
|
754
|
-
if (found &&
|
|
774
|
+
if (found && latestState?.found && latestState.hash === analyzed.hash) {
|
|
755
775
|
if (isFinalized) observer.complete();
|
|
756
776
|
return;
|
|
757
777
|
}
|
|
758
778
|
observer.next(
|
|
759
|
-
latestState = found ? {
|
|
779
|
+
latestState = analyzed.found.type ? {
|
|
780
|
+
found,
|
|
760
781
|
hash: analyzed.hash,
|
|
761
782
|
number: analyzedNumber,
|
|
762
|
-
|
|
763
|
-
|
|
783
|
+
index: analyzed.found.index,
|
|
784
|
+
events: analyzed.found.events
|
|
785
|
+
} : {
|
|
786
|
+
found,
|
|
787
|
+
validity: analyzed.found.validity
|
|
788
|
+
}
|
|
764
789
|
);
|
|
765
790
|
if (isFinalized) {
|
|
766
791
|
if (found) observer.complete();
|
|
767
|
-
else if (
|
|
792
|
+
else if (analyzed.found.validity?.success === false)
|
|
793
|
+
observer.error(new InvalidTxError(analyzed.found.validity.value));
|
|
768
794
|
}
|
|
769
795
|
};
|
|
770
796
|
const subscription = blocks$.pipe(
|
|
@@ -800,6 +826,24 @@ const getTxSuccessFromSystemEvents = (systemEvents, txIdx) => {
|
|
|
800
826
|
const ok = lastEvent.type === "System" && lastEvent.value.type === "ExtrinsicSuccess";
|
|
801
827
|
return { ok, events };
|
|
802
828
|
};
|
|
829
|
+
class InvalidTxError extends Error {
|
|
830
|
+
// likely to be a `TransactionValidityError`
|
|
831
|
+
constructor(e) {
|
|
832
|
+
super(
|
|
833
|
+
JSON.stringify(
|
|
834
|
+
e,
|
|
835
|
+
(_, value) => {
|
|
836
|
+
if (typeof value === "bigint") return value.toString();
|
|
837
|
+
return value instanceof substrateBindings.Binary ? value.asHex() : value;
|
|
838
|
+
},
|
|
839
|
+
2
|
|
840
|
+
)
|
|
841
|
+
);
|
|
842
|
+
__publicField(this, "error");
|
|
843
|
+
this.name = "InvalidTxError";
|
|
844
|
+
this.error = e;
|
|
845
|
+
}
|
|
846
|
+
}
|
|
803
847
|
const submit$ = (chainHead, broadcastTx$, tx, at, emitSign = false) => {
|
|
804
848
|
const txHash = hashFromTx(tx);
|
|
805
849
|
const getTxEvent = (type, rest) => ({
|
|
@@ -814,9 +858,9 @@ const submit$ = (chainHead, broadcastTx$, tx, at, emitSign = false) => {
|
|
|
814
858
|
const validate$ = at$.pipe(
|
|
815
859
|
rxjs.mergeMap(
|
|
816
860
|
(at2) => chainHead.validateTx$(at2, tx).pipe(
|
|
817
|
-
rxjs.filter((x) => !x),
|
|
818
|
-
rxjs.map(() => {
|
|
819
|
-
throw new
|
|
861
|
+
rxjs.filter((x) => !x.success),
|
|
862
|
+
rxjs.map((x) => {
|
|
863
|
+
throw new InvalidTxError(x.value);
|
|
820
864
|
})
|
|
821
865
|
)
|
|
822
866
|
)
|
|
@@ -834,10 +878,10 @@ const submit$ = (chainHead, broadcastTx$, tx, at, emitSign = false) => {
|
|
|
834
878
|
});
|
|
835
879
|
const bestBlockState$ = computeState(track$, chainHead.pinnedBlocks$).pipe(
|
|
836
880
|
rxjs.map((x) => {
|
|
837
|
-
if (x
|
|
881
|
+
if (!x.found)
|
|
838
882
|
return getTxEvent("txBestBlocksState", {
|
|
839
883
|
found: false,
|
|
840
|
-
isValid: x
|
|
884
|
+
isValid: x.validity?.success !== false
|
|
841
885
|
});
|
|
842
886
|
return getTxEvent("txBestBlocksState", {
|
|
843
887
|
found: true,
|
|
@@ -874,6 +918,7 @@ const queryInfoDec = (input) => queryInfoRawDec(input)[3];
|
|
|
874
918
|
const fakeSignature = new Uint8Array(64);
|
|
875
919
|
const getFakeSignature = () => fakeSignature;
|
|
876
920
|
const createTxEntry = (pallet, name, chainHead, broadcast, {
|
|
921
|
+
isCompatible: isCompatibleHelper,
|
|
877
922
|
getCompatibilityLevel,
|
|
878
923
|
compatibleRuntime$,
|
|
879
924
|
argsAreCompatible,
|
|
@@ -967,7 +1012,10 @@ const createTxEntry = (pallet, name, chainHead, broadcast, {
|
|
|
967
1012
|
signAndSubmit
|
|
968
1013
|
};
|
|
969
1014
|
};
|
|
970
|
-
return Object.assign(fn, {
|
|
1015
|
+
return Object.assign(fn, {
|
|
1016
|
+
getCompatibilityLevel,
|
|
1017
|
+
isCompatible: isCompatibleHelper
|
|
1018
|
+
});
|
|
971
1019
|
};
|
|
972
1020
|
|
|
973
1021
|
const createTypedApi = (compatibilityToken, chainHead, broadcast$) => {
|
|
@@ -1134,5 +1182,6 @@ Object.defineProperty(exports, "getSs58AddressInfo", {
|
|
|
1134
1182
|
enumerable: true,
|
|
1135
1183
|
get: function () { return substrateBindings.getSs58AddressInfo; }
|
|
1136
1184
|
});
|
|
1185
|
+
exports.InvalidTxError = InvalidTxError;
|
|
1137
1186
|
exports.createClient = createClient;
|
|
1138
1187
|
//# sourceMappingURL=index.js.map
|