wowok
Version:
Wowok Blockchain TypeScript API
1 lines • 3.69 kB
JavaScript
import{bcs}from'../bcs/index.js';import{MOVE_STDLIB_ADDRESS,WOW_FRAMEWORK_ADDRESS}from'../utils/index.js';import{normalizeWowAddress}from'../utils/wow-types.js';const OBJECT_MODULE_NAME='object',ID_STRUCT_NAME='ID',STD_ASCII_MODULE_NAME='ascii',STD_ASCII_STRUCT_NAME='String',STD_UTF8_MODULE_NAME='string',STD_UTF8_STRUCT_NAME='String',STD_OPTION_MODULE_NAME='option',STD_OPTION_STRUCT_NAME='Option';export function isTxContext(a){const b=typeof a['body']==='object'&&'datatype'in a['body']?a['body']['datatype']:null;return!!b&&normalizeWowAddress(b['package'])===normalizeWowAddress('0x2')&&b['module']==='tx_context'&&b['type']==='TxContext';}export function getPureBcsSchema(a){if(typeof a==='string')switch(a){case'address':return bcs['Address'];case'bool':return bcs['Bool'];case'u8':return bcs['U8'];case'u16':return bcs['U16'];case'u32':return bcs['U32'];case'u64':return bcs['U64'];case'u128':return bcs['U128'];case'u256':return bcs['U256'];default:throw new Error('Unknown\x20type\x20signature\x20'+a);}if('vector'in a){if(a['vector']==='u8')return bcs['byteVector']()['transform']({'input':c=>typeof c==='string'?new TextEncoder()['encode'](c):c,'output':c=>c});const b=getPureBcsSchema(a['vector']);return b?bcs['vector'](b):null;}if('datatype'in a){const c=normalizeWowAddress(a['datatype']['package']);if(c===normalizeWowAddress(MOVE_STDLIB_ADDRESS)){if(a['datatype']['module']===STD_ASCII_MODULE_NAME&&a['datatype']['type']===STD_ASCII_STRUCT_NAME)return bcs['String'];if(a['datatype']['module']===STD_UTF8_MODULE_NAME&&a['datatype']['type']===STD_UTF8_STRUCT_NAME)return bcs['String'];if(a['datatype']['module']===STD_OPTION_MODULE_NAME&&a['datatype']['type']===STD_OPTION_STRUCT_NAME){const d=getPureBcsSchema(a['datatype']['typeParameters'][0x0]);return d?bcs['vector'](d):null;}}if(c===normalizeWowAddress(WOW_FRAMEWORK_ADDRESS)&&a['datatype']['module']===OBJECT_MODULE_NAME&&a['datatype']['type']===ID_STRUCT_NAME)return bcs['Address'];}return null;}export function normalizedTypeToMoveTypeSignature(a){if(typeof a==='object'&&'Reference'in a)return{'ref':'&','body':normalizedTypeToMoveTypeSignatureBody(a['Reference'])};if(typeof a==='object'&&'MutableReference'in a)return{'ref':'&mut','body':normalizedTypeToMoveTypeSignatureBody(a['MutableReference'])};return{'ref':null,'body':normalizedTypeToMoveTypeSignatureBody(a)};}function normalizedTypeToMoveTypeSignatureBody(a){if(typeof a==='string')switch(a){case'Address':return'address';case'Bool':return'bool';case'U8':return'u8';case'U16':return'u16';case'U32':return'u32';case'U64':return'u64';case'U128':return'u128';case'U256':return'u256';default:throw new Error('Unexpected\x20type\x20'+a);}if('Vector'in a)return{'vector':normalizedTypeToMoveTypeSignatureBody(a['Vector'])};if('Struct'in a)return{'datatype':{'package':a['Struct']['address'],'module':a['Struct']['module'],'type':a['Struct']['name'],'typeParameters':a['Struct']['typeArguments']['map'](normalizedTypeToMoveTypeSignatureBody)}};if('TypeParameter'in a)return{'typeParameter':a['TypeParameter']};throw new Error('Unexpected\x20type\x20'+JSON['stringify'](a));}export function pureBcsSchemaFromOpenMoveTypeSignatureBody(a){if(typeof a==='string')switch(a){case'address':return bcs['Address'];case'bool':return bcs['Bool'];case'u8':return bcs['U8'];case'u16':return bcs['U16'];case'u32':return bcs['U32'];case'u64':return bcs['U64'];case'u128':return bcs['U128'];case'u256':return bcs['U256'];default:throw new Error('Unknown\x20type\x20signature\x20'+a);}if('vector'in a)return bcs['vector'](pureBcsSchemaFromOpenMoveTypeSignatureBody(a['vector']));throw new Error('Expected\x20pure\x20typeSignature,\x20but\x20got\x20'+JSON['stringify'](a));}