diff --git a/packages/api-metadata/src/extrinsics/fromMetadata/createUnchecked.ts b/packages/api-metadata/src/extrinsics/fromMetadata/createUnchecked.ts index 17131eea5a..492dfb9d66 100644 --- a/packages/api-metadata/src/extrinsics/fromMetadata/createUnchecked.ts +++ b/packages/api-metadata/src/extrinsics/fromMetadata/createUnchecked.ts @@ -2,9 +2,11 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { FunctionMetadata } from '@polkadot/types/Metadata/v6/Calls'; -import { MethodFunction } from '@polkadot/types/primitive/Method'; -import { Method } from '@polkadot/types'; +import { Method } from '@polkadot/types/interfaces'; + +import { FunctionMetadata } from '@polkadot/types/Metadata/v7/Calls'; +import { MethodFunction } from '@polkadot/types/primitive/Generic/Method'; +import { ClassOf } from '@polkadot/types'; import { assert, stringCamelCase } from '@polkadot/util'; /** @@ -31,7 +33,7 @@ export default function createDescriptor ( `Extrinsic ${section}.${funcName} expects ${expectedArgs.length.valueOf()} arguments, got ${args.length}.` ); - return new Method({ + return new (ClassOf('Method'))({ args, callIndex }, callMetadata); diff --git a/packages/api-metadata/src/extrinsics/fromMetadata/fromMetadata.spec.ts b/packages/api-metadata/src/extrinsics/fromMetadata/fromMetadata.spec.ts index a2694fca5f..4ac5b12a3d 100644 --- a/packages/api-metadata/src/extrinsics/fromMetadata/fromMetadata.spec.ts +++ b/packages/api-metadata/src/extrinsics/fromMetadata/fromMetadata.spec.ts @@ -4,7 +4,7 @@ import '@polkadot/types/injector'; -import { Extrinsic, Metadata } from '@polkadot/types'; +import { createType, Metadata } from '@polkadot/types'; import json from '@polkadot/types/Metadata/v7/static'; import fromMetadata from '.'; @@ -24,7 +24,7 @@ describe('fromMetadata', (): void => { it('should return properly-encoded transactions', (): void => { expect( - new Extrinsic(newExtrinsics.timestamp.set([10101])).toU8a() + createType('Extrinsic', newExtrinsics.timestamp.set([10101])).toU8a() ).toEqual( new Uint8Array([ // length (encoded) diff --git a/packages/api-metadata/src/extrinsics/fromMetadata/index.ts b/packages/api-metadata/src/extrinsics/fromMetadata/index.ts index 284d0cdfd3..43425540ba 100644 --- a/packages/api-metadata/src/extrinsics/fromMetadata/index.ts +++ b/packages/api-metadata/src/extrinsics/fromMetadata/index.ts @@ -3,7 +3,7 @@ // of the Apache-2.0 license. See the LICENSE file for details. import { ModuleMetadata } from '@polkadot/types/Metadata/v7/Metadata'; -import { Methods, ModulesWithMethods } from '@polkadot/types/primitive/Method'; +import { Methods, ModulesWithMethods } from '@polkadot/types/primitive/Generic/Method'; import Metadata from '@polkadot/types/Metadata'; import { stringCamelCase } from '@polkadot/util'; diff --git a/packages/api-metadata/src/extrinsics/index.spec.ts b/packages/api-metadata/src/extrinsics/index.spec.ts index a4d3ef522d..77992d47ef 100644 --- a/packages/api-metadata/src/extrinsics/index.spec.ts +++ b/packages/api-metadata/src/extrinsics/index.spec.ts @@ -5,7 +5,7 @@ import '@polkadot/types/injector'; import testingPairs from '@polkadot/keyring/testingPairs'; -import { Extrinsic } from '@polkadot/types'; +import { createType } from '@polkadot/types'; import extrinsics from './static'; @@ -14,7 +14,7 @@ const keyring = testingPairs({ type: 'ed25519' }, false); describe('extrinsics', (): void => { it('encodes an actual transfer (actual data)', (): void => { expect( - new Extrinsic( + createType('Extrinsic', extrinsics.balances.transfer(keyring.bob.publicKey, 6969) ).sign(keyring.alice, { blockHash: '0xec7afaf1cca720ce88c1d1b689d81f0583cc15a97d621cf046dd9abf605ef22f', diff --git a/packages/api-metadata/src/extrinsics/index.ts b/packages/api-metadata/src/extrinsics/index.ts index 4a4691f7b1..f4378955d0 100644 --- a/packages/api-metadata/src/extrinsics/index.ts +++ b/packages/api-metadata/src/extrinsics/index.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { ModulesWithMethods } from '@polkadot/types/primitive/Method'; +import { ModulesWithMethods } from '@polkadot/types/primitive/Generic/Method'; const extrinsics: ModulesWithMethods = {}; diff --git a/packages/api-metadata/src/extrinsics/static.ts b/packages/api-metadata/src/extrinsics/static.ts index 963c57824a..998091c9eb 100644 --- a/packages/api-metadata/src/extrinsics/static.ts +++ b/packages/api-metadata/src/extrinsics/static.ts @@ -4,7 +4,7 @@ import { Metadata } from '@polkadot/types'; import metadataRpc from '@polkadot/types/Metadata/static'; -import { ModulesWithMethods } from '@polkadot/types/primitive/Method'; +import { ModulesWithMethods } from '@polkadot/types/primitive/Generic/Method'; import fromMetadata from './fromMetadata'; diff --git a/packages/api/src/Base.ts b/packages/api/src/Base.ts index 3dc6acb751..58e05108e8 100644 --- a/packages/api/src/Base.ts +++ b/packages/api/src/Base.ts @@ -23,10 +23,10 @@ import { Storage } from '@polkadot/api-metadata/storage/types'; import storageFromMeta from '@polkadot/api-metadata/storage/fromMetadata'; import RpcCore from '@polkadot/rpc-core'; import { WsProvider } from '@polkadot/rpc-provider'; -import { getTypeRegistry, GenericEvent, Metadata, Method, Null, u64 } from '@polkadot/types'; +import { getTypeRegistry, GenericEvent, GenericMethod, Metadata, Null, u64 } from '@polkadot/types'; import Linkage, { LinkageResult } from '@polkadot/types/codec/Linkage'; import { DEFAULT_VERSION as EXTRINSIC_DEFAULT_VERSION } from '@polkadot/types/primitive/Extrinsic/constants'; -import { MethodFunction, ModulesWithMethods } from '@polkadot/types/primitive/Method'; +import { MethodFunction, ModulesWithMethods } from '@polkadot/types/primitive/Generic/Method'; import * as interfacesTypes from '@polkadot/types/interfaces/definitions'; import { StorageEntry } from '@polkadot/types/primitive/StorageKey'; import { assert, compactStripLength, isFunction, isObject, isUndefined, logger, u8aToHex } from '@polkadot/util'; @@ -534,7 +534,7 @@ export default abstract class ApiBase { // only inject if we are not a clone (global init) if (!this._options.source) { GenericEvent.injectMetadata(this.runtimeMetadata); - Method.injectMethods(extrinsics); + GenericMethod.injectMethods(extrinsics); // detect the extrinsic version in-use based on the last block const lastBlock: SignedBlock = await this._rpcCore.chain.getBlock().toPromise(); diff --git a/packages/api/src/SignerPayload.spec.ts b/packages/api/src/SignerPayload.spec.ts index 68262e8a3e..b4a3ea80e9 100644 --- a/packages/api/src/SignerPayload.spec.ts +++ b/packages/api/src/SignerPayload.spec.ts @@ -3,7 +3,7 @@ // of the Apache-2.0 license. See the LICENSE file for details. import extrinsics from '@polkadot/api-metadata/extrinsics/static'; -import { Method, ExtrinsicEra, SignaturePayload } from '@polkadot/types'; +import { createType, ClassOf, GenericMethod } from '@polkadot/types'; import SignerPayload from './SignerPayload'; @@ -21,7 +21,7 @@ describe('SignerPayload', (): void => { }; beforeEach((): void => { - Method.injectMethods(extrinsics); + GenericMethod.injectMethods(extrinsics); }); it('creates a valid JSON output', (): void => { @@ -30,9 +30,9 @@ describe('SignerPayload', (): void => { address: '5DTestUPts3kjeXSTMyerHihn1uwMfLj8vU8sqF7qYrFabHE', blockHash: '0xde8f69eeb5e065e18c6950ff708d7e551f68dc9bf59a07c52367c0280f805ec7', blockNumber: '0x231d30', - era: new ExtrinsicEra({ current: 2301232, period: 200 }), + era: createType('ExtrinsicEra', { current: 2301232, period: 200 }), genesisHash: '0xdcd1346701ca8396496e52aa2785b1748deb6db09551b72159dcb3e08991025b', - method: new Method('0x0500ffd7568e5f0a7eda67a82691ff379ac4bba4f9c9b859fe779b5d46363b61ad2db9e56c'), + method: createType('Method', '0x0500ffd7568e5f0a7eda67a82691ff379ac4bba4f9c9b859fe779b5d46363b61ad2db9e56c'), nonce: 0x1234, tip: 0x5678, version: 2 @@ -64,9 +64,9 @@ describe('SignerPayload', (): void => { ).toEqual(TEST); }); - it('can be used as a feed to SignaturePayload', (): void => { + it('can be used as a feed to ExtrinsicPayload', (): void => { const signer = new SignerPayload(TEST).toPayload(); - const payload = new SignaturePayload(signer, { version: signer.version }); + const payload = new (ClassOf('ExtrinsicPayload'))(signer, { version: signer.version }); expect(payload.era.toHex()).toEqual(TEST.era); expect(payload.method.toHex()).toEqual(TEST.method); diff --git a/packages/api/src/SignerPayload.ts b/packages/api/src/SignerPayload.ts index 639091cb60..3960daf384 100644 --- a/packages/api/src/SignerPayload.ts +++ b/packages/api/src/SignerPayload.ts @@ -2,10 +2,10 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { Address, Balance, BlockNumber, Hash, Index } from '@polkadot/types/interfaces'; +import { Address, Balance, BlockNumber, ExtrinsicEra, Hash, Index, Method } from '@polkadot/types/interfaces'; import { SignerPayload as ISignerPayload } from './types'; -import { ClassOf, Compact, ExtrinsicEra, Struct, u8, Method } from '@polkadot/types'; +import { ClassOf, Compact, Struct, u8 } from '@polkadot/types'; export interface SignerPayloadType { address: Address; @@ -23,9 +23,9 @@ export default class SignerPayload extends Struct.with({ address: ClassOf('Address'), blockHash: ClassOf('Hash'), blockNumber: ClassOf('BlockNumber'), - era: ExtrinsicEra, + era: ClassOf('ExtrinsicEra'), genesisHash: ClassOf('Hash'), - method: Method, + method: ClassOf('Method'), nonce: ClassOf('Compact'), tip: ClassOf('Compact'), version: u8 diff --git a/packages/api/src/SubmittableExtrinsic.ts b/packages/api/src/SubmittableExtrinsic.ts index 6a896d9f2a..78c8e2bbe1 100644 --- a/packages/api/src/SubmittableExtrinsic.ts +++ b/packages/api/src/SubmittableExtrinsic.ts @@ -2,14 +2,14 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { AccountId, Address, ExtrinsicStatus, EventRecord, Hash, Header, Index, SignedBlock } from '@polkadot/types/interfaces'; +import { AccountId, Address, ExtrinsicEra, ExtrinsicStatus, EventRecord, Hash, Header, Index, Method, SignedBlock } from '@polkadot/types/interfaces'; import { AnyNumber, AnyU8a, Callback, Codec, IExtrinsic, IExtrinsicEra, IKeyringPair, SignatureOptions } from '@polkadot/types/types'; import { ApiInterfaceRx, ApiTypes } from './types'; import BN from 'bn.js'; import { Observable, combineLatest, of } from 'rxjs'; import { first, map, mergeMap, switchMap, tap } from 'rxjs/operators'; -import { createType, ClassOf, Method, Vec, ExtrinsicEra } from '@polkadot/types'; +import { createType, ClassOf, Vec } from '@polkadot/types'; import { isBn, isFunction, isNumber, isUndefined } from '@polkadot/util'; import filterEvents from './util/filterEvents'; @@ -196,7 +196,7 @@ export default function createSubmittableExtrinsic ( return expandOptions(options, { blockHash: header.hash, - era: new ExtrinsicEra({ + era: createType('ExtrinsicEra', { current: header.number, period: options.era || DEFAULT_MORTAL_LENGTH }), diff --git a/packages/api/src/types.ts b/packages/api/src/types.ts index 35d11ccb00..31604a6046 100644 --- a/packages/api/src/types.ts +++ b/packages/api/src/types.ts @@ -11,7 +11,7 @@ import { DeriveCustom } from '@polkadot/api-derive'; import { Constants } from '@polkadot/api-metadata/consts/types'; import { ProviderInterface, ProviderInterfaceEmitted } from '@polkadot/rpc-provider/types'; import { u64 } from '@polkadot/types'; -import { MethodFunction } from '@polkadot/types/primitive/Method'; +import { MethodFunction } from '@polkadot/types/primitive/Generic/Method'; import { StorageEntry } from '@polkadot/types/primitive/StorageKey'; import ApiBase from './Base'; diff --git a/packages/api/test/e2e/api/promise-alex-archive.spec.ts b/packages/api/test/e2e/api/promise-alex-archive.spec.ts index d386674d83..e68ee1e5c6 100644 --- a/packages/api/test/e2e/api/promise-alex-archive.spec.ts +++ b/packages/api/test/e2e/api/promise-alex-archive.spec.ts @@ -2,10 +2,9 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { SignedBlock } from '@polkadot/types/interfaces'; +import { Extrinsic, SignedBlock } from '@polkadot/types/interfaces'; import WsProvider from '@polkadot/rpc-provider/ws'; -import { Extrinsic } from '@polkadot/types'; import ApiPromise from '../../../src/promise'; import describeE2E from '../../util/describeE2E'; diff --git a/packages/api/test/e2e/api/promise-tx.spec.ts b/packages/api/test/e2e/api/promise-tx.spec.ts index 007aff21c1..4d28d7331d 100644 --- a/packages/api/test/e2e/api/promise-tx.spec.ts +++ b/packages/api/test/e2e/api/promise-tx.spec.ts @@ -2,14 +2,16 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. +import '@polkadot/types/injector'; + import { EventRecord, Hash, Header, Index, SignedBlock } from '@polkadot/types/interfaces'; import Keyring from '@polkadot/keyring'; import testingPairs from '@polkadot/keyring/testingPairs'; import WsProvider from '@polkadot/rpc-provider/ws'; +import { createType } from '@polkadot/types'; import { u8aToHex } from '@polkadot/util'; import { randomAsHex } from '@polkadot/util-crypto'; -import { ExtrinsicEra } from '@polkadot/types'; import { SubmittableResult } from '../../../src'; import ApiPromise from '../../../src/promise'; @@ -150,7 +152,7 @@ describeE2E({ it('makes a transfer (specified era)', async (done): Promise => { const signedBlock = await api.rpc.chain.getBlock() as SignedBlock; const currentHeight = signedBlock.block.header.number; - const exERA = new ExtrinsicEra({ current: currentHeight, period: 10 }); + const exERA = createType('ExtrinsicEra', { current: currentHeight, period: 10 }); const ex = api.tx.balances.transfer(keyring.eve.address, 12345); await ex.signAndSend(keyring.charlie, { @@ -162,7 +164,7 @@ describeE2E({ it('makes a transfer (specified era, previous block)', async (done): Promise => { const signedBlock = await api.rpc.chain.getBlock() as SignedBlock; const currentHeight = signedBlock.block.header.number.toBn().subn(1); - const exERA = new ExtrinsicEra({ current: currentHeight, period: 10 }); + const exERA = createType('ExtrinsicEra', { current: currentHeight, period: 10 }); const ex = api.tx.balances.transfer(keyring.eve.address, 12345); await ex.signAndSend(keyring.charlie, { @@ -175,7 +177,7 @@ describeE2E({ const nonce = await api.query.system.accountNonce(keyring.alice.address) as Index; const signedBlock = await api.rpc.chain.getBlock() as SignedBlock; const currentHeight = signedBlock.block.header.number; - const exERA = new ExtrinsicEra({ current: currentHeight, period: 4 }); + const exERA = createType('ExtrinsicEra', { current: currentHeight, period: 4 }); const eraDeath = exERA.asMortalEra.death(currentHeight.toNumber()); const blockHash = signedBlock.block.header.hash; const ex = api.tx.balances.transfer(keyring.eve.address, 12345); @@ -203,7 +205,7 @@ describeE2E({ const nonce = await api.query.system.accountNonce(keyring.alice.address) as Index; const signedBlock = await api.rpc.chain.getBlock() as SignedBlock; const currentHeight = signedBlock.block.header.number; - const exERA = new ExtrinsicEra({ current: currentHeight, period: 4 }); + const exERA = createType('ExtrinsicEra', { current: currentHeight, period: 4 }); const eraDeath = exERA.asMortalEra.death(currentHeight.toNumber()); const blockHash = signedBlock.block.header.hash; const ex = api.tx.balances.transfer(keyring.eve.address, 12345); diff --git a/packages/api/test/e2e/rpc-core/basics.spec.ts b/packages/api/test/e2e/rpc-core/basics.spec.ts index b249eb2dc2..f1327d0bd5 100644 --- a/packages/api/test/e2e/rpc-core/basics.spec.ts +++ b/packages/api/test/e2e/rpc-core/basics.spec.ts @@ -2,9 +2,9 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { ChainProperties } from '@polkadot/types/interfaces'; +import { ChainProperties, Extrinsic } from '@polkadot/types/interfaces'; -import { ClassOf, Extrinsic, Vec } from '@polkadot/types'; +import { ClassOf, Vec } from '@polkadot/types'; import WsProvider from '@polkadot/rpc-provider/ws'; import Rpc from '@polkadot/rpc-core'; diff --git a/packages/api/test/util/SingleAccountSigner.ts b/packages/api/test/util/SingleAccountSigner.ts index 172b8bd7e2..10a8fbe367 100644 --- a/packages/api/test/util/SingleAccountSigner.ts +++ b/packages/api/test/util/SingleAccountSigner.ts @@ -5,7 +5,7 @@ import { Signer, SignerPayload, SignerResult } from '@polkadot/api/types'; import { KeyringPair } from '@polkadot/keyring/types'; -import { SignaturePayload } from '@polkadot/types'; +import { ClassOf } from '@polkadot/types'; let id = 0; @@ -41,7 +41,7 @@ export default class SingleAccountSigner implements Signer { return new Promise((resolve): void => { setTimeout((): void => { - const signed = new SignaturePayload(payload, { version: payload.version }).sign(this.keyringPair); + const signed = new (ClassOf('ExtrinsicPayload'))(payload, { version: payload.version }).sign(this.keyringPair); const result: SignerResult = { id: ++id, ...signed }; resolve(result); diff --git a/packages/type-jsonrpc/src/create/param.ts b/packages/type-jsonrpc/src/create/param.ts index d30b0ed814..f42d414170 100644 --- a/packages/type-jsonrpc/src/create/param.ts +++ b/packages/type-jsonrpc/src/create/param.ts @@ -2,14 +2,15 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { CodecTypes } from '@polkadot/types/classes'; +// FIXME Can be one of the injected types (as type below) +// import { CodecTypes } from '@polkadot/types/classes'; import { RpcParam } from '../types'; interface RpcParamOptions { isOptional?: boolean; } -export default function createParam (name: string, type: CodecTypes, { isOptional = false }: RpcParamOptions = { isOptional: false }): RpcParam { +export default function createParam (name: string, type: string, { isOptional = false }: RpcParamOptions = { isOptional: false }): RpcParam { return { isOptional, name, diff --git a/packages/types/README.md b/packages/types/README.md index a3edef6cf3..5842d26230 100644 --- a/packages/types/README.md +++ b/packages/types/README.md @@ -60,7 +60,7 @@ These primitive types are available: | [[Null]] | Implements a type that does not contain anything (apart from `null`) | | [[Origin]] | Where Origin occurs, it should be ignored as an internal-only value | | [[Signature]] | The default signature that is used accross the system | -| [[SignaturePayload]] | A signing payload for an [[Extrinsic]]. For the final encoding, it is variable length based on the contents included | +| [[ExtrinsicPayload]] | A signing payload for an [[Extrinsic]]. For the final encoding, it is variable length based on the contents included | | [[StorageData]] | Data retrieved via Storage queries and data for key-value pairs | | [[StorageKey]] | A representation of a storage key (typically hashed) in the system | | [[Text]] | This is a string wrapper, along with the length. | diff --git a/packages/types/src/Metadata/util/testUtil.ts b/packages/types/src/Metadata/util/testUtil.ts index 059bb2438f..3c23a7d5dd 100644 --- a/packages/types/src/Metadata/util/testUtil.ts +++ b/packages/types/src/Metadata/util/testUtil.ts @@ -8,7 +8,7 @@ import extrinsicsFromMeta from '@polkadot/api-metadata/extrinsics/fromMetadata'; import { createTypeUnsafe } from '../../codec/createType'; import Metadata from '../Metadata'; -import Method from '../../primitive/Method'; +import Method from '../../primitive/Generic/Method'; import { MetadataInterface } from '../types'; import { Codec } from '../../types'; diff --git a/packages/types/src/codec/Tuple.spec.ts b/packages/types/src/codec/Tuple.spec.ts index 21fcfdbe8e..5f47b9596f 100644 --- a/packages/types/src/codec/Tuple.spec.ts +++ b/packages/types/src/codec/Tuple.spec.ts @@ -11,7 +11,7 @@ import { CodecTo } from '../types'; import extrinsics from '@polkadot/api-metadata/extrinsics/static'; import { ClassOf } from '../codec/createType'; -import Method from '../primitive/Method'; +import Method from '../primitive/Generic/Method'; import Text from '../primitive/Text'; import U32 from '../primitive/U32'; import Tuple from './Tuple'; diff --git a/packages/types/src/codec/Vec.spec.ts b/packages/types/src/codec/Vec.spec.ts index 4a4e789536..680a98fd10 100644 --- a/packages/types/src/codec/Vec.spec.ts +++ b/packages/types/src/codec/Vec.spec.ts @@ -8,7 +8,7 @@ import { Codec, CodecTo } from '../types'; import extrinsics from '@polkadot/api-metadata/extrinsics/static'; import AccountId from '../primitive/Generic/AccountId'; -import Method from '../primitive/Method'; +import Method from '../primitive/Generic/Method'; import Text from '../primitive/Text'; import { createTypeUnsafe } from './createType'; import Vec from './Vec'; diff --git a/packages/types/src/index.spec.ts b/packages/types/src/index.spec.ts index 5425870c38..7d69efb460 100644 --- a/packages/types/src/index.spec.ts +++ b/packages/types/src/index.spec.ts @@ -10,7 +10,7 @@ import { Codec, Constructor } from './types'; import * as Classes from './index.types'; const Types = Classes as Record; -const UNCONSTRUCTABLE = ['origin', 'usize', 'vote']; +const UNCONSTRUCTABLE = ['genericorigin', 'usize']; describe('types', (): void => { describe('default creation', (): void => { @@ -29,7 +29,7 @@ describe('types', (): void => { }); describe('default creation (empty bytes)', (): void => { - (Types.Method as any).injectMethods(extrinsics); + (Types.GenericMethod as any).injectMethods(extrinsics); Object.keys(Types).forEach((name): void => { it(`creates an empty ${name} (from empty bytes)`, (): void => { diff --git a/packages/types/src/interfaceRegistry.ts b/packages/types/src/interfaceRegistry.ts index 9ad905afdd..abc9e9d6af 100644 --- a/packages/types/src/interfaceRegistry.ts +++ b/packages/types/src/interfaceRegistry.ts @@ -1,8 +1,8 @@ // Auto-generated via `yarn build:interfaces`, do not edit import { Compact, Option, Vec } from './codec'; -import { Bytes, Data, Extrinsic, ExtrinsicEra, Fixed64, GenericAccountId, GenericAccountIndex, GenericAddress, GenericBlock, GenericConsensusEngineId, GenericDigest, GenericDigestItem, GenericEvent, GenericVote, H160, H256, H512, ImmortalEra, Method, Moment, MortalEra, Null, Origin, SignaturePayload, StorageHasher, StorageKey, Text, Type, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from './primitive'; -import { AccountId, AccountIdOf, AccountIndex, Address, Balance, BalanceOf, Block, BlockNumber, Consensus, ConsensusEngineId, Digest, DigestItem, Ed25519Signature, Hash, Header, Index, Justification, KeyTypeId, KeyValue, LockIdentifier, Perbill, Permill, Phantom, PreRuntime, Seal, SealV0, SessionKeys, Signature, SignedBlock, Sr25519Signature, StorageData, ValidatorId, Weight, WeightMultiplier } from './interfaces/runtime'; +import { Bytes, Data, Fixed64, H160, H256, H512, Moment, Null, StorageHasher, StorageKey, Text, Type, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from './primitive'; +import { AccountId, AccountIdOf, AccountIndex, Address, Balance, BalanceOf, Block, BlockNumber, Consensus, ConsensusEngineId, Digest, DigestItem, Ed25519Signature, Extrinsic, ExtrinsicEra, ExtrinsicPayload, Hash, Header, ImmortalEra, Index, Justification, KeyTypeId, KeyValue, LockIdentifier, Method, MortalEra, Origin, Perbill, Permill, Phantom, PreRuntime, Seal, SealV0, SessionKeys, Signature, SignedBlock, Sr25519Signature, StorageData, ValidatorId, Weight, WeightMultiplier } from './interfaces/runtime'; import { AuthorityId } from './interfaces/consensus'; import { Keys, SessionIndex } from './interfaces/session'; import { AuthorityWeight, NextAuthority, PendingPause, PendingResume, StoredPendingChange, StoredState } from './interfaces/grandpa'; @@ -61,9 +61,6 @@ export interface InterfaceRegistry { i256: i256; 'Option': Option; 'Vec': Vec; - Method: Method; - 'Option': Option; - 'Vec': Vec; Moment: Moment; 'Compact': Compact; 'Option': Option; @@ -71,9 +68,6 @@ export interface InterfaceRegistry { Null: Null; 'Option': Option; 'Vec': Vec; - Origin: Origin; - 'Option': Option; - 'Vec': Vec; StorageHasher: StorageHasher; 'Option': Option; 'Vec': Vec; @@ -114,50 +108,6 @@ export interface InterfaceRegistry { 'Compact': Compact; 'Option': Option; 'Vec': Vec; - Extrinsic: Extrinsic; - 'Option': Option; - 'Vec': Vec; - ExtrinsicEra: ExtrinsicEra; - 'Option': Option; - 'Vec': Vec; - MortalEra: MortalEra; - 'Option': Option; - 'Vec': Vec; - ImmortalEra: ImmortalEra; - 'Option': Option; - 'Vec': Vec; - SignaturePayload: SignaturePayload; - 'Option': Option; - 'Vec': Vec; - GenericAccountId: GenericAccountId; - 'Option': Option; - 'Vec': Vec; - GenericAccountIndex: GenericAccountIndex; - 'Compact': Compact; - 'Option': Option; - 'Vec': Vec; - GenericAddress: GenericAddress; - 'Option': Option; - 'Vec': Vec; - GenericBlock: GenericBlock; - 'Option': Option; - 'Vec': Vec; - GenericConsensusEngineId: GenericConsensusEngineId; - 'Compact': Compact; - 'Option': Option; - 'Vec': Vec; - GenericEvent: GenericEvent; - 'Option': Option; - 'Vec': Vec; - GenericDigest: GenericDigest; - 'Option': Option; - 'Vec': Vec; - GenericDigestItem: GenericDigestItem; - 'Option': Option; - 'Vec': Vec; - GenericVote: GenericVote; - 'Option': Option; - 'Vec': Vec; AccountId: AccountId; 'Option': Option; 'Vec': Vec; @@ -269,6 +219,27 @@ export interface InterfaceRegistry { WeightMultiplier: WeightMultiplier; 'Option': Option; 'Vec': Vec; + Method: Method; + 'Option': Option; + 'Vec': Vec; + Origin: Origin; + 'Option': Option; + 'Vec': Vec; + ImmortalEra: ImmortalEra; + 'Option': Option; + 'Vec': Vec; + MortalEra: MortalEra; + 'Option': Option; + 'Vec': Vec; + ExtrinsicEra: ExtrinsicEra; + 'Option': Option; + 'Vec': Vec; + ExtrinsicPayload: ExtrinsicPayload; + 'Option': Option; + 'Vec': Vec; + Extrinsic: Extrinsic; + 'Option': Option; + 'Vec': Vec; AuthorityId: AuthorityId; 'Option': Option; 'Vec': Vec; diff --git a/packages/types/src/interfaces/democracy/types.ts b/packages/types/src/interfaces/democracy/types.ts index 00b6633569..7653cb2422 100644 --- a/packages/types/src/interfaces/democracy/types.ts +++ b/packages/types/src/interfaces/democracy/types.ts @@ -1,8 +1,8 @@ // Auto-generated via `yarn build:interfaces`, do not edit import { Enum, Struct } from '../../codec'; -import { Method, u32 } from '../../primitive'; -import { BlockNumber } from '../runtime'; +import { u32 } from '../../primitive'; +import { BlockNumber, Method } from '../runtime'; import { VoteThreshold } from '../elections'; /** Enum */ diff --git a/packages/types/src/interfaces/runtime/SignedBlock.spec.ts b/packages/types/src/interfaces/runtime/SignedBlock.spec.ts index 5c47889077..68475327ca 100644 --- a/packages/types/src/interfaces/runtime/SignedBlock.spec.ts +++ b/packages/types/src/interfaces/runtime/SignedBlock.spec.ts @@ -7,7 +7,7 @@ import '../../injector'; import extrinsics from '@polkadot/api-metadata/extrinsics/static'; import createType from '../../codec/createType'; -import Method from '../../primitive/Method'; +import Method from '../../primitive/Generic/Method'; import events from '../../json/SignedBlock.002.json'; import immortalTxs from '../../json/SignedBlock.004.immortal.json'; import mortalTxs from '../../json/SignedBlock.004.mortal.json'; diff --git a/packages/types/src/interfaces/runtime/definitions.ts b/packages/types/src/interfaces/runtime/definitions.ts index acadec17bc..7d334ffd56 100644 --- a/packages/types/src/interfaces/runtime/definitions.ts +++ b/packages/types/src/interfaces/runtime/definitions.ts @@ -55,6 +55,15 @@ export default { KeyValue: '(StorageKey, StorageData)', ValidatorId: 'AccountId', Weight: 'u32', - WeightMultiplier: 'Fixed64' + WeightMultiplier: 'Fixed64', + + // extrinsics + Method: 'GenericMethod', + Origin: 'GenericOrigin', + ImmortalEra: 'GenericImmortalEra', + MortalEra: 'GenericMortalEra', + ExtrinsicEra: 'GenericExtrinsicEra', + ExtrinsicPayload: 'GenericExtrinsicPayload', + Extrinsic: 'GenericExtrinsic' } }; diff --git a/packages/types/src/interfaces/runtime/types.ts b/packages/types/src/interfaces/runtime/types.ts index c640aaee86..f35d8010dc 100644 --- a/packages/types/src/interfaces/runtime/types.ts +++ b/packages/types/src/interfaces/runtime/types.ts @@ -2,7 +2,7 @@ import { Codec } from '../../types'; import { Compact, Struct, Vec } from '../../codec'; -import { Bytes, Fixed64, GenericAccountId, GenericAccountIndex, GenericAddress, GenericBlock, GenericConsensusEngineId, GenericDigest, GenericDigestItem, H256, H512, Null, StorageKey, u128, u32, u64, u8 } from '../../primitive'; +import { Bytes, Fixed64, GenericAccountId, GenericAccountIndex, GenericAddress, GenericBlock, GenericConsensusEngineId, GenericDigest, GenericDigestItem, GenericExtrinsic, GenericExtrinsicEra, GenericExtrinsicPayload, GenericImmortalEra, GenericMethod, GenericMortalEra, GenericOrigin, H256, H512, Null, StorageKey, u128, u32, u64, u8 } from '../../primitive'; /** GenericAccountId */ export type AccountId = GenericAccountId; @@ -43,6 +43,15 @@ export type DigestItem = GenericDigestItem; /** Signature */ export type Ed25519Signature = Signature; +/** GenericExtrinsic */ +export type Extrinsic = GenericExtrinsic; + +/** GenericExtrinsicEra */ +export type ExtrinsicEra = GenericExtrinsicEra; + +/** GenericExtrinsicPayload */ +export type ExtrinsicPayload = GenericExtrinsicPayload; + /** H256 */ export type Hash = H256; @@ -60,6 +69,9 @@ export interface Header extends Struct { readonly digest: Digest; } +/** GenericImmortalEra */ +export type ImmortalEra = GenericImmortalEra; + /** u64 */ export type Index = u64; @@ -75,6 +87,15 @@ export type KeyValue = [StorageKey, StorageData] & Codec; /** Vec */ export type LockIdentifier = Vec; +/** GenericMethod */ +export type Method = GenericMethod; + +/** GenericMortalEra */ +export type MortalEra = GenericMortalEra; + +/** GenericOrigin */ +export type Origin = GenericOrigin; + /** u32 */ export type Perbill = u32; diff --git a/packages/types/src/primitive/Extrinsic/Extrinsic.spec.ts b/packages/types/src/primitive/Extrinsic/Extrinsic.spec.ts index 144754a7b9..512fb6917f 100644 --- a/packages/types/src/primitive/Extrinsic/Extrinsic.spec.ts +++ b/packages/types/src/primitive/Extrinsic/Extrinsic.spec.ts @@ -6,7 +6,7 @@ import extrinsics from '@polkadot/api-metadata/extrinsics/static'; import { hexToU8a } from '@polkadot/util'; -import Method from '../Method'; +import Method from '../Generic/Method'; import Extrinsic from './Extrinsic'; describe('Extrinsic', (): void => { diff --git a/packages/types/src/primitive/Extrinsic/Extrinsic.ts b/packages/types/src/primitive/Extrinsic/Extrinsic.ts index aa786ca21e..315d7450b5 100644 --- a/packages/types/src/primitive/Extrinsic/Extrinsic.ts +++ b/packages/types/src/primitive/Extrinsic/Extrinsic.ts @@ -11,7 +11,7 @@ import Base from '../../codec/Base'; import Compact from '../../codec/Compact'; import { FunctionMetadata } from '../../Metadata/v7/Calls'; import Address from '../Generic/Address'; -import Method from '../Method'; +import Method from '../Generic/Method'; import ExtrinsicV1, { ExtrinsicValueV1 } from './v1/Extrinsic'; import ExtrinsicV2, { ExtrinsicValueV2 } from './v2/Extrinsic'; import ExtrinsicEra from './ExtrinsicEra'; diff --git a/packages/types/src/primitive/Extrinsic/SignaturePayload.ts b/packages/types/src/primitive/Extrinsic/ExtrinsicPayload.ts similarity index 70% rename from packages/types/src/primitive/Extrinsic/SignaturePayload.ts rename to packages/types/src/primitive/Extrinsic/ExtrinsicPayload.ts index 42df19fd21..35fbbd5ad5 100644 --- a/packages/types/src/primitive/Extrinsic/SignaturePayload.ts +++ b/packages/types/src/primitive/Extrinsic/ExtrinsicPayload.ts @@ -11,36 +11,36 @@ import createType from '../../codec/createType'; import Base from '../../codec/Base'; import Compact from '../../codec/Compact'; import U8a from '../../codec/U8a'; -import SignaturePayloadV1, { SignaturePayloadValueV1 } from './v1/SignaturePayload'; -import SignaturePayloadV2, { SignaturePayloadValueV2 } from './v2/SignaturePayload'; +import ExtrinsicPayloadV1, { ExtrinsicPayloadValueV1 } from './v1/ExtrinsicPayload'; +import ExtrinsicPayloadV2, { ExtrinsicPayloadValueV2 } from './v2/ExtrinsicPayload'; import ExtrinsicEra from './ExtrinsicEra'; import { DEFAULT_VERSION } from './constants'; -interface SignaturePayloadOptions { +interface ExtrinsicPayloadOptions { version?: number; } /** - * @name SignaturePayload + * @name ExtrinsicPayload * @description * A signing payload for an [[Extrinsic]]. For the final encoding, it is variable length based * on the contents included */ -export default class SignaturePayload extends Base { - public constructor (value: SignaturePayloadValueV1 | SignaturePayloadValueV2 | Uint8Array | string | undefined, { version }: SignaturePayloadOptions = {}) { +export default class ExtrinsicPayload extends Base { + public constructor (value: Partial | Partial | Uint8Array | string | undefined, { version }: ExtrinsicPayloadOptions = {}) { super( - SignaturePayload.decodeSignaturePayload(value, version) + ExtrinsicPayload.decodeExtrinsicPayload(value, version) ); } - public static decodeSignaturePayload (value: SignaturePayload | SignaturePayloadValueV1 | SignaturePayloadValueV2 | Uint8Array | string | undefined, version: number = DEFAULT_VERSION): SignaturePayloadV1 | SignaturePayloadV2 { - if (value instanceof SignaturePayload) { + public static decodeExtrinsicPayload (value: ExtrinsicPayload | Partial | Partial | Uint8Array | string | undefined, version: number = DEFAULT_VERSION): ExtrinsicPayloadV1 | ExtrinsicPayloadV2 { + if (value instanceof ExtrinsicPayload) { return value.raw; } switch (version) { - case 1: return new SignaturePayloadV1(value as Uint8Array); - case 2: return new SignaturePayloadV2(value as Uint8Array); + case 1: return new ExtrinsicPayloadV1(value as Uint8Array); + case 2: return new ExtrinsicPayloadV2(value as Uint8Array); default: throw new Error(`Unsupported extrinsic version ${version}`); } } @@ -77,7 +77,7 @@ export default class SignaturePayload extends Base { - return (this.raw as SignaturePayloadV2).tip || createType('Compact', 0); + return (this.raw as ExtrinsicPayloadV2).tip || createType('Compact', 0); } /** diff --git a/packages/types/src/primitive/Extrinsic/index.ts b/packages/types/src/primitive/Extrinsic/index.ts index dae8d4f43d..7ff156a5c6 100644 --- a/packages/types/src/primitive/Extrinsic/index.ts +++ b/packages/types/src/primitive/Extrinsic/index.ts @@ -2,6 +2,6 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -export { default as Extrinsic } from './Extrinsic'; -export { default as ExtrinsicEra, MortalEra, ImmortalEra } from './ExtrinsicEra'; -export { default as SignaturePayload } from './SignaturePayload'; +export { default as GenericExtrinsic } from './Extrinsic'; +export { default as GenericExtrinsicEra, MortalEra as GenericMortalEra, ImmortalEra as GenericImmortalEra } from './ExtrinsicEra'; +export { default as GenericExtrinsicPayload } from './ExtrinsicPayload'; diff --git a/packages/types/src/primitive/Extrinsic/v1/Extrinsic.ts b/packages/types/src/primitive/Extrinsic/v1/Extrinsic.ts index 7732284bd8..a924c15b20 100644 --- a/packages/types/src/primitive/Extrinsic/v1/Extrinsic.ts +++ b/packages/types/src/primitive/Extrinsic/v1/Extrinsic.ts @@ -7,7 +7,7 @@ import { ExtrinsicPayloadValue, IExtrinsicImpl, IKeyringPair, SignatureOptions } import { isU8a } from '@polkadot/util'; import Struct from '../../../codec/Struct'; -import Method from '../../Method'; +import Method from '../../Generic/Method'; import Address from '../../Generic/Address'; import ExtrinsicSignature from './ExtrinsicSignature'; diff --git a/packages/types/src/primitive/Extrinsic/v1/SignaturePayload.ts b/packages/types/src/primitive/Extrinsic/v1/ExtrinsicPayload.ts similarity index 92% rename from packages/types/src/primitive/Extrinsic/v1/SignaturePayload.ts rename to packages/types/src/primitive/Extrinsic/v1/ExtrinsicPayload.ts index 0f52d4b93e..e7431bb4f2 100644 --- a/packages/types/src/primitive/Extrinsic/v1/SignaturePayload.ts +++ b/packages/types/src/primitive/Extrinsic/v1/ExtrinsicPayload.ts @@ -12,7 +12,7 @@ import U8a from '../../../codec/U8a'; import ExtrinsicEra from '../ExtrinsicEra'; import { sign } from '../util'; -export interface SignaturePayloadValueV1 { +export interface ExtrinsicPayloadValueV1 { blockHash: AnyU8a; era: AnyU8a | IExtrinsicEra; method: AnyU8a | IMethod; @@ -20,7 +20,7 @@ export interface SignaturePayloadValueV1 { } /** - * @name SignaturePayloadV1 + * @name ExtrinsicPayloadV1 * @description * A signing payload for an [[Extrinsic]]. For the final encoding, it is variable length based * on the contents included @@ -30,8 +30,8 @@ export interface SignaturePayloadValueV1 { * 1/2 bytes: The Transaction Era as provided in the transaction itself. * 32 bytes: The hash of the authoring block implied by the Transaction Era and the current block. */ -export default class SignaturePayloadV1 extends Struct { - public constructor (value?: ExtrinsicPayloadValue | SignaturePayloadValueV1 | Uint8Array | string) { +export default class ExtrinsicPayloadV1 extends Struct { + public constructor (value?: ExtrinsicPayloadValue | ExtrinsicPayloadValueV1 | Uint8Array | string) { super({ nonce: ClassOf('Compact'), method: U8a, diff --git a/packages/types/src/primitive/Extrinsic/v1/ExtrinsicSignature.ts b/packages/types/src/primitive/Extrinsic/v1/ExtrinsicSignature.ts index 367e485d95..618108bb9d 100644 --- a/packages/types/src/primitive/Extrinsic/v1/ExtrinsicSignature.ts +++ b/packages/types/src/primitive/Extrinsic/v1/ExtrinsicSignature.ts @@ -9,10 +9,10 @@ import createType, { ClassOf } from '../../../codec/createType'; import Compact from '../../../codec/Compact'; import Struct from '../../../codec/Struct'; import Address from '../../Generic/Address'; -import Method from '../../Method'; +import Method from '../../Generic/Method'; import ExtrinsicEra from '../ExtrinsicEra'; import { EMPTY_U8A, IMMORTAL_ERA } from '../constants'; -import SignaturePayload from './SignaturePayload'; +import ExtrinsicPayload from './ExtrinsicPayload'; interface ExtrinsicSignatureV1Options { isSigned?: boolean; @@ -92,7 +92,7 @@ export default class ExtrinsicSignatureV1 extends Struct implements IExtrinsicSi return createType('Compact', 0); } - private injectSignature (signer: Address, signature: Signature, { era, nonce }: SignaturePayload): IExtrinsicSignature { + private injectSignature (signer: Address, signature: Signature, { era, nonce }: ExtrinsicPayload): IExtrinsicSignature { this.set('era', era); this.set('nonce', nonce); this.set('signer', signer); @@ -108,7 +108,7 @@ export default class ExtrinsicSignatureV1 extends Struct implements IExtrinsicSi return this.injectSignature( createType('Address', signer), createType('Signature', signature), - new SignaturePayload(payload) + new ExtrinsicPayload(payload) ); } @@ -117,7 +117,7 @@ export default class ExtrinsicSignatureV1 extends Struct implements IExtrinsicSi */ public sign (method: Method, account: IKeyringPair, { blockHash, era, nonce }: SignatureOptions): IExtrinsicSignature { const signer = createType('Address', account.publicKey); - const payload = new SignaturePayload({ + const payload = new ExtrinsicPayload({ nonce, method: method.toU8a(), era: era || IMMORTAL_ERA, diff --git a/packages/types/src/primitive/Extrinsic/v2/Extrinsic.spec.ts b/packages/types/src/primitive/Extrinsic/v2/Extrinsic.spec.ts index 0514c9da33..5f29a3a2a2 100644 --- a/packages/types/src/primitive/Extrinsic/v2/Extrinsic.spec.ts +++ b/packages/types/src/primitive/Extrinsic/v2/Extrinsic.spec.ts @@ -5,7 +5,7 @@ import extrinsics from '@polkadot/api-metadata/extrinsics/static'; import testingPairs from '@polkadot/keyring/testingPairs'; -import Method from '../../Method'; +import Method from '../../Generic/Method'; import Extrinsic from './Extrinsic'; const keyring = testingPairs({ type: 'ed25519' }, false); diff --git a/packages/types/src/primitive/Extrinsic/v2/Extrinsic.ts b/packages/types/src/primitive/Extrinsic/v2/Extrinsic.ts index 180fa68040..6b83bf1ad7 100644 --- a/packages/types/src/primitive/Extrinsic/v2/Extrinsic.ts +++ b/packages/types/src/primitive/Extrinsic/v2/Extrinsic.ts @@ -7,7 +7,7 @@ import { ExtrinsicPayloadValue, IExtrinsicImpl, IKeyringPair, SignatureOptions } import { isU8a } from '@polkadot/util'; import Struct from '../../../codec/Struct'; -import Method from '../../Method'; +import Method from '../../Generic/Method'; import Address from '../../Generic/Address'; import ExtrinsicSignature from './ExtrinsicSignature'; diff --git a/packages/types/src/primitive/Extrinsic/v2/SignaturePayload.ts b/packages/types/src/primitive/Extrinsic/v2/ExtrinsicPayload.ts similarity index 91% rename from packages/types/src/primitive/Extrinsic/v2/SignaturePayload.ts rename to packages/types/src/primitive/Extrinsic/v2/ExtrinsicPayload.ts index a9f87146a1..44b724ec79 100644 --- a/packages/types/src/primitive/Extrinsic/v2/SignaturePayload.ts +++ b/packages/types/src/primitive/Extrinsic/v2/ExtrinsicPayload.ts @@ -12,7 +12,7 @@ import U8a from '../../../codec/U8a'; import ExtrinsicEra from '../ExtrinsicEra'; import { sign } from '../util'; -export interface SignaturePayloadValueV2 { +export interface ExtrinsicPayloadValueV2 { blockHash: AnyU8a; era: AnyU8a | IExtrinsicEra; method: AnyU8a | IMethod; @@ -21,13 +21,13 @@ export interface SignaturePayloadValueV2 { } /** - * @name SignaturePayloadV2 + * @name ExtrinsicPayloadV2 * @description * A signing payload for an [[Extrinsic]]. For the final encoding, it is variable length based * on the contents included */ -export default class SignaturePayloadV2 extends Struct { - public constructor (value?: ExtrinsicPayloadValue | SignaturePayloadValueV2 | Uint8Array | string) { +export default class ExtrinsicPayloadV2 extends Struct { + public constructor (value?: ExtrinsicPayloadValue | ExtrinsicPayloadValueV2 | Uint8Array | string) { super({ method: U8a, era: ExtrinsicEra, diff --git a/packages/types/src/primitive/Extrinsic/v2/ExtrinsicSignature.ts b/packages/types/src/primitive/Extrinsic/v2/ExtrinsicSignature.ts index 7343ff8350..25f3e8fa49 100644 --- a/packages/types/src/primitive/Extrinsic/v2/ExtrinsicSignature.ts +++ b/packages/types/src/primitive/Extrinsic/v2/ExtrinsicSignature.ts @@ -9,9 +9,9 @@ import createType, { ClassOf } from '../../../codec/createType'; import Compact from '../../../codec/Compact'; import Struct from '../../../codec/Struct'; import Address from '../../Generic/Address'; -import Method from '../../Method'; +import Method from '../../Generic/Method'; import ExtrinsicEra from '../ExtrinsicEra'; -import SignaturePayload from './SignaturePayload'; +import ExtrinsicPayload from './ExtrinsicPayload'; import { EMPTY_U8A, IMMORTAL_ERA } from '../constants'; import ExtrinsicExtra from './ExtrinsicExtra'; @@ -94,7 +94,7 @@ export default class ExtrinsicSignatureV2 extends Struct implements IExtrinsicSi return this.extra.tip; } - private injectSignature (signer: Address, signature: Signature, { era, nonce, tip }: SignaturePayload): IExtrinsicSignature { + private injectSignature (signer: Address, signature: Signature, { era, nonce, tip }: ExtrinsicPayload): IExtrinsicSignature { this.extra.set('era', era); this.extra.set('nonce', nonce); this.extra.set('tip', tip); @@ -112,7 +112,7 @@ export default class ExtrinsicSignatureV2 extends Struct implements IExtrinsicSi return this.injectSignature( createType('Address', signer), createType('Signature', signature), - new SignaturePayload(payload) + new ExtrinsicPayload(payload) ); } @@ -121,7 +121,7 @@ export default class ExtrinsicSignatureV2 extends Struct implements IExtrinsicSi */ public sign (method: Method, account: IKeyringPair, { blockHash, era, nonce, tip }: SignatureOptions): IExtrinsicSignature { const signer = createType('Address', account.publicKey); - const payload = new SignaturePayload({ + const payload = new ExtrinsicPayload({ blockHash, era: era || IMMORTAL_ERA, method: method.toU8a(), diff --git a/packages/types/src/primitive/Generic/Block.spec.ts b/packages/types/src/primitive/Generic/Block.spec.ts index c272375fb3..c5818ddd5c 100644 --- a/packages/types/src/primitive/Generic/Block.spec.ts +++ b/packages/types/src/primitive/Generic/Block.spec.ts @@ -7,7 +7,7 @@ import '../../injector'; import extrinsics from '@polkadot/api-metadata/extrinsics/static'; import block00300 from '../../json/SignedBlock.003.00.json'; -import Method from '../Method'; +import Method from './Method'; import Block from './Block'; describe('Block', (): void => { diff --git a/packages/types/src/primitive/Method.spec.ts b/packages/types/src/primitive/Generic/Method.spec.ts similarity index 100% rename from packages/types/src/primitive/Method.spec.ts rename to packages/types/src/primitive/Generic/Method.spec.ts diff --git a/packages/types/src/primitive/Method.ts b/packages/types/src/primitive/Generic/Method.ts similarity index 96% rename from packages/types/src/primitive/Method.ts rename to packages/types/src/primitive/Generic/Method.ts index 82aba376a8..39925a8eb9 100644 --- a/packages/types/src/primitive/Method.ts +++ b/packages/types/src/primitive/Generic/Method.ts @@ -2,14 +2,14 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import { AnyU8a, ArgsDef, Codec, IMethod } from '../types'; +import { AnyU8a, ArgsDef, Codec, IMethod } from '../../types'; import { assert, isHex, isObject, isU8a, hexToU8a } from '@polkadot/util'; -import { getTypeDef, getTypeClass } from '../codec/createType'; -import Struct from '../codec/Struct'; -import U8aFixed from '../codec/U8aFixed'; -import { FunctionMetadata as FunctionMetadataV7, FunctionArgumentMetadata } from '../Metadata/v7/Calls'; +import { getTypeDef, getTypeClass } from '../../codec/createType'; +import Struct from '../../codec/Struct'; +import U8aFixed from '../../codec/U8aFixed'; +import { FunctionMetadata as FunctionMetadataV7, FunctionArgumentMetadata } from '../../Metadata/v7/Calls'; interface DecodeMethodInput { args: any; diff --git a/packages/types/src/primitive/Origin.spec.ts b/packages/types/src/primitive/Generic/Origin.spec.ts similarity index 100% rename from packages/types/src/primitive/Origin.spec.ts rename to packages/types/src/primitive/Generic/Origin.spec.ts diff --git a/packages/types/src/primitive/Origin.ts b/packages/types/src/primitive/Generic/Origin.ts similarity index 96% rename from packages/types/src/primitive/Origin.ts rename to packages/types/src/primitive/Generic/Origin.ts index dc28b1376e..5ed4c84dbb 100644 --- a/packages/types/src/primitive/Origin.ts +++ b/packages/types/src/primitive/Generic/Origin.ts @@ -2,7 +2,7 @@ // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. -import Null from './Null'; +import Null from '../Null'; /** * @name Origin diff --git a/packages/types/src/primitive/Generic/index.ts b/packages/types/src/primitive/Generic/index.ts index 9bb547bf7d..27e3592553 100644 --- a/packages/types/src/primitive/Generic/index.ts +++ b/packages/types/src/primitive/Generic/index.ts @@ -9,4 +9,6 @@ export { default as GenericBlock } from './Block'; export { default as GenericConsensusEngineId } from './ConsensusEngineId'; export { default as GenericEvent } from './Event'; export { default as GenericDigest, DigestItem as GenericDigestItem } from './Digest'; +export { default as GenericMethod } from './Method'; +export { default as GenericOrigin } from './Origin'; export { default as GenericVote } from './Vote'; diff --git a/packages/types/src/primitive/index.ts b/packages/types/src/primitive/index.ts index 88fccf77b5..362b19d167 100644 --- a/packages/types/src/primitive/index.ts +++ b/packages/types/src/primitive/index.ts @@ -25,10 +25,8 @@ export { default as i64 } from './I64'; export { default as Fixed64 } from './I64Fixed'; export { default as i128 } from './I128'; export { default as i256 } from './I256'; -export { default as Method } from './Method'; export { default as Moment } from './Moment'; export { default as Null } from './Null'; -export { default as Origin } from './Origin'; export { default as StorageHasher } from './StorageHasher'; export { default as StorageKey } from './StorageKey'; export { default as Text } from './Text'; diff --git a/packages/types/src/scripts/MetadataMd.ts b/packages/types/src/scripts/MetadataMd.ts index 7bcc00944d..8723cfb434 100644 --- a/packages/types/src/scripts/MetadataMd.ts +++ b/packages/types/src/scripts/MetadataMd.ts @@ -8,7 +8,7 @@ import fs from 'fs'; import { stringCamelCase, stringLowerFirst } from '@polkadot/util'; import interfaces from '../../../type-jsonrpc/src'; -import Method from '../primitive/Method'; +import Method from '../primitive/Generic/Method'; import Metadata from '../Metadata'; import rpcdata from '../Metadata/static'; import MetadataV7, { ModuleMetadataV7 } from '../Metadata/v7'; diff --git a/packages/types/src/scripts/interfacesTs.ts b/packages/types/src/scripts/interfacesTs.ts index 4dca38828c..1737ba3fca 100644 --- a/packages/types/src/scripts/interfacesTs.ts +++ b/packages/types/src/scripts/interfacesTs.ts @@ -348,14 +348,19 @@ function generateInterfaceRegistry (): void { const imports = { codecTypes, localTypes, ownTypes, primitiveTypes, substrateTypes }; - const primitives = Object.keys(primitiveClasses).reduce((accumulator, primitiveName): string => { - setImports(imports, [primitiveName]); + const primitives = Object + .keys(primitiveClasses) + .filter((name): boolean => + !!name.indexOf('Generic') && !!name.indexOf('Metadata') + ) + .reduce((accumulator, primitiveName): string => { + setImports(imports, [primitiveName]); - return [ - accumulator, - getDerivedTypes(primitiveName, primitiveName, imports) - ].join('\n'); - }, ''); + return [ + accumulator, + getDerivedTypes(primitiveName, primitiveName, imports) + ].join('\n'); + }, ''); // eslint-disable-next-line @typescript-eslint/no-unused-vars const srml = Object.entries(definitions).reduce((accumulator, [_defName, { types }]): string => { diff --git a/packages/types/src/types.ts b/packages/types/src/types.ts index 1f030ee5ca..5d8d9aea49 100644 --- a/packages/types/src/types.ts +++ b/packages/types/src/types.ts @@ -9,7 +9,7 @@ import BN from 'bn.js'; import Compact from './codec/Compact'; import U8a from './codec/U8a'; import { FunctionMetadata } from './Metadata/v7/Calls'; -import Method from './primitive/Method'; +import Method from './primitive/Generic/Method'; import Address from './primitive/Generic/Address'; // eslint-disable-next-line @typescript-eslint/interface-name-prefix