@aeternity/aepp-calldata
Version:
Aeternity data serialization library
304 lines (257 loc) • 6.76 kB
JavaScript
const FateTypeVoid = () => {
return {name: 'void'}
}
const FateTypeInt = () => {
return {name: 'int'}
}
const FateTypeBool = () => {
return {name: 'bool'}
}
const FateTypeString = () => {
return {name: 'string'}
}
const FateTypeBits = () => {
return {name: 'bits'}
}
const FateTypeBytes = (size) => {
return {name: 'bytes', size}
}
const FateTypeHash = () => {
return {name: 'hash'}
}
const FateTypeSignature = () => {
return {name: 'signature'}
}
const FateTypeAccountAddress = () => {
return {name: 'account_pubkey'}
}
const FateTypeContractAddress = () => {
return {name: 'contract_pubkey'}
}
const FateTypeChannelAddress = () => {
return {name: 'channel'}
}
const FateTypeOracleAddress = (questionType, answerType) => {
return {
name: 'oracle_pubkey',
questionType,
answerType
}
}
const FateTypeOracleQueryAddress = (questionType, answerType) => {
return {
name: 'oracle_query_id',
questionType,
answerType
}
}
const FateTypeByteArray = () => {
return {name: 'byte_array'}
}
const FateTypeList = (valuesType) => {
return {
name: 'list',
valuesType,
}
}
const FateTypeTuple = (valueTypes = []) => {
return {
name: 'tuple',
valueTypes
}
}
const FateTypeRecord = (keys, valueTypes) => {
return {
name: 'record',
keys,
valueTypes,
}
}
const FateTypeSet = (valuesType) => {
return {
name: 'set',
valuesType,
}
}
const FateTypeMap = (keyType, valueType) => {
return {
name: 'map',
keyType,
valueType,
}
}
const FateTypeVariant = (variants) => {
return {
name: 'variant',
variants,
}
}
const FateTypeType = (type) => {
return {
name: 'type',
type,
}
}
const FateTypeOption = (valueTypes) => {
const variants = [
{ None: []},
{ Some: valueTypes }
]
return FateTypeVariant(variants)
}
const FateTypeChainTTL = () => {
const variants = [
{RelativeTTL: [FateTypeInt()]},
{FixedTTL: [FateTypeInt()]}
]
return FateTypeVariant(variants)
}
const FateTypeChainGAMetaTx = () => {
const variants = [
{'Chain.GAMetaTx': [FateTypeAccountAddress(), FateTypeInt()]},
]
return FateTypeVariant(variants)
}
const FateTypeChainPayingForTx = () => {
const variants = [
{'Chain.PayingForTx': [FateTypeAccountAddress(), FateTypeInt()]},
]
return FateTypeVariant(variants)
}
const FateTypeChainBaseTx = () => {
const variants = [
{'Chain.SpendTx': [FateTypeAccountAddress(), FateTypeInt(), FateTypeString()]},
{'Chain.OracleRegisterTx': []},
{'Chain.OracleQueryTx': []},
{'Chain.OracleResponseTx': []},
{'Chain.OracleExtendTx': []},
{'Chain.NamePreclaimTx': []},
{'Chain.NameClaimTx': [FateTypeString()]},
{'Chain.NameUpdateTx': [FateTypeHash()]},
{'Chain.NameRevokeTx': [FateTypeHash()]},
{'Chain.NameTransferTx': [FateTypeAccountAddress(), FateTypeHash()]},
{'Chain.ChannelCreateTx': [FateTypeAccountAddress()]},
{'Chain.ChannelDepositTx': [FateTypeAccountAddress(), FateTypeInt()]},
{'Chain.ChannelWithdrawTx': [FateTypeAccountAddress(), FateTypeInt()]},
{'Chain.ChannelForceProgressTx': [FateTypeAccountAddress()]},
{'Chain.ChannelCloseMutualTx': [FateTypeAccountAddress()]},
{'Chain.ChannelCloseSoloTx': [FateTypeAccountAddress()]},
{'Chain.ChannelSlashTx': [FateTypeAccountAddress()]},
{'Chain.ChannelSettleTx': [FateTypeAccountAddress()]},
{'Chain.ChannelSnapshotSoloTx': [FateTypeAccountAddress()]},
{'Chain.ContractCreateTx': [FateTypeAccountAddress()]},
{'Chain.ContractCallTx': [FateTypeAccountAddress(), FateTypeInt()]},
{'Chain.GAAttachTx': []},
]
return FateTypeVariant(variants)
}
const FateTypeAENSPointee = () => {
const variants = [
{'AENS.AccountPt': [FateTypeAccountAddress()]},
{'AENS.OraclePt': [FateTypeAccountAddress()]},
{'AENS.ContractPt': [FateTypeAccountAddress()]},
{'AENS.ChannelPt': [FateTypeAccountAddress()]},
]
return FateTypeVariant(variants)
}
const FateTypeAENSv2Pointee = () => {
const variants = [
{'AENSv2.AccountPt': [FateTypeAccountAddress()]},
{'AENSv2.OraclePt': [FateTypeAccountAddress()]},
{'AENSv2.ContractPt': [FateTypeAccountAddress()]},
{'AENSv2.ChannelPt': [FateTypeAccountAddress()]},
{'AENSv2.DataPt': [FateTypeBytes()]}, // max 1024 bytes
]
return FateTypeVariant(variants)
}
const FateTypeAENSName = () => {
const variants = [{
'AENS.Name': [
FateTypeAccountAddress(),
FateTypeChainTTL(),
FateTypeMap(FateTypeString(), FateTypeAENSPointee())
]
}]
return FateTypeVariant(variants)
}
const FateTypeAENSv2Name = () => {
const variants = [{
'AENSv2.Name': [
FateTypeAccountAddress(),
FateTypeChainTTL(),
FateTypeMap(FateTypeString(), FateTypeAENSv2Pointee())
]
}]
return FateTypeVariant(variants)
}
const FateTypeEvent = (variantType, topics) => {
return {
name: 'event',
variantType,
topics,
}
}
const FateTypeBls12381Fr = () => {
return {name: 'bls12_381.fr'}
}
const FateTypeBls12381Fp = () => {
return {name: 'bls12_381.fp'}
}
const FateTypeCalldata = (functionName, argumentTypes) => {
return {
name: 'calldata',
functionName,
argumentTypes,
}
}
const FateTypeContractBytearray = () => {
return {name: 'contract_bytearray'}
}
const FateTypeVar = (id) => {
return {
name: 'tvar',
id
}
}
const FateTypeAny = () => {
return {name: 'any'}
}
export {
FateTypeVoid,
FateTypeInt,
FateTypeBool,
FateTypeString,
FateTypeBits,
FateTypeBytes,
FateTypeHash,
FateTypeSignature,
FateTypeAccountAddress,
FateTypeContractAddress,
FateTypeChannelAddress,
FateTypeOracleAddress,
FateTypeOracleQueryAddress,
FateTypeByteArray,
FateTypeList,
FateTypeTuple,
FateTypeRecord,
FateTypeSet,
FateTypeMap,
FateTypeVariant,
FateTypeType,
FateTypeOption,
FateTypeChainTTL,
FateTypeChainGAMetaTx,
FateTypeChainPayingForTx,
FateTypeChainBaseTx,
FateTypeAENSPointee,
FateTypeAENSv2Pointee,
FateTypeAENSName,
FateTypeAENSv2Name,
FateTypeEvent,
FateTypeBls12381Fr,
FateTypeBls12381Fp,
FateTypeCalldata,
FateTypeContractBytearray,
FateTypeVar,
FateTypeAny,
}