// Copyright 2017-2021 @polkadot/types authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { Definitions } from '../../types'; // order important in structs... :) /* eslint-disable sort-keys */ const layout = { ContractCryptoHasher: { _enum: ['Blake2x256', 'Sha2x256', 'Keccak256'] }, ContractDiscriminant: 'u32', ContractLayoutArray: { offset: 'ContractLayoutKey', len: 'u32', cellsPerElem: 'u64', layout: 'ContractStorageLayout' }, ContractLayoutCell: { key: 'ContractLayoutKey', ty: 'SiLookupTypeId' }, ContractLayoutEnum: { dispatchKey: 'ContractLayoutKey', variants: 'BTreeMap' }, ContractLayoutHash: { offset: 'ContractLayoutKey', strategy: 'ContractLayoutHashingStrategy', layout: 'ContractStorageLayout' }, ContractLayoutHashingStrategy: { hasher: 'ContractCryptoHasher', postfix: 'Vec', prefix: 'Vec' }, ContractLayoutKey: '[u8; 32]', ContractLayoutStruct: { fields: 'Vec' }, ContractLayoutStructField: { layout: 'ContractStorageLayout', name: 'Text' }, ContractStorageLayout: { _enum: { Cell: 'ContractLayoutCell', Hash: 'ContractLayoutHash', Array: 'ContractLayoutArray', Struct: 'ContractLayoutStruct', Enum: 'ContractLayoutEnum' } } }; const spec = { ContractConstructorSpec: { name: 'Text', selector: 'ContractSelector', args: 'Vec', docs: 'Vec' }, ContractContractSpec: { constructors: 'Vec', messages: 'Vec', events: 'Vec', docs: 'Vec' }, ContractDisplayName: 'SiPath', ContractEventParamSpec: { name: 'Text', indexed: 'bool', type: 'ContractTypeSpec', docs: 'Vec' }, ContractEventSpec: { name: 'Text', args: 'Vec', docs: 'Vec' }, ContractMessageParamSpec: { name: 'Text', type: 'ContractTypeSpec' }, ContractMessageSpec: { name: 'Text', selector: 'ContractSelector', mutates: 'bool', payable: 'bool', args: 'Vec', returnType: 'Option', docs: 'Vec' }, ContractSelector: '[u8; 4]', ContractTypeSpec: { type: 'SiLookupTypeId', displayName: 'ContractDisplayName' } }; export default { rpc: {}, types: { ...layout, ...spec, ContractProject: { // added by ABI serialization metadataVersion: 'Text', source: 'ContractProjectSource', contract: 'ContractProjectContract', // expanded scale registry: RegistryReadOnly types: 'Vec', // renamed from layout (ignored for now, incomplete) // storage: 'ContractStorageLayout', spec: 'ContractContractSpec' }, ContractProjectContract: { name: 'Text', version: 'Text', authors: 'Vec', description: 'Option', documentation: 'Option', repository: 'Option', homepage: 'Option', license: 'Option' }, ContractProjectSource: { _alias: { wasmHash: 'hash' }, wasmHash: '[u8; 32]', language: 'Text', compiler: 'Text', wasm: 'Raw' } } } as Definitions;