UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

1 lines 4.37 kB
import{toTxObject,PackageAddress,isValidU64,isValidName,MAX_NAME_LENGTH,IsValidArgType,ObjectType}from'../common.js';import{W_ERROR,WErrors}from'../exception.js';import{GetAccountOrMark_Address,GetManyAccountOrMark_Address}from'../local/index.js';import{LocalMark}from'../local/local.js';import{query_objects}from'../query/object.js';import{CallBase,getCoinParam}from'./base.js';export class CallPayment extends CallBase{['data'];constructor(a){super(),this['data']=a;}async['call'](a){return await this['exec'](a);}async['operate'](a,b,c){await super['prepare'](a);!IsValidArgType(this?.['data']?.['object']?.['type_parameter'])&&W_ERROR(WErrors['InvalidParam'],'object.type_parameter\x20is\x20required.\x20such\x20as\x200x2::wow::WOW');const d=await newPayment(a,b,this['data']['object']['type_parameter'],this['data']['revenue'],this['data']['info']);await this['new_with_mark'](a,b,ObjectType['Payment'],create(b,this['data']['object']['type_parameter'],d),this['data']['object']);}}export function paymentFn(a){return PackageAddress+'::payment::'+a;}export const MAX_RECIPIENT_COUNT=0xc8;export function receiveToMyself(a,b,c){a['moveCall']({'target':paymentFn('unwrap_to_myself'),'arguments':[a['object'](c)],'typeArguments':[b]});}export async function paymentInfo(a,b,c){!isValidName(c['remark'])&&W_ERROR(WErrors['InvalidParam'],'Remark\x20exceeds\x20maximum\x20length\x20'+MAX_NAME_LENGTH);!isValidU64(c['index'])&&W_ERROR(WErrors['InvalidParam'],'index:\x20'+c['index']);c['for_guard']=await LocalMark['Instance']()['get_address'](c['for_guard']);if(c['for_guard']){if(c['for_object']){const d=await query_objects({'objects':[c['for_object']],'no_cache':a['no_cache'],'network':a['network']});return(!d['objects']||d?.['objects']?.['length']!==0x1||!d['objects'][0x0]['object'])&&W_ERROR(WErrors['InvalidParam'],'for_object\x20not\x20found:\x20'+c['for_object']),b['moveCall']({'target':paymentFn('payment_info_with_guard'),'arguments':[b['object'](d['objects'][0x0]['object']),b['object'](c['for_guard']),b['pure']['string'](c['remark']),b['pure']['u64'](c['index'])],'typeArguments':[d['objects'][0x0]['type_raw']]});}else return b['moveCall']({'target':paymentFn('payment_info2_with_guard'),'arguments':[b['object'](c['for_guard']),b['pure']['string'](c['remark']),b['pure']['u64'](c['index'])]});}else{if(c['for_object']){const e=await query_objects({'objects':[c['for_object']],'no_cache':a['no_cache'],'network':a['network']});return(!e['objects']||e?.['objects']?.['length']!==0x1||!e['objects'][0x0]['object'])&&W_ERROR(WErrors['InvalidParam'],'for_object\x20not\x20found:\x20'+c['for_object']),b['moveCall']({'target':paymentFn('payment_info'),'arguments':[b['object'](e['objects'][0x0]['object']),b['pure']['string'](c['remark']),b['pure']['u64'](c['index'])],'typeArguments':[e['objects'][0x0]['type_raw']]});}else return b['moveCall']({'target':paymentFn('payment_info2'),'arguments':[b['pure']['string'](c['remark']),b['pure']['u64'](c['index'])]});}}export const newPayment=async(a,b,c,d,e)=>{if(d['length']===0x1){const f=d[0x0],g=await GetAccountOrMark_Address(f['recipient']);!g&&W_ERROR(WErrors['IsValidAddress'],'recipient:\x20'+f['recipient']);const h=await getCoinParam(a,b,f['amount'],c),i=await paymentInfo(a,b,e);return!i&&W_ERROR(WErrors['InvalidParam'],'payment_info_obj\x20not\x20created'),!h&&W_ERROR(WErrors['InvalidParam'],'coin\x20not\x20created'),b['moveCall']({'target':paymentFn('new_singleton'),'arguments':[b['pure']['address'](g),h,i,b['object']['clock']()],'typeArguments':[c]});}else{const j=d;j['length']>MAX_RECIPIENT_COUNT&&W_ERROR(WErrors['InvalidParam'],'Recipient\x20count\x20exceeds\x20maximum\x20limit\x20'+MAX_RECIPIENT_COUNT);j['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'Revenue\x20array\x20cannot\x20be\x20empty');const k=await GetManyAccountOrMark_Address({'entities':j['map'](n=>n['recipient']),'check_all_founded':!![]}),l=j['map'](n=>n['amount']),m=[];for(const n of l){m['push'](await getCoinParam(a,b,n,c));}return b['moveCall']({'target':paymentFn('new'),'arguments':[b['pure']['vector']('address',k),b['makeMoveVec']({'elements':m}),await paymentInfo(a,b,e),b['object']['clock']()],'typeArguments':[c]});}};export function create(a,b,c){return a['moveCall']({'target':paymentFn('create'),'arguments':[toTxObject(a,c),a['object']['mutRegistrar'],a['object']['clock']()],'typeArguments':[b]});}