From 5be1a66762d6e32ce1d80316e2a2e748e36a7baa Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Fri, 19 May 2023 14:35:08 +0200 Subject: [PATCH 01/11] add v5 --- packages/api-contract/src/Abi/toV5.ts | 9 +++++++++ packages/types-augment/src/registry/interfaces.ts | 3 ++- .../types/src/interfaces/contractsAbi/definitions.ts | 6 ++++-- packages/types/src/interfaces/contractsAbi/types.ts | 9 +++++++-- 4 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 packages/api-contract/src/Abi/toV5.ts diff --git a/packages/api-contract/src/Abi/toV5.ts b/packages/api-contract/src/Abi/toV5.ts new file mode 100644 index 000000000000..d95215da48e1 --- /dev/null +++ b/packages/api-contract/src/Abi/toV5.ts @@ -0,0 +1,9 @@ +// Copyright 2017-2023 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; + +export function v4ToV5 (_registry: Registry, v4: ContractMetadataV4): ContractMetadataV5 { + return v4; +} diff --git a/packages/types-augment/src/registry/interfaces.ts b/packages/types-augment/src/registry/interfaces.ts index 762a89c48b51..d1e59e00bdab 100644 --- a/packages/types-augment/src/registry/interfaces.ts +++ b/packages/types-augment/src/registry/interfaces.ts @@ -24,7 +24,7 @@ import type { StatementKind } from '@polkadot/types/interfaces/claims'; import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective'; import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus'; import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractExecResultU64, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractInstantiateResultU64, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; -import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; +import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractMetadataV5, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan'; import type { CollationInfo, CollationInfoV1, ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus'; import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy'; @@ -304,6 +304,7 @@ declare module '@polkadot/types/types/registry' { ContractMetadataV2: ContractMetadataV2; ContractMetadataV3: ContractMetadataV3; ContractMetadataV4: ContractMetadataV4; + ContractMetadataV5: ContractMetadataV5; ContractProject: ContractProject; ContractProjectContract: ContractProjectContract; ContractProjectInfo: ContractProjectInfo; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index db62ccdbbfdd..2c4b920eef30 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -181,7 +181,7 @@ const latest = { ContractEventParamSpecLatest: 'ContractEventParamSpecV2', ContractMessageParamSpecLatest: 'ContractMessageParamSpecV2', ContractMessageSpecLatest: 'ContractMessageSpecV2', - ContractMetadataLatest: 'ContractMetadataV4' + ContractMetadataLatest: 'ContractMetadataV5' }; export default { @@ -212,13 +212,15 @@ export default { spec: 'ContractContractSpecV3' }, ContractMetadataV4: 'ContractMetadataV3', + ContractMetadataV5: 'ContractMetadataV4', ContractMetadata: { _enum: { V0: 'ContractMetadataV0', V1: 'ContractMetadataV1', V2: 'ContractMetadataV2', V3: 'ContractMetadataV3', - V4: 'ContractMetadataV4' + V4: 'ContractMetadataV4', + V5: 'ContractMetadataV5' } }, ContractProjectV0: { diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index f12a2f0c82d3..092c1ccd6dbc 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -245,11 +245,13 @@ export interface ContractMetadata extends Enum { readonly asV3: ContractMetadataV3; readonly isV4: boolean; readonly asV4: ContractMetadataV4; - readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4'; + readonly isV5: boolean; + readonly asV5: ContractMetadataV5; + readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; } /** @name ContractMetadataLatest */ -export interface ContractMetadataLatest extends ContractMetadataV4 {} +export interface ContractMetadataLatest extends ContractMetadataV5 {} /** @name ContractMetadataV0 */ export interface ContractMetadataV0 extends Struct { @@ -279,6 +281,9 @@ export interface ContractMetadataV3 extends Struct { /** @name ContractMetadataV4 */ export interface ContractMetadataV4 extends ContractMetadataV3 {} +/** @name ContractMetadataV5 */ +export interface ContractMetadataV5 extends ContractMetadataV4 {} + /** @name ContractProject */ export interface ContractProject extends ITuple<[ContractProjectInfo, ContractMetadata]> {} From 527cae8d5bcf5a950fe7ac28035a24517371d53e Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Fri, 19 May 2023 14:36:01 +0200 Subject: [PATCH 02/11] add environment --- .../types-augment/src/registry/interfaces.ts | 4 +++- .../interfaces/contractsAbi/definitions.ts | 15 +++++++++++++++ .../src/interfaces/contractsAbi/types.ts | 19 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/packages/types-augment/src/registry/interfaces.ts b/packages/types-augment/src/registry/interfaces.ts index d1e59e00bdab..65c56a0994fc 100644 --- a/packages/types-augment/src/registry/interfaces.ts +++ b/packages/types-augment/src/registry/interfaces.ts @@ -24,7 +24,7 @@ import type { StatementKind } from '@polkadot/types/interfaces/claims'; import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective'; import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus'; import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractExecResultU64, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractInstantiateResultU64, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; -import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractMetadataV5, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; +import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractContractSpecV5, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEnvironmentSpecV0, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractMetadataV5, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan'; import type { CollationInfo, CollationInfoV1, ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus'; import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy'; @@ -258,9 +258,11 @@ declare module '@polkadot/types/types/registry' { ContractContractSpecV2: ContractContractSpecV2; ContractContractSpecV3: ContractContractSpecV3; ContractContractSpecV4: ContractContractSpecV4; + ContractContractSpecV5: ContractContractSpecV5; ContractCryptoHasher: ContractCryptoHasher; ContractDiscriminant: ContractDiscriminant; ContractDisplayName: ContractDisplayName; + ContractEnvironmentSpecV0: ContractEnvironmentSpecV0; ContractEventParamSpecLatest: ContractEventParamSpecLatest; ContractEventParamSpecV0: ContractEventParamSpecV0; ContractEventParamSpecV2: ContractEventParamSpecV2; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index 2c4b920eef30..a88643eec82a 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -105,6 +105,21 @@ const spec = { docs: 'Vec' }, ContractContractSpecV4: 'ContractContractSpecV3', + ContractContractSpecV5: { + constructors: 'Vec', + messages: 'Vec', + events: 'Vec', + docs: 'Vec', + environment: 'ContractEnvironmentSpecV0' + }, + ContractEnvironmentSpecV0: { + accountId: 'ContractTypeSpec', + balance: 'ContractTypeSpec', + blockNumber: 'ContractTypeSpec', + hashType: 'ContractTypeSpec', + maxEventTopics: 'ContractTypeSpec', + timestamp: 'ContractTypeSpec' + }, ContractDisplayName: 'SiPath', ContractEventParamSpecV0: { name: 'Text', diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index 092c1ccd6dbc..c1e7bb910942 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -77,6 +77,15 @@ export interface ContractContractSpecV3 extends Struct { /** @name ContractContractSpecV4 */ export interface ContractContractSpecV4 extends ContractContractSpecV3 {} +/** @name ContractContractSpecV5 */ +export interface ContractContractSpecV5 extends Struct { + readonly constructors: Vec; + readonly messages: Vec; + readonly events: Vec; + readonly docs: Vec; + readonly environment: ContractEnvironmentSpecV0; +} + /** @name ContractCryptoHasher */ export interface ContractCryptoHasher extends Enum { readonly isBlake2x256: boolean; @@ -91,6 +100,16 @@ export interface ContractDiscriminant extends u32 {} /** @name ContractDisplayName */ export interface ContractDisplayName extends SiPath {} +/** @name ContractEnvironmentSpecV0 */ +export interface ContractEnvironmentSpecV0 extends Struct { + readonly accountId: ContractTypeSpec; + readonly balance: ContractTypeSpec; + readonly blockNumber: ContractTypeSpec; + readonly hashType: ContractTypeSpec; + readonly maxEventTopics: ContractTypeSpec; + readonly timestamp: ContractTypeSpec; +} + /** @name ContractEventParamSpecLatest */ export interface ContractEventParamSpecLatest extends ContractEventParamSpecV2 {} From d575c46e244132a3956d4eb51221d7a8c6f4f4f7 Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Fri, 19 May 2023 17:12:48 +0200 Subject: [PATCH 03/11] tov5 --- packages/api-contract/src/Abi/index.ts | 15 +++++--- packages/api-contract/src/Abi/toLatest.ts | 11 +++--- packages/api-contract/src/Abi/toV5.ts | 6 ++-- packages/api-contract/src/types.ts | 1 + .../types-augment/src/registry/interfaces.ts | 4 ++- .../interfaces/contractsAbi/definitions.ts | 32 ++++++++++++++--- .../src/interfaces/contractsAbi/types.ts | 36 ++++++++++++++++--- 7 files changed, 84 insertions(+), 21 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 5629d9af1e10..397bfaf488e2 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -90,11 +90,16 @@ export class Abi { : abiJson, chainProperties ); - this.constructors = this.metadata.spec.constructors.map((spec: ContractConstructorSpecLatest, index) => - this.#createMessage(spec, index, { + this.constructors = this.metadata.spec.constructors.map((spec: ContractConstructorSpecLatest, index) => { + return this.#createMessage(spec, index, { isConstructor: true, - isPayable: spec.payable.isTrue - }) + isDefault: spec.default.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.type + ? this.registry.lookup.getTypeDef(spec.returnType.type) + : null + }); + } ); this.events = this.metadata.spec.events.map((spec: ContractEventSpecLatest, index) => this.#createEvent(spec, index) @@ -103,6 +108,7 @@ export class Abi { const typeSpec = spec.returnType.unwrapOr(null); return this.#createMessage(spec, index, { + isDefault: spec.default.isTrue, isMutating: spec.mutates.isTrue, isPayable: spec.payable.isTrue, returnType: typeSpec @@ -215,6 +221,7 @@ export class Abi { }), identifier, index, + isDefault: spec.default.isTrue, method: stringCamelCase(identifier), path: identifier.split('::').map((s) => stringCamelCase(s)), selector: spec.selector, diff --git a/packages/api-contract/src/Abi/toLatest.ts b/packages/api-contract/src/Abi/toLatest.ts index 8bf5a77d99cf..0737fde28b9c 100644 --- a/packages/api-contract/src/Abi/toLatest.ts +++ b/packages/api-contract/src/Abi/toLatest.ts @@ -1,17 +1,18 @@ // Copyright 2017-2023 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { ContractMetadataLatest, ContractMetadataV4 } from '@polkadot/types/interfaces'; +import type { ContractMetadataLatest, ContractMetadataV5 } from '@polkadot/types/interfaces'; import type { Registry } from '@polkadot/types/types'; import { v0ToV1 } from './toV1.js'; import { v1ToV2 } from './toV2.js'; import { v2ToV3 } from './toV3.js'; import { v3ToV4 } from './toV4.js'; +import { v4ToV5 } from './toV5.js'; // The versions where an enum is used, aka V0 is missing // (Order from newest, i.e. we expect more on newest vs oldest) -export const enumVersions = ['V4', 'V3', 'V2', 'V1'] as const; +export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1'] as const; type Versions = typeof enumVersions[number] | 'V0'; @@ -23,16 +24,18 @@ function createConverter (next: (registry: Registry, input: O) => Contrac next(registry, step(registry, input)); } -export function v4ToLatest (_registry: Registry, v4: ContractMetadataV4): ContractMetadataLatest { - return v4; +export function v5ToLatest (_registry: Registry, v5: ContractMetadataV5): ContractMetadataLatest { + return v5; } +export const v4ToLatest = /*#__PURE__*/ createConverter(v5ToLatest, v4ToV5); export const v3ToLatest = /*#__PURE__*/ createConverter(v4ToLatest, v3ToV4); export const v2ToLatest = /*#__PURE__*/ createConverter(v3ToLatest, v2ToV3); export const v1ToLatest = /*#__PURE__*/ createConverter(v2ToLatest, v1ToV2); export const v0ToLatest = /*#__PURE__*/ createConverter(v1ToLatest, v0ToV1); export const convertVersions: [Versions, Converter][] = [ + ['V5', v5ToLatest], ['V4', v4ToLatest], ['V3', v3ToLatest], ['V2', v2ToLatest], diff --git a/packages/api-contract/src/Abi/toV5.ts b/packages/api-contract/src/Abi/toV5.ts index d95215da48e1..812ea3a841fb 100644 --- a/packages/api-contract/src/Abi/toV5.ts +++ b/packages/api-contract/src/Abi/toV5.ts @@ -4,6 +4,8 @@ import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; import type { Registry } from '@polkadot/types/types'; -export function v4ToV5 (_registry: Registry, v4: ContractMetadataV4): ContractMetadataV5 { - return v4; +import { objectSpread } from '@polkadot/util'; + +export function v4ToV5 (registry: Registry, v4: ContractMetadataV4): ContractMetadataV5 { + return registry.createType('ContractMetadataV5', objectSpread({}, v4)); } diff --git a/packages/api-contract/src/types.ts b/packages/api-contract/src/types.ts index 25d2a4392777..dfd7e4290932 100644 --- a/packages/api-contract/src/types.ts +++ b/packages/api-contract/src/types.ts @@ -37,6 +37,7 @@ export interface AbiMessage { identifier: string; index: number; isConstructor?: boolean; + isDefault: boolean; isMutating?: boolean; isPayable?: boolean; method: string; diff --git a/packages/types-augment/src/registry/interfaces.ts b/packages/types-augment/src/registry/interfaces.ts index 65c56a0994fc..204086d5e42a 100644 --- a/packages/types-augment/src/registry/interfaces.ts +++ b/packages/types-augment/src/registry/interfaces.ts @@ -24,7 +24,7 @@ import type { StatementKind } from '@polkadot/types/interfaces/claims'; import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective'; import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus'; import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractExecResultU64, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractInstantiateResultU64, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; -import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractContractSpecV5, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEnvironmentSpecV0, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractMetadataV5, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; +import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractConstructorSpecV4, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractContractSpecV5, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEnvironmentSpecV0, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMessageSpecV3, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractMetadataV5, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan'; import type { CollationInfo, CollationInfoV1, ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus'; import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy'; @@ -253,6 +253,7 @@ declare module '@polkadot/types/types/registry' { ContractConstructorSpecV1: ContractConstructorSpecV1; ContractConstructorSpecV2: ContractConstructorSpecV2; ContractConstructorSpecV3: ContractConstructorSpecV3; + ContractConstructorSpecV4: ContractConstructorSpecV4; ContractContractSpecV0: ContractContractSpecV0; ContractContractSpecV1: ContractContractSpecV1; ContractContractSpecV2: ContractContractSpecV2; @@ -299,6 +300,7 @@ declare module '@polkadot/types/types/registry' { ContractMessageSpecV0: ContractMessageSpecV0; ContractMessageSpecV1: ContractMessageSpecV1; ContractMessageSpecV2: ContractMessageSpecV2; + ContractMessageSpecV3: ContractMessageSpecV3; ContractMetadata: ContractMetadata; ContractMetadataLatest: ContractMetadataLatest; ContractMetadataV0: ContractMetadataV0; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index a88643eec82a..0fa1f7469671 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -80,6 +80,15 @@ const spec = { args: 'Vec', docs: 'Vec' }, + ContractConstructorSpecV4: { + label: 'Text', + selector: 'ContractSelector', + payable: 'bool', + args: 'Vec', + docs: 'Vec', + default: 'bool', + returnType: 'ContractTypeSpec' + }, ContractContractSpecV0: { constructors: 'Vec', messages: 'Vec', @@ -106,8 +115,8 @@ const spec = { }, ContractContractSpecV4: 'ContractContractSpecV3', ContractContractSpecV5: { - constructors: 'Vec', - messages: 'Vec', + constructors: 'Vec', + messages: 'Vec', events: 'Vec', docs: 'Vec', environment: 'ContractEnvironmentSpecV0' @@ -183,6 +192,16 @@ const spec = { returnType: 'Option', docs: 'Vec' }, + ContractMessageSpecV3: { + label: 'Text', + selector: 'ContractSelector', + mutates: 'bool', + payable: 'bool', + args: 'Vec', + returnType: 'Option', + docs: 'Vec', + default: 'bool' + }, ContractSelector: '[u8; 4]', ContractTypeSpec: { type: 'SiLookupTypeId', @@ -191,11 +210,11 @@ const spec = { }; const latest = { - ContractConstructorSpecLatest: 'ContractConstructorSpecV3', + ContractConstructorSpecLatest: 'ContractConstructorSpecV4', ContractEventSpecLatest: 'ContractEventSpecV2', ContractEventParamSpecLatest: 'ContractEventParamSpecV2', ContractMessageParamSpecLatest: 'ContractMessageParamSpecV2', - ContractMessageSpecLatest: 'ContractMessageSpecV2', + ContractMessageSpecLatest: 'ContractMessageSpecV3', ContractMetadataLatest: 'ContractMetadataV5' }; @@ -227,7 +246,10 @@ export default { spec: 'ContractContractSpecV3' }, ContractMetadataV4: 'ContractMetadataV3', - ContractMetadataV5: 'ContractMetadataV4', + ContractMetadataV5: { + types: 'Vec', + spec: 'ContractContractSpecV5' + }, ContractMetadata: { _enum: { V0: 'ContractMetadataV0', diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index c1e7bb910942..97a34efff1fa 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -7,7 +7,7 @@ import type { PortableType } from '@polkadot/types/interfaces/metadata'; import type { Si0Type, SiLookupTypeId, SiPath } from '@polkadot/types/interfaces/scaleInfo'; /** @name ContractConstructorSpecLatest */ -export interface ContractConstructorSpecLatest extends ContractConstructorSpecV3 {} +export interface ContractConstructorSpecLatest extends ContractConstructorSpecV4 {} /** @name ContractConstructorSpecV0 */ export interface ContractConstructorSpecV0 extends Struct { @@ -42,6 +42,17 @@ export interface ContractConstructorSpecV3 extends Struct { readonly docs: Vec; } +/** @name ContractConstructorSpecV4 */ +export interface ContractConstructorSpecV4 extends Struct { + readonly label: Text; + readonly selector: ContractSelector; + readonly payable: bool; + readonly args: Vec; + readonly docs: Vec; + readonly default: bool; + readonly returnType: ContractTypeSpec; +} + /** @name ContractContractSpecV0 */ export interface ContractContractSpecV0 extends Struct { readonly constructors: Vec; @@ -79,8 +90,8 @@ export interface ContractContractSpecV4 extends ContractContractSpecV3 {} /** @name ContractContractSpecV5 */ export interface ContractContractSpecV5 extends Struct { - readonly constructors: Vec; - readonly messages: Vec; + readonly constructors: Vec; + readonly messages: Vec; readonly events: Vec; readonly docs: Vec; readonly environment: ContractEnvironmentSpecV0; @@ -217,7 +228,7 @@ export interface ContractMessageParamSpecV2 extends Struct { } /** @name ContractMessageSpecLatest */ -export interface ContractMessageSpecLatest extends ContractMessageSpecV2 {} +export interface ContractMessageSpecLatest extends ContractMessageSpecV3 {} /** @name ContractMessageSpecV0 */ export interface ContractMessageSpecV0 extends Struct { @@ -252,6 +263,18 @@ export interface ContractMessageSpecV2 extends Struct { readonly docs: Vec; } +/** @name ContractMessageSpecV3 */ +export interface ContractMessageSpecV3 extends Struct { + readonly label: Text; + readonly selector: ContractSelector; + readonly mutates: bool; + readonly payable: bool; + readonly args: Vec; + readonly returnType: Option; + readonly docs: Vec; + readonly default: bool; +} + /** @name ContractMetadata */ export interface ContractMetadata extends Enum { readonly isV0: boolean; @@ -301,7 +324,10 @@ export interface ContractMetadataV3 extends Struct { export interface ContractMetadataV4 extends ContractMetadataV3 {} /** @name ContractMetadataV5 */ -export interface ContractMetadataV5 extends ContractMetadataV4 {} +export interface ContractMetadataV5 extends Struct { + readonly types: Vec; + readonly spec: ContractContractSpecV5; +} /** @name ContractProject */ export interface ContractProject extends ITuple<[ContractProjectInfo, ContractMetadata]> {} From e0218083189a22ad7f64fc3a99e5d96c9c13c60b Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Fri, 19 May 2023 23:51:44 +0200 Subject: [PATCH 04/11] use correct version --- packages/api-contract/src/Abi/custom_env.json | 162 ++++++++++++++++++ packages/api-contract/src/Abi/index.ts | 24 ++- packages/api-contract/src/Abi/toLatest.ts | 11 +- packages/api-contract/src/Abi/toV4.ts | 6 +- packages/api-contract/src/Abi/toV5.ts | 11 -- packages/api-contract/src/types.ts | 2 +- .../types-augment/src/registry/interfaces.ts | 6 +- .../interfaces/contractsAbi/definitions.ts | 36 ++-- .../src/interfaces/contractsAbi/types.ts | 27 +-- 9 files changed, 217 insertions(+), 68 deletions(-) create mode 100644 packages/api-contract/src/Abi/custom_env.json delete mode 100644 packages/api-contract/src/Abi/toV5.ts diff --git a/packages/api-contract/src/Abi/custom_env.json b/packages/api-contract/src/Abi/custom_env.json new file mode 100644 index 000000000000..c4035a55034b --- /dev/null +++ b/packages/api-contract/src/Abi/custom_env.json @@ -0,0 +1,162 @@ +{ + "source": { + "hash": "0x96a84fcfcedc2b9424a1d52860423d401d2d6abf34fe24cff4ee57be34908f29", + "language": "ink! 4.2.0", + "compiler": "rustc 1.69.0", + "wasm": "0x0061736d0100000001450c60027f7f017f60037f7f7f017f60027f7f0060037f7f7f0060047f7f7f7f0060047f7f7f7f017f60017f0060000060057f7f7f7f7f0060017f017e6000017f60017f017f02b80109057365616c310b6765745f73746f726167650005057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300d64656275675f6d6573736167650000057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e000303656e76066d656d6f727902010210033d3c01040308030202030203030403080a02020b03060002020702070700010103000004020607020200060006090000080504050000030100000000040404050170010f0f0608017f01418080040b0711020463616c6c0021066465706c6f7900220914010041010b0e1c3a2f41313b3f40302527283e330ab14c3c2b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2c00200120024d04402000200220016b3602042000200120036a3602000f0b418080044121419c9904100a000b5001017f230041206b220324002003410c6a4101360200200341146a4100360200200341d49904360210200341003602002003200136021c200320003602182003200341186a36020820032002101d000b4b01017f230041106b22052400200120034d0440200541086a4100200120021009200528020c21012000200528020836020020002001360204200541106a24000f0b200120032004100c000b0e0020002001200241c0910410430bdb0102037f017e230041d0006b22022400200241106a22042000100e20022903102105200241003602282002200537032020012802002001280204200241206a2203100f20012802082802002003101020022002290320370310200241086a20042002280228101120032002280208200228020c101220022000280200220420002802042000280208220110132002410036024820022002290300370340200241406b2003412010142001200120022802486a22034b044041908104411c41d08204100a000b2000200436020020002003360208200241d0006a24000b5201037f230041106b2202240020012802082203200128020422044b04402003200441b49b04101a000b200241086a20032004200128020010422000200229030837020020004100360208200241106a24000b100020012002101720022000200110140b2601017f230041106b220224002002200036020c20012002410c6a41041014200241106a24000b4501017f2002200128020422034b044041fc9904412341c49b04100a000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1004200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a20022000412041e48004100b2003280208200328020c2001200241f4800410150b200341306a24000b4c01017f230041106b22042400200220034904402003200241c08204101a000b200441086a2003200220011009200428020c21012000200428020836020020002001360204200441106a24000b7901047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a20052004200028020010422003280208200328020c2001200241949b04101520002004360208200341106a24000f0b41e09904411c41f49a04100a000b2004200641849b04100c000b8501002001200346044020002002200110081a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a410336020020004194930436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a2004101d000b3c01027f230041106b22002400200041003602082000410436020c200041086a2000410c6a100120002802082101200041106a24004104410520011b0b7401017f230041106b2202240002402000413f4d04402001200041027410180c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210140c010b200041ffffffff034d04402000410274410272200110100c010b2001410310182000200110100b200241106a24000ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a4103360200200041b48c0436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a41a49b04101d000b1b002000418180014f044020004180800141fc8104100c000b20000b0e0020002001200241a0910410430b5201017f230041206b220124002001410c6a4101360200200141146a4101360200200141a89704360208200141003602002001410136021c200120003602182001200141186a360210200141f48404101d000b910101017f230041306b22022400200241146a41013602002002411c6a4101360200200241a897043602102002410036020820024102360224200220002d0000410274220041d49b046a28020036022c2002200041e89b046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a103d200241306a24000b3c01017f230041206b22022400200241013a00182002200136021420022000360210200241e08c0436020c200241d49904360208200241086a1032000b3f01017f230041106b22022400200242808001370204200241849c0436020020022001047f20024101101841010541000b10182000200228020810191020000b7601047f230041306b2200240020004100360218200042808001370224200041849c043602204100200041206a101020002000290320370310200041086a200041106a220120002802281011200028020c21022000280208200020014100101120022000280200200028020410061a200041306a24000b0d00200041849c0420011007000be00902077f017e230041406a22002400101641ff0171410546044020004180800136022841849c04200041286a1002200041106a200028022841849c044180800141ec8104100b024020002802144104490d00200028021028000041d184a9cc03470d002000410036022020004280800137022c200041849c043602284100200041286a2202101020002000290328370318200041086a200041186a20002802301011200028020c21032000280208200028021821012000200028021c220436022820032001200210002102200020002802282001200441ec8104100b024002400240410c20022002410c4f1b0e0402000001000b200041346a41013602002000413c6a4100360200200041a88204360230200041d4990436023820004100360228200041286a41b08204101d000b200041346a41013602002000413c6a41003602002000419c8504360230200041d4990436023820004100360228200041286a41f48404101d000b230041d0016b22002400200041386a22064100360200200041306a22054200370300200042003703282000428080013702a401200041849c043602a0014106200041a0016a2201101720004180800136028401200041849c0436028001200020002802a80122023602880120004190016a220320004180016a100e2000290390012107200041003602a801200020073703a00141d4990441002001100f200141e0820441171014200020002903a00137039001200041206a200320002802a80110112001200028022020002802241012200041186a41849c044180800120021013200041003602c801200020002903183703c001200041c0016a2001412010142002200220002802c8016a22014b044041908104411c41d08204100a000b200041f8006a2203200136020020004180800136028401200041849c0436028001200020002903800137037020004124360264200041f782043602602000200041286a2201360268200041f0006a2204200041e0006a100d200041a8016a22022003280200360200200020002903703703a00120002001410472360278200041253602742000419b8304360270200041a0016a22012004100d200041c8016a22032002280200360200200020002903a0013703c00120002005360288012000412436028401200041c0830436028001200041c0016a220520004180016a100d20022003280200360200200020002903c0013703a0012000200041346a360298012000412536029401200041e4830436029001200120004190016a100d200041d8006a22042002280200360200200020002903a001370350200020063602c801200041243602c4012000418984043602c001200041d0006a2005100d200041c8006a2004280200220636020020002000290350220737034020024100360200200020073703a001200041106a200120061011200420022802002202360200200020002903a001220737035020002802142104200028021020032002360200200020073703c001200041003602a801200020073703a001200141001018200028022820011010200028022c20011010200028023020011010200028023420011010200028023820011010200020002903a0013703c001200041086a200520002802a801101120042000280208200028020c1005200041d0016a2400101f41004100101e000b41014101101e000b200041043a0028200041286a101b000bae0101027f230041106b220024000240101641ff01712201410546044020004180800136020c41849c042000410c6a10022000200028020c41849c044180800141ec8104100b200028020441044f04402000280200280000419bddf6f405460d020b41014101101e000b200020013a000b2000410b6a101b000b101f230041106b22002400200042808001370204200041849c043602002000410010182000410010184100200028020810191020000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41a48504200241086a1024200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110000450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a103c20032003290310370320200341086a2005200141046a103c20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110000450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002102641000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a20002003200210292004280208200428020c102a200028020821030b200028020420036a2001200210081a2003200220036a22014b044041c08504411c41ac8b04100a000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10260c020b230041106b22042400200441086a20002003410110292004280208200428020c102a200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41c08504411c419c8b04100a000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1023200241206a24000bac0401067f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22062002490d0141082006200320032006491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200441106a2107230041106b220624002004027f0240027f0240200504400240200341004e044020072802080d0120062003102d2006280204210220062802000c040b0c040b20072802042209450440200641086a2003102d200628020c210220062802080c030b20032102410041fc9b04280200220520036a22082005490d021a2007280200210741809c042802002008490440200341ffff036a220841107640002202417f46200241ffff0371200247720d022002411074220520084180807c716a22022005490d0241809c042002360200200321024100200320056a22082005490d031a0b41fc9b04200836020041002005450d021a20052007200910080c020b200420033602040c020b2003210241000b2205044020042005360204200441086a200236020041000c020b20042003360204200441086a410136020041010c010b200441086a410036020041010b360200200641106a240020042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41e08504412141888704100a000b1f00024020014181808080784704402001450d012000102b000b0f0b102c000b900101017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141d88804360218200141003602102001410336022c2001200141286a36022020012001410c6a360228230041206b22002400200041003a0018200041e888043602142000200141106a360210200041e08c0436020c200041d49904360208200041086a1032000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041ac8704360210200041d4990436021820004100360208200041086a41b48704101d000ba10101027f027f410041fc9b04280200220220016a22032002490d001a024041809c042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141809c0420033602004100200120026a22032002490d021a0b41fc9b04200336020020020c010b41000b210320002001360204200020033602000b5301027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a2001102d200228020822030d012001102b000b102c000b2000200336020420002001360200200241106a24000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441948e046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441948e046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441948e046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441948e046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b2102410021042005410471044041d499042104200241d4990441d49904103420026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410370d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410370d02200341106a2001200920026b4101103820032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10390d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410370d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011038200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410370d00200220082006200128020c1101000d00200520022001103921000b200341406b240020000f0b41c08b04411c41cc9004100a000b41e08b04412141909704100a000b0300010b0e0020002802001a03400c000b000baa05020a7f017e230041406a220124002001200036020c2001412c6a4102360200200141346a4101360200200141a09a04360228200141003602202001410436023c2001200141386a36023020012001410c6a360238200141106a210641002100230041306b22022400200141206a220441146a2802002107200428020821050240024002400240200241086a027f024002400240200241106a027f024002402004410c6a28020022080e020001040b20070d0241d49904210341000c010b20070d022005280200210320052802040b2200102e200228021021042006200228021422053602042006200436020020052003200010081a200620003602080c040b200428021021090c010b200541046a21032008410374210a2004280210210903402000200020032802006a22004b0d04200341086a2103200a41086b220a0d000b20002007450d011a2000410f4b0d0041002005280204450d011a0b200020006a22034100200020034d1b0b102e2002290308210b200641003602082006200b3702002002200736022c200220093602282002200836022420022005360220200220042902003703182006200241186a10230d020b200241306a24000c020b41c08504411c41809704100a000b230041406a220024002000413336020c200041f888043602082000418486043602142000200241186a360210200041246a41023602002000412c6a41023602002000413c6a4106360200200041948d0436022020004100360218200041023602342000200041306a3602282000200041106a3602382000200041086a360230200041186a41988a04101d000b2001280214210020012802182101024041849c052d000045044041859c052d00004101710d010b410c20002001100322002000410c4f1b410947044041849c0541013a00000b41859c0541013a00000b000b0d0042c69ec29cdfe1e6b0877f0ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010352206200020016a22082004417c716a200441037110356a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41c492041036200328020c21052003280208210820032003280200200328020422002000417c7141b094041036200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41c08b04411c41c09404100a000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441c08b04411c41f09404100a000b41c08b04411c41d09404100a000b41c08b04411c41e09404100a000b41c08b04411c41a09404100a000b20012002103521020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41c08b04411c41809704100a000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41fc990441232004100a000b39000240027f2002418080c40047044041012000200220012802101100000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41c08b04411c41dc9004100a000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110000450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110000450d000b200441016b0b2000490bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41c08b04411c41f49504100a000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003103422024b0440200941086a2001200020026b4100103841012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001103921000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1100000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1024200341206a24000b1800200128020041a097044105200128020428020c1101000b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1024200241206a24000b0b0020002802002001103a0b990301037f230041406a22022400200028020021034101210002402001280200220441f08c04410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241808d0436023020024100360228200241073602142002200241106a36023820022002410c6a36021020042001200241286a103d450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241808d0436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a103d0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4103360200200241346a4103360200200241c88c043602182002410036021020022000410c6a3602382002200041086a3602302002410236022c200220003602282002200241286a36022020042001200241106a103d21000b200241406b240020000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41b099044121419c9904100a000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41033602002004200336021020044100360208200441033602242004200441206a3602182004200441046a36022820042004360220200441086a2002101d000b0bf61b0300418080040b8101617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f70706f6c6f637a656b2f6769742f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e727300000021000100400000009d0000001100000021000100400000009d0000003000419081040bc118617474656d707420746f206164642077697468206f766572666c6f772f55736572732f70706f6c6f637a656b2f6769742f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000ac0001003e000000e40000001400000021000100400000002401000023000000656e636f756e746572656420756e6578706563746564206572726f720c0101001c0000002100010040000000ed00000017000000300d010041000000c100000037000000300d010041000000c400000009000000546f706963733a3a4576656e7457697468546f70696373546f706963733a3a4576656e7457697468546f706963733a3a66697273745f746f706963546f706963733a3a4576656e7457697468546f706963733a3a7365636f6e645f746f706963546f706963733a3a4576656e7457697468546f706963733a3a74686972645f746f706963546f706963733a3a4576656e7457697468546f706963733a3a666f757274685f746f706963546f706963733a3a4576656e7457697468546f706963733a3a66696674685f746f7069632f55736572732f70706f6c6f637a656b2f6769742f696e6b2f696e746567726174696f6e2d74657374732f637573746f6d2d656e7669726f6e6d656e742f6c69622e72730000002d020100440000002a0000000500000073746f7261676520656e7472792077617320656d7074790084020100170000000900000004000000040000000a0000000b0000000c00000000000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000900000000000000010000000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300000014030100710000008f0100001c0000006361706163697479206f766572666c6f77000000980301001100000014030100710000000d020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000003304010015000000480401000d000000c40301006f0000009f0100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273ab0401006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000002805010071000000350700000d0000002805010071000000a30700000900000000000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320020601002000000022060100120000003a000000d40c010000000000440601000100000044060100010000000900000000000000010000000e00000070616e69636b65642061742027272c207c060100010000007d060100030000003a200000d40c01000000000090060100020000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273dc07010070000000750500000d000000dc07010070000000050600003800000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468206c080100120000007e0801002200000072616e676520656e6420696e64657820b0080100100000007e080100220000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300d008010073000000c005000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820285409010015000000690901002b00000001060100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000ac090100720000004700000015000000ac090100720000004f00000032000000ac090100720000005400000011000000ac090100720000005a00000009000000ac090100720000006400000011000000ac09010072000000660000000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000800a01007100000091000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000040b01007a0000009500000001000000a406010070000000cd010000050000004572726f72000000d40c0100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273280c010074000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041e099040b9b02617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290ad40c0100000000001f0d0100010000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000000300d0100410000005a0000001c000000300d0100410000005a00000009000000300d0100410000005a00000031000000300d0100410000006500000009000000300d010041000000830000001a000000300d0100410000008d00000021000000190000001c0000001600000014000000190000000f0c0100f30b0100dd0b0100c90b0100b00b01", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "2.2.1", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "custom-environment", + "version": "4.2.0", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [], + "default": false, + "docs": [], + "label": "new", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 0 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { "displayName": ["AccountId"], "type": 4 }, + "balance": { "displayName": ["Balance"], "type": 3 }, + "blockNumber": { "displayName": ["BlockNumber"], "type": 8 }, + "chainExtension": { "displayName": ["ChainExtension"], "type": 9 }, + "hash": { "displayName": ["Hash"], "type": 6 }, + "maxEventTopics": 5, + "timestamp": { "displayName": ["Timestamp"], "type": 3 } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "first_topic", + "type": { "displayName": ["Balance"], "type": 3 } + }, + { + "docs": [], + "indexed": true, + "label": "second_topic", + "type": { "displayName": ["Balance"], "type": 3 } + }, + { + "docs": [], + "indexed": true, + "label": "third_topic", + "type": { "displayName": ["Balance"], "type": 3 } + }, + { + "docs": [], + "indexed": true, + "label": "fourth_topic", + "type": { "displayName": ["Balance"], "type": 3 } + }, + { + "docs": [], + "indexed": true, + "label": "fifth_topic", + "type": { "displayName": ["Balance"], "type": 3 } + } + ], + "docs": [ + "An event that would be forbidden in the default environment, but is completely", + "valid in our custom one." + ], + "label": "EventWithTopics" + } + ], + "lang_error": { "displayName": ["ink", "LangError"], "type": 2 }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Emit an event with many topics."], + "label": "trigger", + "mutates": true, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 0 }, + "selector": "0x51428a39" + } + ] + }, + "storage": { + "root": { + "layout": { "struct": { "fields": [], "name": "Topics" } }, + "root_key": "0x00000000" + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 1 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 2 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 1 }, + { "name": "E", "type": 2 } + ], + "path": ["Result"] + } + }, + { "id": 1, "type": { "def": { "tuple": [] } } }, + { + "id": 2, + "type": { + "def": { + "variant": { + "variants": [{ "index": 1, "name": "CouldNotReadInput" }] + } + }, + "path": ["ink_primitives", "LangError"] + } + }, + { "id": 3, "type": { "def": { "primitive": "u32" } } }, + { "id": 4, "type": { "def": { "array": { "len": 16, "type": 5 } } } }, + { "id": 5, "type": { "def": { "primitive": "u8" } } }, + { + "id": 6, + "type": { + "def": { + "composite": { "fields": [{ "type": 7, "typeName": "[u8; 32]" }] } + }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { "id": 7, "type": { "def": { "array": { "len": 32, "type": 5 } } } }, + { "id": 8, "type": { "def": { "primitive": "u64" } } }, + { + "id": 9, + "type": { + "def": { "variant": {} }, + "path": ["ink_env", "types", "NoChainExtension"] + } + } + ], + "version": "4" +} diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 397bfaf488e2..a522ca094a0e 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes } from '@polkadot/types'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo } from '@polkadot/types/interfaces'; -import type { Codec, Registry } from '@polkadot/types/types'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec } from '@polkadot/types/interfaces'; +import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; import { TypeRegistry } from '@polkadot/types'; @@ -82,6 +82,7 @@ export class Abi { readonly messages: AbiMessage[]; readonly metadata: ContractMetadataLatest; readonly registry: Registry; + readonly environment?: TypeDef[]; constructor (abiJson: Record | string, chainProperties?: ChainProperties) { [this.json, this.registry, this.metadata, this.info] = parseJson( @@ -91,12 +92,15 @@ export class Abi { chainProperties ); this.constructors = this.metadata.spec.constructors.map((spec: ContractConstructorSpecLatest, index) => { + const isDefault = 'default' in spec ? spec.default.isTrue : undefined; + const typeSpec = spec.returnType.unwrapOr(null); + return this.#createMessage(spec, index, { isConstructor: true, - isDefault: spec.default.isTrue, + isDefault, isPayable: spec.payable.isTrue, - returnType: spec.returnType.type - ? this.registry.lookup.getTypeDef(spec.returnType.type) + returnType: typeSpec + ? this.registry.lookup.getTypeDef(typeSpec.type) : null }); } @@ -106,9 +110,10 @@ export class Abi { ); this.messages = this.metadata.spec.messages.map((spec: ContractMessageSpecLatest, index): AbiMessage => { const typeSpec = spec.returnType.unwrapOr(null); + const isDefault = 'default' in spec ? spec.default.isTrue : undefined; return this.#createMessage(spec, index, { - isDefault: spec.default.isTrue, + isDefault, isMutating: spec.mutates.isTrue, isPayable: spec.payable.isTrue, returnType: typeSpec @@ -116,6 +121,9 @@ export class Abi { : null }); }); + Object.entries(this.metadata.spec.environment).forEach(([, value]: [string, ContractTypeSpec]) => { + console.log(value); + }); } /** @@ -211,6 +219,8 @@ export class Abi { #createMessage = (spec: ContractMessageSpecLatest | ContractConstructorSpecLatest, index: number, add: Partial = {}): AbiMessage => { const args = this.#createArgs(spec.args, spec); const identifier = spec.label.toString(); + const isDefault = 'default' in spec ? spec.default.isTrue : undefined; + const message = { ...add, args, @@ -221,7 +231,7 @@ export class Abi { }), identifier, index, - isDefault: spec.default.isTrue, + isDefault, method: stringCamelCase(identifier), path: identifier.split('::').map((s) => stringCamelCase(s)), selector: spec.selector, diff --git a/packages/api-contract/src/Abi/toLatest.ts b/packages/api-contract/src/Abi/toLatest.ts index 0737fde28b9c..8bf5a77d99cf 100644 --- a/packages/api-contract/src/Abi/toLatest.ts +++ b/packages/api-contract/src/Abi/toLatest.ts @@ -1,18 +1,17 @@ // Copyright 2017-2023 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { ContractMetadataLatest, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { ContractMetadataLatest, ContractMetadataV4 } from '@polkadot/types/interfaces'; import type { Registry } from '@polkadot/types/types'; import { v0ToV1 } from './toV1.js'; import { v1ToV2 } from './toV2.js'; import { v2ToV3 } from './toV3.js'; import { v3ToV4 } from './toV4.js'; -import { v4ToV5 } from './toV5.js'; // The versions where an enum is used, aka V0 is missing // (Order from newest, i.e. we expect more on newest vs oldest) -export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1'] as const; +export const enumVersions = ['V4', 'V3', 'V2', 'V1'] as const; type Versions = typeof enumVersions[number] | 'V0'; @@ -24,18 +23,16 @@ function createConverter (next: (registry: Registry, input: O) => Contrac next(registry, step(registry, input)); } -export function v5ToLatest (_registry: Registry, v5: ContractMetadataV5): ContractMetadataLatest { - return v5; +export function v4ToLatest (_registry: Registry, v4: ContractMetadataV4): ContractMetadataLatest { + return v4; } -export const v4ToLatest = /*#__PURE__*/ createConverter(v5ToLatest, v4ToV5); export const v3ToLatest = /*#__PURE__*/ createConverter(v4ToLatest, v3ToV4); export const v2ToLatest = /*#__PURE__*/ createConverter(v3ToLatest, v2ToV3); export const v1ToLatest = /*#__PURE__*/ createConverter(v2ToLatest, v1ToV2); export const v0ToLatest = /*#__PURE__*/ createConverter(v1ToLatest, v0ToV1); export const convertVersions: [Versions, Converter][] = [ - ['V5', v5ToLatest], ['V4', v4ToLatest], ['V3', v3ToLatest], ['V2', v2ToLatest], diff --git a/packages/api-contract/src/Abi/toV4.ts b/packages/api-contract/src/Abi/toV4.ts index fd6d04ca8668..1b3444311db2 100644 --- a/packages/api-contract/src/Abi/toV4.ts +++ b/packages/api-contract/src/Abi/toV4.ts @@ -4,6 +4,8 @@ import type { ContractMetadataV3, ContractMetadataV4 } from '@polkadot/types/interfaces'; import type { Registry } from '@polkadot/types/types'; -export function v3ToV4 (_registry: Registry, v3: ContractMetadataV3): ContractMetadataV4 { - return v3; +import { objectSpread } from '@polkadot/util'; + +export function v3ToV4 (registry: Registry, v3: ContractMetadataV3): ContractMetadataV4 { + return registry.createType('ContractMetadataV4', objectSpread({}, v3)); } diff --git a/packages/api-contract/src/Abi/toV5.ts b/packages/api-contract/src/Abi/toV5.ts deleted file mode 100644 index 812ea3a841fb..000000000000 --- a/packages/api-contract/src/Abi/toV5.ts +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017-2023 @polkadot/api-contract authors & contributors -// SPDX-License-Identifier: Apache-2.0 - -import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; -import type { Registry } from '@polkadot/types/types'; - -import { objectSpread } from '@polkadot/util'; - -export function v4ToV5 (registry: Registry, v4: ContractMetadataV4): ContractMetadataV5 { - return registry.createType('ContractMetadataV5', objectSpread({}, v4)); -} diff --git a/packages/api-contract/src/types.ts b/packages/api-contract/src/types.ts index dfd7e4290932..049dc11103a9 100644 --- a/packages/api-contract/src/types.ts +++ b/packages/api-contract/src/types.ts @@ -37,7 +37,7 @@ export interface AbiMessage { identifier: string; index: number; isConstructor?: boolean; - isDefault: boolean; + isDefault?: boolean; isMutating?: boolean; isPayable?: boolean; method: string; diff --git a/packages/types-augment/src/registry/interfaces.ts b/packages/types-augment/src/registry/interfaces.ts index 204086d5e42a..e5937950e0a7 100644 --- a/packages/types-augment/src/registry/interfaces.ts +++ b/packages/types-augment/src/registry/interfaces.ts @@ -24,7 +24,7 @@ import type { StatementKind } from '@polkadot/types/interfaces/claims'; import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective'; import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus'; import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractExecResultU64, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractInstantiateResultU64, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts'; -import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractConstructorSpecV4, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractContractSpecV5, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEnvironmentSpecV0, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMessageSpecV3, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractMetadataV5, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; +import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractConstructorSpecV4, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractContractSpecV4, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEnvironment, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMessageSpecV3, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractMetadataV4, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi'; import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan'; import type { CollationInfo, CollationInfoV1, ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus'; import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy'; @@ -259,11 +259,10 @@ declare module '@polkadot/types/types/registry' { ContractContractSpecV2: ContractContractSpecV2; ContractContractSpecV3: ContractContractSpecV3; ContractContractSpecV4: ContractContractSpecV4; - ContractContractSpecV5: ContractContractSpecV5; ContractCryptoHasher: ContractCryptoHasher; ContractDiscriminant: ContractDiscriminant; ContractDisplayName: ContractDisplayName; - ContractEnvironmentSpecV0: ContractEnvironmentSpecV0; + ContractEnvironment: ContractEnvironment; ContractEventParamSpecLatest: ContractEventParamSpecLatest; ContractEventParamSpecV0: ContractEventParamSpecV0; ContractEventParamSpecV2: ContractEventParamSpecV2; @@ -308,7 +307,6 @@ declare module '@polkadot/types/types/registry' { ContractMetadataV2: ContractMetadataV2; ContractMetadataV3: ContractMetadataV3; ContractMetadataV4: ContractMetadataV4; - ContractMetadataV5: ContractMetadataV5; ContractProject: ContractProject; ContractProjectContract: ContractProjectContract; ContractProjectInfo: ContractProjectInfo; diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index 0fa1f7469671..50d04e159d59 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -87,7 +87,7 @@ const spec = { args: 'Vec', docs: 'Vec', default: 'bool', - returnType: 'ContractTypeSpec' + returnType: 'Option' }, ContractContractSpecV0: { constructors: 'Vec', @@ -113,22 +113,14 @@ const spec = { events: 'Vec', docs: 'Vec' }, - ContractContractSpecV4: 'ContractContractSpecV3', - ContractContractSpecV5: { + ContractContractSpecV4: { constructors: 'Vec', messages: 'Vec', events: 'Vec', docs: 'Vec', - environment: 'ContractEnvironmentSpecV0' - }, - ContractEnvironmentSpecV0: { - accountId: 'ContractTypeSpec', - balance: 'ContractTypeSpec', - blockNumber: 'ContractTypeSpec', - hashType: 'ContractTypeSpec', - maxEventTopics: 'ContractTypeSpec', - timestamp: 'ContractTypeSpec' + environment: 'ContractEnvironment' }, + ContractDisplayName: 'SiPath', ContractEventParamSpecV0: { name: 'Text', @@ -215,7 +207,7 @@ const latest = { ContractEventParamSpecLatest: 'ContractEventParamSpecV2', ContractMessageParamSpecLatest: 'ContractMessageParamSpecV2', ContractMessageSpecLatest: 'ContractMessageSpecV3', - ContractMetadataLatest: 'ContractMetadataV5' + ContractMetadataLatest: 'ContractMetadataV4' }; export default { @@ -245,10 +237,9 @@ export default { types: 'Vec', spec: 'ContractContractSpecV3' }, - ContractMetadataV4: 'ContractMetadataV3', - ContractMetadataV5: { + ContractMetadataV4: { types: 'Vec', - spec: 'ContractContractSpecV5' + spec: 'ContractContractSpecV4' }, ContractMetadata: { _enum: { @@ -256,8 +247,7 @@ export default { V1: 'ContractMetadataV1', V2: 'ContractMetadataV2', V3: 'ContractMetadataV3', - V4: 'ContractMetadataV4', - V5: 'ContractMetadataV5' + V4: 'ContractMetadataV4' } }, ContractProjectV0: { @@ -289,6 +279,16 @@ export default { language: 'Text', compiler: 'Text', wasm: 'Raw' + }, + ContractEnvironment: { + _alias: { + hashType: 'hash' + }, + accountId: 'ContractTypeSpec', + balance: 'ContractTypeSpec', + blockNumber: 'ContractTypeSpec', + hashType: 'ContractTypeSpec', + timestamp: 'ContractTypeSpec' } } } as Definitions; diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index 97a34efff1fa..ed17de4c1c41 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -50,7 +50,7 @@ export interface ContractConstructorSpecV4 extends Struct { readonly args: Vec; readonly docs: Vec; readonly default: bool; - readonly returnType: ContractTypeSpec; + readonly returnType: Option; } /** @name ContractContractSpecV0 */ @@ -86,15 +86,12 @@ export interface ContractContractSpecV3 extends Struct { } /** @name ContractContractSpecV4 */ -export interface ContractContractSpecV4 extends ContractContractSpecV3 {} - -/** @name ContractContractSpecV5 */ -export interface ContractContractSpecV5 extends Struct { +export interface ContractContractSpecV4 extends Struct { readonly constructors: Vec; readonly messages: Vec; readonly events: Vec; readonly docs: Vec; - readonly environment: ContractEnvironmentSpecV0; + readonly environment: ContractEnvironment; } /** @name ContractCryptoHasher */ @@ -111,13 +108,12 @@ export interface ContractDiscriminant extends u32 {} /** @name ContractDisplayName */ export interface ContractDisplayName extends SiPath {} -/** @name ContractEnvironmentSpecV0 */ -export interface ContractEnvironmentSpecV0 extends Struct { +/** @name ContractEnvironment */ +export interface ContractEnvironment extends Struct { readonly accountId: ContractTypeSpec; readonly balance: ContractTypeSpec; readonly blockNumber: ContractTypeSpec; readonly hashType: ContractTypeSpec; - readonly maxEventTopics: ContractTypeSpec; readonly timestamp: ContractTypeSpec; } @@ -287,13 +283,11 @@ export interface ContractMetadata extends Enum { readonly asV3: ContractMetadataV3; readonly isV4: boolean; readonly asV4: ContractMetadataV4; - readonly isV5: boolean; - readonly asV5: ContractMetadataV5; - readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; + readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4'; } /** @name ContractMetadataLatest */ -export interface ContractMetadataLatest extends ContractMetadataV5 {} +export interface ContractMetadataLatest extends ContractMetadataV4 {} /** @name ContractMetadataV0 */ export interface ContractMetadataV0 extends Struct { @@ -321,12 +315,9 @@ export interface ContractMetadataV3 extends Struct { } /** @name ContractMetadataV4 */ -export interface ContractMetadataV4 extends ContractMetadataV3 {} - -/** @name ContractMetadataV5 */ -export interface ContractMetadataV5 extends Struct { +export interface ContractMetadataV4 extends Struct { readonly types: Vec; - readonly spec: ContractContractSpecV5; + readonly spec: ContractContractSpecV4; } /** @name ContractProject */ From c030c1a2469482c8922698ee382d8c250fb34282 Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Sat, 20 May 2023 10:17:45 +0200 Subject: [PATCH 05/11] decode env types --- packages/api-contract/src/Abi/index.ts | 34 ++++++++++++++++++-------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index a522ca094a0e..597314b2d065 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -1,9 +1,9 @@ // Copyright 2017-2023 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { Bytes } from '@polkadot/types'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo, ContractTypeSpec } from '@polkadot/types/interfaces'; -import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; +import type { Bytes, PortableRegistry } from '@polkadot/types'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractEnvironment, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo } from '@polkadot/types/interfaces'; +import type { Codec, Registry } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; import { TypeRegistry } from '@polkadot/types'; @@ -53,9 +53,22 @@ function getLatestMeta (registry: Registry, json: Record): Cont return converter[1](registry, metadata[`as${converter[0]}`]); } -function parseJson (json: Record, chainProperties?: ChainProperties): [Record, Registry, ContractMetadataLatest, ContractProjectInfo] { +function getEnvTypes (env: ContractEnvironment, lookup: PortableRegistry) { + const keys = Object.keys(env); + + return Object.values(env).map((t: unknown, i) => { + if (typeof t === 'object' && t !== null && 'type' in t) { + return { [keys[i]]: lookup.getTypeDef(t.type as number) }; + } + + return { [keys[i]]: t }; + }); +} + +function parseJson (json: Record, chainProperties?: ChainProperties): [Record, Registry, ContractMetadataLatest, ContractProjectInfo, { [x: string]: unknown }[]] { const registry = new TypeRegistry(); const info = registry.createType('ContractProjectInfo', json) as unknown as ContractProjectInfo; + const { spec: { environment } } = json as {spec: {environment?: ContractEnvironment}}; const latest = getLatestMeta(registry, json); const lookup = registry.createType('PortableRegistry', { types: latest.types }, true); @@ -71,7 +84,11 @@ function parseJson (json: Record, chainProperties?: ChainProper lookup.getTypeDef(id) ); - return [json, registry, latest, info]; + const env = environment + ? getEnvTypes(environment, lookup) + : []; + + return [json, registry, latest, info, env]; } export class Abi { @@ -82,10 +99,10 @@ export class Abi { readonly messages: AbiMessage[]; readonly metadata: ContractMetadataLatest; readonly registry: Registry; - readonly environment?: TypeDef[]; + readonly environment?: { [x: string]: unknown }[]; constructor (abiJson: Record | string, chainProperties?: ChainProperties) { - [this.json, this.registry, this.metadata, this.info] = parseJson( + [this.json, this.registry, this.metadata, this.info, this.environment] = parseJson( isString(abiJson) ? JSON.parse(abiJson) as Record : abiJson, @@ -121,9 +138,6 @@ export class Abi { : null }); }); - Object.entries(this.metadata.spec.environment).forEach(([, value]: [string, ContractTypeSpec]) => { - console.log(value); - }); } /** From 8280bed13b7ee2f9dc6fa11ca7b9772cfba6c695 Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Sun, 21 May 2023 18:08:53 +0200 Subject: [PATCH 06/11] fix tests --- packages/api-contract/src/Abi/index.ts | 35 ++++++++++++++++---------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 597314b2d065..fc0d7da8c516 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -53,22 +53,25 @@ function getLatestMeta (registry: Registry, json: Record): Cont return converter[1](registry, metadata[`as${converter[0]}`]); } -function getEnvTypes (env: ContractEnvironment, lookup: PortableRegistry) { - const keys = Object.keys(env); +function getEnvTypes (env: ContractEnvironment | undefined, lookup: PortableRegistry) { + if (env) { + const keys = Object.keys(env); - return Object.values(env).map((t: unknown, i) => { - if (typeof t === 'object' && t !== null && 'type' in t) { - return { [keys[i]]: lookup.getTypeDef(t.type as number) }; - } + return Object.values(env).map((t: unknown, i) => { + if (typeof t === 'object' && t !== null && 'type' in t) { + return { [keys[i]]: lookup.getTypeDef(t.type as number) }; + } + + return { [keys[i]]: t }; + }); + } - return { [keys[i]]: t }; - }); + return []; } function parseJson (json: Record, chainProperties?: ChainProperties): [Record, Registry, ContractMetadataLatest, ContractProjectInfo, { [x: string]: unknown }[]] { const registry = new TypeRegistry(); const info = registry.createType('ContractProjectInfo', json) as unknown as ContractProjectInfo; - const { spec: { environment } } = json as {spec: {environment?: ContractEnvironment}}; const latest = getLatestMeta(registry, json); const lookup = registry.createType('PortableRegistry', { types: latest.types }, true); @@ -84,9 +87,15 @@ function parseJson (json: Record, chainProperties?: ChainProper lookup.getTypeDef(id) ); - const env = environment - ? getEnvTypes(environment, lookup) - : []; + let env: { [x: string]: unknown }[] = []; + + try { + const { spec: { environment } } = json as unknown as ContractMetadataLatest; + + env = getEnvTypes(environment, lookup); + } catch (e) { + console.error(e); + } return [json, registry, latest, info, env]; } @@ -110,7 +119,7 @@ export class Abi { ); this.constructors = this.metadata.spec.constructors.map((spec: ContractConstructorSpecLatest, index) => { const isDefault = 'default' in spec ? spec.default.isTrue : undefined; - const typeSpec = spec.returnType.unwrapOr(null); + const typeSpec = 'returnType' in spec ? spec.returnType.unwrapOr(null) : null; return this.#createMessage(spec, index, { isConstructor: true, From 6f0f53311868a238499eae4b6b787104fe6f61f3 Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Tue, 23 May 2023 17:48:19 +0200 Subject: [PATCH 07/11] remove unnecesary checks --- packages/api-contract/src/Abi/custom_env.json | 162 ------------------ packages/api-contract/src/Abi/index.ts | 49 ++---- 2 files changed, 10 insertions(+), 201 deletions(-) delete mode 100644 packages/api-contract/src/Abi/custom_env.json diff --git a/packages/api-contract/src/Abi/custom_env.json b/packages/api-contract/src/Abi/custom_env.json deleted file mode 100644 index c4035a55034b..000000000000 --- a/packages/api-contract/src/Abi/custom_env.json +++ /dev/null @@ -1,162 +0,0 @@ -{ - "source": { - "hash": "0x96a84fcfcedc2b9424a1d52860423d401d2d6abf34fe24cff4ee57be34908f29", - "language": "ink! 4.2.0", - "compiler": "rustc 1.69.0", - "wasm": "0x0061736d0100000001450c60027f7f017f60037f7f7f017f60027f7f0060037f7f7f0060047f7f7f7f0060047f7f7f7f017f60017f0060000060057f7f7f7f7f0060017f017e6000017f60017f017f02b80109057365616c310b6765745f73746f726167650005057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300d64656275675f6d6573736167650000057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740004057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e000303656e76066d656d6f727902010210033d3c01040308030202030203030403080a02020b03060002020702070700010103000004020607020200060006090000080504050000030100000000040404050170010f0f0608017f01418080040b0711020463616c6c0021066465706c6f7900220914010041010b0e1c3a2f41313b3f40302527283e330ab14c3c2b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2c00200120024d04402000200220016b3602042000200120036a3602000f0b418080044121419c9904100a000b5001017f230041206b220324002003410c6a4101360200200341146a4100360200200341d49904360210200341003602002003200136021c200320003602182003200341186a36020820032002101d000b4b01017f230041106b22052400200120034d0440200541086a4100200120021009200528020c21012000200528020836020020002001360204200541106a24000f0b200120032004100c000b0e0020002001200241c0910410430bdb0102037f017e230041d0006b22022400200241106a22042000100e20022903102105200241003602282002200537032020012802002001280204200241206a2203100f20012802082802002003101020022002290320370310200241086a20042002280228101120032002280208200228020c101220022000280200220420002802042000280208220110132002410036024820022002290300370340200241406b2003412010142001200120022802486a22034b044041908104411c41d08204100a000b2000200436020020002003360208200241d0006a24000b5201037f230041106b2202240020012802082203200128020422044b04402003200441b49b04101a000b200241086a20032004200128020010422000200229030837020020004100360208200241106a24000b100020012002101720022000200110140b2601017f230041106b220224002002200036020c20012002410c6a41041014200241106a24000b4501017f2002200128020422034b044041fc9904412341c49b04100a000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000bcf0101077f230041306b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341286a22074200370300200341206a22084200370300200341186a220942003703002003420037031020012002200341106a1004200420072903003700002005200829030037000020062009290300370000200020032903103700000c010b200341086a20022000412041e48004100b2003280208200328020c2001200241f4800410150b200341306a24000b4c01017f230041106b22042400200220034904402003200241c08204101a000b200441086a2003200220011009200428020c21012000200428020836020020002001360204200441106a24000b7901047f230041106b2203240002402000280208220520026a220420054f04402004200028020422064b0d01200341086a20052004200028020010422003280208200328020c2001200241949b04101520002004360208200341106a24000f0b41e09904411c41f49a04100a000b2004200641849b04100c000b8501002001200346044020002002200110081a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a410336020020004194930436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a2004101d000b3c01027f230041106b22002400200041003602082000410436020c200041086a2000410c6a100120002802082101200041106a24004104410520011b0b7401017f230041106b2202240002402000413f4d04402001200041027410180c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210140c010b200041ffffffff034d04402000410274410272200110100c010b2001410310182000200110100b200241106a24000ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a4103360200200041b48c0436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a41a49b04101d000b1b002000418180014f044020004180800141fc8104100c000b20000b0e0020002001200241a0910410430b5201017f230041206b220124002001410c6a4101360200200141146a4101360200200141a89704360208200141003602002001410136021c200120003602182001200141186a360210200141f48404101d000b910101017f230041306b22022400200241146a41013602002002411c6a4101360200200241a897043602102002410036020820024102360224200220002d0000410274220041d49b046a28020036022c2002200041e89b046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a103d200241306a24000b3c01017f230041206b22022400200241013a00182002200136021420022000360210200241e08c0436020c200241d49904360208200241086a1032000b3f01017f230041106b22022400200242808001370204200241849c0436020020022001047f20024101101841010541000b10182000200228020810191020000b7601047f230041306b2200240020004100360218200042808001370224200041849c043602204100200041206a101020002000290320370310200041086a200041106a220120002802281011200028020c21022000280208200020014100101120022000280200200028020410061a200041306a24000b0d00200041849c0420011007000be00902077f017e230041406a22002400101641ff0171410546044020004180800136022841849c04200041286a1002200041106a200028022841849c044180800141ec8104100b024020002802144104490d00200028021028000041d184a9cc03470d002000410036022020004280800137022c200041849c043602284100200041286a2202101020002000290328370318200041086a200041186a20002802301011200028020c21032000280208200028021821012000200028021c220436022820032001200210002102200020002802282001200441ec8104100b024002400240410c20022002410c4f1b0e0402000001000b200041346a41013602002000413c6a4100360200200041a88204360230200041d4990436023820004100360228200041286a41b08204101d000b200041346a41013602002000413c6a41003602002000419c8504360230200041d4990436023820004100360228200041286a41f48404101d000b230041d0016b22002400200041386a22064100360200200041306a22054200370300200042003703282000428080013702a401200041849c043602a0014106200041a0016a2201101720004180800136028401200041849c0436028001200020002802a80122023602880120004190016a220320004180016a100e2000290390012107200041003602a801200020073703a00141d4990441002001100f200141e0820441171014200020002903a00137039001200041206a200320002802a80110112001200028022020002802241012200041186a41849c044180800120021013200041003602c801200020002903183703c001200041c0016a2001412010142002200220002802c8016a22014b044041908104411c41d08204100a000b200041f8006a2203200136020020004180800136028401200041849c0436028001200020002903800137037020004124360264200041f782043602602000200041286a2201360268200041f0006a2204200041e0006a100d200041a8016a22022003280200360200200020002903703703a00120002001410472360278200041253602742000419b8304360270200041a0016a22012004100d200041c8016a22032002280200360200200020002903a0013703c00120002005360288012000412436028401200041c0830436028001200041c0016a220520004180016a100d20022003280200360200200020002903c0013703a0012000200041346a360298012000412536029401200041e4830436029001200120004190016a100d200041d8006a22042002280200360200200020002903a001370350200020063602c801200041243602c4012000418984043602c001200041d0006a2005100d200041c8006a2004280200220636020020002000290350220737034020024100360200200020073703a001200041106a200120061011200420022802002202360200200020002903a001220737035020002802142104200028021020032002360200200020073703c001200041003602a801200020073703a001200141001018200028022820011010200028022c20011010200028023020011010200028023420011010200028023820011010200020002903a0013703c001200041086a200520002802a801101120042000280208200028020c1005200041d0016a2400101f41004100101e000b41014101101e000b200041043a0028200041286a101b000bae0101027f230041106b220024000240101641ff01712201410546044020004180800136020c41849c042000410c6a10022000200028020c41849c044180800141ec8104100b200028020441044f04402000280200280000419bddf6f405460d020b41014101101e000b200020013a000b2000410b6a101b000b101f230041106b22002400200042808001370204200041849c043602002000410010182000410010184100200028020810191020000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41a48504200241086a1024200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110000450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a103c20032003290310370320200341086a2005200141046a103c20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110000450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002102641000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a20002003200210292004280208200428020c102a200028020821030b200028020420036a2001200210081a2003200220036a22014b044041c08504411c41ac8b04100a000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10260c020b230041106b22042400200441086a20002003410110292004280208200428020c102a200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41c08504411c419c8b04100a000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1023200241206a24000bac0401067f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22062002490d0141082006200320032006491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200441106a2107230041106b220624002004027f0240027f0240200504400240200341004e044020072802080d0120062003102d2006280204210220062802000c040b0c040b20072802042209450440200641086a2003102d200628020c210220062802080c030b20032102410041fc9b04280200220520036a22082005490d021a2007280200210741809c042802002008490440200341ffff036a220841107640002202417f46200241ffff0371200247720d022002411074220520084180807c716a22022005490d0241809c042002360200200321024100200320056a22082005490d031a0b41fc9b04200836020041002005450d021a20052007200910080c020b200420033602040c020b2003210241000b2205044020042005360204200441086a200236020041000c020b20042003360204200441086a410136020041010c010b200441086a410036020041010b360200200641106a240020042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41e08504412141888704100a000b1f00024020014181808080784704402001450d012000102b000b0f0b102c000b900101017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141d88804360218200141003602102001410336022c2001200141286a36022020012001410c6a360228230041206b22002400200041003a0018200041e888043602142000200141106a360210200041e08c0436020c200041d49904360208200041086a1032000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041ac8704360210200041d4990436021820004100360208200041086a41b48704101d000ba10101027f027f410041fc9b04280200220220016a22032002490d001a024041809c042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141809c0420033602004100200120026a22032002490d021a0b41fc9b04200336020020020c010b41000b210320002001360204200020033602000b5301027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a2001102d200228020822030d012001102b000b102c000b2000200336020420002001360200200241106a24000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441948e046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441948e046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441948e046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441948e046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b2102410021042005410471044041d499042104200241d4990441d49904103420026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a28020022012007200410370d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a2007200410370d02200341106a2001200920026b4101103820032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10390d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a28020022012007200410370d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011038200328020c2205418080c400460d00200328020820012802002202200141046a28020022012007200410370d00200220082006200128020c1101000d00200520022001103921000b200341406b240020000f0b41c08b04411c41cc9004100a000b41e08b04412141909704100a000b0300010b0e0020002802001a03400c000b000baa05020a7f017e230041406a220124002001200036020c2001412c6a4102360200200141346a4101360200200141a09a04360228200141003602202001410436023c2001200141386a36023020012001410c6a360238200141106a210641002100230041306b22022400200141206a220441146a2802002107200428020821050240024002400240200241086a027f024002400240200241106a027f024002402004410c6a28020022080e020001040b20070d0241d49904210341000c010b20070d022005280200210320052802040b2200102e200228021021042006200228021422053602042006200436020020052003200010081a200620003602080c040b200428021021090c010b200541046a21032008410374210a2004280210210903402000200020032802006a22004b0d04200341086a2103200a41086b220a0d000b20002007450d011a2000410f4b0d0041002005280204450d011a0b200020006a22034100200020034d1b0b102e2002290308210b200641003602082006200b3702002002200736022c200220093602282002200836022420022005360220200220042902003703182006200241186a10230d020b200241306a24000c020b41c08504411c41809704100a000b230041406a220024002000413336020c200041f888043602082000418486043602142000200241186a360210200041246a41023602002000412c6a41023602002000413c6a4106360200200041948d0436022020004100360218200041023602342000200041306a3602282000200041106a3602382000200041086a360230200041186a41988a04101d000b2001280214210020012802182101024041849c052d000045044041859c052d00004101710d010b410c20002001100322002000410c4f1b410947044041849c0541013a00000b41859c0541013a00000b000b0d0042c69ec29cdfe1e6b0877f0ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d002001200010352206200020016a22082004417c716a200441037110356a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41c492041036200328020c21052003280208210820032003280200200328020422002000417c7141b094041036200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41c08b04411c41c09404100a000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441c08b04411c41f09404100a000b41c08b04411c41d09404100a000b41c08b04411c41e09404100a000b41c08b04411c41a09404100a000b20012002103521020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41c08b04411c41809704100a000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41fc990441232004100a000b39000240027f2002418080c40047044041012000200220012802101100000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41c08b04411c41dc9004100a000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110000450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110000450d000b200441016b0b2000490bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41c08b04411c41f49504100a000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003103422024b0440200941086a2001200020026b4100103841012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001103921000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1100000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1024200341206a24000b1800200128020041a097044105200128020428020c1101000b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1024200241206a24000b0b0020002802002001103a0b990301037f230041406a22022400200028020021034101210002402001280200220441f08c04410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241808d0436023020024100360228200241073602142002200241106a36023820022002410c6a36021020042001200241286a103d450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241808d0436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a103d0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4103360200200241346a4103360200200241c88c043602182002410036021020022000410c6a3602382002200041086a3602302002410236022c200220003602282002200241286a36022020042001200241106a103d21000b200241406b240020000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41b099044121419c9904100a000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41033602002004200336021020044100360208200441033602242004200441206a3602182004200441046a36022820042004360220200441086a2002101d000b0bf61b0300418080040b8101617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f70706f6c6f637a656b2f6769742f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e727300000021000100400000009d0000001100000021000100400000009d0000003000419081040bc118617474656d707420746f206164642077697468206f766572666c6f772f55736572732f70706f6c6f637a656b2f6769742f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000ac0001003e000000e40000001400000021000100400000002401000023000000656e636f756e746572656420756e6578706563746564206572726f720c0101001c0000002100010040000000ed00000017000000300d010041000000c100000037000000300d010041000000c400000009000000546f706963733a3a4576656e7457697468546f70696373546f706963733a3a4576656e7457697468546f706963733a3a66697273745f746f706963546f706963733a3a4576656e7457697468546f706963733a3a7365636f6e645f746f706963546f706963733a3a4576656e7457697468546f706963733a3a74686972645f746f706963546f706963733a3a4576656e7457697468546f706963733a3a666f757274685f746f706963546f706963733a3a4576656e7457697468546f706963733a3a66696674685f746f7069632f55736572732f70706f6c6f637a656b2f6769742f696e6b2f696e746567726174696f6e2d74657374732f637573746f6d2d656e7669726f6e6d656e742f6c69622e72730000002d020100440000002a0000000500000073746f7261676520656e7472792077617320656d7074790084020100170000000900000004000000040000000a0000000b0000000c00000000000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000900000000000000010000000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300000014030100710000008f0100001c0000006361706163697479206f766572666c6f77000000980301001100000014030100710000000d020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000003304010015000000480401000d000000c40301006f0000009f0100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273ab0401006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000002805010071000000350700000d0000002805010071000000a30700000900000000000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320020601002000000022060100120000003a000000d40c010000000000440601000100000044060100010000000900000000000000010000000e00000070616e69636b65642061742027272c207c060100010000007d060100030000003a200000d40c01000000000090060100020000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273dc07010070000000750500000d000000dc07010070000000050600003800000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468206c080100120000007e0801002200000072616e676520656e6420696e64657820b0080100100000007e080100220000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300d008010073000000c005000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820285409010015000000690901002b00000001060100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000ac090100720000004700000015000000ac090100720000004f00000032000000ac090100720000005400000011000000ac090100720000005a00000009000000ac090100720000006400000011000000ac09010072000000660000000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000800a01007100000091000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000040b01007a0000009500000001000000a406010070000000cd010000050000004572726f72000000d40c0100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273280c010074000000900100004f00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041e099040b9b02617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290ad40c0100000000001f0d0100010000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000000300d0100410000005a0000001c000000300d0100410000005a00000009000000300d0100410000005a00000031000000300d0100410000006500000009000000300d010041000000830000001a000000300d0100410000008d00000021000000190000001c0000001600000014000000190000000f0c0100f30b0100dd0b0100c90b0100b00b01", - "build_info": { - "build_mode": "Debug", - "cargo_contract_version": "2.2.1", - "rust_toolchain": "stable-aarch64-apple-darwin", - "wasm_opt_settings": { - "keep_debug_symbols": false, - "optimization_passes": "Z" - } - } - }, - "contract": { - "name": "custom-environment", - "version": "4.2.0", - "authors": ["Parity Technologies "] - }, - "spec": { - "constructors": [ - { - "args": [], - "default": false, - "docs": [], - "label": "new", - "payable": false, - "returnType": { - "displayName": ["ink_primitives", "ConstructorResult"], - "type": 0 - }, - "selector": "0x9bae9d5e" - } - ], - "docs": [], - "environment": { - "accountId": { "displayName": ["AccountId"], "type": 4 }, - "balance": { "displayName": ["Balance"], "type": 3 }, - "blockNumber": { "displayName": ["BlockNumber"], "type": 8 }, - "chainExtension": { "displayName": ["ChainExtension"], "type": 9 }, - "hash": { "displayName": ["Hash"], "type": 6 }, - "maxEventTopics": 5, - "timestamp": { "displayName": ["Timestamp"], "type": 3 } - }, - "events": [ - { - "args": [ - { - "docs": [], - "indexed": true, - "label": "first_topic", - "type": { "displayName": ["Balance"], "type": 3 } - }, - { - "docs": [], - "indexed": true, - "label": "second_topic", - "type": { "displayName": ["Balance"], "type": 3 } - }, - { - "docs": [], - "indexed": true, - "label": "third_topic", - "type": { "displayName": ["Balance"], "type": 3 } - }, - { - "docs": [], - "indexed": true, - "label": "fourth_topic", - "type": { "displayName": ["Balance"], "type": 3 } - }, - { - "docs": [], - "indexed": true, - "label": "fifth_topic", - "type": { "displayName": ["Balance"], "type": 3 } - } - ], - "docs": [ - "An event that would be forbidden in the default environment, but is completely", - "valid in our custom one." - ], - "label": "EventWithTopics" - } - ], - "lang_error": { "displayName": ["ink", "LangError"], "type": 2 }, - "messages": [ - { - "args": [], - "default": false, - "docs": [" Emit an event with many topics."], - "label": "trigger", - "mutates": true, - "payable": false, - "returnType": { "displayName": ["ink", "MessageResult"], "type": 0 }, - "selector": "0x51428a39" - } - ] - }, - "storage": { - "root": { - "layout": { "struct": { "fields": [], "name": "Topics" } }, - "root_key": "0x00000000" - } - }, - "types": [ - { - "id": 0, - "type": { - "def": { - "variant": { - "variants": [ - { "fields": [{ "type": 1 }], "index": 0, "name": "Ok" }, - { "fields": [{ "type": 2 }], "index": 1, "name": "Err" } - ] - } - }, - "params": [ - { "name": "T", "type": 1 }, - { "name": "E", "type": 2 } - ], - "path": ["Result"] - } - }, - { "id": 1, "type": { "def": { "tuple": [] } } }, - { - "id": 2, - "type": { - "def": { - "variant": { - "variants": [{ "index": 1, "name": "CouldNotReadInput" }] - } - }, - "path": ["ink_primitives", "LangError"] - } - }, - { "id": 3, "type": { "def": { "primitive": "u32" } } }, - { "id": 4, "type": { "def": { "array": { "len": 16, "type": 5 } } } }, - { "id": 5, "type": { "def": { "primitive": "u8" } } }, - { - "id": 6, - "type": { - "def": { - "composite": { "fields": [{ "type": 7, "typeName": "[u8; 32]" }] } - }, - "path": ["ink_primitives", "types", "Hash"] - } - }, - { "id": 7, "type": { "def": { "array": { "len": 32, "type": 5 } } } }, - { "id": 8, "type": { "def": { "primitive": "u64" } } }, - { - "id": 9, - "type": { - "def": { "variant": {} }, - "path": ["ink_env", "types", "NoChainExtension"] - } - } - ], - "version": "4" -} diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index fc0d7da8c516..25f12b340c9d 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -1,7 +1,7 @@ // Copyright 2017-2023 @polkadot/api-contract authors & contributors // SPDX-License-Identifier: Apache-2.0 -import type { Bytes, PortableRegistry } from '@polkadot/types'; +import type { Bytes } from '@polkadot/types'; import type { ChainProperties, ContractConstructorSpecLatest, ContractEnvironment, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo } from '@polkadot/types/interfaces'; import type { Codec, Registry } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; @@ -53,23 +53,7 @@ function getLatestMeta (registry: Registry, json: Record): Cont return converter[1](registry, metadata[`as${converter[0]}`]); } -function getEnvTypes (env: ContractEnvironment | undefined, lookup: PortableRegistry) { - if (env) { - const keys = Object.keys(env); - - return Object.values(env).map((t: unknown, i) => { - if (typeof t === 'object' && t !== null && 'type' in t) { - return { [keys[i]]: lookup.getTypeDef(t.type as number) }; - } - - return { [keys[i]]: t }; - }); - } - - return []; -} - -function parseJson (json: Record, chainProperties?: ChainProperties): [Record, Registry, ContractMetadataLatest, ContractProjectInfo, { [x: string]: unknown }[]] { +function parseJson (json: Record, chainProperties?: ChainProperties): [Record, Registry, ContractMetadataLatest, ContractProjectInfo] { const registry = new TypeRegistry(); const info = registry.createType('ContractProjectInfo', json) as unknown as ContractProjectInfo; const latest = getLatestMeta(registry, json); @@ -87,17 +71,7 @@ function parseJson (json: Record, chainProperties?: ChainProper lookup.getTypeDef(id) ); - let env: { [x: string]: unknown }[] = []; - - try { - const { spec: { environment } } = json as unknown as ContractMetadataLatest; - - env = getEnvTypes(environment, lookup); - } catch (e) { - console.error(e); - } - - return [json, registry, latest, info, env]; + return [json, registry, latest, info]; } export class Abi { @@ -108,22 +82,21 @@ export class Abi { readonly messages: AbiMessage[]; readonly metadata: ContractMetadataLatest; readonly registry: Registry; - readonly environment?: { [x: string]: unknown }[]; + readonly environment: ContractEnvironment; constructor (abiJson: Record | string, chainProperties?: ChainProperties) { - [this.json, this.registry, this.metadata, this.info, this.environment] = parseJson( + [this.json, this.registry, this.metadata, this.info] = parseJson( isString(abiJson) ? JSON.parse(abiJson) as Record : abiJson, chainProperties ); this.constructors = this.metadata.spec.constructors.map((spec: ContractConstructorSpecLatest, index) => { - const isDefault = 'default' in spec ? spec.default.isTrue : undefined; - const typeSpec = 'returnType' in spec ? spec.returnType.unwrapOr(null) : null; + const typeSpec = spec.returnType.unwrapOr(null); return this.#createMessage(spec, index, { isConstructor: true, - isDefault, + isDefault: spec.default.isTrue, isPayable: spec.payable.isTrue, returnType: typeSpec ? this.registry.lookup.getTypeDef(typeSpec.type) @@ -136,10 +109,9 @@ export class Abi { ); this.messages = this.metadata.spec.messages.map((spec: ContractMessageSpecLatest, index): AbiMessage => { const typeSpec = spec.returnType.unwrapOr(null); - const isDefault = 'default' in spec ? spec.default.isTrue : undefined; return this.#createMessage(spec, index, { - isDefault, + isDefault: spec.default.isTrue, isMutating: spec.mutates.isTrue, isPayable: spec.payable.isTrue, returnType: typeSpec @@ -147,6 +119,7 @@ export class Abi { : null }); }); + this.environment = this.metadata.spec.environment; } /** @@ -242,8 +215,6 @@ export class Abi { #createMessage = (spec: ContractMessageSpecLatest | ContractConstructorSpecLatest, index: number, add: Partial = {}): AbiMessage => { const args = this.#createArgs(spec.args, spec); const identifier = spec.label.toString(); - const isDefault = 'default' in spec ? spec.default.isTrue : undefined; - const message = { ...add, args, @@ -254,7 +225,7 @@ export class Abi { }), identifier, index, - isDefault, + isDefault: spec.default.isTrue, method: stringCamelCase(identifier), path: identifier.split('::').map((s) => stringCamelCase(s)), selector: spec.selector, From c9ada59e49d2958d9c5496191511b642c69203c6 Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Tue, 23 May 2023 17:48:45 +0200 Subject: [PATCH 08/11] update fixtures --- .../compare/ink_v4_flipperContract.test.json | 146 ++++++++ .../compare/ink_v4_flipperMetadata.test.json | 146 ++++++++ .../contracts/ink/v4/flipper.contract.json | 105 +----- .../src/test/contracts/ink/v4/flipper.json | 331 +++++++++++++++++- .../src/test/contracts/ink/v4/flipper.wasm | Bin 22353 -> 12526 bytes 5 files changed, 605 insertions(+), 123 deletions(-) diff --git a/packages/api-contract/src/test/compare/ink_v4_flipperContract.test.json b/packages/api-contract/src/test/compare/ink_v4_flipperContract.test.json index e7e9211fa21f..09a25452177a 100644 --- a/packages/api-contract/src/test/compare/ink_v4_flipperContract.test.json +++ b/packages/api-contract/src/test/compare/ink_v4_flipperContract.test.json @@ -5,5 +5,151 @@ "type": "bool", "docs": [], "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 1, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 4, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 9, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 10, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" } ] \ No newline at end of file diff --git a/packages/api-contract/src/test/compare/ink_v4_flipperMetadata.test.json b/packages/api-contract/src/test/compare/ink_v4_flipperMetadata.test.json index e7e9211fa21f..09a25452177a 100644 --- a/packages/api-contract/src/test/compare/ink_v4_flipperMetadata.test.json +++ b/packages/api-contract/src/test/compare/ink_v4_flipperMetadata.test.json @@ -5,5 +5,151 @@ "type": "bool", "docs": [], "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 1, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 4, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 9, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 10, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" } ] \ No newline at end of file diff --git a/packages/api-contract/src/test/contracts/ink/v4/flipper.contract.json b/packages/api-contract/src/test/contracts/ink/v4/flipper.contract.json index a00fe3ac47a8..d796e45694da 100644 --- a/packages/api-contract/src/test/contracts/ink/v4/flipper.contract.json +++ b/packages/api-contract/src/test/contracts/ink/v4/flipper.contract.json @@ -1,104 +1 @@ -{ - "source": { - "hash": "0xf051c631190ac47f82e280ba763df932210f6e2447978e24cbe0dcc6d6903c7a", - "language": "ink! 4.0.0-alpha.1", - "compiler": "rustc 1.63.0", - "wasm": "0x0061736d0100000001590e60037f7f7f017f60027f7f017f60027f7f0060047f7f7f7f0060037f7f7f0060057f7f7f7f7f0060017f0060000060017f017f60017f017e6000017f60057f7f7f7f7f017f60047f7f7f7f017f60077f7f7f7f7f7f7f017f02a30107057365616c30127365616c5f64656275675f6d6573736167650001057365616c31107365616c5f7365745f73746f726167650000057365616c30107365616c5f6765745f73746f726167650000057365616c300a7365616c5f696e7075740002057365616c300b7365616c5f72657475726e0004057365616c30167365616c5f76616c75655f7472616e73666572726564000203656e76066d656d6f727902010210034948000201060601020800020305040a0207060705010000040101000607020201090203010b010c030001050304050203080101040400010100050303030001010d0101010101030503040501700116160608017f01418080040b071102066465706c6f7900150463616c6c0017091b010041010b150b36374928243c44464728094a091b1d1e094809250ac06e482b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b840101017f230041406a22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a2900003703002002420137030820022001290000370310200241386a41808001360200200241aebd0436023420024100360230200241106a200241306a20001008410110011a200241406b24000b7601037f230041106b22022400200041086a280200210320002802042104200220013a000f20024101200420031010200228020020022802042002410f6a410141dcb7041011200345044041e3b604412341ecb7041012000b2000200341016b3602082000200441016a360204200241106a240020040b0300010b4801017f230041206b22012400200141146a410136020020014201370204200141a0b9043602002001410136021c200120003602182001200141186a360210200141cc8204100c000b860101017f230041306b220224002002411c6a41013602002002420137020c200241a0b90436020820024102360224200220002d0000410274220041fcbc046a28020036022c200220004190bd046a280200360228200141186a2802002001411c6a2802002002200241206a3602182002200241286a360220200241086a103a200241306a24000bd40402087f017e230041206b22022400200241013a00182002200136021420022000360210200241ac8c0436020c200241a0b904360208230041406a220124002001200241086a36020c200141346a41013602002001420237022420014188b7043602202001410436023c2001200141386a36023020012001410c6a360238200141106a210441002100230041306b22022400200141206a220541146a28020021062005280200210302400240024002400240027f02400240200528020422080e020001030b20060d0241a0b9040c010b20060d012003280204210020032802000b2106200241106a2000102320022802102103200420022802143602042004200336020020032006200010061a200420003602080c010b200841037422090440200341046a210703402000200020072802006a22004b0d03200741086a2107200941086b22090d000b0b200541086a2105200241086a027f20002006450d001a02402008450d0020032802040d00410020004110490d011a0b4100200020006a2207200020074b1b0b10232002290308210a200441003602082004200a3702002002412c6a2006360200200241286a200541086a2802003602002002200836021c20022003360218200220052902003703202004200241186a10190d020b200241306a24000c020b41f08304411c4180b0041012000b41f085044133200241186a41b48404419087041018000b2001280210210020012802182101024041acbd042d000045044041adbd042d00004101710d010b200020011000410947044041acbd0441013a00000b41adbd0441013a00000b000b4501017f230041106b22012400200141003a000f027f20002001410f6a4101100e4504404101410220012d000f22004101461b410020001b0c010b41020b200141106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206104b200120022003280208200328020c41b4bc0410112003200220042006104b200020032903003702000b200341106a240020050b4401027f230041106b220224002002410036020c024020012002410c6a4104100e4504402000200228020c3600010c010b410121030b200020033a0000200241106a24000b2000200120034d044020002001360204200020023602000f0b200120031033000b7b002001200346044020002002200110061a0f0b230041306b2200240020002003360204200020013602002000411c6a41023602002000412c6a41053602002000420337020c200041ec9704360208200041053602242000200041206a360218200020003602282000200041046a360220200041086a2004100c000b4601017f230041206b22032400200341146a4100360200200341a0b904360210200342013702042003200136021c200320003602182003200341186a36020020032002100c000b6c02027f027e230041206b22002400200041086a220142003703002000420037030020004110360214200020003602102000411036021c20002000411c6a1005200041106a200028021c10142001290300210220002903002103200041206a2400410541042002200384501b0b3101017f230041106b22022400200241086a200120002802002000280204101020002002290308370200200241106a24000b890301057f230041306b220024000240101341ff0171410546044020004180800136022c200041aebd04360228200041286a1016200020002903283703082000200041086a100f20002d00000d0120002800012201411876210220014110762103200141087621040240200141ff01712201419b01470440200141ed0147200441ff017141cb004772200341ff0171419d01472002411b4772720d03200041206a4200370300200041186a4200370300200041106a4200370300200042003703084100200041086a10070c010b200441ff017141ae0147200341ff0171419d014772200241de0047720d02200041086a100d41ff017122014102460d02200041206a4200370300200041186a4200370300200041106a4200370300200042003703082001200041086a10070b200041306a24000f0b200041043a0008200041086a100a000b200041033a00002000411c6a41013602002000420137020c200041a483043602082000410136022c2000200041286a36021820002000360228200041086a41cc8204100c000b3301017f230041106b220124002001200028020436020c20002802002001410c6a10032000200128020c1014200141106a24000bc90501057f230041d0006b22002400024002400240101341ff01712201410546044020004180800136023c200041aebd04360238200041386a101620002000290338370308200041306a200041086a100f20002d00300d0320002800312201411876210220014110762103200141087621040240200141ff01712201412f470440200141e30047200441ff0171413a4772200341ff017141a50147720d0541012101200241d100460d010c050b200441ff017141860147200341ff017141db0047720d0441002101200241d901470d040b200041186a4200370300200041206a4200370300200041286a42003703002000420037031020004201370308200041808001360234200041aebd04360230200041808001360238200041106a41aebd04200041386a10022102200041306a200028023810140240024002402002410c4f0d00200241027441ccbc046a2802000e0402000001000b200041cc006a4100360200200041a0b9043602482000420137023c200041848204360238200041386a418c8204100c000b230041106b220124002001411736020c200141f08004360208230041206b22002400200041146a410136020020004201370204200041a0b9043602002000410236021c2000200141086a3602182000200041186a360210200041888104100c000b20002000290330370338200041386a100d41ff017122024102460d022001450d0120024541dc82041007200041d0006a24000f0b200020013a0008200041086a100a000b230041106b22002400200041086a41808001360200200041aebd0436020420004100360200410020002002410047100841011004000b200041003a0038418080044127200041386a4198810441e080041018000b200041033a00302000411c6a41013602002000420137020c200041d083043602082000410136023c2000200041386a3602182000200041306a360238200041086a41cc8204100c000b7c01017f230041406a220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41033602002005420237021c200541e08c04360218200541023602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004100c000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41d88304200241086a101a200241206a24000bfc0301057f230041406a22032400200341346a2001360200200341033a00382003428080808080043703182003200036023041002101200341003602282003410036022002400240024020022802082200450440200241146a28020041ffffffff0171220641016a210520022802102104410021000340200541016b2205450d02200228020020006a220141046a28020022070440200328023020012802002007200328023428020c1100000d040b200020046a2101200041086a21002001280200200341186a200141046a280200110100450d000b0c020b2002410c6a28020022064105742105200641ffffff3f71210603402005450d01200228020020016a220441046a28020022070440200328023020042802002007200328023428020c1100000d030b200320002d001c3a003820032000290204422089370318200341106a20022802102204200041146a103820032003290310370320200341086a20042000410c6a103820032003290308370328200141086a2101200541206b210520002802002107200041206a2100200420074103746a2204280200200341186a2004280204110100450d000b0c010b4100210020062002280204492201450d012003280230200228020020064103746a410020011b22012802002001280204200328023428020c110000450d010b410121000b200341406b240020000b0f00200028020020012002101c41000b5801017f20022000280204200028020822036b4b0440200020032002101f1020200028020821030b200028020020036a2001200210061a2003200220036a22014b044041f08304411c41a088041012000b200020013602080bbd0201027f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d41040b101c0c020b200020034101101f1020200028020821030b200028020020036a20013a0000200341016a22012003490d01200020013602080b200241106a240041000f0b41f08304411c419088041012000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1019200241206a24000bdd0301077f230041206b220324000240027f41002001200120026a22014b0d001a2000280204220220026a22042002490d012004200120012004491b22014108200141084b1b210120032002047f200320023602142003200028020036021041010541000b360218200341106a210641002102230041106b220424002003027f200141004e0440027f02402006280208044020062802042208450440200441086a2001102220042802082107200428020c0c030b200141a4bd04280200220520016a22022005490d021a2006280200210641a8bd042802002002490440200141ffff036a220941107640002202417f46200241ffff0371200247720d022002411074220520094180807c716a22022005490d0241a8bd0420023602002001200120056a22022005490d031a0b41a4bd04200236020020012005450d021a2005200620081006210720010c020b2004200110222004280200210720042802040c010b20010b2102200704402003200736020441000c020b20032001360204410121020b41010b360200200341086a2002360200200441106a240020032802004504402003280204210220002001360204200020023602004181808080780c010b200341086a2802000b200341206a24000f0b41908404412141b485041012000b1b00024020004181808080784704402000450d01000b0f0b1021000b3c01017f230041206b220024002000411c6a4100360200200041a0b9043602182000420137020c200041d88504360208200041086a41e08504100c000ba90101027f027f41012001450d001a410041a4bd04280200220220016a22032002490d001a024041a8bd042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141a8bd0420033602004100200120026a22032002490d021a0b41a4bd04200336020020020c010b41000b210320002001360204200020033602000b4f01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20011022200228020822030d01000b1021000b2000200136020420002003360200200241106a24000b0e0020002802001a03400c000b000b0d0042dbfaf5cda49bcbb5f3000b10002000200141f0930441e09304104d0b1000200020012002200341b08804104c0b9d0302047f027e027f20003502002106230041306b22032400412721000240024020064290ce00540440200621070c010b0240034020064290ce008021072000200041046b22004c0d01200341096a20006a200620074290ce007e7da7220241ffff037141e4006e220441017441ee8e046a2f00003b00002000200041026a22054c0440200341096a20056a2002200441e4006c6b41ffff037141017441ee8e046a2f00003b0000200642ffc1d72f5620072106450d030c010b0b41e08804411c4190b0041012000b0c010b2007a7220241e3004b04402000200041026b22004c0d01200341096a20006a2007a72202200241ffff037141e4006e220241e4006c6b41ffff037141017441ee8e046a2f00003b00000b02402002410a4f04402000200041026b22004c0d02200341096a20006a200241017441ee8e046a2f00003b00000c010b2000200041016b22004c0d01200341096a20006a200241306a3a00000b412720006b220241274b04400c010b200141a0b9044100200341096a20006a20021029200341306a24000c010b41b0880441214190b0041012000b0b9c0401077f230041106b22072400418080c400210920042105024020002802002206410171450d002004200441016a22054d0440412b21090c010b41e08804411c41a891041012000b0240024002400240200641047145044041002101200521060c010b2001200120026a102a20056a22062005490d010b2000280208450440410121052000200920012002102b0d032000280218200320042000411c6a28020028020c11000021050c030b024002402000410c6a280200220820064b044020002d00004108710d01200820066b220620084b0d02410121052007200020064101102c20072802002206418080c400460d05200728020421082000200920012002102b0d052000280218200320042000411c6a28020028020c1100000d05200620082000102d21050c050b410121052000200920012002102b0d042000280218200320042000411c6a28020028020c11000021050c040b2000280204210a2000413036020420002d0020210b41012105200041013a00202000200920012002102b0d03200820066b220120084b0d02200741086a200020014101102c20072802082201418080c400460d03200728020c21022000280218200320042000411c6a28020028020c1100000d03200120022000102d0d032000200b3a00202000200a360204410021050c030b41b08804412141d891041012000b41e08804411c41b891041012000b41b08804412141c891041012000b200741106a240020050be705010a7f230041206b2202240002400240200120006b22054110490d00200041036a417c7120006b220120054b0d00200241086a4100200120001027200228020c210720022802082109200220012005200010274101210141042103200228020421042002280200210a0240034020012003200368762203200120034b22061b22082003200120061b22016b220320084b0d0120030d000b20010440410420016e2103200141044d0440200420042004200420036e220620036c6b22086b220b4f04402001410147200320044b72200741044b720d0420092007102e2200200a200b6a2008102e6a220420004f04400240024003402006450d09200241106a2200200a2006200641c001200641c001491b41e89504102f200228021c21062002280218210a20002002280210200228021422002000417c7141ec9604102f200228021c210920022802182107024020022802142201450440410021010c010b2002280210220020014102746a21084100210103402000220541106a2100410021030240034020012001200320056a280200220b417f73410776200b410676724181828408716a22014d0440200341046a22034110470d010c020b0b41e08804411c41c899041012000b20002008470d000b0b20042004200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22044b0d012009450d000b200941027421004100210103402001200120072802002205417f734107762005410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20042004200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22044d0d0841e08804411c41f899041012000b41e08804411c41d899041012000b41e08804411c41e899041012000b41e08804411c41b899041012000b41b08804412141b498041012000b41e089044119419498041012000b41e089044119418498041012000b41b08804412141a498041012000b20002005102e21040b200241206a240020040b4b000240027f2001418080c4004704404101200028021820012000411c6a2802002802101101000d011a0b20020d0141000b0f0b2000280218200220032000411c6a28020028020c1100000bb20101027f20022105024002400240200320012d0020220320034103461b41ff017141016b0e03010001020b2002200241016a22034d044020034101762105200241017621040c020b41e08804411c41e891041012000b41002105200221040b200441016a21022001411c6a2802002103200128020421042001280218210102400340200241016b2202450d01200120042003280210110100450d000b418080c40021040b20002005360204200020043602000b4701027f2002411c6a28020021032002280218210441002102027f0340200120012002460d011a200241016a2102200420002003280210110100450d000b200241016b0b2001490b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41e08804411c4180b0041012000b5d02017f027e230041106b22052400200220034f0440200541086a41002003200110302005290308210620052003200220011030200529030021072000200637020020002007370208200541106a24000f0b41e3b604412320041012000b3301017f2002200220016b22044f0440200020043602042000200320014102746a3602000f0b41b0880441214194bb041012000b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41053602002003420237020c200341d88b04360208200341053602242003200341206a360218200320033602282003200341046a360220200341086a2002100c000bbb0101017f230041106b220524000240200120024d0440200220044d0d01200220041033000b230041306b2200240020002002360204200020013602002000411c6a41023602002000412c6a41053602002000420237020c200041d49404360208200041053602242000200041206a3602182000200041046a36022820002000360220200041086a41e49404100c000b200541086a2001200220031027200528020c21012000200528020836020020002001360204200541106a24000b10002000200141a0940441909404104d0b3f01017f024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b200221040b20002001360204200020043602000bb70101047f200028020022012000280204460440418080c4000f0b2000200141016a36020020012d00002203411874411875410048047f2000200141026a36020020012d0001413f7121022003411f712104200341df014d044020044106742002720f0b2000200141036a36020020012d0002413f712002410674722102200341f00149044020022004410c74720f0b2000200141046a3602002004411274418080f0007120012d0003413f71200241067472720520030b0bf103010a7f230041206b2202240020002802042105200028020021030240024002402001280208220a4101472001280210220441014771450440024020044101470d00200141146a280200210420022003360214200241186a200320056a220636020020024100360210200241106a410472220b1035418080c400460d00200441016b21002004452109200321040340200620046b220720022802142204200228021822066b6a220820074b0d032002280210220720086a22082007490d042002200836021020094504402000452109200041016b2100200b1035418080c400460d020c010b0b200241086a2007200320051034200228020c2005200228020822001b21052000200320001b21030b200a4504402001280218200320052001411c6a28020028020c11000021000c040b2001410c6a28020022002003200320056a102a22044d04402001280218200320052001411c6a28020028020c11000021000c040b20022001200020046b4100102c4101210020022802002204418080c400460d03200228020421062001280218200320052001411c6a28020028020c1100000d03200420062001102d21000c030b2001280218200320052001411c6a28020028020c11000021000c020b41b08804412141f89a041012000b41e08804411c41889b041012000b200241206a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044106470d0120012802000b2802002104410121030b20002004360204200020033602000b280020024181014f044020024180011026000b200041800120026b3602042000200120026a3602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a101a200341206a24000b850201037f23004190016b22022400027f02402001280200220341107145044020034120710d012000200110280c020b2000280200210041ff0021030340200241106a20036a413041d7002000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b200241086a200241106a200341016a1039200141ec8e0441022002280208200228020c10290c010b2000280200210041ff0021030340200241106a20036a413041372000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b2002200241106a200341016a1039200141ec8e0441022002280200200228020410290b20024190016a24000b6c01027f230041206b2202240041012103024020002001103b0d002002411c6a4100360200200241a0b9043602182002420137020c200241fc8904360208200141186a2802002001411c6a280200200241086a103a0d00200041046a2001103b21030b200241206a240020030b9508010c7f230041e0006b22032400027f024020020440200341d8006a210d2000280204210b2000280200210c2000280208210a0340200a2d00000440200c41f08c044104200b28020c1100000d030b2003410a3602582003428a808080103703502003200236024c200341003602482003200236024420032001360240200341386a2001200241002002103e0240024020032802382207450d00200328023c210503400240024002400240024002402003280254220041016b220420004d0440200320046a41d8006a2d00002108200541084f0440200741036a417c7120076b2200450440410021040c030b200341306a410020052000200020054b1b220420072005103220032802342206450d0220032802302109410021000340200020096a2d00002008460d04200041016a22002006470d000b0c020b2005450d08410021000340200020076a2d00002008460d03200041016a22002005470d000b0c080b41b08804412141909d041012000b0240024002402005200541086b22004f0440200020044f0d010c020b41b08804412141ec92041012000b200841818284086c210902400340200441046a22062004490d01200420076a280200200973220e417f73200e41818284086b71200620076a2802002009732206417f73200641818284086b7172418081828478710d022004200441086a22064d04402000200622044f0d010c040b0b41e08804411c418c93041012000b41e08804411c41fc92041012000b200421060b20052006490d01200341286a2006200520071027200328022c2204450d06200328022821054100210003402008200020056a2d00004704402004200041016a2200470d010c080b0b200020066a220020064f0d0041e08804411c419c93041012000b2000200041016a22044b0d012004200328024822046a22002004490d0220032000360248200020032802542204490d03200341206a20032802402003280244200020046b22052000103e20032802202200450d0320032802242104200341186a41002003280254200d410410322004200328021c470d03027f20032802182106034041002004450d011a200441016b210420062d0000210720002d00002108200041016a2100200641016a210620072008460d000b200820076b0b0d03200a41013a0000200541016a220020054f0d0641e08804411c41e88d041012000b200620051026000b41e08804411c41a09d041012000b41e08804411c41b09d041012000b200341106a200328024020032802442003280248200328024c103e20032802142105200328021022070d000b0b200a41003a0000200221000b200341086a200120022000103f200c2003280208200328020c200b28020c1100000d022003200020012002104020032802002101200328020422020d000b0b41000c010b41010b200341e0006a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011027200528020c2107200528020821060b2000200736020420002006360200200541106a24000b4c01027f230041106b22042400200441086a20032001200210342004280208220545044020012002410020031041000b200428020c21012000200536020020002001360204200441106a24000b6401017f024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b2003200320016b220449044041b088044121418c9c041012000b200020043602042000200120026a3602000f0b20022003200120031041000b8c0601027f230041106b220424002004200336020c200420023602082004200136020420042000360200200428020021052004280204210320042802082100200428020c210123004180016b220224002002200136021c20022000360218200241106a200520032005200341800210422204103f20022002290310370320200241054100200320044b22041b36022c200241af9e0441a0b90420041b36022802402002200020034d047f200120034d0d0120010520000b360238200241d4006a4103360200200241ec006a4102360200200241e4006a410236020020024203370244200241d89e043602402002410536025c2002200241d8006a3602502002200241286a3602682002200241206a3602602002200241386a360258200241406b41f09e04100c000b0240200020014d0440024002402000450d00200020034f044020002003460d010c020b200020056a2c00004140480d010b200121000b20022000360230200241086a2005200320001042220020052003104020022002280208220136025820022001200228020c6a36025c2002200241d8006a103541d49f0410432201360234027f41012001418001490d001a41022001418010490d001a41034104200141808004491b0b20006a220120004f0d0141e08804411c41e49f041012000b200241f4006a4102360200200241ec006a4102360200200241e4006a4105360200200241d4006a410436020020024204370244200241a49f043602402002410536025c2002200241d8006a3602502002200241286a3602702002200241206a36026820022002411c6a3602602002200241186a360258200241406b41c49f04100c000b2002200136023c20022000360238200241d4006a4105360200200241fc006a4102360200200241f4006a4102360200200241ec006a4107360200200241e4006a410836020020024205370244200241a8a0043602402002410536025c2002200241d8006a3602502002200241286a3602782002200241206a3602702002200241386a3602682002200241346a3602602002200241306a360258200241406b41d0a004100c000b8b0101037f230041106b220324000240200120024b0440200341086a4100200241036b220420022004491b2204200241016a200020011032200328020841016b2100200328020c2101034020010440200020016a200141016b220221012c00004140480d010b0b200220046a22012004490d010b200341106a240020010f0b41e08804411c41e0a0041012000b1a002000418080c40046044041e88b04412b20011012000b20000b930a02097f017e4101210602402001280218220741272001411c6a28020028021022081101000d00410221010240024002400240024002402000280200220241096b0e050402010103000b2002450440413021020c050b2002412746200241dc0046720d040b2002410b74210441002101412021004120210302400240024002400240024002400240024002400340200120004101766a22002001490d0302402004200041027441a0b0046a280200410b7422054d044020042005460d03200021030c010b200041016a22012000490d050b2003200320016b22004f044020012003490d010c030b0b41b088044121419c97041012000b200041016a21010b2001411f4b0d022001410274220341a0b0046a280200411576210002402001411f470440200341a4b0046a280200411576220420006b220320044d0d0141b08804412141a4ae041012000b41c30520006b220341c4054f0d040b4100210520022001200141016b22044f047f200441204f0d05200441027441a0b0046a28020041ffffff00710541000b6b220a20024b0d05200341016b220520034b0d06200020036a41016b210302402005450d00200041c305200041c3054b1b210941002101034020002009460d09024020012001200041a0b1046a2d00006a22044d04402004200a4d0d01200021030c030b41e08804411c41e4ae041012000b200041016a210020042101200541016b22050d000b0b2003410171047e200241017267410276410773ad4280808080d0008405024020024120490d0041012101200241ff00490d0d02402002418080044f04402002418080084f0d01200241bba704412a418fa80441c00141cfa90441b60310450d0f0c020b2002419ca204412841eca20441a002418ca50441af0210450d0e0c010b200241feffff0071419ef00a46200241ef83384b72200241e0ffff007141e0cd0a46200241b9ee0a6b4107497272200241b09d0b6b41714b20024180f00b6b41e0674b7220024180800c6b419d744b72720d002002418082386b41cba454490d0d0b200241017267410276410773ad4280808080d000840b210b410321010c0b0b41e08804411c41fc96041012000b41e08804411c418c97041012000b200141204184ae041031000b41b0880441214194ae041012000b2004412041f4ae041031000b41b08804412141b4ae041012000b41b08804412141c4ae041012000b200941c30541d4ae041031000b41ee0021020c020b41f20021020c010b41f40021020b0240034002402001210341002101200221000240024002400240200341016b0e03030200010b02400240024002400240200b422088a741ff017141016b0e050004010203050b200b42ffffffff8f6083210b41fd002100410321010c060b200b42ffffffff8f608342808080802084210b41fb002100410321010c050b200b42ffffffff8f608342808080803084210b41f5002100410321010c040b200b42ffffffff8f60834280808080c00084210b41dc002100410321010c030b200ba7220141ffffffff03712001470d032001410274220041204f0d0520022000411c7176410f712200413072200041d7006a2000410a491b41948b04104321002001450440200b42ffffffff8f608342808080801084210b410321010c030b200b42017d42ffffffff0f83200b4280808080708384210b410321010c020b20074127200811010021060c050b41dc002100410121010b200720002008110100450d010c030b0b41808904412141f48a041012000b41b08904412441848b041012000b20060b910301087f230041106b220a240041012107024002402002450d00200120024101746a210b20004180fe0371410876210c200141026a210820012d00012102200041ff0171210e03402002210d0240200c20012d000022014704402008200b462001200c4b720d030c010b200a41086a2009200d200320041032200a2802082102200a28020c2101024003402001450d01200141016b210120022d0000200241016a2102200e470d000b410021070c040b2008200b460d020b20082d000121022008220141026a2108200d2209200220096a22024d0d000b41e08804411c41eca1041012000b2006450d00200520066a2103200041ffff03712102024003400240200541016a210020052d00002201411874411875220441004e047f20000520002003460d0120052d0001200441ff0071410874722101200541026a0b2105200141004a2002200220016b22024a730d0220024100480d032007410173210720032005470d010c030b0b41e88b04412b41fca1041012000b41b088044121418ca2041012000b200a41106a240020074101710b5b01027f230041206b220224002001411c6a28020021032001280218200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a101a200241206a24000b0b002000280200200110360b1b00200128021841c4bc0441052001411c6a28020028020c1100000bfe0201037f230041406a2202240020002802002103410121000240200141186a280200220441bc8c04410c2001411c6a280200220128020c1100000d0002402003280208220004402002200036020c410121002002413c6a41013602002002420237022c200241cc8c04360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a103a450d010c020b20032802002200200328020428020c110900428be4e795f2b88fd7b87f520d002002200036020c410121002002413c6a41013602002002420237022c200241cc8c043602282002410a3602142002200241106a36023820022002410c6a36021020042001200241286a103a0d010b200328020c2100200241246a41033602002002413c6a410b360200200241346a410b36020020024203370214200241948c0436021020022000410c6a3602382002200041086a3602302002410236022c200220003602282002200241286a36022020042001200241106a103a21000b200241406b240020000bd90401017f230041106b22022400024002400240024002400240024002400240024002400240024020002d000041016b0e0b0102030405060708090a0b000b410121002001280218419ab90441062001411c6a28020028020c1100000d0b024020012d0000410471450440200128021841fc8d044101200128021c28020c1100000d0d200128021841c4bc044105200128021c28020c110000450d010c0d0b200128021841fa8d044102200128021c28020c1100000d0c200241013a000f200241086a2002410f6a36020020022001290218370300200241c4bc044105103d0d0c200241f88d044102103d0d0c0b200128021841f989044101200128021c28020c11000021000c0b0b2001280218418db904410d2001411c6a28020028020c11000021000c0a0b200128021841ffb804410e2001411c6a28020028020c11000021000c090b200128021841f4b804410b2001411c6a28020028020c11000021000c080b200128021841dab804411a2001411c6a28020028020c11000021000c070b200128021841ccb804410e2001411c6a28020028020c11000021000c060b200128021841bcb80441102001411c6a28020028020c11000021000c050b200128021841b0b804410c2001411c6a28020028020c11000021000c040b200128021841a5b804410b2001411c6a28020028020c11000021000c030b2001280218419eb80441072001411c6a28020028020c11000021000c020b2001280218418fb804410f2001411c6a28020028020c11000021000c010b200128021841fcb70441132001411c6a28020028020c11000021000b200241106a240020000b1000200020012002200341b0bb04104c0b2e01017f2002200220016b22054f0440200020053602042000200120036a3602000f0b200441214194bb041012000b6901017f230041306b2204240020042001360204200420003602002004411c6a41023602002004412c6a41053602002004420237020c20042003360208200441053602242004200441206a3602182004200441046a36022820042004360220200441086a2002100c000b0bf63c0600418080040bd902636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e7472792f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f73746f726167652f7372632f7472616974732f6d6f642e72732700010039000000a20000000a00000073746f7261676520656e7472792077617320656d707479002700010039000000a30000000a0000000c00000001000000010000000d0000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273656e636f756e746572656420756e6578706563746564206572726f72e80001001c000000a800010040000000ee000000170000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6578616d706c65732f666c69707065722f6c69622e72731c0101003000000008000000050041fc82040bd5056469737061746368696e6720696e6b2120636f6e7374727563746f72206661696c65643a200000007c010100250000006469737061746368696e6720696e6b21206d657373616765206661696c65643a20000000ac010100210000000e00000004000000040000000f0000001000000011000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000120000000000000001000000130000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727344020100700000008a0100001c0000006361706163697479206f766572666c6f77000000c402010011000000440201007000000005020000050000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e727300230301006c00000064020000200000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e7273a003010070000000e90600000d000000a0030100700000002a07000009000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041e088040b41617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770041b089040b24617474656d707420746f2073686966742072696768742077697468206f766572666c6f770041e089040bc131617474656d707420746f20646976696465206279207a65726f292e2efa040100020000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f636861722f6d6f642e72730405010070000000bc000000350000000405010070000000bc000000210000000405010070000000bd00000033000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973200000a405010020000000c40501001200000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75653aa01c010000000000130601000100000013060100010000001400000000000000010000001500000070616e69636b65642061742027272c2048060100010000004906010003000000603a2000a01c0100000000005d06010002000000202020202f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6275696c646572732e7273740601007400000028000000150000002c0a280a282f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e7273307830303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000360801006f0000004e0500000d000000360801006f000000520500000d000000360801006f0000007505000031000000360801006f0000007e05000031000000360801006f000000e2050000380000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273f8080100740000004500000015000000f8080100740000004a0000001f000000f8080100740000005300000009000000f808010074000000570000003d00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820ac09010012000000be09010022000000201d010073000000340000000500000072616e676520656e6420696e64657820000a010010000000be09010022000000201d0100730000004900000005000000736c69636520696e64657820737461727473206174202062757420656e64732061742000300a010016000000460a01000d000000201d0100730000005c000000050000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e72730000740a010072000000c6050000250000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273000000f80a010071000000ee0300002f000000f80a0100710000007009000017000000f80a0100710000007b09000018000000f80a0100710000008409000014000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028ac0b010015000000c10b01002b000000f904010001000000f80a0100710000004b0d000019000000f80a0100710000004f0d000016000000f80a0100710000003f0d000015000000f80a0100710000008c0d0000360000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273000000440c0100710000004700000015000000440c0100710000005400000011000000440c0100710000005a00000009000000440c0100710000006400000011000000440c010071000000660000000d0000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273080d0100700000009100000026000000080d01007000000091000000110000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e72730000980d01007200000062010000130000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e7273001c0e010073000000a0010000470000001c0e010073000000b3010000200000001c0e010073000000b3010000110000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f6d6f642e72735b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f662060000000340f01000b0000003f0f0100160000005c06010001000000c00e01006f0000006b00000009000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e6720600000800f01000e0000008e0f010004000000920f0100100000005c06010001000000c00e01006f0000006f00000005000000c00e01006f0000007d0000002d000000c00e01006f0000007e00000022000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060340f01000b000000f40f0100260000001a1001000800000022100100060000005c06010001000000c00e01006f0000007f00000005000000c00e01006f0000000a010000160000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e72730000007010010079000000080000001800000070100100790000001a0000003600000070100100790000001e0000000900000000010305050606020706080709110a1c0b190c1a0d100e0d0f0410031212130916011704180119031a071b011c021f1620032b032d0b2e01300331023201a702a902aa04ab08fa02fb05fd02fe03ff09ad78798b8da23057588b8c901cdd0e0f4b4cfbfc2e2f3f5c5d5fe2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d11293a3b4549575b5c5e5f64658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff806d71dedf0e1f6e6f1c1d5f7d7eaeaf7fbbbc16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596262e2fa7afb7bfc7cfd7df9a409798308f1fd2d4ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab051f09811b03190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15054e071b0757070206160d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd03590716091809140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a062f314d0380a4083c030f033c0738082b0582ff1118082f112d03210f210f808c048297190b158894052f053b07020e180980be22740c80d61a0c0580ff0580df0cf29d033709815c1480b80880cb050a183b030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a61081f50701202a064c04808d0480be031b030f0d000601010301040205070702080809020a050b020e041001110212051311140115021702190d1c051d0824016a046b02af03bc02cf02d102d40cd509d602d702da01e005e102e704e802ee20f004f802fa02fb010c273b3e4e4f8f9e9e9f7b8b9396a2b2ba86b1060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5fbfeeef5a62f4fcff9a9b2e2f2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fe7ecefffc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b4e43813709160a08183b45390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a161a261c1417094e042409440d19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d133a060a362c041780b93c64530c48090a46451b4808530d498107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48a4c630d842f8fd18247a1b98239072a045c06260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2e781332d03110408818c89046b050d0309071092604709743c80f60a7308701546809a140c570919808781470385420f1584501f80e12b80d52d031a040281401f113a050184e080f7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d80510030d03740c59070c04010f0c0438080a062808224e81540c1503050307091d030b05060a0a060808070980cb250a84062f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e7273000000851601007c0000004b00000028000000851601007c0000004f00000009000000851601007c0000004d00000009000000851601007c0000005400000011000000851601007c0000005600000011000000851601007c0000005700000016000000851601007c0000005800000009000000851601007c000000520000003e0000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e727300000084170100790000008d00000001000000fd0601006f000000cd010000050000000003000083042000910560005d13a0001217201f0c20601fef2ca02b2a30202c6fa6e02c02a8602d1efb602e00fe20369eff6036fd01e136010a2137240de137ab0e61392f18a139301ce147f31e214cf06ae14f4f6f21509dbca15000cf615165d1a15100da215200e0e15330e16155aee2a156d0e8e15620006e57f001ff5700700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b033c082a180120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c01090128010301370101030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d021e021e02400201070801020b09012d030101750222017603040209010603db0202013a010107010101010208060a0201301f310430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c6400001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990b31047b01360f290102020a033104020207013d03240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002002e0217000101030405080802071e0494030037043208010e011605010f00070111020701020105000700013d0400076d07006080f000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a00a01c010000000000861b0100010000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000000981b0100410000005800000031000000981b0100410000008b0000002100000045636473615265636f766572794661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465a01c0100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300201d0100730000001e010000470041b0bb040bf301617474656d707420746f2073756274726163742077697468206f766572666c6f772f686f6d652f6d696368692f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e312e352f7372632f636f6465632e72730000d11d0100610000007a0000000e0000004572726f72000000000000000100000002000000030000000400000005000000060000000700000008000000090000000c0000000b000000190000001c000000160000001400000019000000071d0100eb1c0100d51c0100c11c0100a81c01" - }, - "contract": { - "name": "flipper", - "version": "4.0.0-alpha.1", - "authors": [ - "Parity Technologies " - ] - }, - "spec": { - "constructors": [ - { - "args": [ - { - "label": "init_value", - "type": { - "displayName": [ - "bool" - ], - "type": 0 - } - } - ], - "docs": [ - "Creates a new flipper smart contract initialized with the given value." - ], - "label": "new", - "payable": false, - "selector": "0x9bae9d5e" - }, - { - "args": [], - "docs": [ - "Creates a new flipper smart contract initialized to `false`." - ], - "label": "default", - "payable": false, - "selector": "0xed4b9d1b" - } - ], - "docs": [], - "events": [], - "messages": [ - { - "args": [], - "docs": [ - " Flips the current value of the Flipper's boolean." - ], - "label": "flip", - "mutates": true, - "payable": false, - "returnType": null, - "selector": "0x633aa551" - }, - { - "args": [], - "docs": [ - " Returns the current value of the Flipper's boolean." - ], - "label": "get", - "mutates": false, - "payable": false, - "returnType": { - "displayName": [ - "bool" - ], - "type": 0 - }, - "selector": "0x2f865bd9" - } - ] - }, - "storage": { - "struct": { - "fields": [ - { - "layout": { - "cell": { - "key": "0x0000000000000000000000000000000000000000000000000000000000000000", - "ty": 0 - } - }, - "name": "value" - } - ] - } - }, - "types": [ - { - "id": 0, - "type": { - "def": { - "primitive": "bool" - } - } - } - ], - "version": "4" -} +{"source":{"hash":"0xa5b19cb655755feba8e34ab5b413ac6593ecc7e24e19af485a4d30036be9d577","language":"ink! 4.2.0","compiler":"rustc 1.69.0","wasm":"0x0061736d0100000001450c60027f7f017f60037f7f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f017f60000060047f7f7f7f0060017f017f60017f017e60057f7f7f7f7f006000017f028a0107057365616c310b6765745f73746f726167650005057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300d64656275675f6d6573736167650000057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100337360102030b0803040002080102020604030202060600010103000300070204060202000400040900000a0507050000030a01000000000704050170010f0f0608017f01418080040b0711020463616c6c0018066465706c6f7900190914010041010b0e0d32273a29333839281c1e20372b0ac744362b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2601017f230041106b22022400200220003a000f20012002410f6a41011008200241106a24000b5c01037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a200320046b2001200241cc97041035200020033602080f0b41909604411c41ac9704101f000b2003200541bc9704100b000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b1b002000418180014f044020004180800141a88104100b000b20000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4103360200200341988f0436021020034100360208200341033602242003200341206a3602182003200341046a36022820032003360220200341086a2002100e000b5201017f230041206b220124002001410c6a4101360200200141146a41013602002001418c9504360208200141003602002001410136021c200120003602182001200141186a360210200141b08204100e000b910101017f230041306b22022400200241146a41013602002002411c6a41013602002002418c95043602102002410036020820024102360224200220002d0000410274220041ac9a046a28020036022c2002200041c09a046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a1036200241306a24000b3c01017f230041206b22022400200241013a00182002200136021420022000360210200241d08a0436020c2002418c9604360208200241086a102a000b4001017f230041106b22012400200141003a000f20002001410f6a41011010047f4102054101410220012d000f22004101461b410020001b0b200141106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206103b200120022003280208200328020c419c9a0410352003200220042006103b200020032903003702000b200341106a240020050b4701017f230041106b220224002002410036020c024020012002410c6a410410104504402000200228020c360001200041003a00000c010b200041013a00000b200241106a24000b3f01017f230041106b22022400200242808001370204200241dc9a0436020020022001047f20024101101741010541000b101720002002280208100a1016000b3701017f230041106b22002400200042808001370204200041dc9a0436020020004100101720004100101741002000280208100a1016000bae0102057f017e230041306b2201240020014100360218200142808001370224200141dc9a043602202001410036021c200141206a22022001411c6a4104100820012001290320370310200141086a200141106a220320012802281015200128020c2104200128020820012903102106200141003602282001200637032020002002100720012001290320370310200120032001280228101520042001280200200128020410041a200141306a24000b4501017f2002200128020422034b044041ac9604412341ec9704101f000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0d00200041dc9a0420011005000ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a4103360200200041a48a0436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a41dc9704100e000bab0501077f230041406a22002400024002400240024002400240100941ff0171410546044020004180800136022041dc9a04200041206a100220002802202201418180014f0d0120002001360224200041dc9a04360220200041106a200041206a101120002d00100d0520002800112201411876210220014110762104200141087621030240200141ff01712201412f470440200141e30047200341ff0171413a4772200441ff017141a50147720d0741012101200241d100460d010c070b200341ff017141860147200441ff017141db0047720d0641002101200241d901470d060b20004100360218200042808001370224200041dc9a043602202000410036023c200041206a22032000413c6a4104100820002000290320370310200041086a200041106a20002802281015200028020c210520002802082000280210210220002000280214220436022020052002200310002103200420002802202205490d02024002400240410c20032003410c4f1b0e0402000001000b2000412c6a4101360200200041346a4100360200200041d481043602282000418c960436023020004100360220200041206a41dc8104100e000b2000412c6a4101360200200041346a41003602002000418883043602280c070b2000200536022420002002360220200041206a100f41ff017122024102460d042001450d032002451014410041001012000b200041043a0020200041206a100c000b20014180800141cc8004100b000b2005200441cc8004100b000b230041106b22002400200042808001370204200041dc9a0436020020004100101720024100472000100741002000280208100a1016000b2000412c6a4101360200200041346a4100360200200041e882043602280c010b410141011012000b2000418c960436023020004100360220200041206a41b08204100e000b8c0201057f230041106b2200240002400240100941ff01712201410546044020004180800136020041dc9a042000100220002802002201418180014f0d0120002001360204200041dc9a04360200200041086a20001011024020002d00080d002000280009220141187621022001411076210320014108762104200141ff0171220141e1004704402001419b0147200441ff017141ae014772200341ff0171419d0147200241de004772720d012000100f41ff017122004102460d01200010141013000b200441ff017141ef0147200341ff017141fe0047720d002002413e460d030b410141011012000b200020013a00002000100c000b20014180800141cc8004100b000b410010141013000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41908304200241086a101b200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110000450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a103420032003290310370320200341086a2005200141046a103420032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110000450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002101d41000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a20002003200210212004280208200428020c1022200028020821030b200028020420036a2001200210061a2003200220036a22014b044041b08304411c41a08904101f000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b101d0c020b230041106b22042400200441086a20002003410110212004280208200428020c1022200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41b08304411c41908904101f000b5001017f230041206b220324002003410c6a4101360200200341146a41003602002003418c9604360210200341003602002003200136021c200320003602182003200341186a36020820032002100e000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a101a200241206a24000bac0401067f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22062002490d0141082006200320032006491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200441106a2107230041106b220624002004027f0240027f0240200504400240200341004e044020072802080d012006200310252006280204210220062802000c040b0c040b20072802042209450440200641086a20031025200628020c210220062802080c030b20032102410041d49a04280200220520036a22082005490d021a2007280200210741d89a042802002008490440200341ffff036a220841107640002202417f46200241ffff0371200247720d022002411074220520084180807c716a22022005490d0241d89a042002360200200321024100200320056a22082005490d031a0b41d49a04200836020041002005450d021a20052007200910060c020b200420033602040c020b2003210241000b2205044020042005360204200441086a200236020041000c020b20042003360204200441086a410136020041010c010b200441086a410036020041010b360200200641106a240020042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41d08304412141f88404101f000b1f00024020014181808080784704402001450d0120001023000b0f0b1024000b900101017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141c88604360218200141003602102001410336022c2001200141286a36022020012001410c6a360228230041206b22002400200041003a0018200041d886043602142000200141106a360210200041d08a0436020c2000418c9604360208200041086a102a000b4601017f230041206b22002400200041146a41013602002000411c6a41003602002000419c85043602102000418c960436021820004100360208200041086a41a48504100e000ba10101027f027f410041d49a04280200220220016a22032002490d001a024041d89a042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141d89a0420033602004100200120026a22032002490d021a0b41d49a04200336020020020c010b41000b210320002001360204200020033602000b5301027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20011025200228020822030d0120011023000b1024000b2000200336020420002001360200200241106a24000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441878c046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441878c046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441878c046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441878c046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b21024100210420054104710440418c960421042002418c9604418c9604102c20026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a280200220120072004102f0d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a20072004102f0d02200341106a2001200920026b4101103020032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10310d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a280200220120072004102f0d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011030200328020c2205418080c400460d00200328020820012802002202200141046a280200220120072004102f0d00200220082006200128020c1101000d00200520022001103121000b200341406b240020000f0b41b08904411c41c48e04101f000b41d08904412141f49404101f000b0300010b0e0020002802001a03400c000b000baa05020a7f017e230041406a220124002001200036020c2001412c6a4102360200200141346a4101360200200141d09604360228200141003602202001410436023c2001200141386a36023020012001410c6a360238200141106a210641002100230041306b22022400200141206a220441146a2802002107200428020821050240024002400240200241086a027f024002400240200241106a027f024002402004410c6a28020022080e020001040b20070d02418c9604210341000c010b20070d022005280200210320052802040b22001026200228021021042006200228021422053602042006200436020020052003200010061a200620003602080c040b200428021021090c010b200541046a21032008410374210a2004280210210903402000200020032802006a22004b0d04200341086a2103200a41086b220a0d000b20002007450d011a2000410f4b0d0041002005280204450d011a0b200020006a22034100200020034d1b0b10262002290308210b200641003602082006200b3702002002200736022c200220093602282002200836022420022005360220200220042902003703182006200241186a101a0d020b200241306a24000c020b41b08304411c41e49404101f000b230041406a220024002000413336020c200041e88604360208200041f483043602142000200241186a360210200041246a41023602002000412c6a41023602002000413c6a4106360200200041848b0436022020004100360218200041023602342000200041306a3602282000200041106a3602382000200041086a360230200041186a418c8804100e000b2001280214210020012802182101024041dc9a052d000045044041dd9a052d00004101710d010b410c20002001100322002000410c4f1b410947044041dc9a0541013a00000b41dd9a0541013a00000b000b0c0042f8f3eee1d7afe2bb350ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d0020012000102d2206200020016a22082004417c716a2004410371102d6a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41a09004102e200328020c21052003280208210820032003280200200328020422002000417c7141909204102e200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41b08904411c41a09204101f000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441b08904411c41d09204101f000b41b08904411c41b09204101f000b41b08904411c41c09204101f000b41b08904411c41809204101f000b20012002102d21020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41b08904411c41e49404101f000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41ac960441232004101f000b39000240027f2002418080c40047044041012000200220012802101100000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41b08904411c41d48e04101f000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110000450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110000450d000b200441016b0b2000490bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41b08904411c41d49304101f000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003102c22024b0440200941086a2001200020026b4100103041012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001103121000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1100000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000b8501002001200346044020002002200110061a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4103360200200041f0900436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a2004100e000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a101b200341206a24000b18002001280200418495044105200128020428020c1101000b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a101b200241206a24000b0b002000280200200110320b990301037f230041406a22022400200028020021034101210002402001280200220441e08a04410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241f08a0436023020024100360228200241073602142002200241106a36023820022002410c6a36021020042001200241286a1036450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241f08a0436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a10360d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4103360200200241346a4103360200200241b88a043602182002410036021020022000410c6a3602382002200041086a3602302002410236022c200220003602282002200241286a36022020042001200241106a103621000b200241406b240020000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41909904412141f49804101f000b0bd21a0300418080040ba5032f55736572732f616e6472656561656674656e652f776f726b2f696e6b2d342e322e302f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000000000010049000000e4000000140000002f55736572732f616e6472656561656674656e652f776f726b2f696e6b2d342e322e302f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273005c0001004b0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72b80001001c0000005c0001004b000000ed000000170000002f55736572732f616e6472656561656674656e652f776f726b2f696e6b2d342e322e302f696e746567726174696f6e2d74657374732f666c69707065722f6c69622e7273ec000100440000000600000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900400101002700000073746f7261676520656e7472792077617320656d7074790070010100170000000900000004000000040000000a0000000b0000000c0041b083040bd115617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000900000000000000010000000d0000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727304020100740000008f0100001c0000006361706163697479206f766572666c6f77000000880201001100000004020100740000000d020000050000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c656426030100150000003b0301000d000000b4020100720000009f0100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273009b0301007000000064020000200000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72731c04010074000000350700000d0000001c04010074000000a307000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320f20401002000000012050100120000003a0000000c0b010000000000340501000100000034050100010000000900000000000000010000000e00000070616e69636b65642061742027272c206c050100010000006d050100030000003a2000000c0b01000000000080050100020000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e72730000cf06010073000000750500000d000000cf060100730000000506000038000000206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e646578200000860701001000000064070100220000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e72730000a807010076000000c005000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820283008010015000000450801002b000000f1040100010000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000008808010075000000470000001500000088080100750000004f000000320000008808010075000000540000001100000088080100750000005a00000009000000880801007500000064000000110000008808010075000000660000000d0000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273600901007400000091000000110000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273000000e40901007d00000095000000010000009405010073000000cd010000050000004572726f720000000c0b0100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f7200000000617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a0c0b0100000000004f0b0100010000002f55736572732f616e6472656561656674656e652f776f726b2f696e6b2d342e322e302f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273600b01004c0000005a0000001c000000600b01004c0000005a00000009000000600b01004c0000005a00000031000000600b01004c0000006500000009000000600b01004c0000008d000000210000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300fc0b010077000000820100004700419099040bc301617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f616e6472656561656674656e652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e352e302f7372632f636f6465632e727300b10c01006a000000780000000e000000190000001c000000160000001400000019000000f30a0100d70a0100c10a0100ad0a0100940a01","build_info":{"build_mode":"Debug","cargo_contract_version":"2.2.1","rust_toolchain":"stable-x86_64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"flipper","version":"4.2.0","authors":["Parity Technologies "]},"spec":{"constructors":[{"args":[{"label":"init_value","type":{"displayName":["bool"],"type":0}}],"default":false,"docs":["Creates a new flipper smart contract initialized with the given value."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":1},"selector":"0x9bae9d5e"},{"args":[],"default":false,"docs":["Creates a new flipper smart contract initialized to `false`."],"label":"new_default","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":1},"selector":"0x61ef7e3e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":5},"balance":{"displayName":["Balance"],"type":8},"blockNumber":{"displayName":["BlockNumber"],"type":11},"chainExtension":{"displayName":["ChainExtension"],"type":12},"hash":{"displayName":["Hash"],"type":9},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":10}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":3},"messages":[{"args":[],"default":false,"docs":[" Flips the current value of the Flipper's boolean."],"label":"flip","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":1},"selector":"0x633aa551"},{"args":[],"default":false,"docs":[" Returns the current value of the Flipper's boolean."],"label":"get","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":4},"selector":"0x2f865bd9"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"value"}],"name":"Flipper"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2}],"index":0,"name":"Ok"},{"fields":[{"type":3}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":2},{"name":"E","type":3}],"path":["Result"]}},{"id":2,"type":{"def":{"tuple":[]}}},{"id":3,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":4,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":3}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":3}],"path":["Result"]}},{"id":5,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":6,"type":{"def":{"array":{"len":32,"type":7}}}},{"id":7,"type":{"def":{"primitive":"u8"}}},{"id":8,"type":{"def":{"primitive":"u128"}}},{"id":9,"type":{"def":{"composite":{"fields":[{"type":6,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":10,"type":{"def":{"primitive":"u64"}}},{"id":11,"type":{"def":{"primitive":"u32"}}},{"id":12,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} \ No newline at end of file diff --git a/packages/api-contract/src/test/contracts/ink/v4/flipper.json b/packages/api-contract/src/test/contracts/ink/v4/flipper.json index e3cbe9bf7d76..d2232d656eda 100644 --- a/packages/api-contract/src/test/contracts/ink/v4/flipper.json +++ b/packages/api-contract/src/test/contracts/ink/v4/flipper.json @@ -1,12 +1,21 @@ { "source": { - "hash": "0xf051c631190ac47f82e280ba763df932210f6e2447978e24cbe0dcc6d6903c7a", - "language": "ink! 4.0.0-alpha.1", - "compiler": "rustc 1.63.0" + "hash": "0xa5b19cb655755feba8e34ab5b413ac6593ecc7e24e19af485a4d30036be9d577", + "language": "ink! 4.2.0", + "compiler": "rustc 1.69.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "2.2.1", + "rust_toolchain": "stable-x86_64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } }, "contract": { "name": "flipper", - "version": "4.0.0-alpha.1", + "version": "4.2.0", "authors": [ "Parity Technologies " ] @@ -25,39 +34,109 @@ } } ], + "default": false, "docs": [ "Creates a new flipper smart contract initialized with the given value." ], "label": "new", "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 1 + }, "selector": "0x9bae9d5e" }, { "args": [], + "default": false, "docs": [ "Creates a new flipper smart contract initialized to `false`." ], - "label": "default", + "label": "new_default", "payable": false, - "selector": "0xed4b9d1b" + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 1 + }, + "selector": "0x61ef7e3e" } ], "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 5 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 8 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 11 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 12 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 9 + }, + "maxEventTopics": 4, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 10 + } + }, "events": [], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 3 + }, "messages": [ { "args": [], + "default": false, "docs": [ " Flips the current value of the Flipper's boolean." ], "label": "flip", "mutates": true, "payable": false, - "returnType": null, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 1 + }, "selector": "0x633aa551" }, { "args": [], + "default": false, "docs": [ " Returns the current value of the Flipper's boolean." ], @@ -66,27 +145,34 @@ "payable": false, "returnType": { "displayName": [ - "bool" + "ink", + "MessageResult" ], - "type": 0 + "type": 4 }, "selector": "0x2f865bd9" } ] }, "storage": { - "struct": { - "fields": [ - { - "layout": { - "cell": { - "key": "0x0000000000000000000000000000000000000000000000000000000000000000", - "ty": 0 + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "value" } - }, - "name": "value" + ], + "name": "Flipper" } - ] + }, + "root_key": "0x00000000" } }, "types": [ @@ -97,6 +183,213 @@ "primitive": "bool" } } + }, + { + "id": 1, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 2, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 3, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 4, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 5, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 6, + "type": { + "def": { + "array": { + "len": 32, + "type": 7 + } + } + } + }, + { + "id": 7, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 8, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 9, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 10, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 11, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 12, + "type": { + "def": { + "variant": {} + }, + "path": [ + "ink_env", + "types", + "NoChainExtension" + ] + } } ], "version": "4" diff --git a/packages/api-contract/src/test/contracts/ink/v4/flipper.wasm b/packages/api-contract/src/test/contracts/ink/v4/flipper.wasm index 625c7b1667a090c61cd037361fb3db5c401202ca..3f77edb2319aa3b738fe331fba6b4273ee519a6d 100644 GIT binary patch literal 12526 zcmchdZH!!3dB@MW_s+}iowcu11CDK)I}?NL#_OGZo7pvK*&AWICQXBAQ&km`J>DHV zJNxRHSv!`1bwWr3O^a!PLZB+BAW$19m0Ag@l^Rr}qKcN#B0&XIQ1Ss)l%|Cbd_YZq z|8wrFcd^5ZRI;l(=jERBoaa2x|9LrQ#Rn|AYDxakTS#?{R^OD&>T zZ%tlRFHJt)e6FB(j4^gIc)KkXdhOQoczm(lKiliCbz2wPrr`SOdoH(@H`-_W-PUUF zLc7~-FPOl;DJ-t8Z}bPPk%jj8jf-bj+P$7;8#iVm?%hn0zSi>DZo9wHT{U6YUcFpg zX|JqxuLd?q!e+w;VO$O)6O?Tb6r+%jqOmqKp(zDXF$hd#q9J333#EcF;jlzuN>RbC z+ugg1Www`HyB5WzJwY_zT3$B$iVN-a<+ZEk_MyGjWH#P4GI99C(aD+FBL{yzZQeEf z_pfQ(W$k9TnFeWiD%wmmom!Yi_eXPSsII71xOc>=X40rbU$o>%eC`jU zWLk?ig7WS-yZ)XiJD5F1=N%?yR3ZBt>amF*2!hSv&2W(})eKy~PN!z?G0l*=in6*I z!9j|0hmV7u#HRLWXsR%LG%QzPBTL~kD`aq&hL67PKzu-i9=>M9ra_1{``E*7xzxlP ze%JM-TF81~Y8yeMy)@WCnC7sVAcj%4-D2)SW#&XdYo9 z_ogan1o;kCI|3VNYNc^rvBRW6Q5RJ1-rA+-$eu9!n9WA^in`bjvS;4THY-$~c#qq! zBk>C+p7WD|qZg5bqa@_um_(adP{?csxlywl&h4oK87v%#8RCF?&PF+&rCA3~5OJnf zI4QKkD8u0b#%smoRfrU{0BU_yvJX5dz=rfisotV)K-LTdS4TcA#HY77^xI=Ym0(VU zq|Ycxv=D1RuVF0Gl*M6c)Q|*}a*KNPPCEAh&?X=ZvaddgM8qUJp=pzsWwwx+IC+^T zTTX_Pmzub_HQ$-cV7?j5XJO6IrzFH4{k%`upn%WB+CYCUWCt!!;Shp!9H3p{1@NKv z8r%p_5gx(H^3rA~6oPEY9d7^>jwCNpQK?2M7HsznAs1|+4$W|(RVNohL`#GTJ| z)6g{zC5iSk&%x;=`;;)`X2N@;x$G(2$er1@b2oxlOM@kuFMLU>C<1J<;}n=j6f&%M zgbwX1wMoImAF?*UG0K@aEI|2;*BXvd<|lkWCzZx_$6i)W%ra>ab^gI@c?!8C?=ws` z@DwKdut1(j2acxq6k^1C3ThIJI^-}?O5pibHilvUS;3YB4z%{tE~r>y-Sf^@D_`Buk4vPTXe86i3xF?*P>?=s#LZC;lCvhw9> z7|c;&EnbeDW;L6A)11ZGJ!9cQzN!glD%luWA=1D>MMp( z#mu--|7uT<6lD`2tVSfjcytv!33A9Xhw?`h5%8{4H0d2+Oj-pc4R=n~O1qQYD z)=)v37G&m$Ax@yYBSBg#oEZtcNVAF@bym6mz^*7T#$usPhk^~YDIA8ceeq#Pp)T*T z>Qs1KK>TXlvGSwaM}=l{M2N(lQ2&C)Ch7vIRczdCVMleC$~9@ z(Fv0etR8m)zPxb_Jf@oQ`d&CUwfGAEw5EW8A zK)+!;Lf^lIxKDt~9EN{HXOR6H5bVk%a+wqS04vSC$pAFQCP#|Dpy7H4n)emBTd#o9W z1krM*YST#X_=t!Bk-EsRB!uD~V@{5kxDpTx<<(1BpyQ?hu1lj4!f&eR`m^_QFBkpah8 z_Y%A*vba!|YG;MCh}d9Ee7HSPiw4^w)GHOxyAtur3(D=K$y<4b<269MVPWZn<$nrKGk=Qsl??#ks;gXh-i19DDkEANGBRW)))I@~@8Q*l+2vZ5%h}h}A`j$U@$%N|ku0ouj@g}C3KOgV zt?e{M2D6@aG_pWR*7gCr2Lo498vgFEHw<#V%m zNg2?gMYIC37p5Q~X=Y>-xwNl)X}@mES$L}+oC(}11VM_HbG-S9LmEas1H%@Q-I;(4 z7QGUKUb{t5-p4`cr|~_woc%ECT+UOGElTxxGB78l2b-C&2X0vH%!naN1EVBSoCu5R z!S>}3_%EJ0z#z=)KFVyfm)&u>T7X92u*w$p5sL|fdnq77xJjhINa)$8GU-%HUJXSy z5;>IV3|feUzc4eu3Z)X@M#?Oiydo_^hQLo@0E_U#>!>y)hgXz&lFOi$G`&zUNNt81`Hm9PdhkwQmc?MAMxOHNsrE11f=ZCnz|QO6>NR_ogX&y%uSaG zpq#_zsV!6S6b7eom(5FTjQqe`g-j~W2(VF- z9Wh8(gdl8KzLCguD( z;e0rGCSKpVDs zU)i%}wN}h*Kl|+`qRyBxuQK8zSi&5Nyj))L!*&i}1qJV2_dNgUFOB_%7AEaTM?T70 z-!%7;X`2j}HH7_C%CX~3FYa|o-|(3cXL$@Et40&IcRFq=%WiQLywK9}_fW7};r(Hwv5BaQg)aRd@U|>ADIz{v(kZTkQuTo z@}x`17@*Q{H!G?q-02`)=EvDx;OR4@B?rj!v?JtREeCTVR`!TM#ZHT$!Y5r8cN8UK zY$ZtL+Ig)!uc~Z?nToeA*QpK3K^C&|C7C^=4px;3*4+)ls7b4p%%TfU6FSbgMSRw! z<%aV`gm|UJ=@4gn0xr3mj&OlvTZt&m1P>`jhVz6|iA5nDPR4m{(~6^>;;jxM6S+pe z>`%TaH{NB1JK3lpZAtGG@PG}jH*QT6Ty7T>qjmVS$#@m)`P?pbS-{(rbA9IbobSw@ zp;gVk_b%584cEFpcJB}8IA@snPYc1YzqP^GEb$O%dH2bI(_Kbb9aWuu+Uyx!s&VBa zUxlzUT6Z(UW;1xix~s{3&d@`YElN^&QXI2V28(yc?A-YPoG6u4;P(IEs+=c$(mvDk z>@Uh;P~H_7tH?{>6B0w>6JecZs&pC8q+B_!ndFr&CkLt|4$`sV0G+aqF2i|$h(F;U#o$UXVVyNNa)jw{R$i(N%kIHF(AIQuGn( z(cfW0%1l^Qd}6?qcEr+RQ#A#`8CNS)tJAZulRfdczq0_xd#k7&hf=k{9Eb42C?_;L z$=6&BA0yuZlb|@Pi5{0F*$^>aWBskB#`+ouJ9E$Xzx$nUeCf~s{jaCvk4APlKR%G) z3Php<(lSm55-GvGlfChh`pg+tEdb9 zC<|PA=^_h>lmJ8`mp!f1nhH4n;PoguE{N!+NG4oW(k#g6BXT=?1(VbsoWx=J(Y0Ocln?3xq$% z@;wnwlF_O%TjYh)30yMf^AfzHlbtv)$BfDTcJsCQ-UyE!VO3GmIxcmda?;98>z9P7 z(0%7KxT|$e5zul8kcM0pgJ9$lN^zJR1fJ53GEoj;&l(`AYj?SNAzbQ1>NuZ0#yDp| zYD9{)TV5l~pycCF{0Vob98{y+QHJ`8B6UZgkS{58OBKTQuFx9mJcDvXbWf-5u>uvL z;+5ad7xTcNz#i!M&bSWe7M44RTce0TF@=%QhI1l-Rk`2`s_|`NSWs|VaTfpsfyl+i z6C}UECKDx&h>NiO7!gaboTPJOzPgv#?V0#LA{*znJcQ14p}=sZeYz{wzZfdlh`Fa# zOR#c#`VvMX?oKOybDvXH((j^+mXqbsUp0=C3g>(U6sLD=$z`TS<8tn8?i75izS>u?+}Cm$Oy7AH{bcd__lwysR2%-{+gf_yj_DjOhL6A^u$ zl-<^+_MEw-6+=-ei%PdvaswnZ84CAjOZoXXOiM9~3`-fqEK{gr{cKQ2LI8z*M;Nki zk>Y8k#O2X-)N$vbZOolovZI3>EX)~&zudG0!- z6F}t>2e9Su`wdBz3(v}Dd{Dmeoe!>ui<>iBr%`_s#8s*CtNgy$CB{m=25nLle_!mF z=LJ{AA**m++eep#^XR+Tzp6PN;@|Yg!2D)fFT5*Z+hhdJk`;yqYiN0Pvb84eIA4$>sCYium9vEjV-DQ%JO&b39p zG)EOaYgf%DavXv4FYSFss(mUM^m|U&v-213Mwy>I90M3>;4%)#Sz@7#0PHhKXOiph zbElB^I#&_@^Zw9a-ckIKaO{CzyW1OUtuA!i?N<9jzrETXyRz0@8e3dl8l5^malAe@ z-);5Vy)k|PGuG?QQ(jzT(Aw(R`3GBzt7Gkl`p3IHqd#lT@cAsyUY`F4+KVge%RNzl z1GMjj<{@j$os{j>`L&JJew!cqq#LX4ht}KkeX9KOXRZ4w#vWwMV9tM1e;LnD!p|Z! zFS6gowbfBJ-S3TESYBLTZ+FL*7th1Ux1s$SXcc)1JaDnRkgl%v)AjBe!u;=& z_1D&xosxTFy?*Qba(nclna0`1)M#scoyJ0|dj$X>nK4aJDS)W1&TgxFb&Q`jt9bOlZb4vN*F#smUR@N4f^ufsEV!Gtz zHfa9|ZQ*tszJDD4dmHBw^n8CO{*NxMF0>y?*Eagn;dwmBLhnS{f3Te{w^!4}9%|*4 z+I}EC{{v5w$87~`ZlmPd&QxL)%ik1zstwBRwzZ4?_15a*{F1cVPY)kHmM-VxS13c? zpGa@ex<((O|C!5uey!Vf=7`?MRyS4r?gVdZXT~&(vqf>*M3&6XTQP zQ{&U)jq&FA%=qj?ePVoKVq$V)YGQh#G0~iunV6ldPmWJcOioTtO-@fXCYzHple1Ix zsqv|asmZCSsp+Z4RC8)(YIeFlJw81#Jvlu!Jw4r+Zcfik&o=6f@y0}BvN6?|ZZsOr z#!O?jS#ORvCz_MZspfRE(QGznnzJ+Ynemy4naP={ndzCvOmk*tW_A`9XIXw0(z8sP zrR!%6*&U+uh&AT(MQarNHi!nY^+CHpgqWc{02@C{z1Wr?NPEkR^KIb|%w5ET`#0^? zg&cIoJXW$MVeSHDjq*j?m}6~hk+2FZjQJSrUuONM+1o29dutnASoa&qxj%9=U0A~t zDg@%<<{u>f^>B3Fuk9RKFMB_ElJYL-{WrEH`+4#9*YA$GyuoeHJPscltbdwE{(I2A zpZdhM_ODY{EE>H3E$XuML3`nc-d~{oV#L-hK=#;IuC;SR-iN+3=jlb0t=1oN!Hsls ze%^T&cz70m-bDFs9_jjB_&M3jKhjVFby67{<-n(|w-#L#+*n<2T~*4F=D*dxk!f|? zE!hgc>fTs&BglvHq|5d0%ng@T*RHIlz4kI0;#&8n8G{$F@FU|(t4E@&v@nnPC(;!d zz55qM`NDCG;mFb9!5;1>KD;2Vf4b!Q{Kf@-&JJA9LGxGOQP@+?w7o4XZf}ooYqzOy zfB(C*t2{3nE^?ouz$>f!0sBz0`UnC#ZFDe+|ITg;?6(fwx8`=f)xEej)@@&0!~m|k zsCJQ@c;o!>`L&hN@%H?DV`6r8;rwiSer95FY`xVb$sFzRbNlwFa`gGp$>Y-;aFn#V qwix`2iZvY=e27Ou{B|A*{G~iP)u{ble$D?So=@|9oabG`_WuB-O%+1` literal 22353 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 k@yRW%9Ev5$B$ssJ93` Date: Tue, 23 May 2023 20:01:21 +0200 Subject: [PATCH 09/11] add maxEventTopics --- packages/types/src/interfaces/contractsAbi/definitions.ts | 3 ++- packages/types/src/interfaces/contractsAbi/types.ts | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index 50d04e159d59..299bfd7c3b3d 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -288,7 +288,8 @@ export default { balance: 'ContractTypeSpec', blockNumber: 'ContractTypeSpec', hashType: 'ContractTypeSpec', - timestamp: 'ContractTypeSpec' + timestamp: 'ContractTypeSpec', + maxEventTopics: 'u32' } } } as Definitions; diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index ed17de4c1c41..3c8795be9772 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -115,6 +115,7 @@ export interface ContractEnvironment extends Struct { readonly blockNumber: ContractTypeSpec; readonly hashType: ContractTypeSpec; readonly timestamp: ContractTypeSpec; + readonly maxEventTopics: u32; } /** @name ContractEventParamSpecLatest */ From 11560d184188f28e2e1c88de3180a64e14065e4c Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Tue, 23 May 2023 20:02:25 +0200 Subject: [PATCH 10/11] get type defs for environment --- packages/api-contract/src/Abi/index.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index 25f12b340c9d..eaab63d55469 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 import type { Bytes } from '@polkadot/types'; -import type { ChainProperties, ContractConstructorSpecLatest, ContractEnvironment, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo } from '@polkadot/types/interfaces'; -import type { Codec, Registry } from '@polkadot/types/types'; +import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo } from '@polkadot/types/interfaces'; +import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types.js'; import { TypeRegistry } from '@polkadot/types'; @@ -82,7 +82,7 @@ export class Abi { readonly messages: AbiMessage[]; readonly metadata: ContractMetadataLatest; readonly registry: Registry; - readonly environment: ContractEnvironment; + readonly environment: Map = new Map(); constructor (abiJson: Record | string, chainProperties?: ChainProperties) { [this.json, this.registry, this.metadata, this.info] = parseJson( @@ -119,7 +119,16 @@ export class Abi { : null }); }); - this.environment = this.metadata.spec.environment; + + for (const [key, value] of this.metadata.spec.environment.entries()) { + const typeSpec = value.toPrimitive(); + + if (typeof typeSpec === 'object' && typeSpec !== null && 'type' in typeSpec) { + this.environment.set(key, this.registry.lookup.getTypeDef(typeSpec.type as number)); + } else { + this.environment.set(key, typeSpec as number); + } + } } /** From 7b9f73e0db6cdfac775c78445041edecbc430f5c Mon Sep 17 00:00:00 2001 From: Andreea Eftene Date: Thu, 25 May 2023 21:04:58 +0200 Subject: [PATCH 11/11] fix conversion to v4 --- packages/api-contract/src/Abi/index.ts | 15 +++++++++------ packages/api-contract/src/Abi/toV4.ts | 11 ++++++++++- .../src/interfaces/contractsAbi/definitions.ts | 2 +- .../types/src/interfaces/contractsAbi/types.ts | 2 +- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/packages/api-contract/src/Abi/index.ts b/packages/api-contract/src/Abi/index.ts index eaab63d55469..4d033b6d112d 100644 --- a/packages/api-contract/src/Abi/index.ts +++ b/packages/api-contract/src/Abi/index.ts @@ -119,14 +119,17 @@ export class Abi { : null }); }); + const rawEnv = this.metadata.spec.environment.unwrapOr(null); - for (const [key, value] of this.metadata.spec.environment.entries()) { - const typeSpec = value.toPrimitive(); + if (rawEnv) { + for (const [key, value] of rawEnv.entries()) { + const typeSpec = value.toPrimitive(); - if (typeof typeSpec === 'object' && typeSpec !== null && 'type' in typeSpec) { - this.environment.set(key, this.registry.lookup.getTypeDef(typeSpec.type as number)); - } else { - this.environment.set(key, typeSpec as number); + if (typeof typeSpec === 'object' && typeSpec !== null && 'type' in typeSpec) { + this.environment.set(key, this.registry.lookup.getTypeDef(typeSpec.type as number)); + } else { + this.environment.set(key, typeSpec as number); + } } } } diff --git a/packages/api-contract/src/Abi/toV4.ts b/packages/api-contract/src/Abi/toV4.ts index 1b3444311db2..61bd6a653035 100644 --- a/packages/api-contract/src/Abi/toV4.ts +++ b/packages/api-contract/src/Abi/toV4.ts @@ -7,5 +7,14 @@ import type { Registry } from '@polkadot/types/types'; import { objectSpread } from '@polkadot/util'; export function v3ToV4 (registry: Registry, v3: ContractMetadataV3): ContractMetadataV4 { - return registry.createType('ContractMetadataV4', objectSpread({}, v3)); + return registry.createType('ContractMetadataV4', objectSpread({}, v3, { + spec: objectSpread({}, v3.spec, { + constructors: v3.spec.constructors.map((c) => + registry.createType('ContractConstructorSpecV4', objectSpread({}, c)) + ), + messages: v3.spec.messages.map((m) => + registry.createType('ContractMessageSpecV3', objectSpread({}, m)) + ) + }) + })); } diff --git a/packages/types/src/interfaces/contractsAbi/definitions.ts b/packages/types/src/interfaces/contractsAbi/definitions.ts index 299bfd7c3b3d..6530548b9670 100644 --- a/packages/types/src/interfaces/contractsAbi/definitions.ts +++ b/packages/types/src/interfaces/contractsAbi/definitions.ts @@ -118,7 +118,7 @@ const spec = { messages: 'Vec', events: 'Vec', docs: 'Vec', - environment: 'ContractEnvironment' + environment: 'Option' }, ContractDisplayName: 'SiPath', diff --git a/packages/types/src/interfaces/contractsAbi/types.ts b/packages/types/src/interfaces/contractsAbi/types.ts index 3c8795be9772..d3bf6d86002d 100644 --- a/packages/types/src/interfaces/contractsAbi/types.ts +++ b/packages/types/src/interfaces/contractsAbi/types.ts @@ -91,7 +91,7 @@ export interface ContractContractSpecV4 extends Struct { readonly messages: Vec; readonly events: Vec; readonly docs: Vec; - readonly environment: ContractEnvironment; + readonly environment: Option; } /** @name ContractCryptoHasher */