UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

1 lines 6.23 kB
import{bcs,fromBase58,fromBase64,fromHex,toBase58,toBase64,toHex}from'../_deps/bcs/index.js';import{isValidWowAddress,normalizeWowAddress,WOW_ADDRESS_LENGTH}from'../utils/wow-types.js';import{TypeTagSerializer}from'./type-tag-serializer.js';function unsafe_u64(a){return bcs['u64']({'name':'unsafe_u64',...a})['transform']({'input':b=>b,'output':b=>Number(b)});}function optionEnum(a){return bcs['enum']('Option',{'None':null,'Some':a});}export const Address=bcs['bytes'](WOW_ADDRESS_LENGTH)['transform']({'validate':a=>{const b=typeof a==='string'?a:toHex(a);if(!b||!isValidWowAddress(normalizeWowAddress(b)))throw new Error('Invalid\x20Wow\x20address\x20'+b);},'input':a=>typeof a==='string'?fromHex(normalizeWowAddress(a)):a,'output':a=>normalizeWowAddress(toHex(a))});export const ObjectDigest=bcs['byteVector']()['transform']({'name':'ObjectDigest','input':a=>fromBase58(a),'output':a=>toBase58(new Uint8Array(a)),'validate':a=>{if(fromBase58(a)['length']!==0x20)throw new Error('ObjectDigest\x20must\x20be\x2032\x20bytes');}});export const WowObjectRef=bcs['struct']('WowObjectRef',{'objectId':Address,'version':bcs['u64'](),'digest':ObjectDigest});export const SharedObjectRef=bcs['struct']('SharedObjectRef',{'objectId':Address,'initialSharedVersion':bcs['u64'](),'mutable':bcs['bool']()});export const ObjectArg=bcs['enum']('ObjectArg',{'ImmOrOwnedObject':WowObjectRef,'SharedObject':SharedObjectRef,'Receiving':WowObjectRef});export const Owner=bcs['enum']('Owner',{'AddressOwner':Address,'ObjectOwner':Address,'Shared':bcs['struct']('Shared',{'initialSharedVersion':bcs['u64']()}),'Immutable':null,'ConsensusAddressOwner':bcs['struct']('ConsensusAddressOwner',{'owner':Address,'startVersion':bcs['u64']()})});export const CallArg=bcs['enum']('CallArg',{'Pure':bcs['struct']('Pure',{'bytes':bcs['byteVector']()['transform']({'input':a=>typeof a==='string'?fromBase64(a):a,'output':a=>toBase64(new Uint8Array(a))})}),'Object':ObjectArg});const InnerTypeTag=bcs['enum']('TypeTag',{'bool':null,'u8':null,'u64':null,'u128':null,'address':null,'signer':null,'vector':bcs['lazy'](()=>InnerTypeTag),'struct':bcs['lazy'](()=>StructTag),'u16':null,'u32':null,'u256':null});export const TypeTag=InnerTypeTag['transform']({'input':a=>typeof a==='string'?TypeTagSerializer['parseFromStr'](a,!![]):a,'output':a=>TypeTagSerializer['tagToString'](a)});export const Argument=bcs['enum']('Argument',{'GasCoin':null,'Input':bcs['u16'](),'Result':bcs['u16'](),'NestedResult':bcs['tuple']([bcs['u16'](),bcs['u16']()])});export const ProgrammableMoveCall=bcs['struct']('ProgrammableMoveCall',{'package':Address,'module':bcs['string'](),'function':bcs['string'](),'typeArguments':bcs['vector'](TypeTag),'arguments':bcs['vector'](Argument)});export const Command=bcs['enum']('Command',{'MoveCall':ProgrammableMoveCall,'TransferObjects':bcs['struct']('TransferObjects',{'objects':bcs['vector'](Argument),'address':Argument}),'SplitCoins':bcs['struct']('SplitCoins',{'coin':Argument,'amounts':bcs['vector'](Argument)}),'MergeCoins':bcs['struct']('MergeCoins',{'destination':Argument,'sources':bcs['vector'](Argument)}),'Publish':bcs['struct']('Publish',{'modules':bcs['vector'](bcs['byteVector']()['transform']({'input':a=>typeof a==='string'?fromBase64(a):a,'output':a=>toBase64(new Uint8Array(a))})),'dependencies':bcs['vector'](Address)}),'MakeMoveVec':bcs['struct']('MakeMoveVec',{'type':optionEnum(TypeTag)['transform']({'input':a=>a===null?{'None':!![]}:{'Some':a},'output':a=>a['Some']??null}),'elements':bcs['vector'](Argument)}),'Upgrade':bcs['struct']('Upgrade',{'modules':bcs['vector'](bcs['byteVector']()['transform']({'input':a=>typeof a==='string'?fromBase64(a):a,'output':a=>toBase64(new Uint8Array(a))})),'dependencies':bcs['vector'](Address),'package':Address,'ticket':Argument})});export const ProgrammableTransaction=bcs['struct']('ProgrammableTransaction',{'inputs':bcs['vector'](CallArg),'commands':bcs['vector'](Command)});export const TransactionKind=bcs['enum']('TransactionKind',{'ProgrammableTransaction':ProgrammableTransaction,'ChangeEpoch':null,'Genesis':null,'ConsensusCommitPrologue':null});export const TransactionExpiration=bcs['enum']('TransactionExpiration',{'None':null,'Epoch':unsafe_u64()});export const StructTag=bcs['struct']('StructTag',{'address':Address,'module':bcs['string'](),'name':bcs['string'](),'typeParams':bcs['vector'](InnerTypeTag)});export const GasData=bcs['struct']('GasData',{'payment':bcs['vector'](WowObjectRef),'owner':Address,'price':bcs['u64'](),'budget':bcs['u64']()});export const TransactionDataV1=bcs['struct']('TransactionDataV1',{'kind':TransactionKind,'sender':Address,'gasData':GasData,'expiration':TransactionExpiration});export const TransactionData=bcs['enum']('TransactionData',{'V1':TransactionDataV1});export const IntentScope=bcs['enum']('IntentScope',{'TransactionData':null,'TransactionEffects':null,'CheckpointSummary':null,'PersonalMessage':null});export const IntentVersion=bcs['enum']('IntentVersion',{'V0':null});export const AppId=bcs['enum']('AppId',{'Wow':null});export const Intent=bcs['struct']('Intent',{'scope':IntentScope,'version':IntentVersion,'appId':AppId});export function IntentMessage(a){return bcs['struct']('IntentMessage<'+a['name']+'>',{'intent':Intent,'value':a});}export const CompressedSignature=bcs['enum']('CompressedSignature',{'Falcon512':bcs['byteVector']()});export const PublicKey=bcs['enum']('PublicKey',{'Falcon512':bcs['bytes'](0x381)});export const MultiSigPkMap=bcs['struct']('MultiSigPkMap',{'pubKey':PublicKey,'weight':bcs['u8']()});export const MultiSigPublicKey=bcs['struct']('MultiSigPublicKey',{'pk_map':bcs['vector'](MultiSigPkMap),'threshold':bcs['u16']()});export const MultiSig=bcs['struct']('MultiSig',{'sigs':bcs['vector'](CompressedSignature),'bitmap':bcs['u16'](),'multisig_pk':MultiSigPublicKey});export const base64String=bcs['byteVector']()['transform']({'input':a=>typeof a==='string'?fromBase64(a):a,'output':a=>toBase64(new Uint8Array(a))});export const SenderSignedTransaction=bcs['struct']('SenderSignedTransaction',{'intentMessage':IntentMessage(TransactionData),'txSignatures':bcs['vector'](base64String)});export const SenderSignedData=bcs['vector'](SenderSignedTransaction,{'name':'SenderSignedData'});