wowok 2.2.5 → 2.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/bcs/bcs.d.ts +1 -1
- package/dist/cjs/bcs/bcs.js +1 -1
- package/dist/cjs/bcs/effects.d.ts +4 -4
- package/dist/cjs/bcs/effects.js +1 -1
- package/dist/cjs/bcs/index.d.ts +2 -2
- package/dist/cjs/bcs/index.js +1 -1
- package/dist/cjs/bcs/type-tag-serializer.js +1 -1
- package/dist/cjs/bcs/types.d.ts +4 -4
- package/dist/cjs/client/index.d.ts +4 -4
- package/dist/cjs/client/index.js +1 -1
- package/dist/cjs/cryptography/keypair.d.ts +2 -2
- package/dist/cjs/cryptography/publickey.js +1 -1
- package/dist/cjs/experimental/client.d.ts +4 -4
- package/dist/cjs/experimental/core.d.ts +17 -17
- package/dist/cjs/experimental/core.js +1 -1
- package/dist/cjs/experimental/errors.d.ts +2 -2
- package/dist/cjs/experimental/errors.js +1 -1
- package/dist/cjs/experimental/index.d.ts +2 -2
- package/dist/cjs/experimental/transports/utils.d.ts +3 -3
- package/dist/cjs/experimental/types.d.ts +3 -3
- package/dist/cjs/faucet/faucet.d.ts +3 -3
- package/dist/cjs/faucet/faucet.js +1 -1
- package/dist/cjs/faucet/index.d.ts +1 -1
- package/dist/cjs/faucet/index.js +1 -1
- package/dist/cjs/grpc/client.d.ts +7 -7
- package/dist/cjs/grpc/client.js +1 -1
- package/dist/cjs/grpc/core.d.ts +15 -15
- package/dist/cjs/grpc/core.js +1 -1
- package/dist/cjs/grpc/index.d.ts +2 -2
- package/dist/cjs/grpc/index.js +1 -1
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/jsonRpc/client.d.ts +24 -24
- package/dist/cjs/jsonRpc/client.js +1 -1
- package/dist/cjs/jsonRpc/core.d.ts +20 -20
- package/dist/cjs/jsonRpc/core.js +1 -1
- package/dist/cjs/jsonRpc/errors.d.ts +3 -3
- package/dist/cjs/jsonRpc/errors.js +1 -1
- package/dist/cjs/jsonRpc/http-transport.js +1 -1
- package/dist/cjs/jsonRpc/index.d.ts +2 -2
- package/dist/cjs/jsonRpc/index.js +1 -1
- package/dist/cjs/jsonRpc/json-rpc-resolver.d.ts +2 -2
- package/dist/cjs/jsonRpc/types/chain.d.ts +4 -4
- package/dist/cjs/jsonRpc/types/changes.d.ts +7 -7
- package/dist/cjs/jsonRpc/types/generated.d.ts +63 -63
- package/dist/cjs/jsonRpc/types/params.d.ts +13 -13
- package/dist/cjs/multisig/publickey.js +1 -1
- package/dist/cjs/transactions/Commands.js +1 -1
- package/dist/cjs/transactions/Inputs.js +1 -1
- package/dist/cjs/transactions/ObjectCache.js +1 -1
- package/dist/cjs/transactions/Transaction.js +1 -1
- package/dist/cjs/transactions/TransactionData.js +1 -1
- package/dist/cjs/transactions/__tests__/bcs.test.js +1 -1
- package/dist/cjs/transactions/data/internal.d.ts +1 -1
- package/dist/cjs/transactions/data/internal.js +1 -1
- package/dist/cjs/transactions/data/v2.js +1 -1
- package/dist/cjs/transactions/executor/caching.d.ts +4 -4
- package/dist/cjs/transactions/executor/parallel.d.ts +4 -4
- package/dist/cjs/transactions/executor/parallel.js +1 -1
- package/dist/cjs/transactions/executor/serial.d.ts +4 -4
- package/dist/cjs/transactions/intents/CoinWithBalance.d.ts +2 -2
- package/dist/cjs/transactions/intents/CoinWithBalance.js +1 -1
- package/dist/cjs/transactions/serializer.d.ts +2 -2
- package/dist/cjs/transactions/serializer.js +1 -1
- package/dist/cjs/transactions/utils.d.ts +4 -4
- package/dist/cjs/transactions/utils.js +1 -1
- package/dist/cjs/utils/constants.d.ts +0 -6
- package/dist/cjs/utils/constants.js +1 -1
- package/dist/cjs/utils/index.d.ts +1 -1
- package/dist/cjs/utils/index.js +1 -1
- package/dist/cjs/verify/index.d.ts +1 -1
- package/dist/cjs/verify/index.js +1 -1
- package/dist/cjs/verify/verify.d.ts +1 -1
- package/dist/cjs/verify/verify.js +1 -1
- package/dist/cjs/w/call/allocation.js +1 -1
- package/dist/cjs/w/call/arbitration.js +1 -1
- package/dist/cjs/w/call/base.d.ts +6 -6
- package/dist/cjs/w/call/base.js +1 -1
- package/dist/cjs/w/call/contact.js +1 -1
- package/dist/cjs/w/call/demand.js +1 -1
- package/dist/cjs/w/call/entity.js +1 -1
- package/dist/cjs/w/call/guard-ins.js +1 -1
- package/dist/cjs/w/call/guard.js +1 -1
- package/dist/cjs/w/call/passport.d.ts +2 -2
- package/dist/cjs/w/call/passport.js +1 -1
- package/dist/cjs/w/common.d.ts +7 -2
- package/dist/cjs/w/common.js +1 -1
- package/dist/cjs/w/local/account.d.ts +3 -3
- package/dist/cjs/w/local/account.js +1 -1
- package/dist/cjs/w/local/index.d.ts +2 -2
- package/dist/cjs/w/local/index.js +1 -1
- package/dist/cjs/w/local/local.js +1 -1
- package/dist/cjs/w/local/token.js +1 -1
- package/dist/cjs/w/messenger/messenger.js +1 -1
- package/dist/cjs/w/query/event.js +1 -1
- package/dist/cjs/w/query/object.js +1 -1
- package/dist/cjs/w/query/received.js +1 -1
- package/dist/cjs/w/util.js +1 -1
- package/dist/esm/bcs/bcs.d.ts +1 -1
- package/dist/esm/bcs/bcs.js +1 -1
- package/dist/esm/bcs/effects.d.ts +4 -4
- package/dist/esm/bcs/effects.js +1 -1
- package/dist/esm/bcs/index.d.ts +2 -2
- package/dist/esm/bcs/index.js +1 -1
- package/dist/esm/bcs/type-tag-serializer.js +1 -1
- package/dist/esm/bcs/types.d.ts +4 -4
- package/dist/esm/client/index.d.ts +4 -4
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/cryptography/keypair.d.ts +2 -2
- package/dist/esm/cryptography/publickey.js +1 -1
- package/dist/esm/experimental/client.d.ts +4 -4
- package/dist/esm/experimental/core.d.ts +17 -17
- package/dist/esm/experimental/core.js +1 -1
- package/dist/esm/experimental/errors.d.ts +2 -2
- package/dist/esm/experimental/errors.js +1 -1
- package/dist/esm/experimental/index.d.ts +2 -2
- package/dist/esm/experimental/transports/utils.d.ts +3 -3
- package/dist/esm/experimental/types.d.ts +3 -3
- package/dist/esm/faucet/faucet.d.ts +3 -3
- package/dist/esm/faucet/faucet.js +1 -1
- package/dist/esm/faucet/index.d.ts +1 -1
- package/dist/esm/faucet/index.js +1 -1
- package/dist/esm/grpc/client.d.ts +7 -7
- package/dist/esm/grpc/client.js +1 -1
- package/dist/esm/grpc/core.d.ts +15 -15
- package/dist/esm/grpc/core.js +1 -1
- package/dist/esm/grpc/index.d.ts +2 -2
- package/dist/esm/grpc/index.js +1 -1
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/jsonRpc/client.d.ts +24 -24
- package/dist/esm/jsonRpc/client.js +1 -1
- package/dist/esm/jsonRpc/core.d.ts +20 -20
- package/dist/esm/jsonRpc/core.js +1 -1
- package/dist/esm/jsonRpc/errors.d.ts +3 -3
- package/dist/esm/jsonRpc/errors.js +1 -1
- package/dist/esm/jsonRpc/http-transport.js +1 -1
- package/dist/esm/jsonRpc/index.d.ts +2 -2
- package/dist/esm/jsonRpc/index.js +1 -1
- package/dist/esm/jsonRpc/json-rpc-resolver.d.ts +2 -2
- package/dist/esm/jsonRpc/types/chain.d.ts +4 -4
- package/dist/esm/jsonRpc/types/changes.d.ts +7 -7
- package/dist/esm/jsonRpc/types/generated.d.ts +63 -63
- package/dist/esm/jsonRpc/types/params.d.ts +13 -13
- package/dist/esm/multisig/publickey.js +1 -1
- package/dist/esm/transactions/Commands.js +1 -1
- package/dist/esm/transactions/Inputs.js +1 -1
- package/dist/esm/transactions/ObjectCache.js +1 -1
- package/dist/esm/transactions/Transaction.js +1 -1
- package/dist/esm/transactions/TransactionData.js +1 -1
- package/dist/esm/transactions/__tests__/bcs.test.js +1 -1
- package/dist/esm/transactions/data/internal.d.ts +1 -1
- package/dist/esm/transactions/data/internal.js +1 -1
- package/dist/esm/transactions/data/v2.js +1 -1
- package/dist/esm/transactions/executor/caching.d.ts +4 -4
- package/dist/esm/transactions/executor/parallel.d.ts +4 -4
- package/dist/esm/transactions/executor/parallel.js +1 -1
- package/dist/esm/transactions/executor/serial.d.ts +4 -4
- package/dist/esm/transactions/intents/CoinWithBalance.d.ts +2 -2
- package/dist/esm/transactions/intents/CoinWithBalance.js +1 -1
- package/dist/esm/transactions/serializer.d.ts +2 -2
- package/dist/esm/transactions/serializer.js +1 -1
- package/dist/esm/transactions/utils.d.ts +4 -4
- package/dist/esm/transactions/utils.js +1 -1
- package/dist/esm/utils/constants.d.ts +0 -6
- package/dist/esm/utils/constants.js +1 -1
- package/dist/esm/utils/index.d.ts +1 -1
- package/dist/esm/utils/index.js +1 -1
- package/dist/esm/verify/index.d.ts +1 -1
- package/dist/esm/verify/index.js +1 -1
- package/dist/esm/verify/verify.d.ts +1 -1
- package/dist/esm/verify/verify.js +1 -1
- package/dist/esm/w/call/allocation.js +1 -1
- package/dist/esm/w/call/arbitration.js +1 -1
- package/dist/esm/w/call/base.d.ts +6 -6
- package/dist/esm/w/call/base.js +1 -1
- package/dist/esm/w/call/contact.js +1 -1
- package/dist/esm/w/call/demand.js +1 -1
- package/dist/esm/w/call/entity.js +1 -1
- package/dist/esm/w/call/guard-ins.js +1 -1
- package/dist/esm/w/call/guard.js +1 -1
- package/dist/esm/w/call/passport.d.ts +2 -2
- package/dist/esm/w/call/passport.js +1 -1
- package/dist/esm/w/common.d.ts +7 -2
- package/dist/esm/w/common.js +1 -1
- package/dist/esm/w/local/account.d.ts +3 -3
- package/dist/esm/w/local/account.js +1 -1
- package/dist/esm/w/local/index.d.ts +2 -2
- package/dist/esm/w/local/index.js +1 -1
- package/dist/esm/w/local/local.js +1 -1
- package/dist/esm/w/local/token.js +1 -1
- package/dist/esm/w/messenger/messenger.js +1 -1
- package/dist/esm/w/query/event.js +1 -1
- package/dist/esm/w/query/object.js +1 -1
- package/dist/esm/w/query/received.js +1 -1
- package/dist/esm/w/util.js +1 -1
- package/package.json +4 -3
- /package/dist/cjs/utils/{sui-types.d.ts → wow-types.d.ts} +0 -0
- /package/dist/cjs/utils/{sui-types.js → wow-types.js} +0 -0
- /package/dist/esm/utils/{sui-types.d.ts → wow-types.d.ts} +0 -0
- /package/dist/esm/utils/{sui-types.js → wow-types.js} +0 -0
package/dist/esm/w/call/guard.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{toTxObject,toTxString,isValidDescription,MAX_DESCRIPTION_LENGTH,isValidU8,isValidU64,isValidName,ValueType,parseValueType,OperatorType,ContextType,isWitnessType,PackageAddress,ObjectType,MAX_INPUT_SIZE,MAX_DEPENDED_COUNT,MAX_MULTI_OPERANDS}from'../common.js';import a152a from'lodash';import{W_ERROR,WErrors}from'../exception.js';import{CallBase}from'./base.js';import{isValidAddress,LocalMark}from'../local/local.js';import{GetAccountOrMark_Address}from'../local/index.js';import{WitnessSourceType,WitnessTargetType,query_objects}from'../query/object.js';import{bcs}from'../../bcs/index.js';import{valueToBcsBytes}from'../util.js';import{getGuardQueryInfo,GUARDQUERY}from'./guard-ins.js';import{checkType,resolveCallEnv}from'./util.js';import{isValidWowAddress}from'../../utils/sui-types.js';import{get_guardSubmissions,verify_guard}from'./passport.js';import{writeFileSync}from'fs';import{resolve}from'path';export function guardFn(a){return PackageAddress+'::guard::'+a;}export class CallGuard extends CallBase{['data'];constructor(a){super(),this['data']=a;}async['call'](a){return await this['prepare'](a),await this['exec'](a);}async['operate'](a,b,c,d){(!this['data']['table']||this['data']['table']['length']===0x0)&&W_ERROR(WErrors['InvalidParam'],'table\x20is\x20empty');!this['data']['root']&&W_ERROR(WErrors['InvalidParam'],'root\x20is\x20empty');const e=await newGuard(b,this['data']?.['description']||'',this['data']?.['table'],this['data']?.['root']);if(this['data']?.['rely']!=null){const f=await LocalMark['Instance']()['get_many_address'](this['data']['rely']['guards']),g=f['findIndex'](h=>h===undefined);g!==-0x1&&W_ERROR(WErrors['InvalidParam'],'rely.guards\x20invalid:\x20guard\x20at\x20index\x20'+g+'\x20not\x20found'),reliesAdd(b,e,f['filter'](h=>h!==undefined));}await this['new_with_mark'](a,b,ObjectType['Guard'],create(b,e),this['data']?.['namedNew']);}}export const newGuard=async(a,b,c,d)=>{!isValidDescription(b)&&W_ERROR(WErrors['IsValidDescription'],'Description\x20exceeds\x20maximum\x20length\x20'+MAX_DESCRIPTION_LENGTH);for(let m=0x0;m<c['length'];m++){const n=c[m];if(!isValidU8(n['identifier']))W_ERROR(WErrors['InvalidParam'],'table.identifier\x20'+n['identifier']+'\x20invalid');if(!n['b_submission']&&(n['value']===undefined||n['value']===null))W_ERROR(WErrors['InvalidParam'],'table.value\x20'+n['value']+'\x20with\x20identifier\x20'+n['identifier']+'\x20invalid');if(!isValidName(n['name']))W_ERROR(WErrors['InvalidParam'],'table.name');}const e=a152a['groupBy'](c,'identifier'),f=Object['keys'](e)['filter'](o=>e[o]['length']>0x1);f['length']>0x0&&W_ERROR(WErrors['InvalidParam'],'table.identifier\x20duplicates:\x20'+f['join'](',\x20'));var g=[];await buildNode(d,ValueType['Bool'],c,g);const h=g['reduce']((o,p)=>o+p['length'],0x0),j=new Uint8Array(h);let k=0x0;for(const o of g){j['set'](o,k),k+=o['length'];}j['length']>MAX_INPUT_SIZE&&W_ERROR(WErrors['NewGuardCheckFailed'],'Input\x20size\x20exceeds\x20maximum\x20limit\x20'+MAX_INPUT_SIZE);j['length']===0x0&&W_ERROR(WErrors['NewGuardCheckFailed'],'Input\x20cannot\x20be\x20empty');const l=[];for(let p=0x0;p<c['length'];p++){const q=c[p],r=parseValueType(q['value_type']);let s;q['b_submission']?(s=new Uint8Array(0x1),s[0x0]=r):((q['value']===undefined||q['value']===null)&&W_ERROR(WErrors['NewGuardCheckFailed'],'Table\x20item\x20value\x20is\x20required\x20when\x20b_submission\x20is\x20false'),s=await valueToBcsBytes(r,q['value'])),l['push'](a['moveCall']({'target':guardFn('table_item'),'arguments':[a['pure']['u8'](q['identifier']),a['pure']['bool'](q['b_submission']),a['pure']['vector']('u8',Array['from'](s)),toTxString(a,q['name'])]}));}return a['moveCall']({'target':guardFn('new'),'arguments':[toTxString(a,b),a['makeMoveVec']({'elements':l,'type':PackageAddress+'::guard::TableItem'}),a['pure']['vector']('u8',Array['from'](j))]});};export function create(a,b){return a['moveCall']({'target':guardFn('create'),'arguments':[toTxObject(a,b),a['object']['mutRegistrar'](),a['object']['clock']()]});}export function reliesAdd(a,b,c){const d=a152a['uniq'](c);d['length']>MAX_DEPENDED_COUNT&&W_ERROR(WErrors['NewGuardCheckFailed'],'Relies\x20count\x20exceeds\x20maximum\x20limit\x20'+MAX_DEPENDED_COUNT),d['forEach'](e=>{e===b&&W_ERROR(WErrors['NewGuardCheckFailed'],'Guard\x20cannot\x20rely\x20on\x20itself'),a['moveCall']({'target':guardFn('relies_add'),'arguments':[toTxObject(a,b),toTxObject(a,e),a['object']['mutRegistrar'](),a['object']['clock']()]});});}export function reliesRemove(a,b,c){const d=a152a['uniq'](c);d['length']>MAX_DEPENDED_COUNT&&W_ERROR(WErrors['NewGuardCheckFailed'],'Relies\x20count\x20exceeds\x20maximum\x20limit\x20'+MAX_DEPENDED_COUNT),d['forEach'](e=>{a['moveCall']({'target':guardFn('relies_remove'),'arguments':[toTxObject(a,b),toTxObject(a,e),a['object']['mutRegistrar']()]});});}export function reliesClear(a,b){a['moveCall']({'target':guardFn('relies_clear'),'arguments':[toTxObject(a,b),a['object']['mutRegistrar']()]});}export function reliesLogic(a,b,c){a['moveCall']({'target':guardFn('relies_logic_and'),'arguments':[toTxObject(a,b),a['pure']['bool'](c)]});}const buildNode=async(a,b,c,d)=>{const e=a;switch(e['type']){case'identifier':{const g=c['find'](h=>h['identifier']===e['identifier']);if(g){const h=parseValueType(g['value_type']);checkType(h,b,e),d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](e['identifier'])['toBytes']());}else W_ERROR(WErrors['InvalidParam'],'node\x20identifier\x20-\x20'+JSON['stringify'](e));break;}case'query':{const j=getGuardQueryInfo(e['query']);!j&&W_ERROR(WErrors['InvalidParam'],'query\x20not\x20found:\x20'+e['query']);checkType(j['return'],b,e);if(j['parameters']['length']===e['parameters']['length'])for(let m=e['parameters']['length']-0x1;m>=0x0;--m){await buildNode(e['parameters'][m],j['parameters'][m],c,d);}else W_ERROR(WErrors['InvalidParam'],'node\x20query\x20parameters\x20length\x20not\x20match\x20-\x20'+JSON['stringify'](e));const k=c['find'](n=>n['identifier']===e['object']['identifier']);!k&&W_ERROR(WErrors['InvalidParam'],'node\x20object\x20from\x20identifier\x20-\x20'+JSON['stringify'](e));const l=parseValueType(k['value_type']);l!==ValueType['Address']&&W_ERROR(WErrors['InvalidParam'],'object\x20to\x20query\x20must\x20be\x20address\x20in\x20table\x20'+k+'.\x20'+e['object']);d['push'](bcs['U8']['serialize'](OperatorType['TypeQuery'])['toBytes']());if(isWitnessType(e['object']['convert_witness'])){const n=WitnessTargetType(e['object']['convert_witness']);n!==j['objectType']&&W_ERROR(WErrors['InvalidParam'],'witness\x20object\x20type('+n+')\x20not\x20consistent\x20with\x20query\x20object\x20type('+j['objectType']+')');const o=WitnessSourceType(e['object']['convert_witness']);k['object_type']?k['object_type']!==o&&W_ERROR(WErrors['InvalidParam'],'witness\x20object\x20type('+o+')\x20not\x20consistent\x20with\x20query\x20object\x20type('+k['object_type']+')'):k['object_type']=o,d['push'](bcs['U8']['serialize'](e['object']['convert_witness'])['toBytes']());}else k?.['object_type']?k['object_type']!==j['objectType']&&W_ERROR(WErrors['InvalidParam'],'witness\x20object\x20type('+j['objectType']+')\x20not\x20consistent\x20with\x20query\x20object\x20type('+k['object_type']+')'):k['object_type']=j['objectType'],d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']());d['push'](bcs['U8']['serialize'](e['object']['identifier'])['toBytes']()),d['push'](bcs['U16']['serialize'](j['id'])['toBytes']());break;}case'logic_as_u256_greater_or_equal':case'logic_as_u256_lesser_or_equal':case'logic_as_u256_equal':case'logic_as_u256_greater':case'logic_as_u256_lesser':case'logic_equal':case'logic_and':case'logic_or':case'logic_string_contains':case'logic_string_nocase_contains':case'logic_string_nocase_equal':case'calc_number_add':case'calc_number_subtract':case'calc_number_multiply':case'calc_number_divide':case'calc_number_mod':case'calc_string_nocase_contains':case'calc_string_nocase_equal':case'calc_string_contains':{const p={'logic_as_u256_greater_or_equal':OperatorType['TypeLogicAsU256GreaterEqual'],'logic_as_u256_lesser_or_equal':OperatorType['TypeLogicAsU256LesserEqual'],'logic_as_u256_equal':OperatorType['TypeLogicAsU256Equal'],'logic_as_u256_greater':OperatorType['TypeLogicAsU256Greater'],'logic_as_u256_lesser':OperatorType['TypeLogicAsU256Lesser'],'logic_equal':OperatorType['TypeLogicEqual'],'logic_and':OperatorType['TypeLogicAnd'],'logic_or':OperatorType['TypeLogicOr'],'logic_string_contains':OperatorType['TypeStringContains'],'logic_string_nocase_contains':OperatorType['TypeStringNocaseContains'],'logic_string_nocase_equal':OperatorType['TypeStringNocaseEqual'],'calc_number_add':OperatorType['TypeNumberAdd'],'calc_number_subtract':OperatorType['TypeNumberSubtract'],'calc_number_multiply':OperatorType['TypeNumberMultiply'],'calc_number_divide':OperatorType['TypeNumberDivide'],'calc_number_mod':OperatorType['TypeNumberMod'],'calc_string_nocase_contains':OperatorType['TypeStringNocaseContains'],'calc_string_nocase_equal':OperatorType['TypeStringNocaseEqual'],'calc_string_contains':OperatorType['TypeStringContains']},r={'logic_as_u256_greater_or_equal':'number','logic_as_u256_lesser_or_equal':'number','logic_as_u256_equal':'number','logic_as_u256_greater':'number','logic_as_u256_lesser':'number','logic_equal':'variable','logic_and':ValueType['Bool'],'logic_or':ValueType['Bool'],'logic_string_contains':ValueType['String'],'logic_string_nocase_contains':ValueType['String'],'logic_string_nocase_equal':ValueType['String'],'calc_number_add':'number','calc_number_subtract':'number','calc_number_multiply':'number','calc_number_divide':'number','calc_number_mod':'number','calc_string_nocase_contains':ValueType['String'],'calc_string_nocase_equal':ValueType['String'],'calc_string_contains':ValueType['String']},s={'logic_as_u256_greater_or_equal':ValueType['Bool'],'logic_as_u256_lesser_or_equal':ValueType['Bool'],'logic_as_u256_equal':ValueType['Bool'],'logic_as_u256_greater':ValueType['Bool'],'logic_as_u256_lesser':ValueType['Bool'],'logic_equal':ValueType['Bool'],'logic_and':ValueType['Bool'],'logic_or':ValueType['Bool'],'logic_string_contains':ValueType['Bool'],'logic_string_nocase_contains':ValueType['Bool'],'logic_string_nocase_equal':ValueType['Bool'],'calc_number_add':ValueType['U256'],'calc_number_subtract':ValueType['U256'],'calc_number_multiply':ValueType['U256'],'calc_number_divide':ValueType['U256'],'calc_number_mod':ValueType['U256'],'calc_string_nocase_contains':ValueType['Bool'],'calc_string_nocase_equal':ValueType['Bool'],'calc_string_contains':ValueType['Bool']};checkType(s[e['type']],b,e),await multi_operand_op(p[e['type']],e['nodes'],r[e['type']],c,d);break;}case'vec_contains_bool':case'vec_contains_address':case'vec_contains_string':case'vec_contains_string_nocase':case'vec_contains_number':{const t={'vec_contains_bool':OperatorType['TypedValueVecContains_Bool'],'vec_contains_address':OperatorType['TypedValueVecContains_Address'],'vec_contains_string':OperatorType['TypedValueVecContains_String'],'vec_contains_string_nocase':OperatorType['TypedValueVecContains_StringNoCase'],'vec_contains_number':OperatorType['TypedValueVecContains_Number']},u={'vec_contains_bool':ValueType['VecBool'],'vec_contains_address':ValueType['VecAddress'],'vec_contains_string':ValueType['VecString'],'vec_contains_string_nocase':ValueType['VecString'],'vec_contains_number':'vec_number'},v={'vec_contains_bool':ValueType['Bool'],'vec_contains_address':ValueType['Address'],'vec_contains_string':ValueType['String'],'vec_contains_string_nocase':ValueType['String'],'vec_contains_number':'number'};checkType(ValueType['Bool'],b,e);for(let w=e['nodes']['length']-0x1;w>=0x0;--w){const x=w===0x0?u[e['type']]:v[e['type']];await buildNode(e['nodes'][w],x,c,d);}d['push'](bcs['U8']['serialize'](t[e['type']])['toBytes']()),d['push'](bcs['U8']['serialize'](e['nodes']['length'])['toBytes']());break;}case'logic_not':case'calc_string_length':case'convert_number_address':case'convert_address_number':case'convert_number_string':case'convert_string_number':case'convert_safe_u8':case'convert_safe_u16':case'convert_safe_u32':case'convert_safe_u64':case'convert_safe_u128':case'convert_safe_u256':case'value_type':case'vec_length':{const y={'logic_not':OperatorType['TypeLogicNot'],'calc_string_length':OperatorType['TypeStringLength'],'convert_number_address':OperatorType['TypeNumberAddress'],'convert_address_number':OperatorType['TypeAddressNumber'],'convert_number_string':OperatorType['TypeNumberString'],'convert_string_number':OperatorType['TypeStringNumber'],'convert_safe_u8':OperatorType['TypeSafeU8'],'convert_safe_u16':OperatorType['TypeSafeU16'],'convert_safe_u32':OperatorType['TypeSafeU32'],'convert_safe_u64':OperatorType['TypeSafeU64'],'convert_safe_u128':OperatorType['TypeSafeU128'],'convert_safe_u256':OperatorType['TypeSafeU256'],'value_type':OperatorType['TypedValueType'],'vec_length':OperatorType['TypedValueVecLength']},z={'logic_not':ValueType['Bool'],'calc_string_length':ValueType['String'],'convert_number_address':'number','convert_address_number':ValueType['Address'],'convert_number_string':'number','convert_string_number':ValueType['String'],'convert_safe_u8':'number','convert_safe_u16':'number','convert_safe_u32':'number','convert_safe_u64':'number','convert_safe_u128':'number','convert_safe_u256':'number','value_type':'variable','vec_length':'vec'},A={'logic_not':ValueType['Bool'],'calc_string_length':ValueType['U64'],'convert_number_address':ValueType['Address'],'convert_address_number':ValueType['U256'],'convert_number_string':ValueType['String'],'convert_string_number':ValueType['U256'],'convert_safe_u8':ValueType['U8'],'convert_safe_u16':ValueType['U16'],'convert_safe_u32':ValueType['U32'],'convert_safe_u64':ValueType['U64'],'convert_safe_u128':ValueType['U128'],'convert_safe_u256':ValueType['U256'],'value_type':ValueType['U8'],'vec_length':ValueType['U64']};checkType(A[e['type']],b,e),await single_operand_op(y[e['type']],e['node'],z[e['type']],c,d);break;}case'calc_string_indexof':case'calc_string_nocase_indexof':{const B={'calc_string_indexof':OperatorType['TypeStringIndexof'],'calc_string_nocase_indexof':OperatorType['TypeStringNocaseIndexof']};checkType(ValueType['U64'],b,e),await buildNode(e['nodeRight'],ValueType['String'],c,d),await buildNode(e['nodeLeft'],ValueType['String'],c,d),d['push'](bcs['U8']['serialize'](B[e['type']])['toBytes']()),d['push'](bcs['U8']['serialize'](e['order']==='forward'?0x0:0x1)['toBytes']());break;}case'vec_indexof_bool':case'vec_indexof_address':case'vec_indexof_string':case'vec_indexof_string_nocase':case'vec_indexof_number':{const C={'vec_indexof_bool':OperatorType['TypedValueVecIndexOf_Bool'],'vec_indexof_address':OperatorType['TypedValueVecIndexOf_Address'],'vec_indexof_string':OperatorType['TypedValueVecIndexOf_String'],'vec_indexof_string_nocase':OperatorType['TypedValueVecIndexOf_StringNoCase'],'vec_indexof_number':OperatorType['TypedValueVecIndexOf_Number']},D={'vec_indexof_bool':ValueType['Bool'],'vec_indexof_address':ValueType['Address'],'vec_indexof_string':ValueType['String'],'vec_indexof_string_nocase':ValueType['String'],'vec_indexof_number':'number'},E={'vec_indexof_bool':ValueType['VecBool'],'vec_indexof_address':ValueType['VecAddress'],'vec_indexof_string':ValueType['VecString'],'vec_indexof_string_nocase':ValueType['VecString'],'vec_indexof_number':'vec_number'};checkType(ValueType['U64'],b,e),await buildNode(e['nodeRight'],D[e['type']],c,d),await buildNode(e['nodeLeft'],E[e['type']],c,d),d['push'](bcs['U8']['serialize'](C[e['type']])['toBytes']()),d['push'](bcs['U8']['serialize'](e['order']==='forward'?0x0:0x1)['toBytes']());break;}case'query_reward_record_find':case'query_reward_record_count':case'query_reward_record_exists':{!isValidU8(e['object']['identifier'])&&W_ERROR(WErrors['IsValidU8'],e['type']+'\x20object\x20identifier\x20'+e['object']['identifier']+'\x20is\x20not\x20a\x20valid\x20U8\x20(0-255)');const F=c['find'](H=>H['identifier']===e['object']['identifier']);!F&&W_ERROR(WErrors['IsValidIdentifier'],e['type']+'\x20object\x20identifier\x20'+e['object']['identifier']+'\x20not\x20found\x20in\x20table');const G=await buildRewardRecordQuery(e,c,b);d['push'](...G['output']);break;}case'query_progress_history_find':case'query_progress_history_session_find':case'query_progress_history_session_forward_find':case'query_progress_history_session_count':case'query_progress_history_session_forward_count':case'query_progress_history_session_forward_retained_submission_count':{!isValidU8(e['object']['identifier'])&&W_ERROR(WErrors['IsValidU8'],e['type']+'\x20object\x20identifier\x20'+e['object']['identifier']+'\x20is\x20not\x20a\x20valid\x20U8\x20(0-255)');const H=c['find'](J=>J['identifier']===e['object']['identifier']);!H&&W_ERROR(WErrors['IsValidIdentifier'],e['type']+'\x20object\x20identifier\x20'+e['object']['identifier']+'\x20not\x20found\x20in\x20table');const I=await buildProgressQuery(e,c,b);d['push'](...I['output']);break;}case'context':{let J;switch(e['context']){case'Signer':J=ContextType['TypeSigner'];break;case'Clock':J=ContextType['TypeClock'];break;case'Guard':J=ContextType['TypeGuard'];break;default:W_ERROR(WErrors['InvalidParam'],'Invalid\x20context\x20type:\x20'+e['context']);}d['push'](bcs['U8']['serialize'](J)['toBytes']());e['context']==='Clock'?checkType(ContextType['TypeClock'],b,e):checkType(ValueType['Address'],b,e);break;}default:W_ERROR(WErrors['InvalidParam'],'node:'+JSON['stringify'](e));}},multi_operand_op=async(a,b,c,d,e)=>{(b['length']<0x2||b['length']>MAX_MULTI_OPERANDS)&&W_ERROR(WErrors['InvalidParam'],'op\x20'+a+'\x20parameters\x20length\x20must\x20>=\x202\x20and\x20<=\x20\x20\x0a\x09\x09\x09\x09'+MAX_MULTI_OPERANDS+'.\x20\x09parameters:\x0a\x09\x09\x09\x09'+JSON['stringify'](b));for(let f=b['length']-0x1;f>=0x0;--f){await buildNode(b[f],c,d,e);}e['push'](bcs['U8']['serialize'](a)['toBytes']()),e['push'](bcs['U8']['serialize'](b['length'])['toBytes']());},getNewIdentifier=(a,b)=>{for(let c=0x0;c<0x100;c++){if(!a['find'](d=>d['identifier']===c))return c;}return W_ERROR(WErrors['InvalidParam'],b+'\x20cannot\x20find\x20available\x20identifier\x20in\x20table\x20(all\x20256\x20identifiers\x20are\x20used)'),-0x1;},StoreFromIdFilter=bcs['struct']('StoreFromIdFilter',{'mode':bcs['U8'],'value':bcs['option'](bcs['Address'])}),RecordQueryConditionsBCS=bcs['struct']('RecordQueryConditions',{'recipient':bcs['Address'],'guard':bcs['option'](bcs['Address']),'time_min':bcs['option'](bcs['U64']),'time_max':bcs['option'](bcs['U64']),'amount_min':bcs['option'](bcs['U64']),'amount_max':bcs['option'](bcs['U64']),'store_from_id':bcs['option'](StoreFromIdFilter)}),buildRecordQueryConditionsFromConst=a=>{const b={'recipient':a['recipient'],'guard':a['guard']??null,'time_min':a['timeMin']??null,'time_max':a['timeMax']??null,'amount_min':a['amountMin']??null,'amount_max':a['amountMax']??null,'store_from_id':a['storeFromId']?{'mode':a['storeFromId']==='not_exists'?0x0:a['storeFromId']==='exists'?0x1:0x2,'value':typeof a['storeFromId']==='object'?a['storeFromId']['eq']:null}:null};return RecordQueryConditionsBCS['serialize'](b)['toBytes']();},buildRewardRecordQuery=async(a,b,c)=>{const d=a['recipient'];d['type']!=='identifier'&&W_ERROR(WErrors['InvalidParam'],a['type']+'\x20recipient\x20must\x20be\x20an\x20identifier');const e=d,f=b[e['identifier']];!f&&W_ERROR(WErrors['InvalidParam'],a['type']+'\x20recipient\x20identifier\x20'+e['identifier']+'\x20not\x20found\x20in\x20table');f['value_type']!==ValueType['Address']&&W_ERROR(WErrors['InvalidParam'],a['type']+'\x20recipient\x20must\x20be\x20Address\x20type,\x20got\x20'+f['value_type']);a['where']['timeMin']!==undefined&&!isValidU64(a['where']['timeMin'])&&W_ERROR(WErrors['IsValidU64'],'Reward\x20record\x20query\x20timeMin\x20\x22'+a['where']['timeMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['timeMax']!==undefined&&!isValidU64(a['where']['timeMax'])&&W_ERROR(WErrors['IsValidU64'],'Reward\x20record\x20query\x20timeMax\x20\x22'+a['where']['timeMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['amountMin']!==undefined&&!isValidU64(a['where']['amountMin'])&&W_ERROR(WErrors['IsValidU64'],'Reward\x20record\x20query\x20amountMin\x20\x22'+a['where']['amountMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['amountMax']!==undefined&&!isValidU64(a['where']['amountMax'])&&W_ERROR(WErrors['IsValidU64'],'Reward\x20record\x20query\x20amountMax\x20\x22'+a['where']['amountMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');const g={'recipient':f['value']};if(a['where']['guard']){const o=await LocalMark['Instance']()['get_address'](a['where']['guard']);!o&&W_ERROR(WErrors['AddressNotFound'],'Reward\x20record\x20query\x20guard\x20\x22'+a['where']['guard']+'\x22\x20not\x20found\x20in\x20LocalMark'),g['guard']=o;}if(a['where']['timeMin']!==undefined)g['timeMin']=a['where']['timeMin'];if(a['where']['timeMax']!==undefined)g['timeMax']=a['where']['timeMax'];if(a['where']['amountMin']!==undefined)g['amountMin']=a['where']['amountMin'];if(a['where']['amountMax']!==undefined)g['amountMax']=a['where']['amountMax'];if(a['where']['storeFromId']!==undefined){if(typeof a['where']['storeFromId']==='object'&&'eq'in a['where']['storeFromId']){const p=await LocalMark['Instance']()['get_address'](a['where']['storeFromId']['eq']);!p&&W_ERROR(WErrors['AddressNotFound'],'Reward\x20record\x20query\x20storeFromId\x20\x22'+a['where']['storeFromId']['eq']+'\x22\x20not\x20found\x20in\x20LocalMark'),g['storeFromId']={'eq':p};}else g['storeFromId']=a['where']['storeFromId'];}const h=buildRecordQueryConditionsFromConst(g);let i,j;switch(a['type']){case'query_reward_record_find':i=a['find']==='first'?0x65a:0x65b,j=ValueType['U64'];break;case'query_reward_record_count':i=0x65c,j=ValueType['U64'];break;case'query_reward_record_exists':i=0x65d,j=ValueType['Bool'];break;}const k=a['object']['identifier'],l=getNewIdentifier(b,a['type']);b['push']({'identifier':l,'value_type':ValueType['VecU8'],'value':Array['from'](h),'b_submission':![],'name':'query_conditions_'+l});const m=b['find'](q=>q['identifier']===k);m&&(m['object_type']=ObjectType['Reward']);const n=[];return n['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),n['push'](bcs['U8']['serialize'](l)['toBytes']()),n['push'](bcs['U8']['serialize'](OperatorType['TypeQuery'])['toBytes']()),n['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),n['push'](bcs['U8']['serialize'](k)['toBytes']()),n['push'](bcs['U16']['serialize'](i)['toBytes']()),checkType(j,c,a),{'output':n,'returnType':j};},ProgressHistoryFindConditionsBCS=bcs['struct']('ProgressHistoryFindConditions',{'node':bcs['option'](bcs['String']),'next_node':bcs['option'](bcs['String']),'time_min':bcs['option'](bcs['U64']),'time_max':bcs['option'](bcs['U64']),'index_min':bcs['option'](bcs['U64']),'index_max':bcs['option'](bcs['U64']),'find':bcs['U8']}),ProgressSessionFindConditionsBCS=bcs['struct']('ProgressSessionFindConditions',{'next_node':bcs['option'](bcs['String']),'find':bcs['U8']}),ProgressForwardFindConditionsBCS=bcs['struct']('ProgressForwardFindConditions',{'who':bcs['option'](bcs['Address']),'operation':bcs['option'](bcs['String']),'accomplished':bcs['option'](bcs['Bool']),'time_min':bcs['option'](bcs['U64']),'time_max':bcs['option'](bcs['U64']),'find':bcs['U8']}),buildProgressHistoryFindConditions=a=>{a['where']['node']!==undefined&&!isValidName(a['where']['node'])&&W_ERROR(WErrors['IsValidName'],'Progress\x20history\x20find\x20node\x20\x22'+a['where']['node']+'\x22\x20is\x20not\x20a\x20valid\x20name');a['where']['nextNode']!==undefined&&!isValidName(a['where']['nextNode'])&&W_ERROR(WErrors['IsValidName'],'Progress\x20history\x20find\x20nextNode\x20\x22'+a['where']['nextNode']+'\x22\x20is\x20not\x20a\x20valid\x20name');a['where']['timeMin']!==undefined&&!isValidU64(a['where']['timeMin'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20history\x20find\x20timeMin\x20\x22'+a['where']['timeMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['timeMax']!==undefined&&!isValidU64(a['where']['timeMax'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20history\x20find\x20timeMax\x20\x22'+a['where']['timeMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['indexMin']!==undefined&&!isValidU64(a['where']['indexMin'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20history\x20find\x20indexMin\x20\x22'+a['where']['indexMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['indexMax']!==undefined&&!isValidU64(a['where']['indexMax'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20history\x20find\x20indexMax\x20\x22'+a['where']['indexMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');const b={'node':a['where']['node']??null,'next_node':a['where']['nextNode']??null,'time_min':a['where']['timeMin']??null,'time_max':a['where']['timeMax']??null,'index_min':a['where']['indexMin']??null,'index_max':a['where']['indexMax']??null,'find':a['find']==='first'?0x0:0x1};return ProgressHistoryFindConditionsBCS['serialize'](b)['toBytes']();},buildProgressSessionFindConditions=a=>{a['where']['nextNode']!==undefined&&!isValidName(a['where']['nextNode'])&&W_ERROR(WErrors['IsValidName'],'Progress\x20session\x20find\x20nextNode\x20\x22'+a['where']['nextNode']+'\x22\x20is\x20not\x20a\x20valid\x20name');const b={'next_node':a['where']['nextNode']??null,'find':a['find']==='first'?0x0:0x1},c=ProgressSessionFindConditionsBCS['serialize'](b)['toBytes']();return c;},buildProgressForwardFindConditions=async a=>{a['where']['operation']!==undefined&&!isValidName(a['where']['operation'])&&W_ERROR(WErrors['IsValidName'],'Progress\x20forward\x20find\x20operation\x20\x22'+a['where']['operation']+'\x22\x20is\x20not\x20a\x20valid\x20name');a['where']['timeMin']!==undefined&&!isValidU64(a['where']['timeMin'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20forward\x20find\x20timeMin\x20\x22'+a['where']['timeMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['timeMax']!==undefined&&!isValidU64(a['where']['timeMax'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20forward\x20find\x20timeMax\x20\x22'+a['where']['timeMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');let b=null;if(a['where']['who']!==undefined){const d=await GetAccountOrMark_Address({'name_or_address':a['where']['who']});!d&&W_ERROR(WErrors['AddressNotFound'],'Progress\x20forward\x20find\x20who\x20\x22'+a['where']['who']+'\x22\x20not\x20found\x20in\x20LocalMark\x20or\x20accounts'),b=d;}const c={'who':b,'operation':a['where']['operation']??null,'accomplished':a['where']['accomplished']??null,'time_min':a['where']['timeMin']??null,'time_max':a['where']['timeMax']??null,'find':a['find']==='first'?0x0:0x1};return ProgressForwardFindConditionsBCS['serialize'](c)['toBytes']();},buildProgressQuery=async(a,b,c)=>{const d=[];let e;const f=ValueType['U64'];let g;switch(a['type']){case'query_progress_history_find':{e=0x4fa,g=buildProgressHistoryFindConditions(a);break;}case'query_progress_history_session_find':{e=0x4fb,g=buildProgressSessionFindConditions(a);break;}case'query_progress_history_session_forward_find':{e=0x4fc,g=await buildProgressForwardFindConditions(a);break;}case'query_progress_history_session_count':{e=0x4fd,g=new Uint8Array(0x0);break;}case'query_progress_history_session_forward_count':{e=0x4fe,g=new Uint8Array(0x0);break;}case'query_progress_history_session_forward_retained_submission_count':{e=0x4ff,g=new Uint8Array(0x0);break;}}const h=a['object']['identifier'];let i=null;if('conditionsIdentifier'in a&&a['conditionsIdentifier']!==undefined&&a['conditionsIdentifier']!==null)i=a['conditionsIdentifier'];else(a['type']==='query_progress_history_find'||a['type']==='query_progress_history_session_find'||a['type']==='query_progress_history_session_forward_find')&&(i=getNewIdentifier(b,a['type']),b['push']({'identifier':i,'value_type':ValueType['VecU8'],'value':Array['from'](g),'b_submission':![],'name':'query_conditions_'+i}),a['conditionsIdentifier']=i);if(a['type']==='query_progress_history_find'||a['type']==='query_progress_history_session_find'||a['type']==='query_progress_history_session_forward_find'||a['type']==='query_progress_history_session_count'||a['type']==='query_progress_history_session_forward_count'||a['type']==='query_progress_history_session_forward_retained_submission_count'){const j=b['find'](k=>k['identifier']===h);j&&(j['object_type']=ObjectType['Progress']);}switch(a['type']){case'query_progress_history_session_forward_retained_submission_count':{await buildNode(a['forwardIdx'],ValueType['U64'],b,d),await buildNode(a['sessionIdx'],ValueType['U64'],b,d),await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_session_forward_count':{await buildNode(a['sessionIdx'],ValueType['U64'],b,d),await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_session_forward_find':{i!==null&&(d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](i)['toBytes']()));await buildNode(a['sessionIdx'],ValueType['U64'],b,d),await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_session_count':{await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_session_find':{i!==null&&(d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](i)['toBytes']()));await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_find':{i!==null&&(d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](i)['toBytes']()));break;}}return d['push'](bcs['U8']['serialize'](OperatorType['TypeQuery'])['toBytes']()),d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](h)['toBytes']()),d['push'](bcs['U16']['serialize'](e)['toBytes']()),checkType(f,c,a),{'output':d,'returnType':f};},single_operand_op=async(a,b,c,d,e)=>{await buildNode(b,c,d,e),e['push'](bcs['U8']['serialize'](a)['toBytes']());};export const guard2file=async(a,b,c='json',d)=>{const f=await query_objects({'objects':[a],'network':d}),g=f['objects'];if(!g||g['length']===0x0||g[0x0]['type']!=='Guard'){W_ERROR(WErrors['InvalidParam'],'guard2file:\x20Guard\x20object\x20not\x20found:\x20'+a);return;}const h=g[0x0];if(!h){W_ERROR(WErrors['InvalidParam'],'guard2file:\x20Failed\x20to\x20get\x20Guard\x20object\x20data:\x20'+a);return;}let i;c==='json'?i=generateGuardJson(h):i=generateGuardMarkdown(h);try{const j=resolve(b);writeFileSync(j,i,'utf-8');}catch(k){W_ERROR(WErrors['InvalidParam'],'guard2file:\x20Failed\x20to\x20write\x20file\x20\x27'+b+'\x27:\x20'+k['message']);}};const generateGuardJson=a=>{const b={};return a['description']&&(b['description']=a['description']),a['table']&&a['table']['length']>0x0&&(b['table']=a['table']['map'](c=>({'identifier':c['identifier'],'b_submission':c['b_submission'],'value_type':c['value_type'],'value':c['value'],'name':c['name']}))),a['root']&&(b['root']=a['root']),a['relies']&&a['relies']['length']>0x0&&(b['rely']={'guards':a['relies'],'logic_or':!a['relies_logic_and']}),JSON['stringify'](b,null,0x2);},generateGuardMarkdown=a=>{const b=[];b['push']('#\x20Guard\x20Definition'),b['push'](''),b['push']('**Object\x20ID:**\x20'+a['object']),b['push'](''),b['push']('##\x20Summary'),b['push']('');const c=a['description']||'',d=a['table']?a['table']['length']:0x0;let e=''+(c['length']>0x64?c['substring'](0x0,0x61)+'...':c);e+='\x20['+d+'\x20tables]',b['push'](e),b['push'](''),b['push']('##\x20Description'),b['push'](''),b['push'](a['description']||''),b['push'](''),b['push']('##\x20Table\x20(Data\x20Definitions)'),b['push'](''),b['push']('|\x20Identifier\x20|\x20b_submission\x20|\x20value_type\x20|\x20value\x20|\x20name\x20|'),b['push']('|------------|--------------|------------|-------|------|');if(a['table']&&a['table']['length']>0x0)for(const f of a['table']){const g=parseValueType(f['value_type']),h=valueTypeToString(g),i=formatValueForMarkdown(f['value']);b['push']('|\x20'+f['identifier']+'\x20|\x20'+f['b_submission']+'\x20|\x20'+h+'\x20('+f['value_type']+')\x20|\x20'+i+'\x20|\x20'+f['name']+'\x20|');}else b['push']('|\x20-\x20|\x20-\x20|\x20-\x20|\x20-\x20|\x20-\x20|');b['push'](''),b['push']('##\x20Root\x20(Computational\x20Tree)'),b['push'](''),b['push']('The\x20root\x20node\x20MUST\x20return\x20a\x20Bool\x20value\x20(pass/fail).'),b['push']('');if(a['root']){b['push']('```json'),b['push'](JSON['stringify'](a['root'],null,0x2)),b['push']('```'),b['push']('');const j=generateNodeComments(a['root']);if(j['length']>0x0){b['push']('###\x20Node\x20Comments'),b['push']('');for(const k of j){b['push']('-\x20**'+k['type']+'**:\x20'+k['description']);}b['push']('');}}else b['push']('*No\x20root\x20node\x20data\x20available*'),b['push']('');if(a['relies']&&a['relies']['length']>0x0){b['push']('##\x20Rely\x20(Dependencies)'),b['push'](''),b['push']('**Logic:**\x20'+(a['relies_logic_and']?'AND':'OR')),b['push'](''),b['push']('**Dependent\x20Guards:**');for(const l of a['relies']){b['push']('-\x20'+l);}b['push']('');}return b['join']('\x0a');},formatValueForMarkdown=a=>{if(a===undefined||a===null)return'-';if(typeof a==='boolean')return a?'true':'false';if(typeof a==='string')return a['startsWith']('0x')&&a['length']===0x42&&(!isValidAddress(a)&&W_ERROR(WErrors['IsValidAddress'],'Invalid\x20address:\x20'+a)),a;if(typeof a==='number')return a['toString']();if(Array['isArray'](a)){if(a['length']===0x0)return'[]';if(a['length']>0x3)return'['+a['slice'](0x0,0x3)['join'](',\x20')+',\x20...\x20('+a['length']+'\x20items)]';return'['+a['join'](',\x20')+']';}if(typeof a==='object')return'{...}';return String(a);};export const generateNodeComments=(a,b=[])=>{if(!a)return b;if(a['type']==='query'){const c=typeof a['query']==='number'?a['query']:undefined;if(c!==undefined){const d=GUARDQUERY['find'](e=>e['id']===c);d&&b['push']({'type':'query('+a['query']+')','description':d['name']+':\x20'+d['description']});}}else{if(a['type']['startsWith']('query_reward_record_')){const e=a['type']['replace']('query_','')['replace'](/_/g,'.'),f=GUARDQUERY['find'](g=>g['name']===e);f?b['push']({'type':a['type'],'description':f['name']+':\x20'+f['description']}):b['push']({'type':a['type'],'description':'Reward\x20Record\x20query:\x20'+a['type']['replace'](/_/g,'\x20')});}else{if(a['type']['startsWith']('query_progress_history_')){const g=a['type']['replace']('query_','')['replace'](/_/g,'.'),h=GUARDQUERY['find'](i=>i['name']===g);h?b['push']({'type':a['type'],'description':h['name']+':\x20'+h['description']}):b['push']({'type':a['type'],'description':'Progress\x20History\x20query:\x20'+a['type']['replace'](/_/g,'\x20')});}else{if(a['type']['startsWith']('logic_'))b['push']({'type':a['type'],'description':'Logic\x20operation:\x20'+a['type']['replace'](/_/g,'\x20')});else{if(a['type']['startsWith']('calc_'))b['push']({'type':a['type'],'description':'Calculation:\x20'+a['type']['replace'](/_/g,'\x20')});else a['type']['startsWith']('convert_')&&b['push']({'type':a['type'],'description':'Type\x20conversion:\x20'+a['type']['replace'](/_/g,'\x20')});}}}}if('nodes'in a&&Array['isArray'](a['nodes']))for(const i of a['nodes']){generateNodeComments(i,b);}'node'in a&&a['node']&&generateNodeComments(a['node'],b);if('parameters'in a&&Array['isArray'](a['parameters']))for(const j of a['parameters']){generateNodeComments(j,b);}return'nodeLeft'in a&&a['nodeLeft']&&generateNodeComments(a['nodeLeft'],b),'nodeRight'in a&&a['nodeRight']&&generateNodeComments(a['nodeRight'],b),'recipient'in a&&a['recipient']&&generateNodeComments(a['recipient'],b),'historyIdx'in a&&a['historyIdx']&&generateNodeComments(a['historyIdx'],b),'sessionIdx'in a&&a['sessionIdx']&&generateNodeComments(a['sessionIdx'],b),'forwardIdx'in a&&a['forwardIdx']&&generateNodeComments(a['forwardIdx'],b),b;};const valueTypeToString=a=>{const b={[ValueType['Bool']]:'Bool',[ValueType['Address']]:'Address',[ValueType['String']]:'String',[ValueType['U8']]:'U8',[ValueType['U16']]:'U16',[ValueType['U32']]:'U32',[ValueType['U64']]:'U64',[ValueType['U128']]:'U128',[ValueType['U256']]:'U256',[ValueType['VecBool']]:'VecBool',[ValueType['VecAddress']]:'VecAddress',[ValueType['VecString']]:'VecString',[ValueType['VecU8']]:'VecU8',[ValueType['VecU16']]:'VecU16',[ValueType['VecU32']]:'VecU32',[ValueType['VecU64']]:'VecU64',[ValueType['VecU128']]:'VecU128',[ValueType['VecU256']]:'VecU256',[ValueType['VecVecU8']]:'VecVecU8',[ValueType['Value']]:'Value'};return b[a]||'Unknown('+a+')';};export const gen_passport=async(a,b,c)=>{!isValidWowAddress(b)&&W_ERROR(WErrors['InvalidParam'],'guard\x20invalid:\x20guard\x20empty');await resolveCallEnv(a);const d=await get_guardSubmissions(a,[b]);return d['submission']['length']>0x0?!c?{'type':'submission','guard':d['guard'],'submission':d['submission']}:await verify_guard(a,c):await verify_guard(a,{'type':'submission','guard':[{'object':b,'impack':!![]}],'submission':[]});};function detectFileFormatFromContent(a){const b=a['trim']();if(b['startsWith']('{')||b['startsWith']('['))return'json';return'markdown';}function extractJsonFromMarkdown(a){const b=/```(?:json)?\s*\n([\s\S]*?)```/g;let c,d=null;while((c=b['exec'](a))!==null){const e=c[0x1]['trim']();if(e['startsWith']('{')||e['startsWith']('[')){const f=a['substring'](0x0,c['index']),g=(f['match'](/\n/g)||[])['length']+0x1;d={'json':e,'lineOffset':g};}}return d;}function parseTableFromMarkdown(a){const b=a['match'](/```(?:json)?\s*\n([\s\S]*?)```/);if(b)try{const d=JSON['parse'](b[0x1]);if(Array['isArray'](d))return d;}catch{}const c=a['match'](/\|[^\n]+\|/g);if(c&&c['length']>0x2)return c['slice'](0x2)['map'](e=>{const f=e['split']('|')['filter'](j=>j['trim']())['map'](j=>j['trim']()),g=f[0x2];let h;const i=g['match'](/\((\d+)\)/);if(i)h=parseInt(i[0x1],0xa);else{const j=g['match'](/^\s*(\d+)\s*$/);if(j)h=parseInt(j[0x1],0xa);else{const k=g['match'](/^([A-Za-z]+)/);if(k)h=k[0x1];else throw new Error('Invalid\x20value_type\x20in\x20table\x20row:\x20\x22'+g+'\x22.\x20Expected\x20a\x20number\x20(0-19)\x20or\x20type\x20name\x20(e.g.,\x20\x22U64\x22,\x20\x22Address\x22)');}}return{'identifier':parseInt(f[0x0],0xa),'b_submission':f[0x1]['toLowerCase']()==='true','value_type':h,'value':f[0x3]==='-'?undefined:f[0x3],'name':f[0x4]==='-'?undefined:f[0x4]};});return undefined;}function parseRelyFromMarkdown(a){const b=a['match'](/\*\*Logic:\*\*\s*(AND|OR)/i),c=a['match'](/^\s*[-*]\s*(\S+)$/gm);if(b||c)return{'logic_or':b?b[0x1]['toUpperCase']()==='OR':![],'guards':c?c['map'](d=>d['replace'](/^\s*[-*]\s*/,'')['trim']()):[]};return undefined;}export function parseGuardFromMarkdown(a){const b=[],c={},d=extractJsonFromMarkdown(a);if(d)try{const f=JSON['parse'](d['json']);Object['assign'](c,f);}catch(g){b['push']({'message':'Failed\x20to\x20parse\x20JSON\x20from\x20code\x20block:\x20'+g['message'],'path':'/','line':d['lineOffset']});}if(!c['description']){const h=a['match'](/(?:^|\n)#+\s*(?:Description|Description|Description)[^\n]*\n+([^\n#]+)/i);h&&(c['description']=h[0x1]['trim']());}if(!c['table']){const i=a['match'](/(?:^|\n)#+\s*(?:Table|Data Table|数据表)[^\n]*\n+([\s\S]*?)(?=(?:\n#+|$))/i);if(i){const j=parseTableFromMarkdown(i[0x1]);j&&(c['table']=j);}}if(!c['root']){const k=a['match'](/(?:^|\n)#+\s*(?:Root|根节点)[^\n]*\n+([\s\S]*?)(?=(?:\n#+|$))/i);if(k){const l=k[0x1],m=l['match'](/```(?:json)?\s*\n([\s\S]*?)```/);if(m)try{c['root']=JSON['parse'](m[0x1]);}catch(n){b['push']({'message':'Failed\x20to\x20parse\x20root\x20JSON:\x20'+n['message'],'path':'/root'});}}}if(!c['rely']){const o=a['match'](/(?:^|\n)#+\s*(?:Rely|Dependencies|依赖)[^\n]*\n+([\s\S]*?)(?=(?:\n#+|$))/i);if(o){const p=parseRelyFromMarkdown(o[0x1]);p&&(c['rely']=p);}}if(!c['root'])return b['push']({'message':'Guard\x20root\x20node\x20not\x20found\x20in\x20markdown\x20file','path':'/root'}),{'success':![],'errors':b};return{'success':!![],'data':c,'errors':b};}export function parseGuardFile(a,b){const c=b??detectFileFormatFromContent(a);if(c==='json')try{const d=JSON['parse'](a);if(!d['root'])return{'success':![],'errors':[{'message':'Missing\x20required\x20field:\x20root','path':'/root'}]};return{'success':!![],'data':d,'errors':[]};}catch(f){return{'success':![],'errors':[{'message':'JSON\x20parse\x20error:\x20'+f['message'],'path':'/'}]};}return parseGuardFromMarkdown(a);}export function validateGuardNode(a){const b=[];if(!a||typeof a!=='object')return b['push']({'message':'GuardNode\x20must\x20be\x20an\x20object','path':'/'}),{'success':![],'errors':b};const c=a;if(!c['type']||typeof c['type']!=='string')return b['push']({'message':'GuardNode\x20must\x20have\x20a\x20\x27type\x27\x20property','path':'/type'}),{'success':![],'errors':b};const d=['identifier','query','context','logic_not','logic_and','logic_or','logic_equal','logic_as_u256_greater_or_equal','logic_as_u256_lesser_or_equal','logic_as_u256_greater','logic_as_u256_lesser','logic_as_u256_equal','logic_string_contains','logic_string_nocase_contains','logic_string_nocase_equal','calc_number_add','calc_number_subtract','calc_number_multiply','calc_number_divide','calc_number_mod','calc_string_length','calc_string_nocase_contains','calc_string_nocase_equal','calc_string_contains','calc_string_indexof','calc_string_nocase_indexof','convert_number_address','convert_address_number','convert_number_string','convert_string_number','convert_safe_u8','convert_safe_u16','convert_safe_u32','convert_safe_u64','convert_safe_u128','convert_safe_u256','value_type','vec_length','vec_contains_bool','vec_contains_address','vec_contains_string','vec_contains_string_nocase','vec_contains_number','vec_indexof_bool','vec_indexof_address','vec_indexof_string','vec_indexof_string_nocase','vec_indexof_number','query_reward_record_find','query_reward_record_count','query_reward_record_exists','query_progress_history_find','query_progress_history_session_find','query_progress_history_session_forward_find','query_progress_history_session_count','query_progress_history_session_forward_count','query_progress_history_session_forward_retained_submission_count'];return!d['includes'](c['type'])&&b['push']({'message':'Invalid\x20GuardNode\x20type:\x20'+c['type'],'path':'/type'}),{'success':b['length']===0x0,'errors':b};}export function formatGuardParseErrors(a){return a['map'](b=>{let c='Path:\x20'+b['path'];return b['line']!==undefined&&b['column']!==undefined&&(c+='\x20(line\x20'+b['line']+',\x20column\x20'+b['column']+')'),c+='\x0a\x20\x20Error:\x20'+b['message'],c;})['join']('\x0a\x0a');}
|
|
1
|
+
import{toTxObject,toTxString,isValidDescription,MAX_DESCRIPTION_LENGTH,isValidU8,isValidU64,isValidName,ValueType,parseValueType,OperatorType,ContextType,isWitnessType,PackageAddress,ObjectType,MAX_INPUT_SIZE,MAX_DEPENDED_COUNT,MAX_MULTI_OPERANDS}from'../common.js';import a152a from'lodash';import{W_ERROR,WErrors}from'../exception.js';import{CallBase}from'./base.js';import{isValidAddress,LocalMark}from'../local/local.js';import{GetAccountOrMark_Address}from'../local/index.js';import{WitnessSourceType,WitnessTargetType,query_objects}from'../query/object.js';import{bcs}from'../../bcs/index.js';import{valueToBcsBytes}from'../util.js';import{getGuardQueryInfo,GUARDQUERY}from'./guard-ins.js';import{checkType,resolveCallEnv}from'./util.js';import{isValidWowAddress}from'../../utils/wow-types.js';import{get_guardSubmissions,verify_guard}from'./passport.js';import{writeFileSync}from'fs';import{resolve}from'path';export function guardFn(a){return PackageAddress+'::guard::'+a;}export class CallGuard extends CallBase{['data'];constructor(a){super(),this['data']=a;}async['call'](a){return await this['prepare'](a),await this['exec'](a);}async['operate'](a,b,c,d){(!this['data']['table']||this['data']['table']['length']===0x0)&&W_ERROR(WErrors['InvalidParam'],'table\x20is\x20empty');!this['data']['root']&&W_ERROR(WErrors['InvalidParam'],'root\x20is\x20empty');const e=await newGuard(b,this['data']?.['description']||'',this['data']?.['table'],this['data']?.['root']);if(this['data']?.['rely']!=null){const f=await LocalMark['Instance']()['get_many_address'](this['data']['rely']['guards']),g=f['findIndex'](h=>h===undefined);g!==-0x1&&W_ERROR(WErrors['InvalidParam'],'rely.guards\x20invalid:\x20guard\x20at\x20index\x20'+g+'\x20not\x20found'),reliesAdd(b,e,f['filter'](h=>h!==undefined));}await this['new_with_mark'](a,b,ObjectType['Guard'],create(b,e),this['data']?.['namedNew']);}}export const newGuard=async(a,b,c,d)=>{!isValidDescription(b)&&W_ERROR(WErrors['IsValidDescription'],'Description\x20exceeds\x20maximum\x20length\x20'+MAX_DESCRIPTION_LENGTH);for(let m=0x0;m<c['length'];m++){const n=c[m];if(!isValidU8(n['identifier']))W_ERROR(WErrors['InvalidParam'],'table.identifier\x20'+n['identifier']+'\x20invalid');if(!n['b_submission']&&(n['value']===undefined||n['value']===null))W_ERROR(WErrors['InvalidParam'],'table.value\x20'+n['value']+'\x20with\x20identifier\x20'+n['identifier']+'\x20invalid');if(!isValidName(n['name']))W_ERROR(WErrors['InvalidParam'],'table.name');}const e=a152a['groupBy'](c,'identifier'),f=Object['keys'](e)['filter'](o=>e[o]['length']>0x1);f['length']>0x0&&W_ERROR(WErrors['InvalidParam'],'table.identifier\x20duplicates:\x20'+f['join'](',\x20'));var g=[];await buildNode(d,ValueType['Bool'],c,g);const h=g['reduce']((o,p)=>o+p['length'],0x0),j=new Uint8Array(h);let k=0x0;for(const o of g){j['set'](o,k),k+=o['length'];}j['length']>MAX_INPUT_SIZE&&W_ERROR(WErrors['NewGuardCheckFailed'],'Input\x20size\x20exceeds\x20maximum\x20limit\x20'+MAX_INPUT_SIZE);j['length']===0x0&&W_ERROR(WErrors['NewGuardCheckFailed'],'Input\x20cannot\x20be\x20empty');const l=[];for(let p=0x0;p<c['length'];p++){const q=c[p],r=parseValueType(q['value_type']);let s;q['b_submission']?(s=new Uint8Array(0x1),s[0x0]=r):((q['value']===undefined||q['value']===null)&&W_ERROR(WErrors['NewGuardCheckFailed'],'Table\x20item\x20value\x20is\x20required\x20when\x20b_submission\x20is\x20false'),s=await valueToBcsBytes(r,q['value'])),l['push'](a['moveCall']({'target':guardFn('table_item'),'arguments':[a['pure']['u8'](q['identifier']),a['pure']['bool'](q['b_submission']),a['pure']['vector']('u8',Array['from'](s)),toTxString(a,q['name'])]}));}return a['moveCall']({'target':guardFn('new'),'arguments':[toTxString(a,b),a['makeMoveVec']({'elements':l,'type':PackageAddress+'::guard::TableItem'}),a['pure']['vector']('u8',Array['from'](j))]});};export function create(a,b){return a['moveCall']({'target':guardFn('create'),'arguments':[toTxObject(a,b),a['object']['mutRegistrar'](),a['object']['clock']()]});}export function reliesAdd(a,b,c){const d=a152a['uniq'](c);d['length']>MAX_DEPENDED_COUNT&&W_ERROR(WErrors['NewGuardCheckFailed'],'Relies\x20count\x20exceeds\x20maximum\x20limit\x20'+MAX_DEPENDED_COUNT),d['forEach'](e=>{e===b&&W_ERROR(WErrors['NewGuardCheckFailed'],'Guard\x20cannot\x20rely\x20on\x20itself'),a['moveCall']({'target':guardFn('relies_add'),'arguments':[toTxObject(a,b),toTxObject(a,e),a['object']['mutRegistrar'](),a['object']['clock']()]});});}export function reliesRemove(a,b,c){const d=a152a['uniq'](c);d['length']>MAX_DEPENDED_COUNT&&W_ERROR(WErrors['NewGuardCheckFailed'],'Relies\x20count\x20exceeds\x20maximum\x20limit\x20'+MAX_DEPENDED_COUNT),d['forEach'](e=>{a['moveCall']({'target':guardFn('relies_remove'),'arguments':[toTxObject(a,b),toTxObject(a,e),a['object']['mutRegistrar']()]});});}export function reliesClear(a,b){a['moveCall']({'target':guardFn('relies_clear'),'arguments':[toTxObject(a,b),a['object']['mutRegistrar']()]});}export function reliesLogic(a,b,c){a['moveCall']({'target':guardFn('relies_logic_and'),'arguments':[toTxObject(a,b),a['pure']['bool'](c)]});}const buildNode=async(a,b,c,d)=>{const e=a;switch(e['type']){case'identifier':{const g=c['find'](h=>h['identifier']===e['identifier']);if(g){const h=parseValueType(g['value_type']);checkType(h,b,e),d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](e['identifier'])['toBytes']());}else W_ERROR(WErrors['InvalidParam'],'node\x20identifier\x20-\x20'+JSON['stringify'](e));break;}case'query':{const j=getGuardQueryInfo(e['query']);!j&&W_ERROR(WErrors['InvalidParam'],'query\x20not\x20found:\x20'+e['query']);checkType(j['return'],b,e);if(j['parameters']['length']===e['parameters']['length'])for(let m=e['parameters']['length']-0x1;m>=0x0;--m){await buildNode(e['parameters'][m],j['parameters'][m],c,d);}else W_ERROR(WErrors['InvalidParam'],'node\x20query\x20parameters\x20length\x20not\x20match\x20-\x20'+JSON['stringify'](e));const k=c['find'](n=>n['identifier']===e['object']['identifier']);!k&&W_ERROR(WErrors['InvalidParam'],'node\x20object\x20from\x20identifier\x20-\x20'+JSON['stringify'](e));const l=parseValueType(k['value_type']);l!==ValueType['Address']&&W_ERROR(WErrors['InvalidParam'],'object\x20to\x20query\x20must\x20be\x20address\x20in\x20table\x20'+k+'.\x20'+e['object']);d['push'](bcs['U8']['serialize'](OperatorType['TypeQuery'])['toBytes']());if(isWitnessType(e['object']['convert_witness'])){const n=WitnessTargetType(e['object']['convert_witness']);n!==j['objectType']&&W_ERROR(WErrors['InvalidParam'],'witness\x20object\x20type('+n+')\x20not\x20consistent\x20with\x20query\x20object\x20type('+j['objectType']+')');const o=WitnessSourceType(e['object']['convert_witness']);k['object_type']?k['object_type']!==o&&W_ERROR(WErrors['InvalidParam'],'witness\x20object\x20type('+o+')\x20not\x20consistent\x20with\x20query\x20object\x20type('+k['object_type']+')'):k['object_type']=o,d['push'](bcs['U8']['serialize'](e['object']['convert_witness'])['toBytes']());}else k?.['object_type']?k['object_type']!==j['objectType']&&W_ERROR(WErrors['InvalidParam'],'witness\x20object\x20type('+j['objectType']+')\x20not\x20consistent\x20with\x20query\x20object\x20type('+k['object_type']+')'):k['object_type']=j['objectType'],d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']());d['push'](bcs['U8']['serialize'](e['object']['identifier'])['toBytes']()),d['push'](bcs['U16']['serialize'](j['id'])['toBytes']());break;}case'logic_as_u256_greater_or_equal':case'logic_as_u256_lesser_or_equal':case'logic_as_u256_equal':case'logic_as_u256_greater':case'logic_as_u256_lesser':case'logic_equal':case'logic_and':case'logic_or':case'logic_string_contains':case'logic_string_nocase_contains':case'logic_string_nocase_equal':case'calc_number_add':case'calc_number_subtract':case'calc_number_multiply':case'calc_number_divide':case'calc_number_mod':case'calc_string_nocase_contains':case'calc_string_nocase_equal':case'calc_string_contains':{const p={'logic_as_u256_greater_or_equal':OperatorType['TypeLogicAsU256GreaterEqual'],'logic_as_u256_lesser_or_equal':OperatorType['TypeLogicAsU256LesserEqual'],'logic_as_u256_equal':OperatorType['TypeLogicAsU256Equal'],'logic_as_u256_greater':OperatorType['TypeLogicAsU256Greater'],'logic_as_u256_lesser':OperatorType['TypeLogicAsU256Lesser'],'logic_equal':OperatorType['TypeLogicEqual'],'logic_and':OperatorType['TypeLogicAnd'],'logic_or':OperatorType['TypeLogicOr'],'logic_string_contains':OperatorType['TypeStringContains'],'logic_string_nocase_contains':OperatorType['TypeStringNocaseContains'],'logic_string_nocase_equal':OperatorType['TypeStringNocaseEqual'],'calc_number_add':OperatorType['TypeNumberAdd'],'calc_number_subtract':OperatorType['TypeNumberSubtract'],'calc_number_multiply':OperatorType['TypeNumberMultiply'],'calc_number_divide':OperatorType['TypeNumberDivide'],'calc_number_mod':OperatorType['TypeNumberMod'],'calc_string_nocase_contains':OperatorType['TypeStringNocaseContains'],'calc_string_nocase_equal':OperatorType['TypeStringNocaseEqual'],'calc_string_contains':OperatorType['TypeStringContains']},r={'logic_as_u256_greater_or_equal':'number','logic_as_u256_lesser_or_equal':'number','logic_as_u256_equal':'number','logic_as_u256_greater':'number','logic_as_u256_lesser':'number','logic_equal':'variable','logic_and':ValueType['Bool'],'logic_or':ValueType['Bool'],'logic_string_contains':ValueType['String'],'logic_string_nocase_contains':ValueType['String'],'logic_string_nocase_equal':ValueType['String'],'calc_number_add':'number','calc_number_subtract':'number','calc_number_multiply':'number','calc_number_divide':'number','calc_number_mod':'number','calc_string_nocase_contains':ValueType['String'],'calc_string_nocase_equal':ValueType['String'],'calc_string_contains':ValueType['String']},s={'logic_as_u256_greater_or_equal':ValueType['Bool'],'logic_as_u256_lesser_or_equal':ValueType['Bool'],'logic_as_u256_equal':ValueType['Bool'],'logic_as_u256_greater':ValueType['Bool'],'logic_as_u256_lesser':ValueType['Bool'],'logic_equal':ValueType['Bool'],'logic_and':ValueType['Bool'],'logic_or':ValueType['Bool'],'logic_string_contains':ValueType['Bool'],'logic_string_nocase_contains':ValueType['Bool'],'logic_string_nocase_equal':ValueType['Bool'],'calc_number_add':ValueType['U256'],'calc_number_subtract':ValueType['U256'],'calc_number_multiply':ValueType['U256'],'calc_number_divide':ValueType['U256'],'calc_number_mod':ValueType['U256'],'calc_string_nocase_contains':ValueType['Bool'],'calc_string_nocase_equal':ValueType['Bool'],'calc_string_contains':ValueType['Bool']};checkType(s[e['type']],b,e),await multi_operand_op(p[e['type']],e['nodes'],r[e['type']],c,d);break;}case'vec_contains_bool':case'vec_contains_address':case'vec_contains_string':case'vec_contains_string_nocase':case'vec_contains_number':{const t={'vec_contains_bool':OperatorType['TypedValueVecContains_Bool'],'vec_contains_address':OperatorType['TypedValueVecContains_Address'],'vec_contains_string':OperatorType['TypedValueVecContains_String'],'vec_contains_string_nocase':OperatorType['TypedValueVecContains_StringNoCase'],'vec_contains_number':OperatorType['TypedValueVecContains_Number']},u={'vec_contains_bool':ValueType['VecBool'],'vec_contains_address':ValueType['VecAddress'],'vec_contains_string':ValueType['VecString'],'vec_contains_string_nocase':ValueType['VecString'],'vec_contains_number':'vec_number'},v={'vec_contains_bool':ValueType['Bool'],'vec_contains_address':ValueType['Address'],'vec_contains_string':ValueType['String'],'vec_contains_string_nocase':ValueType['String'],'vec_contains_number':'number'};checkType(ValueType['Bool'],b,e);for(let w=e['nodes']['length']-0x1;w>=0x0;--w){const x=w===0x0?u[e['type']]:v[e['type']];await buildNode(e['nodes'][w],x,c,d);}d['push'](bcs['U8']['serialize'](t[e['type']])['toBytes']()),d['push'](bcs['U8']['serialize'](e['nodes']['length'])['toBytes']());break;}case'logic_not':case'calc_string_length':case'convert_number_address':case'convert_address_number':case'convert_number_string':case'convert_string_number':case'convert_safe_u8':case'convert_safe_u16':case'convert_safe_u32':case'convert_safe_u64':case'convert_safe_u128':case'convert_safe_u256':case'value_type':case'vec_length':{const y={'logic_not':OperatorType['TypeLogicNot'],'calc_string_length':OperatorType['TypeStringLength'],'convert_number_address':OperatorType['TypeNumberAddress'],'convert_address_number':OperatorType['TypeAddressNumber'],'convert_number_string':OperatorType['TypeNumberString'],'convert_string_number':OperatorType['TypeStringNumber'],'convert_safe_u8':OperatorType['TypeSafeU8'],'convert_safe_u16':OperatorType['TypeSafeU16'],'convert_safe_u32':OperatorType['TypeSafeU32'],'convert_safe_u64':OperatorType['TypeSafeU64'],'convert_safe_u128':OperatorType['TypeSafeU128'],'convert_safe_u256':OperatorType['TypeSafeU256'],'value_type':OperatorType['TypedValueType'],'vec_length':OperatorType['TypedValueVecLength']},z={'logic_not':ValueType['Bool'],'calc_string_length':ValueType['String'],'convert_number_address':'number','convert_address_number':ValueType['Address'],'convert_number_string':'number','convert_string_number':ValueType['String'],'convert_safe_u8':'number','convert_safe_u16':'number','convert_safe_u32':'number','convert_safe_u64':'number','convert_safe_u128':'number','convert_safe_u256':'number','value_type':'variable','vec_length':'vec'},A={'logic_not':ValueType['Bool'],'calc_string_length':ValueType['U64'],'convert_number_address':ValueType['Address'],'convert_address_number':ValueType['U256'],'convert_number_string':ValueType['String'],'convert_string_number':ValueType['U256'],'convert_safe_u8':ValueType['U8'],'convert_safe_u16':ValueType['U16'],'convert_safe_u32':ValueType['U32'],'convert_safe_u64':ValueType['U64'],'convert_safe_u128':ValueType['U128'],'convert_safe_u256':ValueType['U256'],'value_type':ValueType['U8'],'vec_length':ValueType['U64']};checkType(A[e['type']],b,e),await single_operand_op(y[e['type']],e['node'],z[e['type']],c,d);break;}case'calc_string_indexof':case'calc_string_nocase_indexof':{const B={'calc_string_indexof':OperatorType['TypeStringIndexof'],'calc_string_nocase_indexof':OperatorType['TypeStringNocaseIndexof']};checkType(ValueType['U64'],b,e),await buildNode(e['nodeRight'],ValueType['String'],c,d),await buildNode(e['nodeLeft'],ValueType['String'],c,d),d['push'](bcs['U8']['serialize'](B[e['type']])['toBytes']()),d['push'](bcs['U8']['serialize'](e['order']==='forward'?0x0:0x1)['toBytes']());break;}case'vec_indexof_bool':case'vec_indexof_address':case'vec_indexof_string':case'vec_indexof_string_nocase':case'vec_indexof_number':{const C={'vec_indexof_bool':OperatorType['TypedValueVecIndexOf_Bool'],'vec_indexof_address':OperatorType['TypedValueVecIndexOf_Address'],'vec_indexof_string':OperatorType['TypedValueVecIndexOf_String'],'vec_indexof_string_nocase':OperatorType['TypedValueVecIndexOf_StringNoCase'],'vec_indexof_number':OperatorType['TypedValueVecIndexOf_Number']},D={'vec_indexof_bool':ValueType['Bool'],'vec_indexof_address':ValueType['Address'],'vec_indexof_string':ValueType['String'],'vec_indexof_string_nocase':ValueType['String'],'vec_indexof_number':'number'},E={'vec_indexof_bool':ValueType['VecBool'],'vec_indexof_address':ValueType['VecAddress'],'vec_indexof_string':ValueType['VecString'],'vec_indexof_string_nocase':ValueType['VecString'],'vec_indexof_number':'vec_number'};checkType(ValueType['U64'],b,e),await buildNode(e['nodeRight'],D[e['type']],c,d),await buildNode(e['nodeLeft'],E[e['type']],c,d),d['push'](bcs['U8']['serialize'](C[e['type']])['toBytes']()),d['push'](bcs['U8']['serialize'](e['order']==='forward'?0x0:0x1)['toBytes']());break;}case'query_reward_record_find':case'query_reward_record_count':case'query_reward_record_exists':{!isValidU8(e['object']['identifier'])&&W_ERROR(WErrors['IsValidU8'],e['type']+'\x20object\x20identifier\x20'+e['object']['identifier']+'\x20is\x20not\x20a\x20valid\x20U8\x20(0-255)');const F=c['find'](H=>H['identifier']===e['object']['identifier']);!F&&W_ERROR(WErrors['IsValidIdentifier'],e['type']+'\x20object\x20identifier\x20'+e['object']['identifier']+'\x20not\x20found\x20in\x20table');const G=await buildRewardRecordQuery(e,c,b);d['push'](...G['output']);break;}case'query_progress_history_find':case'query_progress_history_session_find':case'query_progress_history_session_forward_find':case'query_progress_history_session_count':case'query_progress_history_session_forward_count':case'query_progress_history_session_forward_retained_submission_count':{!isValidU8(e['object']['identifier'])&&W_ERROR(WErrors['IsValidU8'],e['type']+'\x20object\x20identifier\x20'+e['object']['identifier']+'\x20is\x20not\x20a\x20valid\x20U8\x20(0-255)');const H=c['find'](J=>J['identifier']===e['object']['identifier']);!H&&W_ERROR(WErrors['IsValidIdentifier'],e['type']+'\x20object\x20identifier\x20'+e['object']['identifier']+'\x20not\x20found\x20in\x20table');const I=await buildProgressQuery(e,c,b);d['push'](...I['output']);break;}case'context':{let J;switch(e['context']){case'Signer':J=ContextType['TypeSigner'];break;case'Clock':J=ContextType['TypeClock'];break;case'Guard':J=ContextType['TypeGuard'];break;default:W_ERROR(WErrors['InvalidParam'],'Invalid\x20context\x20type:\x20'+e['context']);}d['push'](bcs['U8']['serialize'](J)['toBytes']());e['context']==='Clock'?checkType(ContextType['TypeClock'],b,e):checkType(ValueType['Address'],b,e);break;}default:W_ERROR(WErrors['InvalidParam'],'node:'+JSON['stringify'](e));}},multi_operand_op=async(a,b,c,d,e)=>{(b['length']<0x2||b['length']>MAX_MULTI_OPERANDS)&&W_ERROR(WErrors['InvalidParam'],'op\x20'+a+'\x20parameters\x20length\x20must\x20>=\x202\x20and\x20<=\x20\x20\x0a\x09\x09\x09\x09'+MAX_MULTI_OPERANDS+'.\x20\x09parameters:\x0a\x09\x09\x09\x09'+JSON['stringify'](b));for(let f=b['length']-0x1;f>=0x0;--f){await buildNode(b[f],c,d,e);}e['push'](bcs['U8']['serialize'](a)['toBytes']()),e['push'](bcs['U8']['serialize'](b['length'])['toBytes']());},getNewIdentifier=(a,b)=>{for(let c=0x0;c<0x100;c++){if(!a['find'](d=>d['identifier']===c))return c;}return W_ERROR(WErrors['InvalidParam'],b+'\x20cannot\x20find\x20available\x20identifier\x20in\x20table\x20(all\x20256\x20identifiers\x20are\x20used)'),-0x1;},StoreFromIdFilter=bcs['struct']('StoreFromIdFilter',{'mode':bcs['U8'],'value':bcs['option'](bcs['Address'])}),RecordQueryConditionsBCS=bcs['struct']('RecordQueryConditions',{'recipient':bcs['Address'],'guard':bcs['option'](bcs['Address']),'time_min':bcs['option'](bcs['U64']),'time_max':bcs['option'](bcs['U64']),'amount_min':bcs['option'](bcs['U64']),'amount_max':bcs['option'](bcs['U64']),'store_from_id':bcs['option'](StoreFromIdFilter)}),buildRecordQueryConditionsFromConst=a=>{const b={'recipient':a['recipient'],'guard':a['guard']??null,'time_min':a['timeMin']??null,'time_max':a['timeMax']??null,'amount_min':a['amountMin']??null,'amount_max':a['amountMax']??null,'store_from_id':a['storeFromId']?{'mode':a['storeFromId']==='not_exists'?0x0:a['storeFromId']==='exists'?0x1:0x2,'value':typeof a['storeFromId']==='object'?a['storeFromId']['eq']:null}:null};return RecordQueryConditionsBCS['serialize'](b)['toBytes']();},buildRewardRecordQuery=async(a,b,c)=>{const d=a['recipient'];d['type']!=='identifier'&&W_ERROR(WErrors['InvalidParam'],a['type']+'\x20recipient\x20must\x20be\x20an\x20identifier');const e=d,f=b[e['identifier']];!f&&W_ERROR(WErrors['InvalidParam'],a['type']+'\x20recipient\x20identifier\x20'+e['identifier']+'\x20not\x20found\x20in\x20table');f['value_type']!==ValueType['Address']&&W_ERROR(WErrors['InvalidParam'],a['type']+'\x20recipient\x20must\x20be\x20Address\x20type,\x20got\x20'+f['value_type']);a['where']['timeMin']!==undefined&&!isValidU64(a['where']['timeMin'])&&W_ERROR(WErrors['IsValidU64'],'Reward\x20record\x20query\x20timeMin\x20\x22'+a['where']['timeMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['timeMax']!==undefined&&!isValidU64(a['where']['timeMax'])&&W_ERROR(WErrors['IsValidU64'],'Reward\x20record\x20query\x20timeMax\x20\x22'+a['where']['timeMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['amountMin']!==undefined&&!isValidU64(a['where']['amountMin'])&&W_ERROR(WErrors['IsValidU64'],'Reward\x20record\x20query\x20amountMin\x20\x22'+a['where']['amountMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['amountMax']!==undefined&&!isValidU64(a['where']['amountMax'])&&W_ERROR(WErrors['IsValidU64'],'Reward\x20record\x20query\x20amountMax\x20\x22'+a['where']['amountMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');const g={'recipient':f['value']};if(a['where']['guard']){const o=await LocalMark['Instance']()['get_address'](a['where']['guard']);!o&&W_ERROR(WErrors['AddressNotFound'],'Reward\x20record\x20query\x20guard\x20\x22'+a['where']['guard']+'\x22\x20not\x20found\x20in\x20LocalMark'),g['guard']=o;}if(a['where']['timeMin']!==undefined)g['timeMin']=a['where']['timeMin'];if(a['where']['timeMax']!==undefined)g['timeMax']=a['where']['timeMax'];if(a['where']['amountMin']!==undefined)g['amountMin']=a['where']['amountMin'];if(a['where']['amountMax']!==undefined)g['amountMax']=a['where']['amountMax'];if(a['where']['storeFromId']!==undefined){if(typeof a['where']['storeFromId']==='object'&&'eq'in a['where']['storeFromId']){const p=await LocalMark['Instance']()['get_address'](a['where']['storeFromId']['eq']);!p&&W_ERROR(WErrors['AddressNotFound'],'Reward\x20record\x20query\x20storeFromId\x20\x22'+a['where']['storeFromId']['eq']+'\x22\x20not\x20found\x20in\x20LocalMark'),g['storeFromId']={'eq':p};}else g['storeFromId']=a['where']['storeFromId'];}const h=buildRecordQueryConditionsFromConst(g);let i,j;switch(a['type']){case'query_reward_record_find':i=a['find']==='first'?0x65a:0x65b,j=ValueType['U64'];break;case'query_reward_record_count':i=0x65c,j=ValueType['U64'];break;case'query_reward_record_exists':i=0x65d,j=ValueType['Bool'];break;}const k=a['object']['identifier'],l=getNewIdentifier(b,a['type']);b['push']({'identifier':l,'value_type':ValueType['VecU8'],'value':Array['from'](h),'b_submission':![],'name':'query_conditions_'+l});const m=b['find'](q=>q['identifier']===k);m&&(m['object_type']=ObjectType['Reward']);const n=[];return n['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),n['push'](bcs['U8']['serialize'](l)['toBytes']()),n['push'](bcs['U8']['serialize'](OperatorType['TypeQuery'])['toBytes']()),n['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),n['push'](bcs['U8']['serialize'](k)['toBytes']()),n['push'](bcs['U16']['serialize'](i)['toBytes']()),checkType(j,c,a),{'output':n,'returnType':j};},ProgressHistoryFindConditionsBCS=bcs['struct']('ProgressHistoryFindConditions',{'node':bcs['option'](bcs['String']),'next_node':bcs['option'](bcs['String']),'time_min':bcs['option'](bcs['U64']),'time_max':bcs['option'](bcs['U64']),'index_min':bcs['option'](bcs['U64']),'index_max':bcs['option'](bcs['U64']),'find':bcs['U8']}),ProgressSessionFindConditionsBCS=bcs['struct']('ProgressSessionFindConditions',{'next_node':bcs['option'](bcs['String']),'find':bcs['U8']}),ProgressForwardFindConditionsBCS=bcs['struct']('ProgressForwardFindConditions',{'who':bcs['option'](bcs['Address']),'operation':bcs['option'](bcs['String']),'accomplished':bcs['option'](bcs['Bool']),'time_min':bcs['option'](bcs['U64']),'time_max':bcs['option'](bcs['U64']),'find':bcs['U8']}),buildProgressHistoryFindConditions=a=>{a['where']['node']!==undefined&&!isValidName(a['where']['node'])&&W_ERROR(WErrors['IsValidName'],'Progress\x20history\x20find\x20node\x20\x22'+a['where']['node']+'\x22\x20is\x20not\x20a\x20valid\x20name');a['where']['nextNode']!==undefined&&!isValidName(a['where']['nextNode'])&&W_ERROR(WErrors['IsValidName'],'Progress\x20history\x20find\x20nextNode\x20\x22'+a['where']['nextNode']+'\x22\x20is\x20not\x20a\x20valid\x20name');a['where']['timeMin']!==undefined&&!isValidU64(a['where']['timeMin'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20history\x20find\x20timeMin\x20\x22'+a['where']['timeMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['timeMax']!==undefined&&!isValidU64(a['where']['timeMax'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20history\x20find\x20timeMax\x20\x22'+a['where']['timeMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['indexMin']!==undefined&&!isValidU64(a['where']['indexMin'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20history\x20find\x20indexMin\x20\x22'+a['where']['indexMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['indexMax']!==undefined&&!isValidU64(a['where']['indexMax'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20history\x20find\x20indexMax\x20\x22'+a['where']['indexMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');const b={'node':a['where']['node']??null,'next_node':a['where']['nextNode']??null,'time_min':a['where']['timeMin']??null,'time_max':a['where']['timeMax']??null,'index_min':a['where']['indexMin']??null,'index_max':a['where']['indexMax']??null,'find':a['find']==='first'?0x0:0x1};return ProgressHistoryFindConditionsBCS['serialize'](b)['toBytes']();},buildProgressSessionFindConditions=a=>{a['where']['nextNode']!==undefined&&!isValidName(a['where']['nextNode'])&&W_ERROR(WErrors['IsValidName'],'Progress\x20session\x20find\x20nextNode\x20\x22'+a['where']['nextNode']+'\x22\x20is\x20not\x20a\x20valid\x20name');const b={'next_node':a['where']['nextNode']??null,'find':a['find']==='first'?0x0:0x1},c=ProgressSessionFindConditionsBCS['serialize'](b)['toBytes']();return c;},buildProgressForwardFindConditions=async a=>{a['where']['operation']!==undefined&&!isValidName(a['where']['operation'])&&W_ERROR(WErrors['IsValidName'],'Progress\x20forward\x20find\x20operation\x20\x22'+a['where']['operation']+'\x22\x20is\x20not\x20a\x20valid\x20name');a['where']['timeMin']!==undefined&&!isValidU64(a['where']['timeMin'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20forward\x20find\x20timeMin\x20\x22'+a['where']['timeMin']+'\x22\x20is\x20not\x20a\x20valid\x20U64');a['where']['timeMax']!==undefined&&!isValidU64(a['where']['timeMax'])&&W_ERROR(WErrors['IsValidU64'],'Progress\x20forward\x20find\x20timeMax\x20\x22'+a['where']['timeMax']+'\x22\x20is\x20not\x20a\x20valid\x20U64');let b=null;if(a['where']['who']!==undefined){const d=await GetAccountOrMark_Address({'name_or_address':a['where']['who']});!d&&W_ERROR(WErrors['AddressNotFound'],'Progress\x20forward\x20find\x20who\x20\x22'+a['where']['who']+'\x22\x20not\x20found\x20in\x20LocalMark\x20or\x20accounts'),b=d;}const c={'who':b,'operation':a['where']['operation']??null,'accomplished':a['where']['accomplished']??null,'time_min':a['where']['timeMin']??null,'time_max':a['where']['timeMax']??null,'find':a['find']==='first'?0x0:0x1};return ProgressForwardFindConditionsBCS['serialize'](c)['toBytes']();},buildProgressQuery=async(a,b,c)=>{const d=[];let e;const f=ValueType['U64'];let g;switch(a['type']){case'query_progress_history_find':{e=0x4fa,g=buildProgressHistoryFindConditions(a);break;}case'query_progress_history_session_find':{e=0x4fb,g=buildProgressSessionFindConditions(a);break;}case'query_progress_history_session_forward_find':{e=0x4fc,g=await buildProgressForwardFindConditions(a);break;}case'query_progress_history_session_count':{e=0x4fd,g=new Uint8Array(0x0);break;}case'query_progress_history_session_forward_count':{e=0x4fe,g=new Uint8Array(0x0);break;}case'query_progress_history_session_forward_retained_submission_count':{e=0x4ff,g=new Uint8Array(0x0);break;}}const h=a['object']['identifier'];let i=null;if('conditionsIdentifier'in a&&a['conditionsIdentifier']!==undefined&&a['conditionsIdentifier']!==null)i=a['conditionsIdentifier'];else(a['type']==='query_progress_history_find'||a['type']==='query_progress_history_session_find'||a['type']==='query_progress_history_session_forward_find')&&(i=getNewIdentifier(b,a['type']),b['push']({'identifier':i,'value_type':ValueType['VecU8'],'value':Array['from'](g),'b_submission':![],'name':'query_conditions_'+i}),a['conditionsIdentifier']=i);if(a['type']==='query_progress_history_find'||a['type']==='query_progress_history_session_find'||a['type']==='query_progress_history_session_forward_find'||a['type']==='query_progress_history_session_count'||a['type']==='query_progress_history_session_forward_count'||a['type']==='query_progress_history_session_forward_retained_submission_count'){const j=b['find'](k=>k['identifier']===h);j&&(j['object_type']=ObjectType['Progress']);}switch(a['type']){case'query_progress_history_session_forward_retained_submission_count':{await buildNode(a['forwardIdx'],ValueType['U64'],b,d),await buildNode(a['sessionIdx'],ValueType['U64'],b,d),await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_session_forward_count':{await buildNode(a['sessionIdx'],ValueType['U64'],b,d),await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_session_forward_find':{i!==null&&(d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](i)['toBytes']()));await buildNode(a['sessionIdx'],ValueType['U64'],b,d),await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_session_count':{await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_session_find':{i!==null&&(d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](i)['toBytes']()));await buildNode(a['historyIdx'],ValueType['U64'],b,d);break;}case'query_progress_history_find':{i!==null&&(d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](i)['toBytes']()));break;}}return d['push'](bcs['U8']['serialize'](OperatorType['TypeQuery'])['toBytes']()),d['push'](bcs['U8']['serialize'](ContextType['TypeConstant'])['toBytes']()),d['push'](bcs['U8']['serialize'](h)['toBytes']()),d['push'](bcs['U16']['serialize'](e)['toBytes']()),checkType(f,c,a),{'output':d,'returnType':f};},single_operand_op=async(a,b,c,d,e)=>{await buildNode(b,c,d,e),e['push'](bcs['U8']['serialize'](a)['toBytes']());};export const guard2file=async(a,b,c='json',d)=>{const f=await query_objects({'objects':[a],'network':d}),g=f['objects'];if(!g||g['length']===0x0||g[0x0]['type']!=='Guard'){W_ERROR(WErrors['InvalidParam'],'guard2file:\x20Guard\x20object\x20not\x20found:\x20'+a);return;}const h=g[0x0];if(!h){W_ERROR(WErrors['InvalidParam'],'guard2file:\x20Failed\x20to\x20get\x20Guard\x20object\x20data:\x20'+a);return;}let i;c==='json'?i=generateGuardJson(h):i=generateGuardMarkdown(h);try{const j=resolve(b);writeFileSync(j,i,'utf-8');}catch(k){W_ERROR(WErrors['InvalidParam'],'guard2file:\x20Failed\x20to\x20write\x20file\x20\x27'+b+'\x27:\x20'+k['message']);}};const generateGuardJson=a=>{const b={};return a['description']&&(b['description']=a['description']),a['table']&&a['table']['length']>0x0&&(b['table']=a['table']['map'](c=>({'identifier':c['identifier'],'b_submission':c['b_submission'],'value_type':c['value_type'],'value':c['value'],'name':c['name']}))),a['root']&&(b['root']=a['root']),a['relies']&&a['relies']['length']>0x0&&(b['rely']={'guards':a['relies'],'logic_or':!a['relies_logic_and']}),JSON['stringify'](b,null,0x2);},generateGuardMarkdown=a=>{const b=[];b['push']('#\x20Guard\x20Definition'),b['push'](''),b['push']('**Object\x20ID:**\x20'+a['object']),b['push'](''),b['push']('##\x20Summary'),b['push']('');const c=a['description']||'',d=a['table']?a['table']['length']:0x0;let e=''+(c['length']>0x64?c['substring'](0x0,0x61)+'...':c);e+='\x20['+d+'\x20tables]',b['push'](e),b['push'](''),b['push']('##\x20Description'),b['push'](''),b['push'](a['description']||''),b['push'](''),b['push']('##\x20Table\x20(Data\x20Definitions)'),b['push'](''),b['push']('|\x20Identifier\x20|\x20b_submission\x20|\x20value_type\x20|\x20value\x20|\x20name\x20|'),b['push']('|------------|--------------|------------|-------|------|');if(a['table']&&a['table']['length']>0x0)for(const f of a['table']){const g=parseValueType(f['value_type']),h=valueTypeToString(g),i=formatValueForMarkdown(f['value']);b['push']('|\x20'+f['identifier']+'\x20|\x20'+f['b_submission']+'\x20|\x20'+h+'\x20('+f['value_type']+')\x20|\x20'+i+'\x20|\x20'+f['name']+'\x20|');}else b['push']('|\x20-\x20|\x20-\x20|\x20-\x20|\x20-\x20|\x20-\x20|');b['push'](''),b['push']('##\x20Root\x20(Computational\x20Tree)'),b['push'](''),b['push']('The\x20root\x20node\x20MUST\x20return\x20a\x20Bool\x20value\x20(pass/fail).'),b['push']('');if(a['root']){b['push']('```json'),b['push'](JSON['stringify'](a['root'],null,0x2)),b['push']('```'),b['push']('');const j=generateNodeComments(a['root']);if(j['length']>0x0){b['push']('###\x20Node\x20Comments'),b['push']('');for(const k of j){b['push']('-\x20**'+k['type']+'**:\x20'+k['description']);}b['push']('');}}else b['push']('*No\x20root\x20node\x20data\x20available*'),b['push']('');if(a['relies']&&a['relies']['length']>0x0){b['push']('##\x20Rely\x20(Dependencies)'),b['push'](''),b['push']('**Logic:**\x20'+(a['relies_logic_and']?'AND':'OR')),b['push'](''),b['push']('**Dependent\x20Guards:**');for(const l of a['relies']){b['push']('-\x20'+l);}b['push']('');}return b['join']('\x0a');},formatValueForMarkdown=a=>{if(a===undefined||a===null)return'-';if(typeof a==='boolean')return a?'true':'false';if(typeof a==='string')return a['startsWith']('0x')&&a['length']===0x42&&(!isValidAddress(a)&&W_ERROR(WErrors['IsValidAddress'],'Invalid\x20address:\x20'+a)),a;if(typeof a==='number')return a['toString']();if(Array['isArray'](a)){if(a['length']===0x0)return'[]';if(a['length']>0x3)return'['+a['slice'](0x0,0x3)['join'](',\x20')+',\x20...\x20('+a['length']+'\x20items)]';return'['+a['join'](',\x20')+']';}if(typeof a==='object')return'{...}';return String(a);};export const generateNodeComments=(a,b=[])=>{if(!a)return b;if(a['type']==='query'){const c=typeof a['query']==='number'?a['query']:undefined;if(c!==undefined){const d=GUARDQUERY['find'](e=>e['id']===c);d&&b['push']({'type':'query('+a['query']+')','description':d['name']+':\x20'+d['description']});}}else{if(a['type']['startsWith']('query_reward_record_')){const e=a['type']['replace']('query_','')['replace'](/_/g,'.'),f=GUARDQUERY['find'](g=>g['name']===e);f?b['push']({'type':a['type'],'description':f['name']+':\x20'+f['description']}):b['push']({'type':a['type'],'description':'Reward\x20Record\x20query:\x20'+a['type']['replace'](/_/g,'\x20')});}else{if(a['type']['startsWith']('query_progress_history_')){const g=a['type']['replace']('query_','')['replace'](/_/g,'.'),h=GUARDQUERY['find'](i=>i['name']===g);h?b['push']({'type':a['type'],'description':h['name']+':\x20'+h['description']}):b['push']({'type':a['type'],'description':'Progress\x20History\x20query:\x20'+a['type']['replace'](/_/g,'\x20')});}else{if(a['type']['startsWith']('logic_'))b['push']({'type':a['type'],'description':'Logic\x20operation:\x20'+a['type']['replace'](/_/g,'\x20')});else{if(a['type']['startsWith']('calc_'))b['push']({'type':a['type'],'description':'Calculation:\x20'+a['type']['replace'](/_/g,'\x20')});else a['type']['startsWith']('convert_')&&b['push']({'type':a['type'],'description':'Type\x20conversion:\x20'+a['type']['replace'](/_/g,'\x20')});}}}}if('nodes'in a&&Array['isArray'](a['nodes']))for(const i of a['nodes']){generateNodeComments(i,b);}'node'in a&&a['node']&&generateNodeComments(a['node'],b);if('parameters'in a&&Array['isArray'](a['parameters']))for(const j of a['parameters']){generateNodeComments(j,b);}return'nodeLeft'in a&&a['nodeLeft']&&generateNodeComments(a['nodeLeft'],b),'nodeRight'in a&&a['nodeRight']&&generateNodeComments(a['nodeRight'],b),'recipient'in a&&a['recipient']&&generateNodeComments(a['recipient'],b),'historyIdx'in a&&a['historyIdx']&&generateNodeComments(a['historyIdx'],b),'sessionIdx'in a&&a['sessionIdx']&&generateNodeComments(a['sessionIdx'],b),'forwardIdx'in a&&a['forwardIdx']&&generateNodeComments(a['forwardIdx'],b),b;};const valueTypeToString=a=>{const b={[ValueType['Bool']]:'Bool',[ValueType['Address']]:'Address',[ValueType['String']]:'String',[ValueType['U8']]:'U8',[ValueType['U16']]:'U16',[ValueType['U32']]:'U32',[ValueType['U64']]:'U64',[ValueType['U128']]:'U128',[ValueType['U256']]:'U256',[ValueType['VecBool']]:'VecBool',[ValueType['VecAddress']]:'VecAddress',[ValueType['VecString']]:'VecString',[ValueType['VecU8']]:'VecU8',[ValueType['VecU16']]:'VecU16',[ValueType['VecU32']]:'VecU32',[ValueType['VecU64']]:'VecU64',[ValueType['VecU128']]:'VecU128',[ValueType['VecU256']]:'VecU256',[ValueType['VecVecU8']]:'VecVecU8',[ValueType['Value']]:'Value'};return b[a]||'Unknown('+a+')';};export const gen_passport=async(a,b,c)=>{!isValidWowAddress(b)&&W_ERROR(WErrors['InvalidParam'],'guard\x20invalid:\x20guard\x20empty');await resolveCallEnv(a);const d=await get_guardSubmissions(a,[b]);return d['submission']['length']>0x0?!c?{'type':'submission','guard':d['guard'],'submission':d['submission']}:await verify_guard(a,c):await verify_guard(a,{'type':'submission','guard':[{'object':b,'impack':!![]}],'submission':[]});};function detectFileFormatFromContent(a){const b=a['trim']();if(b['startsWith']('{')||b['startsWith']('['))return'json';return'markdown';}function extractJsonFromMarkdown(a){const b=/```(?:json)?\s*\n([\s\S]*?)```/g;let c,d=null;while((c=b['exec'](a))!==null){const e=c[0x1]['trim']();if(e['startsWith']('{')||e['startsWith']('[')){const f=a['substring'](0x0,c['index']),g=(f['match'](/\n/g)||[])['length']+0x1;d={'json':e,'lineOffset':g};}}return d;}function parseTableFromMarkdown(a){const b=a['match'](/```(?:json)?\s*\n([\s\S]*?)```/);if(b)try{const d=JSON['parse'](b[0x1]);if(Array['isArray'](d))return d;}catch{}const c=a['match'](/\|[^\n]+\|/g);if(c&&c['length']>0x2)return c['slice'](0x2)['map'](e=>{const f=e['split']('|')['filter'](j=>j['trim']())['map'](j=>j['trim']()),g=f[0x2];let h;const i=g['match'](/\((\d+)\)/);if(i)h=parseInt(i[0x1],0xa);else{const j=g['match'](/^\s*(\d+)\s*$/);if(j)h=parseInt(j[0x1],0xa);else{const k=g['match'](/^([A-Za-z]+)/);if(k)h=k[0x1];else throw new Error('Invalid\x20value_type\x20in\x20table\x20row:\x20\x22'+g+'\x22.\x20Expected\x20a\x20number\x20(0-19)\x20or\x20type\x20name\x20(e.g.,\x20\x22U64\x22,\x20\x22Address\x22)');}}return{'identifier':parseInt(f[0x0],0xa),'b_submission':f[0x1]['toLowerCase']()==='true','value_type':h,'value':f[0x3]==='-'?undefined:f[0x3],'name':f[0x4]==='-'?undefined:f[0x4]};});return undefined;}function parseRelyFromMarkdown(a){const b=a['match'](/\*\*Logic:\*\*\s*(AND|OR)/i),c=a['match'](/^\s*[-*]\s*(\S+)$/gm);if(b||c)return{'logic_or':b?b[0x1]['toUpperCase']()==='OR':![],'guards':c?c['map'](d=>d['replace'](/^\s*[-*]\s*/,'')['trim']()):[]};return undefined;}export function parseGuardFromMarkdown(a){const b=[],c={},d=extractJsonFromMarkdown(a);if(d)try{const f=JSON['parse'](d['json']);Object['assign'](c,f);}catch(g){b['push']({'message':'Failed\x20to\x20parse\x20JSON\x20from\x20code\x20block:\x20'+g['message'],'path':'/','line':d['lineOffset']});}if(!c['description']){const h=a['match'](/(?:^|\n)#+\s*(?:Description|Description|Description)[^\n]*\n+([^\n#]+)/i);h&&(c['description']=h[0x1]['trim']());}if(!c['table']){const i=a['match'](/(?:^|\n)#+\s*(?:Table|Data Table|数据表)[^\n]*\n+([\s\S]*?)(?=(?:\n#+|$))/i);if(i){const j=parseTableFromMarkdown(i[0x1]);j&&(c['table']=j);}}if(!c['root']){const k=a['match'](/(?:^|\n)#+\s*(?:Root|根节点)[^\n]*\n+([\s\S]*?)(?=(?:\n#+|$))/i);if(k){const l=k[0x1],m=l['match'](/```(?:json)?\s*\n([\s\S]*?)```/);if(m)try{c['root']=JSON['parse'](m[0x1]);}catch(n){b['push']({'message':'Failed\x20to\x20parse\x20root\x20JSON:\x20'+n['message'],'path':'/root'});}}}if(!c['rely']){const o=a['match'](/(?:^|\n)#+\s*(?:Rely|Dependencies|依赖)[^\n]*\n+([\s\S]*?)(?=(?:\n#+|$))/i);if(o){const p=parseRelyFromMarkdown(o[0x1]);p&&(c['rely']=p);}}if(!c['root'])return b['push']({'message':'Guard\x20root\x20node\x20not\x20found\x20in\x20markdown\x20file','path':'/root'}),{'success':![],'errors':b};return{'success':!![],'data':c,'errors':b};}export function parseGuardFile(a,b){const c=b??detectFileFormatFromContent(a);if(c==='json')try{const d=JSON['parse'](a);if(!d['root'])return{'success':![],'errors':[{'message':'Missing\x20required\x20field:\x20root','path':'/root'}]};return{'success':!![],'data':d,'errors':[]};}catch(f){return{'success':![],'errors':[{'message':'JSON\x20parse\x20error:\x20'+f['message'],'path':'/'}]};}return parseGuardFromMarkdown(a);}export function validateGuardNode(a){const b=[];if(!a||typeof a!=='object')return b['push']({'message':'GuardNode\x20must\x20be\x20an\x20object','path':'/'}),{'success':![],'errors':b};const c=a;if(!c['type']||typeof c['type']!=='string')return b['push']({'message':'GuardNode\x20must\x20have\x20a\x20\x27type\x27\x20property','path':'/type'}),{'success':![],'errors':b};const d=['identifier','query','context','logic_not','logic_and','logic_or','logic_equal','logic_as_u256_greater_or_equal','logic_as_u256_lesser_or_equal','logic_as_u256_greater','logic_as_u256_lesser','logic_as_u256_equal','logic_string_contains','logic_string_nocase_contains','logic_string_nocase_equal','calc_number_add','calc_number_subtract','calc_number_multiply','calc_number_divide','calc_number_mod','calc_string_length','calc_string_nocase_contains','calc_string_nocase_equal','calc_string_contains','calc_string_indexof','calc_string_nocase_indexof','convert_number_address','convert_address_number','convert_number_string','convert_string_number','convert_safe_u8','convert_safe_u16','convert_safe_u32','convert_safe_u64','convert_safe_u128','convert_safe_u256','value_type','vec_length','vec_contains_bool','vec_contains_address','vec_contains_string','vec_contains_string_nocase','vec_contains_number','vec_indexof_bool','vec_indexof_address','vec_indexof_string','vec_indexof_string_nocase','vec_indexof_number','query_reward_record_find','query_reward_record_count','query_reward_record_exists','query_progress_history_find','query_progress_history_session_find','query_progress_history_session_forward_find','query_progress_history_session_count','query_progress_history_session_forward_count','query_progress_history_session_forward_retained_submission_count'];return!d['includes'](c['type'])&&b['push']({'message':'Invalid\x20GuardNode\x20type:\x20'+c['type'],'path':'/type'}),{'success':b['length']===0x0,'errors':b};}export function formatGuardParseErrors(a){return a['map'](b=>{let c='Path:\x20'+b['path'];return b['line']!==undefined&&b['column']!==undefined&&(c+='\x20(line\x20'+b['line']+',\x20column\x20'+b['column']+')'),c+='\x0a\x20\x20Error:\x20'+b['message'],c;})['join']('\x0a\x0a');}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WowTransactionBlockResponse } from "../../client/index.js";
|
|
2
2
|
import type { TransactionResult } from "../../transactions/index.js";
|
|
3
3
|
import { Transaction } from "../../transactions/index.js";
|
|
4
4
|
import type { PassportObject, GuardObject, CallEnv } from "../common.js";
|
|
@@ -12,7 +12,7 @@ export interface SubmissionCall {
|
|
|
12
12
|
}[];
|
|
13
13
|
submission: GuardSubmissionToFill[];
|
|
14
14
|
}
|
|
15
|
-
export declare const verify_guard: (env: CallEnv, guard_info: SubmissionCall) => Promise<
|
|
15
|
+
export declare const verify_guard: (env: CallEnv, guard_info: SubmissionCall) => Promise<WowTransactionBlockResponse>;
|
|
16
16
|
export declare const get_guardSubmissions: (env: CallEnv, guards: string[]) => Promise<SubmissionCall>;
|
|
17
17
|
export declare function passportFn(name: string): string;
|
|
18
18
|
export declare const MAX_GUARD_COUNT = 20;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getFullnodeUrl,
|
|
1
|
+
import{getFullnodeUrl,WowClient}from'../../client/index.js';import{Transaction}from'../../transactions/index.js';import{toTxObject,MAX_GUARD_TABLE_ITEM_LENGTH,PackageAddress,parseValueType}from'../common.js';import{W_ERROR,WErrors}from'../exception.js';import{Account}from'../local/account.js';import{Config}from'../local/config.js';import{ObjectType,query_objects}from'../query/object.js';import{valueToBcsBytes}from'../util.js';import{getCallEnvAccount}from'./util.js';export const MAX_GUARD_COUNT_ONCE=0x14;export const verify_guard=async(a,b)=>{b['guard']['length']>MAX_GUARD_COUNT_ONCE&&W_ERROR(WErrors['InvalidParam'],'guards\x20invalid:\x20guard\x20count\x20exceeds\x20maximum\x20limit\x20'+MAX_GUARD_COUNT_ONCE);const c=new Transaction(),d=newPassport(c);for(const f of b['guard']){await guardAdd(c,d,f['object'],b['submission']['find'](g=>g['guard']===f['object'])?.['submission']??[],f['impack']);}verify(c,d),freeze(c,d);let e=await Account['Instance']()['sign_and_commit'](c,await getCallEnvAccount(a),a['network']);!e&&W_ERROR(WErrors['Fail'],'sign\x20and\x20commit\x20failed');if(e?.['digest']&&!e?.['objectChanges']){const g=new WowClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](a['network']))});e=await g['getTransactionBlock']({'digest':e?.['digest'],'options':{'showObjectChanges':!![]}});}return e;};export const get_guardSubmissions=async(a,b)=>{b['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'guards\x20invalid:\x20guards\x20empty');b=[...new Set(b)];b['length']>MAX_GUARD_COUNT_ONCE&&W_ERROR(WErrors['InvalidParam'],'guards\x20invalid:\x20guard\x20count\x20exceeds\x20maximum\x20limit\x20\x20'+MAX_GUARD_COUNT_ONCE+'\x20once');const c=await query_objects({'objects':[...b],'no_cache':a['no_cache'],'network':a['network']});(!c['objects']||c['objects']['length']===0x0)&&W_ERROR(WErrors['InvalidParam'],'Guard\x20objects\x20not\x20found:\x20'+b['join'](',\x20'));const d=[],e=new Map();c['objects']['forEach'](m=>{m['type']!==ObjectType['Guard']&&W_ERROR(WErrors['InvalidParam'],'guards\x20invalid:\x20guard\x20\x27'+m['object']+'\x27\x20is\x20not\x20a\x20guard\x20object');const n=m;n['relies']?.['forEach'](p=>{!d['includes'](p)&&d['push'](p);});const o=n['rep_quote']instanceof Map?n['rep_quote']:new Map(Object['entries'](n['rep_quote']||{}));o['forEach']((p,q)=>{if(e['has'](q)){const s=e['get'](q)||[];p['forEach'](t=>{!s['includes'](t)&&s['push'](t);}),e['set'](q,s);}else e['set'](q,p);});});const f=await query_objects({'objects':[...e['keys']()],'no_cache':a['no_cache'],'network':a['network']}),g=[];f['objects']['forEach'](m=>{m['type']!==ObjectType['Repository']&&W_ERROR(WErrors['InvalidParam'],'rep\x20invalid:\x20rep\x20\x27'+m['object']+'\x27\x20is\x20not\x20a\x20guard\x20object');const n=m;n['policies']['forEach'](o=>{const q=e['get'](n['object'])||[];q['includes'](o['name'])&&o['quote_guard']&&!g['includes'](o['quote_guard'])&&g['push'](o['quote_guard']);});});const h=[...new Set([...g,...c['objects']['map'](m=>m['object'])])],i=new Set(h),j=[...d['filter'](m=>!i['has'](m))['map'](m=>({'object':m,'impack':![]})),...h['map'](m=>({'object':m,'impack':!![]}))];j['length']>MAX_GUARD_COUNT&&W_ERROR(WErrors['InvalidParam'],'guards\x20invalid:\x20guard\x20count(include\x20relies\x20guards)\x20exceeds\x20maximum\x20limit\x20'+MAX_GUARD_COUNT);const k=await query_objects({'objects':[...d,...g],'no_cache':a['no_cache'],'network':a['network']}),l=[];return k['objects']['forEach'](m=>{const n=m,o=[];n['table']?.['forEach'](p=>{p['b_submission']&&o['push'](p);}),o['length']>0x0&&l['find'](p=>p['guard']===n['object'])===undefined&&l['push']({'guard':n['object'],'submission':o});}),c['objects']['forEach'](m=>{const n=m,o=[];n['table']?.['forEach'](p=>{p['b_submission']&&o['push'](p);}),o['length']>0x0&&l['find'](p=>p['guard']===n['object'])===undefined&&l['push']({'guard':n['object'],'submission':o});}),{'type':'submission','guard':j,'submission':l};};export function passportFn(a){return PackageAddress+'::passport::'+a;}export const MAX_GUARD_COUNT=0x14;export function newPassport(a){return a['moveCall']({'target':passportFn('new'),'arguments':[a['object']['clock']()]});}export function freeze(a,b){a['moveCall']({'target':passportFn('freezen'),'arguments':[toTxObject(a,b)]});}export function destroy(a,b){a['moveCall']({'target':passportFn('destroy'),'arguments':[toTxObject(a,b)]});}export const guardAdd=async(a,b,c,d,e)=>{d['length']>MAX_GUARD_TABLE_ITEM_LENGTH&&W_ERROR(WErrors['GuardTableItemLengthExceeded'],'Submission\x20size\x20exceeds\x20maximum\x20limit\x20'+MAX_GUARD_TABLE_ITEM_LENGTH);const f=a['pure']['vector']('u8',d['map'](j=>j['identifier'])),g=[];for(let j=0x0;j<d['length'];j++){!d[j]['value']&&W_ERROR(WErrors['IsValidValue'],'Value\x20is\x20undefined\x20for\x20identifier\x20'+d[j]['identifier']);const k=parseValueType(d[j]['value_type']),l=await valueToBcsBytes(k,d[j]['value']);g['push'](Array['from'](l));}const h=a['pure']['vector']('vector<u8>',g);a['moveCall']({'target':passportFn('guard_add'),'arguments':[toTxObject(a,b),toTxObject(a,c),f,h,a['pure']['bool'](e)]});};export function guardClear(a,b){a['moveCall']({'target':passportFn('guard_clear'),'arguments':[toTxObject(a,b)]});}export function verify(a,b){return a['moveCall']({'target':passportFn('verify'),'arguments':[toTxObject(a,b)]});}
|
package/dist/esm/w/common.d.ts
CHANGED
|
@@ -232,6 +232,11 @@ export declare const toTxAddress: (tx: Transaction, arg: TxAddress) => Transacti
|
|
|
232
232
|
export declare const toTxAddressVec: (tx: Transaction, arg: TxAddressVec, max_len: number) => TransactionArgument;
|
|
233
233
|
export declare const toTxU16Vec: (tx: Transaction, arg: TxNumberVec, max_len: number) => TransactionArgument;
|
|
234
234
|
export declare const object_name_from_type: (type_repr: string | null | undefined) => string | undefined;
|
|
235
|
+
export interface ObjectModuleAndName {
|
|
236
|
+
module: string;
|
|
237
|
+
name: string;
|
|
238
|
+
}
|
|
239
|
+
export declare const object_module_and_name_from_type: (type_repr: string | null | undefined) => ObjectModuleAndName | undefined;
|
|
235
240
|
export interface NamedObject {
|
|
236
241
|
name?: string;
|
|
237
242
|
tags?: string[];
|
|
@@ -335,5 +340,5 @@ export declare enum ObjectType {
|
|
|
335
340
|
TableItem_AddressMark = "TableItem_AddressMark",
|
|
336
341
|
TableItem_EntityRegistrar = "TableItem_EntityRegistrar"
|
|
337
342
|
}
|
|
338
|
-
export declare const ENTITY_LINKER_ADDRESS = "
|
|
339
|
-
export declare const ENTITY_REGISTRAR_ADDRESS = "
|
|
343
|
+
export declare const ENTITY_LINKER_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000aaa";
|
|
344
|
+
export declare const ENTITY_REGISTRAR_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000aab";
|
package/dist/esm/w/common.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bcs}from'../bcs/index.js';import{W_ERROR,WErrors}from'./exception.js';import{LocalMark}from'./local/local.js';export var ValueType;(function(a){a[a['Bool']=0x0]='Bool',a[a['Address']=0x1]='Address',a[a['String']=0x2]='String',a[a['U8']=0x3]='U8',a[a['U16']=0x4]='U16',a[a['U32']=0x5]='U32',a[a['U64']=0x6]='U64',a[a['U128']=0x7]='U128',a[a['U256']=0x8]='U256',a[a['VecBool']=0x9]='VecBool',a[a['VecAddress']=0xa]='VecAddress',a[a['VecString']=0xb]='VecString',a[a['VecU8']=0xc]='VecU8',a[a['VecU16']=0xd]='VecU16',a[a['VecU32']=0xe]='VecU32',a[a['VecU64']=0xf]='VecU64',a[a['VecU128']=0x10]='VecU128',a[a['VecU256']=0x11]='VecU256',a[a['VecVecU8']=0x12]='VecVecU8',a[a['Value']=0x13]='Value';}(ValueType||(ValueType={})));export const createValueContainer=(a,b)=>{return{'valueType':a,'value':b};};export const parseValueType=a=>{if(typeof a==='number'){if(a>=0x0&&a<=0x13)return a;throw new Error('Invalid\x20ValueType\x20number:\x20'+a+'.\x20Valid\x20range:\x200-19');}const b=Object['keys'](ValueType)['filter'](e=>isNaN(Number(e))),c=a['toLowerCase'](),d=b['find'](e=>e['toLowerCase']()===c);if(d===undefined)throw new Error('Invalid\x20ValueType\x20string:\x20\x22'+a+'\x22.\x20Valid\x20values:\x20'+b['join'](',\x20'));return ValueType[d];};export const valueTypeToString=a=>{return ValueType[a];};export const isValidValueTypeInput=a=>{if(typeof a==='number')return a>=0x0&&a<=0x13;if(typeof a==='string'){const b=a['toUpperCase'](),c=ValueType[b];return typeof c==='number';}return![];};export var OperatorType;(function(a){a[a['TypeQuery']=0x28]='TypeQuery',a[a['TypeNumberAdd']=0xc8]='TypeNumberAdd',a[a['TypeNumberSubtract']=0xc9]='TypeNumberSubtract',a[a['TypeNumberMultiply']=0xca]='TypeNumberMultiply',a[a['TypeNumberDivide']=0xcb]='TypeNumberDivide',a[a['TypeNumberMod']=0xcc]='TypeNumberMod',a[a['TypeNumberAddress']=0xcd]='TypeNumberAddress',a[a['TypeNumberString']=0xce]='TypeNumberString',a[a['TypeAddressNumber']=0xcf]='TypeAddressNumber',a[a['TypeStringNumber']=0xd0]='TypeStringNumber',a[a['TypeSafeU8']=0xdc]='TypeSafeU8',a[a['TypeSafeU16']=0xdd]='TypeSafeU16',a[a['TypeSafeU32']=0xde]='TypeSafeU32',a[a['TypeSafeU64']=0xdf]='TypeSafeU64',a[a['TypeSafeU128']=0xe0]='TypeSafeU128',a[a['TypeSafeU256']=0xe1]='TypeSafeU256',a[a['TypeStringLength']=0x3d]='TypeStringLength',a[a['TypeStringIndexof']=0x3e]='TypeStringIndexof',a[a['TypeStringNocaseIndexof']=0x3f]='TypeStringNocaseIndexof',a[a['TypeStringContains']=0x40]='TypeStringContains',a[a['TypeStringNocaseContains']=0x41]='TypeStringNocaseContains',a[a['TypeStringNocaseEqual']=0x42]='TypeStringNocaseEqual',a[a['TypedValueType']=0x46]='TypedValueType',a[a['TypedValueVecLength']=0x47]='TypedValueVecLength',a[a['TypedValueVecContains_Bool']=0x48]='TypedValueVecContains_Bool',a[a['TypedValueVecContains_Address']=0x49]='TypedValueVecContains_Address',a[a['TypedValueVecContains_String']=0x4a]='TypedValueVecContains_String',a[a['TypedValueVecContains_StringNoCase']=0x4b]='TypedValueVecContains_StringNoCase',a[a['TypedValueVecContains_Number']=0x4c]='TypedValueVecContains_Number',a[a['TypedValueVecContains_U8']=0x52]='TypedValueVecContains_U8',a[a['TypedValueVecContains_U16']=0x53]='TypedValueVecContains_U16',a[a['TypedValueVecContains_U32']=0x54]='TypedValueVecContains_U32',a[a['TypedValueVecContains_U64']=0x55]='TypedValueVecContains_U64',a[a['TypedValueVecContains_U128']=0x56]='TypedValueVecContains_U128',a[a['TypedValueVecContains_U256']=0x57]='TypedValueVecContains_U256',a[a['TypedValueVecIndexOf_Bool']=0x4d]='TypedValueVecIndexOf_Bool',a[a['TypedValueVecIndexOf_Address']=0x4e]='TypedValueVecIndexOf_Address',a[a['TypedValueVecIndexOf_String']=0x4f]='TypedValueVecIndexOf_String',a[a['TypedValueVecIndexOf_StringNoCase']=0x50]='TypedValueVecIndexOf_StringNoCase',a[a['TypedValueVecIndexOf_Number']=0x51]='TypedValueVecIndexOf_Number',a[a['TypeLogicEqual']=0x5a]='TypeLogicEqual',a[a['TypeLogicAsU256Greater']=0x5b]='TypeLogicAsU256Greater',a[a['TypeLogicAsU256GreaterEqual']=0x5c]='TypeLogicAsU256GreaterEqual',a[a['TypeLogicAsU256Lesser']=0x5d]='TypeLogicAsU256Lesser',a[a['TypeLogicAsU256LesserEqual']=0x5e]='TypeLogicAsU256LesserEqual',a[a['TypeLogicAsU256Equal']=0x5f]='TypeLogicAsU256Equal',a[a['TypeLogicAnd']=0x60]='TypeLogicAnd',a[a['TypeLogicOr']=0x61]='TypeLogicOr',a[a['TypeLogicNot']=0x62]='TypeLogicNot';}(OperatorType||(OperatorType={})));export var WitnessType;(function(a){a[a['TypeOrderProgress']=0x64]='TypeOrderProgress',a[a['TypeOrderMachine']=0x65]='TypeOrderMachine',a[a['TypeOrderService']=0x66]='TypeOrderService',a[a['TypeProgressMachine']=0x67]='TypeProgressMachine',a[a['TypeArbOrder']=0x68]='TypeArbOrder',a[a['TypeArbArbitration']=0x69]='TypeArbArbitration',a[a['TypeArbProgress']=0x6a]='TypeArbProgress',a[a['TypeArbMachine']=0x6b]='TypeArbMachine',a[a['TypeArbService']=0x6c]='TypeArbService';}(WitnessType||(WitnessType={})));export const isWitnessType=a=>{return a!=null&&a>=WitnessType['TypeOrderProgress']&&a<=WitnessType['TypeArbService'];};export var ContextType;(function(a){a[a['TypeSigner']=0x2d]='TypeSigner',a[a['TypeClock']=0x2e]='TypeClock',a[a['TypeGuard']=0x2f]='TypeGuard',a[a['TypeConstant']=0x30]='TypeConstant';}(ContextType||(ContextType={})));export var Modules;(function(a){a['Machine']='machine',a['Progress']='progress',a['Repository']='repository',a['Permission']='permission',a['Passport']='passport',a['Guard']='guard',a['Demand']='demand',a['Order']='order',a['Service']='service',a['Resource']='resource',a['Entity']='entity',a['Wowok']='wowok',a['Treasury']='treasury',a['Payment']='payment',a['Arbitration']='arbitration',a['Arb']='arb',a['Allocation']='allocation';}(Modules||(Modules={})));export const PackageAddress='0x2';export const GasTokenType='0x2::wow::WOW';export const GasCoinType='0x2::coin::Coin<0x2::wow::WOW>';export const RegistrarAddress='0xaaa';export const EntityAddress='0xaab';export const MAX_ENV_PERMISSION_GUARD_COUNT=0x4;export const isGasTokenType=a=>{return a===GasTokenType;};export const isValidValueType=a=>{return a>=ValueType['Bool']&&a<=ValueType['Value'];};export const isThisPackage=a=>{return a['startsWith']('0x2::');};export const isValidArray=(a,b)=>{if(!Array['isArray'](a))return![];return a['every'](c=>b(c));};export const isValidU8=a=>{if(typeof a==='string'){const b=parseInt(a,0xa);return!isNaN(b)&&Number['isInteger'](b)&&b>=0x0&&b<=0xff;}if(typeof a==='bigint')return a>=0x0n&&a<=0xffn;return Number['isInteger'](a)&&a>=0x0&&a<=0xff;};export const isValidU16=a=>{if(typeof a==='string'){const b=parseInt(a,0xa);return!isNaN(b)&&Number['isInteger'](b)&&b>=0x0&&b<=0xffff;}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffn;return Number['isInteger'](a)&&a>=0x0&&a<=0xffff;};export const isValidU64=a=>{if(typeof a==='string'){if(a['length']>0xf)try{const b=BigInt(a);return b>=0x0n&&b<=0xffffffffffffffffn;}catch{return![];}else{const c=parseInt(a,0xa);return!isNaN(c)&&Number['isInteger'](c)&&c>=0x0&&c<=Number['MAX_SAFE_INTEGER'];}}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffffffffffffffn;return Number['isInteger'](a)&&a>=0x0&&a<=Number['MAX_SAFE_INTEGER'];};export const isValidU128=a=>{if(typeof a==='string')try{const b=BigInt(a);return b>=0x0n&&b<=0xffffffffffffffffffffffffffffffffn;}catch{return![];}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffffffffffffffffffffffffffffffn;return Number['isInteger'](a)&&a>=0x0&&a<=Number['MAX_SAFE_INTEGER'];};export const isValidU256=a=>{if(typeof a==='string')try{const b=BigInt(a);return b>=0x0n&&b<=0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn;}catch{return![];}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn;return Number['isInteger'](a)&&a>=0x0&&a<=Number['MAX_SAFE_INTEGER'];};export const isValidU32=a=>{if(typeof a==='string'){const b=parseInt(a,0xa);return!isNaN(b)&&Number['isInteger'](b)&&b>=0x0&&b<=0xffffffff;}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffffffn;return Number['isInteger'](a)&&a>=0x0&&a<=0xffffffff;};export const IsBcsStringLength=(a,b)=>{return bcs['string']()['serialize'](a)['toBytes']()['length']<=b;};export const MAX_DESCRIPTION_LENGTH=0xfa0;export const MAX_NAME_LENGTH=0x40;export const MAX_LONG_NAME_LENGTH=0x100;export const MAX_GUARD_TABLE_ITEM_LENGTH=0x100;export const MAX_INPUT_SIZE=0x400;export const MAX_TABLE_SIZE=0x9c40;export const MAX_DEPENDED_COUNT=0x4;export const MAX_MULTI_OPERANDS=0x8;export const isValidDescription=a=>{return IsBcsStringLength(a,MAX_DESCRIPTION_LENGTH);};export const isValidName=a=>{return IsBcsStringLength(a,MAX_NAME_LENGTH)&&!a['toLowerCase']()['startsWith']('0x');};export const isValidLongName=a=>{return IsBcsStringLength(a,MAX_LONG_NAME_LENGTH);};export const isValidHttpUrl=a=>{try{const b=new URL(a);return b['protocol']==='http:'||b['protocol']==='https:'||b['protocol']==='ipfs:';}catch(c){return![];}};export const isValueTypeNumber=a=>{return a===ValueType['U8']||a===ValueType['U16']||a===ValueType['U32']||a===ValueType['U64']||a===ValueType['U128']||a===ValueType['U256'];};export const toTxObject=(a,b)=>{if(typeof b==='string')return a['object'](b);return b;};export const toTxString=(a,b)=>{if(b===undefined||b===null)return a['pure']['string']('');if(typeof b==='string')return a['pure']['string'](b);return b;};export const toTxU8=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU8(b)&&W_ERROR(WErrors['IsValidU8'],'Invalid\x20U8\x20value:\x20'+b),a['pure']['u8'](Number(b));return b;};export const toTxU16=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU16(b)&&W_ERROR(WErrors['IsValidU16'],'Invalid\x20U16\x20value:\x20'+b),a['pure']['u16'](Number(b));return b;};export const toTxU32=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU32(b)&&W_ERROR(WErrors['IsValidU32'],'Invalid\x20U32\x20value:\x20'+b),a['pure']['u32'](Number(b));return b;};export const toTxU128=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU128(b)&&W_ERROR(WErrors['IsValidU128'],'Invalid\x20U128\x20value:\x20'+b),a['pure']['u128'](b);return b;};export const toTxU256=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU256(b)&&W_ERROR(WErrors['IsValidU256'],'Invalid\x20U256\x20value:\x20'+b),a['pure']['u256'](b);return b;};export const toTxU64=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU64(b)&&W_ERROR(WErrors['IsValidU64'],'Invalid\x20U64\x20value:\x20'+b),a['pure']['u64'](b);return b;};export const toTxAddress=(a,b)=>{if(typeof b==='string')return a['pure']['address'](b);return b;};export const toTxAddressVec=(a,b,c)=>{if(Array['isArray'](b))return b['length']>c&&W_ERROR(WErrors['AddressCountExceeded'],'Invalid\x20AddressVec\x20length:\x20'+b['length']),a['pure']['vector']('address',b);return b;};export const toTxU16Vec=(a,b,c)=>{if(Array['isArray'](b))return b['length']>c&&W_ERROR(WErrors['NumberCountExceeded'],'Invalid\x20U16Vec\x20length:\x20'+b['length']),a['pure']['vector']('u16',b['map'](d=>{return!isValidU16(d)&&W_ERROR(WErrors['IsValidU16'],'Invalid\x20U16\x20value:\x20'+d),Number(d);}));return b;};export const object_name_from_type=a=>{if(!a)return undefined;let b=a['indexOf']('::');if(b>0x0&&a['slice'](0x0,b)==='0x2'){b=a['indexOf']('<');b>0x0&&(a=a['slice'](0x0,b));const c=a['lastIndexOf']('::');if(c>0x0)return a['slice'](c+0x2);}return undefined;};function isTypeNamedObjectWithPermission(a){return a!=null&&typeof a==='object'&&'type_parameter'in a&&typeof a['type_parameter']==='string';}function isNamedObjectWithPermission(a){return a!=null&&typeof a==='object'&&'permission'in a;}function isNamedObject(a){return a!=null&&typeof a==='object';}function isNamedObjectWithDescription(a){return a!=null&&typeof a==='object'&&'description'in a;}function isTypeNamedObjectWithDescription(a){return a!=null&&typeof a==='object'&&'type_parameter'in a&&typeof a['type_parameter']==='string';}export const GetObjectExisted=async a=>{if(typeof a==='string')return await LocalMark['Instance']()['get_address'](a);return undefined;};export const GetObjectDescription=a=>{return isNamedObjectWithDescription(a)?a['description']:undefined;};export const GetObject=a=>{if(isTypeNamedObjectWithPermission(a))return a;else{if(isTypeNamedObjectWithDescription(a))return a;else{if(isNamedObjectWithPermission(a))return a;else{if(isNamedObject(a))return a;}}}return undefined;};export const MAX_PERMISSION_GUARD_COUNT=0x4;export const CoinWrapPrefix=PackageAddress+'::payment::CoinWrapper';export const IsValidBalance=a=>{return isValidU64(a);};export const IsValidEndpoint=a=>{return a&&IsBcsStringLength(a,0x400);};export const IsValidArgType=a=>{if(a){const b=a['split']('::');if(b['length']>=0x3)return!![];}return![];};export var RecipientType;(function(a){a[a['GuardIdentifier']=0x0]='GuardIdentifier',a[a['Entity']=0x1]='Entity',a[a['Signer']=0x2]='Signer';}(RecipientType||(RecipientType={})));export function serviceFn(a){return PackageAddress+'::service::'+a;}export function demandFn(a){return PackageAddress+'::demand::'+a;}export function machineFn(a){return PackageAddress+'::machine::'+a;}export function contactFn(a){return PackageAddress+'::contact::'+a;}export function treasuryFn(a){return PackageAddress+'::treasury::'+a;}export function arbitrationFn(a){return PackageAddress+'::arbitration::'+a;}export function repositoryFn(a){return PackageAddress+'::repository::'+a;}export function rewardFn(a){return PackageAddress+'::reward::'+a;}export var ObjectType;(function(a){a['Permission']='Permission',a['Repository']='Repository',a['Arb']='Arb',a['Arbitration']='Arbitration',a['Service']='Service',a['Machine']='Machine',a['Order']='Order',a['Progress']='Progress',a['Payment']='Payment',a['Treasury']='Treasury',a['Guard']='Guard',a['Demand']='Demand',a['Passport']='Passport',a['Allocation']='Allocation',a['Resource']='Resource',a['Reward']='Reward',a['Discount']='Discount',a['EntityRegistrar']='EntityRegistrar',a['EntityLinker']='EntityLinker',a['Proof']='Proof',a['Contact']='Contact',a['WReceivedObject']='WReceivedObject',a['TableItem_ProgressHistory']='TableItem_ProgressHistory',a['TableItem_PermissionPerm']='TableItem_PermissionPerm',a['TableItem_DemandPresenter']='TableItem_DemandPresenter',a['TableItem_MachineNode']='TableItem_MachineNode',a['TableItem_TreasuryHistory']='TableItem_TreasuryHistory',a['TableItem_RepositoryData']='TableItem_RepositoryData',a['TableItem_RewardRecord']='TableItem_RewardRecord',a['TableItem_EntityLinker']='TableItem_EntityLinker',a['TableItem_AddressMark']='TableItem_AddressMark',a['TableItem_EntityRegistrar']='TableItem_EntityRegistrar';}(ObjectType||(ObjectType={})));export const ENTITY_LINKER_ADDRESS='0xaaa';export const ENTITY_REGISTRAR_ADDRESS='0xaab';
|
|
1
|
+
import{bcs}from'../bcs/index.js';import{W_ERROR,WErrors}from'./exception.js';import{LocalMark}from'./local/local.js';export var ValueType;(function(a){a[a['Bool']=0x0]='Bool',a[a['Address']=0x1]='Address',a[a['String']=0x2]='String',a[a['U8']=0x3]='U8',a[a['U16']=0x4]='U16',a[a['U32']=0x5]='U32',a[a['U64']=0x6]='U64',a[a['U128']=0x7]='U128',a[a['U256']=0x8]='U256',a[a['VecBool']=0x9]='VecBool',a[a['VecAddress']=0xa]='VecAddress',a[a['VecString']=0xb]='VecString',a[a['VecU8']=0xc]='VecU8',a[a['VecU16']=0xd]='VecU16',a[a['VecU32']=0xe]='VecU32',a[a['VecU64']=0xf]='VecU64',a[a['VecU128']=0x10]='VecU128',a[a['VecU256']=0x11]='VecU256',a[a['VecVecU8']=0x12]='VecVecU8',a[a['Value']=0x13]='Value';}(ValueType||(ValueType={})));export const createValueContainer=(a,b)=>{return{'valueType':a,'value':b};};export const parseValueType=a=>{if(typeof a==='number'){if(a>=0x0&&a<=0x13)return a;throw new Error('Invalid\x20ValueType\x20number:\x20'+a+'.\x20Valid\x20range:\x200-19');}const b=Object['keys'](ValueType)['filter'](e=>isNaN(Number(e))),c=a['toLowerCase'](),d=b['find'](e=>e['toLowerCase']()===c);if(d===undefined)throw new Error('Invalid\x20ValueType\x20string:\x20\x22'+a+'\x22.\x20Valid\x20values:\x20'+b['join'](',\x20'));return ValueType[d];};export const valueTypeToString=a=>{return ValueType[a];};export const isValidValueTypeInput=a=>{if(typeof a==='number')return a>=0x0&&a<=0x13;if(typeof a==='string'){const b=a['toUpperCase'](),c=ValueType[b];return typeof c==='number';}return![];};export var OperatorType;(function(a){a[a['TypeQuery']=0x28]='TypeQuery',a[a['TypeNumberAdd']=0xc8]='TypeNumberAdd',a[a['TypeNumberSubtract']=0xc9]='TypeNumberSubtract',a[a['TypeNumberMultiply']=0xca]='TypeNumberMultiply',a[a['TypeNumberDivide']=0xcb]='TypeNumberDivide',a[a['TypeNumberMod']=0xcc]='TypeNumberMod',a[a['TypeNumberAddress']=0xcd]='TypeNumberAddress',a[a['TypeNumberString']=0xce]='TypeNumberString',a[a['TypeAddressNumber']=0xcf]='TypeAddressNumber',a[a['TypeStringNumber']=0xd0]='TypeStringNumber',a[a['TypeSafeU8']=0xdc]='TypeSafeU8',a[a['TypeSafeU16']=0xdd]='TypeSafeU16',a[a['TypeSafeU32']=0xde]='TypeSafeU32',a[a['TypeSafeU64']=0xdf]='TypeSafeU64',a[a['TypeSafeU128']=0xe0]='TypeSafeU128',a[a['TypeSafeU256']=0xe1]='TypeSafeU256',a[a['TypeStringLength']=0x3d]='TypeStringLength',a[a['TypeStringIndexof']=0x3e]='TypeStringIndexof',a[a['TypeStringNocaseIndexof']=0x3f]='TypeStringNocaseIndexof',a[a['TypeStringContains']=0x40]='TypeStringContains',a[a['TypeStringNocaseContains']=0x41]='TypeStringNocaseContains',a[a['TypeStringNocaseEqual']=0x42]='TypeStringNocaseEqual',a[a['TypedValueType']=0x46]='TypedValueType',a[a['TypedValueVecLength']=0x47]='TypedValueVecLength',a[a['TypedValueVecContains_Bool']=0x48]='TypedValueVecContains_Bool',a[a['TypedValueVecContains_Address']=0x49]='TypedValueVecContains_Address',a[a['TypedValueVecContains_String']=0x4a]='TypedValueVecContains_String',a[a['TypedValueVecContains_StringNoCase']=0x4b]='TypedValueVecContains_StringNoCase',a[a['TypedValueVecContains_Number']=0x4c]='TypedValueVecContains_Number',a[a['TypedValueVecContains_U8']=0x52]='TypedValueVecContains_U8',a[a['TypedValueVecContains_U16']=0x53]='TypedValueVecContains_U16',a[a['TypedValueVecContains_U32']=0x54]='TypedValueVecContains_U32',a[a['TypedValueVecContains_U64']=0x55]='TypedValueVecContains_U64',a[a['TypedValueVecContains_U128']=0x56]='TypedValueVecContains_U128',a[a['TypedValueVecContains_U256']=0x57]='TypedValueVecContains_U256',a[a['TypedValueVecIndexOf_Bool']=0x4d]='TypedValueVecIndexOf_Bool',a[a['TypedValueVecIndexOf_Address']=0x4e]='TypedValueVecIndexOf_Address',a[a['TypedValueVecIndexOf_String']=0x4f]='TypedValueVecIndexOf_String',a[a['TypedValueVecIndexOf_StringNoCase']=0x50]='TypedValueVecIndexOf_StringNoCase',a[a['TypedValueVecIndexOf_Number']=0x51]='TypedValueVecIndexOf_Number',a[a['TypeLogicEqual']=0x5a]='TypeLogicEqual',a[a['TypeLogicAsU256Greater']=0x5b]='TypeLogicAsU256Greater',a[a['TypeLogicAsU256GreaterEqual']=0x5c]='TypeLogicAsU256GreaterEqual',a[a['TypeLogicAsU256Lesser']=0x5d]='TypeLogicAsU256Lesser',a[a['TypeLogicAsU256LesserEqual']=0x5e]='TypeLogicAsU256LesserEqual',a[a['TypeLogicAsU256Equal']=0x5f]='TypeLogicAsU256Equal',a[a['TypeLogicAnd']=0x60]='TypeLogicAnd',a[a['TypeLogicOr']=0x61]='TypeLogicOr',a[a['TypeLogicNot']=0x62]='TypeLogicNot';}(OperatorType||(OperatorType={})));export var WitnessType;(function(a){a[a['TypeOrderProgress']=0x64]='TypeOrderProgress',a[a['TypeOrderMachine']=0x65]='TypeOrderMachine',a[a['TypeOrderService']=0x66]='TypeOrderService',a[a['TypeProgressMachine']=0x67]='TypeProgressMachine',a[a['TypeArbOrder']=0x68]='TypeArbOrder',a[a['TypeArbArbitration']=0x69]='TypeArbArbitration',a[a['TypeArbProgress']=0x6a]='TypeArbProgress',a[a['TypeArbMachine']=0x6b]='TypeArbMachine',a[a['TypeArbService']=0x6c]='TypeArbService';}(WitnessType||(WitnessType={})));export const isWitnessType=a=>{return a!=null&&a>=WitnessType['TypeOrderProgress']&&a<=WitnessType['TypeArbService'];};export var ContextType;(function(a){a[a['TypeSigner']=0x2d]='TypeSigner',a[a['TypeClock']=0x2e]='TypeClock',a[a['TypeGuard']=0x2f]='TypeGuard',a[a['TypeConstant']=0x30]='TypeConstant';}(ContextType||(ContextType={})));export var Modules;(function(a){a['Machine']='machine',a['Progress']='progress',a['Repository']='repository',a['Permission']='permission',a['Passport']='passport',a['Guard']='guard',a['Demand']='demand',a['Order']='order',a['Service']='service',a['Resource']='resource',a['Entity']='entity',a['Wowok']='wowok',a['Treasury']='treasury',a['Payment']='payment',a['Arbitration']='arbitration',a['Arb']='arb',a['Allocation']='allocation';}(Modules||(Modules={})));export const PackageAddress='0x2';export const GasTokenType='0x2::wow::WOW';export const GasCoinType='0x2::coin::Coin<0x2::wow::WOW>';export const RegistrarAddress='0xaaa';export const EntityAddress='0xaab';export const MAX_ENV_PERMISSION_GUARD_COUNT=0x4;export const isGasTokenType=a=>{return a===GasTokenType;};export const isValidValueType=a=>{return a>=ValueType['Bool']&&a<=ValueType['Value'];};export const isThisPackage=a=>{return a['startsWith']('0x2::');};export const isValidArray=(a,b)=>{if(!Array['isArray'](a))return![];return a['every'](c=>b(c));};export const isValidU8=a=>{if(typeof a==='string'){const b=parseInt(a,0xa);return!isNaN(b)&&Number['isInteger'](b)&&b>=0x0&&b<=0xff;}if(typeof a==='bigint')return a>=0x0n&&a<=0xffn;return Number['isInteger'](a)&&a>=0x0&&a<=0xff;};export const isValidU16=a=>{if(typeof a==='string'){const b=parseInt(a,0xa);return!isNaN(b)&&Number['isInteger'](b)&&b>=0x0&&b<=0xffff;}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffn;return Number['isInteger'](a)&&a>=0x0&&a<=0xffff;};export const isValidU64=a=>{if(typeof a==='string'){if(a['length']>0xf)try{const b=BigInt(a);return b>=0x0n&&b<=0xffffffffffffffffn;}catch{return![];}else{const c=parseInt(a,0xa);return!isNaN(c)&&Number['isInteger'](c)&&c>=0x0&&c<=Number['MAX_SAFE_INTEGER'];}}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffffffffffffffn;return Number['isInteger'](a)&&a>=0x0&&a<=Number['MAX_SAFE_INTEGER'];};export const isValidU128=a=>{if(typeof a==='string')try{const b=BigInt(a);return b>=0x0n&&b<=0xffffffffffffffffffffffffffffffffn;}catch{return![];}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffffffffffffffffffffffffffffffn;return Number['isInteger'](a)&&a>=0x0&&a<=Number['MAX_SAFE_INTEGER'];};export const isValidU256=a=>{if(typeof a==='string')try{const b=BigInt(a);return b>=0x0n&&b<=0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn;}catch{return![];}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn;return Number['isInteger'](a)&&a>=0x0&&a<=Number['MAX_SAFE_INTEGER'];};export const isValidU32=a=>{if(typeof a==='string'){const b=parseInt(a,0xa);return!isNaN(b)&&Number['isInteger'](b)&&b>=0x0&&b<=0xffffffff;}if(typeof a==='bigint')return a>=0x0n&&a<=0xffffffffn;return Number['isInteger'](a)&&a>=0x0&&a<=0xffffffff;};export const IsBcsStringLength=(a,b)=>{return bcs['string']()['serialize'](a)['toBytes']()['length']<=b;};export const MAX_DESCRIPTION_LENGTH=0xfa0;export const MAX_NAME_LENGTH=0x40;export const MAX_LONG_NAME_LENGTH=0x100;export const MAX_GUARD_TABLE_ITEM_LENGTH=0x100;export const MAX_INPUT_SIZE=0x400;export const MAX_TABLE_SIZE=0x9c40;export const MAX_DEPENDED_COUNT=0x4;export const MAX_MULTI_OPERANDS=0x8;export const isValidDescription=a=>{return IsBcsStringLength(a,MAX_DESCRIPTION_LENGTH);};export const isValidName=a=>{return IsBcsStringLength(a,MAX_NAME_LENGTH)&&!a['toLowerCase']()['startsWith']('0x');};export const isValidLongName=a=>{return IsBcsStringLength(a,MAX_LONG_NAME_LENGTH);};export const isValidHttpUrl=a=>{try{const b=new URL(a);return b['protocol']==='http:'||b['protocol']==='https:'||b['protocol']==='ipfs:';}catch(c){return![];}};export const isValueTypeNumber=a=>{return a===ValueType['U8']||a===ValueType['U16']||a===ValueType['U32']||a===ValueType['U64']||a===ValueType['U128']||a===ValueType['U256'];};export const toTxObject=(a,b)=>{if(typeof b==='string')return a['object'](b);return b;};export const toTxString=(a,b)=>{if(b===undefined||b===null)return a['pure']['string']('');if(typeof b==='string')return a['pure']['string'](b);return b;};export const toTxU8=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU8(b)&&W_ERROR(WErrors['IsValidU8'],'Invalid\x20U8\x20value:\x20'+b),a['pure']['u8'](Number(b));return b;};export const toTxU16=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU16(b)&&W_ERROR(WErrors['IsValidU16'],'Invalid\x20U16\x20value:\x20'+b),a['pure']['u16'](Number(b));return b;};export const toTxU32=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU32(b)&&W_ERROR(WErrors['IsValidU32'],'Invalid\x20U32\x20value:\x20'+b),a['pure']['u32'](Number(b));return b;};export const toTxU128=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU128(b)&&W_ERROR(WErrors['IsValidU128'],'Invalid\x20U128\x20value:\x20'+b),a['pure']['u128'](b);return b;};export const toTxU256=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU256(b)&&W_ERROR(WErrors['IsValidU256'],'Invalid\x20U256\x20value:\x20'+b),a['pure']['u256'](b);return b;};export const toTxU64=(a,b)=>{if(typeof b==='string'||typeof b==='number'||typeof b==='bigint')return!isValidU64(b)&&W_ERROR(WErrors['IsValidU64'],'Invalid\x20U64\x20value:\x20'+b),a['pure']['u64'](b);return b;};export const toTxAddress=(a,b)=>{if(typeof b==='string')return a['pure']['address'](b);return b;};export const toTxAddressVec=(a,b,c)=>{if(Array['isArray'](b))return b['length']>c&&W_ERROR(WErrors['AddressCountExceeded'],'Invalid\x20AddressVec\x20length:\x20'+b['length']),a['pure']['vector']('address',b);return b;};export const toTxU16Vec=(a,b,c)=>{if(Array['isArray'](b))return b['length']>c&&W_ERROR(WErrors['NumberCountExceeded'],'Invalid\x20U16Vec\x20length:\x20'+b['length']),a['pure']['vector']('u16',b['map'](d=>{return!isValidU16(d)&&W_ERROR(WErrors['IsValidU16'],'Invalid\x20U16\x20value:\x20'+d),Number(d);}));return b;};export const object_name_from_type=a=>{if(!a)return undefined;let b=a['indexOf']('::');if(b>0x0&&a['slice'](0x0,b)==='0x2'){b=a['indexOf']('<');b>0x0&&(a=a['slice'](0x0,b));const c=a['lastIndexOf']('::');if(c>0x0)return a['slice'](c+0x2);}return undefined;};export const object_module_and_name_from_type=a=>{if(!a)return undefined;let b=a['indexOf']('::');if(b>0x0&&a['slice'](0x0,b)==='0x2'){b=a['indexOf']('<');b>0x0&&(a=a['slice'](0x0,b));const c=a['lastIndexOf']('::');if(c>0x0){const d=a['slice'](b+0x2,c),e=a['slice'](c+0x2);return{'module':d,'name':e};}}return undefined;};function isTypeNamedObjectWithPermission(a){return a!=null&&typeof a==='object'&&'type_parameter'in a&&typeof a['type_parameter']==='string';}function isNamedObjectWithPermission(a){return a!=null&&typeof a==='object'&&'permission'in a;}function isNamedObject(a){return a!=null&&typeof a==='object';}function isNamedObjectWithDescription(a){return a!=null&&typeof a==='object'&&'description'in a;}function isTypeNamedObjectWithDescription(a){return a!=null&&typeof a==='object'&&'type_parameter'in a&&typeof a['type_parameter']==='string';}export const GetObjectExisted=async a=>{if(typeof a==='string')return await LocalMark['Instance']()['get_address'](a);return undefined;};export const GetObjectDescription=a=>{return isNamedObjectWithDescription(a)?a['description']:undefined;};export const GetObject=a=>{if(isTypeNamedObjectWithPermission(a))return a;else{if(isTypeNamedObjectWithDescription(a))return a;else{if(isNamedObjectWithPermission(a))return a;else{if(isNamedObject(a))return a;}}}return undefined;};export const MAX_PERMISSION_GUARD_COUNT=0x4;export const CoinWrapPrefix=PackageAddress+'::payment::CoinWrapper';export const IsValidBalance=a=>{return isValidU64(a);};export const IsValidEndpoint=a=>{return a&&IsBcsStringLength(a,0x400);};export const IsValidArgType=a=>{if(a){const b=a['split']('::');if(b['length']>=0x3)return!![];}return![];};export var RecipientType;(function(a){a[a['GuardIdentifier']=0x0]='GuardIdentifier',a[a['Entity']=0x1]='Entity',a[a['Signer']=0x2]='Signer';}(RecipientType||(RecipientType={})));export function serviceFn(a){return PackageAddress+'::service::'+a;}export function demandFn(a){return PackageAddress+'::demand::'+a;}export function machineFn(a){return PackageAddress+'::machine::'+a;}export function contactFn(a){return PackageAddress+'::contact::'+a;}export function treasuryFn(a){return PackageAddress+'::treasury::'+a;}export function arbitrationFn(a){return PackageAddress+'::arbitration::'+a;}export function repositoryFn(a){return PackageAddress+'::repository::'+a;}export function rewardFn(a){return PackageAddress+'::reward::'+a;}export var ObjectType;(function(a){a['Permission']='Permission',a['Repository']='Repository',a['Arb']='Arb',a['Arbitration']='Arbitration',a['Service']='Service',a['Machine']='Machine',a['Order']='Order',a['Progress']='Progress',a['Payment']='Payment',a['Treasury']='Treasury',a['Guard']='Guard',a['Demand']='Demand',a['Passport']='Passport',a['Allocation']='Allocation',a['Resource']='Resource',a['Reward']='Reward',a['Discount']='Discount',a['EntityRegistrar']='EntityRegistrar',a['EntityLinker']='EntityLinker',a['Proof']='Proof',a['Contact']='Contact',a['WReceivedObject']='WReceivedObject',a['TableItem_ProgressHistory']='TableItem_ProgressHistory',a['TableItem_PermissionPerm']='TableItem_PermissionPerm',a['TableItem_DemandPresenter']='TableItem_DemandPresenter',a['TableItem_MachineNode']='TableItem_MachineNode',a['TableItem_TreasuryHistory']='TableItem_TreasuryHistory',a['TableItem_RepositoryData']='TableItem_RepositoryData',a['TableItem_RewardRecord']='TableItem_RewardRecord',a['TableItem_EntityLinker']='TableItem_EntityLinker',a['TableItem_AddressMark']='TableItem_AddressMark',a['TableItem_EntityRegistrar']='TableItem_EntityRegistrar';}(ObjectType||(ObjectType={})));export const ENTITY_LINKER_ADDRESS='0x0000000000000000000000000000000000000000000000000000000000000aaa';export const ENTITY_REGISTRAR_ADDRESS='0x0000000000000000000000000000000000000000000000000000000000000aab';
|
|
@@ -2,7 +2,7 @@ import type { CoinObject } from "../common.js";
|
|
|
2
2
|
import type { TransactionObjectArgument } from "../../transactions/index.js";
|
|
3
3
|
import { Transaction } from "../../transactions/index.js";
|
|
4
4
|
import type { ENTRYPOINT } from "../../client/network.js";
|
|
5
|
-
import type { CoinBalance, PaginatedCoins,
|
|
5
|
+
import type { CoinBalance, PaginatedCoins, WowTransactionBlockResponse } from "../../client/index.js";
|
|
6
6
|
export interface IAccountStorage {
|
|
7
7
|
get(): Promise<string | undefined>;
|
|
8
8
|
put(data: string): Promise<void>;
|
|
@@ -65,13 +65,13 @@ export declare class Account {
|
|
|
65
65
|
}>;
|
|
66
66
|
resume(address: string, name: string | null | undefined): Promise<boolean>;
|
|
67
67
|
faucet(address_or_name: string | null | undefined, network: "testnet" | "devnet" | "localnet"): Promise<FaucetCoinInfo[]>;
|
|
68
|
-
sign_and_commit(tx: Transaction, address_or_name?: string, network?: ENTRYPOINT): Promise<
|
|
68
|
+
sign_and_commit(tx: Transaction, address_or_name?: string, network?: ENTRYPOINT): Promise<WowTransactionBlockResponse | undefined>;
|
|
69
69
|
balance: (token_type?: string, address_or_name?: string, network?: ENTRYPOINT) => Promise<CoinBalance | undefined>;
|
|
70
70
|
coin: (token_type?: string, cursor?: string | null | undefined, limit?: number | null | undefined, address_or_name?: string, network?: ENTRYPOINT) => Promise<PaginatedCoins | undefined>;
|
|
71
71
|
get_coin_object: (txb: Transaction, balance_required: string | bigint | number, token_type?: string, address_or_name?: string, network?: ENTRYPOINT) => Promise<TransactionObjectArgument | undefined>;
|
|
72
72
|
get_many_coin_object: (txb: Transaction, balance_required: (string | bigint | number)[], token_type?: string, address_or_name?: string, network?: ENTRYPOINT) => Promise<TransactionObjectArgument>;
|
|
73
73
|
refund_coin(txb: Transaction, coin: CoinObject, to_address_or_name?: string): Promise<void>;
|
|
74
|
-
transfer(amount: number | string | bigint, token_type?: string, to_address_or_name?: string, from_address_or_name?: string, network?: ENTRYPOINT): Promise<
|
|
74
|
+
transfer(amount: number | string | bigint, token_type?: string, to_address_or_name?: string, from_address_or_name?: string, network?: ENTRYPOINT): Promise<WowTransactionBlockResponse | undefined>;
|
|
75
75
|
coinObject_with_balance: (balance_required: string | bigint | number, token_type?: string, address_or_name?: string, network?: ENTRYPOINT) => Promise<string | undefined>;
|
|
76
76
|
sign(address_or_name: string | null | undefined, data: string | Uint8Array): Promise<string>;
|
|
77
77
|
signData(address_or_name: string | null | undefined, data: string | Uint8Array): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Falcon512Keypair}from'../../keypairs/falcon512/index.js';import{W_ERROR,WErrors}from'../exception.js';import{GasTokenType,isGasTokenType,isValidName,MAX_NAME_LENGTH}from'../common.js';import{getFaucetHost,requestSuiFromFaucetV2}from'../../faucet/index.js';import{Transaction}from'../../transactions/index.js';import{getFullnodeUrl}from'../../client/network.js';import{SuiClient}from'../../client/index.js';import{Config}from'./config.js';import{SQLiteAccountStorage}from'./storage.js';import{isValidWowAddress}from'../../utils/sui-types.js';import{decodeWowPrivateKey}from'../../cryptography/keypair.js';import{hkdf}from'@noble/hashes/hkdf';import{sha256}from'@noble/hashes/sha256';import{x25519}from'@noble/curves/ed25519';export const DEFAULT_ACCOUNT_NAME='';export const MAX_MESSENGER_ACCOUNTS=0x64;export class Account{static ['_instance'];static ['storage'];['setStorage'](a){Account['storage']=a;}async['getStorage'](){return!Account['storage']&&(Account['storage']=new SQLiteAccountStorage()),Account['storage'];}static['Instance'](){return!Account['_instance']&&(Account['_instance']=new Account()),Account['_instance'];}['accountData'](a){if(!a||!a['secret'])return undefined;const b=Falcon512Keypair['fromSecretKey'](a['secret']);return a['pubkey']=b['getPublicKey']()['toWPublicKey'](),a['secret']=undefined,a;}async['gen'](a,b,c){a=this['name_resolve'](a);a&&!isValidName(a)&&W_ERROR(WErrors['IsValidName'],'Name\x20'+a+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);c&&!isValidName(c)&&W_ERROR(WErrors['IsValidName'],'Messenger\x20name\x20'+c+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);const d=Falcon512Keypair['generate']()['getSecretKey'](),e=Falcon512Keypair['fromSecretKey'](d)['getPublicKey']()['toWAddress'](),f=Date['now'](),g={'name':a,'address':e,'secret':d,'m':undefined,'createdAt':f,'updatedAt':f},h=await this['getStorage'](),i=await h['get']();if(i){const j=JSON['parse'](i),k=j['findIndex'](l=>l['name']===a);k!==-0x1?b?(j[k]['name']=undefined,j['push'](g),await h['put'](JSON['stringify'](j))):W_ERROR(WErrors['AccountNameExist'],'Name\x20'+(a||'')+'\x20already\x20exist'):await h['put'](JSON['stringify']([...j,g]));}else await h['put'](JSON['stringify']([g]));if(c){const l=await this['getStorage'](),n=await l['get']();if(n){const q=JSON['parse'](n),r=q['filter'](s=>s['m']!=null)['length'];r>=MAX_MESSENGER_ACCOUNTS&&W_ERROR(WErrors['InvalidParam'],'Maximum\x20'+MAX_MESSENGER_ACCOUNTS+'\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+r);}g['m']=c;const o=await this['getStorage'](),p=await o['get']();if(p){const s=JSON['parse'](p),t=s['find'](u=>u['address']===e);t&&(t['m']=c,t['updatedAt']=Date['now'](),await o['put'](JSON['stringify'](s)));}}return this['accountData'](g);}async['default'](){return this['accountData'](await this['get_imp'](DEFAULT_ACCOUNT_NAME));}async['get'](a,b){if(!b)return this['accountData'](await this['get_imp'](a));return this['gen'](a);}async['get_address'](a){if(a&&isValidWowAddress(a))return a['toLowerCase']();return(await this['get_imp'](a))?.['address'];}async['get_many_address'](a){const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c);return a['map'](e=>{if(e&&isValidWowAddress(e))return e['toLowerCase']();const f=this['name_resolve'](e);return d['find'](g=>g['address']['toLowerCase']()===f['toLowerCase']()||g['name']===f)?.['address'];});}return a['map'](e=>e&&isValidWowAddress(e)?e['toLowerCase']():undefined);}async['get_imp'](a){a=this['name_resolve'](a);const b=await this['getStorage'](),c=await b['get']();if(c)return JSON['parse'](c)['find'](e=>e['name']===a||e['address']['toLowerCase']()===a['toLowerCase']());return undefined;}['name_resolve'](a){return a||DEFAULT_ACCOUNT_NAME;}async['get_many_imp'](a){const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c);return a['map'](e=>{const f=this['name_resolve'](e);return d['find'](g=>g['address']['toLowerCase']()===f['toLowerCase']()||g['name']===f);});}return a['map'](e=>undefined);}async['swap_name'](a,b){a=this['name_resolve'](a),b=this['name_resolve'](b);if(a===b)return!![];a&&!isValidName(a)&&W_ERROR(WErrors['IsValidName'],'Name\x20'+(a||'')+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);b&&!isValidName(b)&&W_ERROR(WErrors['IsValidName'],'Name\x20'+(b||'')+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);const c=await this['getStorage'](),d=await c['get']();if(!d)return![];const e=JSON['parse'](d),f=e['find'](i=>i['name']===a),g=e['find'](i=>i['name']===b);if(!f||!g)return![];const h=Date['now']();return f['name']=b,f['updatedAt']=h,g['name']=a,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];}async['rename'](a,b){b&&!isValidName(b)&&W_ERROR(WErrors['IsValidName'],'Invalid\x20new\x20name:\x20\x22'+(b||'')+'\x22.\x20Must\x20be\x20a\x20valid\x20name\x20(not\x20an\x20address)');const c=this['name_resolve'](a);if(c===b)return!![];const d=await this['getStorage'](),e=await d['get']();if(e){const g=JSON['parse'](e);g['find'](j=>j['name']===b)&&W_ERROR(WErrors['IsValidName'],'New\x20name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const h=g['find'](j=>j['name']===c||j['address']['toLowerCase']()===c['toLowerCase']());!h&&W_ERROR(WErrors['AccountNotFound'],'Source\x20account\x20\x22'+(a||'')+'\x22\x20not\x20found');const i=Date['now']();return h['name']=b,h['updatedAt']=i,await d['put'](JSON['stringify'](g)),!![];}return![];}async['list'](a){const b=await this['getStorage'](),c=await b['get']();if(c){let d=JSON['parse'](c);return a?.['suspended']!==undefined?d=d['filter'](e=>a['suspended']?e['suspended']===!![]:!e['suspended']):d=d['filter'](e=>!e['suspended']),a?.['hasMessenger']!==undefined&&(d=d['filter'](e=>a['hasMessenger']?e['m']!=null:e['m']==null)),a?.['m']!=null&&(d=d['filter'](e=>e['m']!=null)),a?.['createdAt']&&(a['createdAt']['gte']!==undefined&&(d=d['filter'](e=>e['createdAt']&&e['createdAt']>=a['createdAt']['gte'])),a['createdAt']['lte']!==undefined&&(d=d['filter'](e=>e['createdAt']&&e['createdAt']<=a['createdAt']['lte']))),a?.['updatedAt']&&(a['updatedAt']['gte']!==undefined&&(d=d['filter'](e=>e['updatedAt']&&e['updatedAt']>=a['updatedAt']['gte'])),a['updatedAt']['lte']!==undefined&&(d=d['filter'](e=>e['updatedAt']&&e['updatedAt']<=a['updatedAt']['lte']))),(a?.['name']!=null||a?.['address']||a?.['m']!=null)&&(d=d['map'](e=>{let f=0x0;if(a?.['name']!=null){const g=e['name']?.['toLowerCase']()||'',h=a['name']['toLowerCase']();if(g===h)f+=0x64;else{if(g['startsWith'](h))f+=0x32;else g['includes'](h)&&(f+=0x19);}}if(a?.['address']){const i=e['address']['toLowerCase'](),j=a['address']['toLowerCase']();if(i===j)f+=0x64;else{if(i['startsWith'](j))f+=0x32;else i['includes'](j)&&(f+=0x19);}}if(a?.['m']!=null&&e['m']!=null){const k=e['m']['toLowerCase'](),l=a['m']['toLowerCase']();if(k===l)f+=0x64;else{if(k['startsWith'](l))f+=0x32;else k['includes'](l)&&(f+=0x19);}}return(a?.['name']||a?.['address']||a?.['m']!=null)&&f===0x0&&(f=-0x1),{'account':e,'score':f};})['filter'](({score:e})=>e>=0x0)['sort']((e,f)=>f['score']-e['score'])['map'](({account:e})=>e)),d['map'](e=>this['accountData'](e))['filter'](e=>e!==undefined);}return[];}async['suspend'](a){a=this['name_resolve'](a);const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c),e=d['find'](g=>g['address']['toLowerCase']()===a['toLowerCase']()||g['name']===a);if(e){const g=Date['now']();return e['suspended']=!![],e['name']=undefined,e['m']=undefined,e['updatedAt']=g,await b['put'](JSON['stringify'](d)),!![];}}return![];}async['suspend_many'](a){const b=await this['getStorage'](),c=await b['get'](),d={'success':[],'failed':[]};if(c){const e=JSON['parse'](c),g=Date['now']();let h=![];for(const i of a){const j=this['name_resolve'](i),k=e['find'](l=>l['address']['toLowerCase']()===j['toLowerCase']()||l['name']===j);k?(k['suspended']=!![],k['name']=undefined,k['m']=undefined,k['updatedAt']=g,d['success']['push'](i),h=!![]):d['failed']['push'](i);}h&&await b['put'](JSON['stringify'](e));}else d['failed']=[...a];return d;}async['resume'](a,b){b=this['name_resolve'](b),a=a['toLowerCase']();const c=await this['getStorage'](),d=await c['get']();if(d){const e=JSON['parse'](d);e['find'](h=>h['name']===b)&&W_ERROR(WErrors['IsValidName'],'Name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const g=e['find'](h=>h['address']['toLowerCase']()===a['toLowerCase']());if(g){const h=Date['now']();return g['suspended']=![],g['name']=b,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];}}return![];}async['faucet'](b,c){const d=await this['get_imp'](b);if(d)try{const e=await requestSuiFromFaucetV2({'host':getFaucetHost(c),'recipient':d['address']});return e['coins_sent']||[];}catch(f){}return[];}async['sign_and_commit'](b,c,d){const e=await this['get_imp'](c);if(e){const f=Falcon512Keypair['fromSecretKey'](e['secret']);if(f){const g=new SuiClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](d))});return g['signAndExecuteTransaction']({'transaction':b,'signer':f,'options':{'showObjectChanges':!![],'showEffects':!![]}});}}return undefined;}['balance']=async(b,c,d)=>{const e=await this['get'](c);b=b??GasTokenType;if(e){const f=new SuiClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](d))});return f['getBalance']({'owner':e['address'],'coinType':b});}return undefined;};['coin']=async(b,c,d,e,f)=>{const g=await this['get'](e);b=b??GasTokenType;if(g){const h=new SuiClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](f))});return h['getCoins']({'owner':g['address'],'coinType':b,'cursor':c,'limit':d});}return undefined;};['get_coin_object']=async(c,d,e,f,g)=>{const h=await this['get'](f);if(h){const j=BigInt(d),k=new SuiClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](g))});if(j>=BigInt(0x0)){if(!e||isGasTokenType(e))return c['splitCoins'](c['gas'],[j]);else{const l=await k['getCoins']({'owner':h['address'],'coinType':e}),m=[],n=new Set();let o=BigInt(0x0);for(let p=0x0;p<l['data']['length'];++p){const q=l['data'][p]['coinObjectId'];if(n['has'](q))continue;n['add'](q),o+=BigInt(l['data'][p]['balance']),m['push'](q);if(o>=j)break;}if(m['length']===0x0)return undefined;if(m['length']===0x1)return c['splitCoins'](m[0x0],[j]);else{const s=m['pop']();return c['mergeCoins'](s,m),c['splitCoins'](s,[j]);}}}}return undefined;};['get_many_coin_object']=async(a,b,c,d,e)=>{const f=[];for(const g of b){const h=await this['get_coin_object'](a,g,d,c,e);!h?W_ERROR(WErrors['InvalidParam'],'Invalid\x20coin\x20object:\x20'+g):f['push'](h);}return a['makeMoveVec']({'elements':f});};async['refund_coin'](a,b,c){const d=await this['get_address'](c);if(!d)W_ERROR(WErrors['InvalidParam'],'Invalid\x20to\x20address\x20or\x20name\x20'+c);a['transferObjects']([b],a['pure']['address'](d));}async['transfer'](a,b,c,d,e){const [f,g]=await this['get_many_imp']([d,c]);if(!f)W_ERROR(WErrors['InvalidParam'],'Invalid\x20from\x20address\x20or\x20name\x20'+d);const h=g?.['address']??c;if(!h)W_ERROR(WErrors['InvalidParam'],'Invalid\x20to\x20address\x20or\x20name\x20'+c);const i=Falcon512Keypair['fromSecretKey'](f['secret']);if(i){const j=new Transaction(),k=await this['get_coin_object'](j,a,b,d,e);if(k){j['transferObjects']([k],h);const l=new SuiClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](e))}),m=l['signAndExecuteTransaction']({'transaction':j,'signer':i,'options':{'showObjectChanges':!![]}});return m;}}return undefined;}['coinObject_with_balance']=async(b,c,d,e)=>{const f=await this['get_imp'](d);if(!f)return undefined;const g=Falcon512Keypair['fromSecretKey'](f['secret']);if(!g)return undefined;const h=new Transaction(),i=await this['get_coin_object'](h,b,c,d,e);if(i){h['transferObjects']([i],f['address']);const j=new SuiClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](e))}),k=await j['signAndExecuteTransaction']({'transaction':h,'signer':g,'options':{'showObjectChanges':!![]}}),l=c??GasTokenType;return k?.['objectChanges']?.['find'](m=>m?.['type']==='created'&&(m?.['objectType'])['includes'](l))?.['objectId'];}return undefined;};async['sign'](a,b){const c=await this['get_imp'](a);!c?.['secret']&&W_ERROR(WErrors['InvalidParam'],'Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=Falcon512Keypair['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return'0x'+Buffer['from'](f)['toString']('hex');}async['signData'](a,b){const c=await this['get_imp'](a);!c?.['secret']&&W_ERROR(WErrors['InvalidParam'],'Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=Falcon512Keypair['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return{'signature':'0x'+Buffer['from'](f)['toString']('hex'),'publicKey':d['getPublicKey']()['toWPublicKey'](),'address':c['address']};}async['deriveX25519Identity'](a){const b=await this['get_imp'](a);!b?.['secret']&&W_ERROR(WErrors['InvalidParam'],'Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const c=decodeWowPrivateKey(b['secret']),d=c['secretKey'],e=Falcon512Keypair['fromSecretKey'](b['secret']),f=e['getPublicKey']()['toRawBytes'](),g=new TextEncoder()['encode']('WowokX25519IdentityDerivation'),h=sha256(d),i=hkdf(sha256,h,new Uint8Array(0x0),g,0x20);i[0x0]&=0xf8,i[0x1f]&=0x7f,i[0x1f]|=0x40;const j=x25519['getPublicKey'](i),k=j[0x0]<<0x8|j[0x1];return{'x25519KeyPair':{'publicKey':j,'privateKey':i},'falcon512KeyPair':{'publicKey':f,'privateKey':d},'registrationId':k===0x0?0x1:k};}async['set_messenger'](a,b){const c=this['name_resolve'](a),d=await this['getStorage'](),e=await d['get']();if(!e)return![];const g=JSON['parse'](e),h=g['find'](k=>k['address']['toLowerCase']()===c['toLowerCase']()||k['name']===c);if(!h)return![];if(!b){const k=Date['now']();return h['m']=undefined,h['updatedAt']=k,await d['put'](JSON['stringify'](g)),!![];}!isValidName(b)&&W_ERROR(WErrors['IsValidName'],'Messenger\x20name\x20'+b+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);const i=g['filter'](l=>l['m']!=null&&!l['suspended']&&l['address']!==h['address'])['length'];i>=MAX_MESSENGER_ACCOUNTS&&W_ERROR(WErrors['InvalidParam'],'Maximum\x20'+MAX_MESSENGER_ACCOUNTS+'\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+i);const j=Date['now']();return h['m']=b,h['updatedAt']=j,await d['put'](JSON['stringify'](g)),!![];}async['list_messenger_accounts'](){return this['list']({'hasMessenger':!![]});}async['count_messenger_accounts'](){const a=await this['getStorage'](),b=await a['get']();if(!b)return 0x0;const c=JSON['parse'](b);return c['filter'](e=>e['m']!=null&&!e['suspended'])['length'];}}
|
|
1
|
+
import{Falcon512Keypair}from'../../keypairs/falcon512/index.js';import{W_ERROR,WErrors}from'../exception.js';import{GasTokenType,isGasTokenType,isValidName,MAX_NAME_LENGTH}from'../common.js';import{getFaucetHost,requestWowFromFaucetV2}from'../../faucet/index.js';import{Transaction}from'../../transactions/index.js';import{getFullnodeUrl}from'../../client/network.js';import{WowClient}from'../../client/index.js';import{Config}from'./config.js';import{SQLiteAccountStorage}from'./storage.js';import{isValidWowAddress}from'../../utils/wow-types.js';import{decodeWowPrivateKey}from'../../cryptography/keypair.js';import{hkdf}from'@noble/hashes/hkdf';import{sha256}from'@noble/hashes/sha256';import{x25519}from'@noble/curves/ed25519';export const DEFAULT_ACCOUNT_NAME='';export const MAX_MESSENGER_ACCOUNTS=0x64;export class Account{static ['_instance'];static ['storage'];['setStorage'](a){Account['storage']=a;}async['getStorage'](){return!Account['storage']&&(Account['storage']=new SQLiteAccountStorage()),Account['storage'];}static['Instance'](){return!Account['_instance']&&(Account['_instance']=new Account()),Account['_instance'];}['accountData'](a){if(!a||!a['secret'])return undefined;const b=Falcon512Keypair['fromSecretKey'](a['secret']);return a['pubkey']=b['getPublicKey']()['toWPublicKey'](),a['secret']=undefined,a;}async['gen'](a,b,c){a=this['name_resolve'](a);a&&!isValidName(a)&&W_ERROR(WErrors['IsValidName'],'Name\x20'+a+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);c&&!isValidName(c)&&W_ERROR(WErrors['IsValidName'],'Messenger\x20name\x20'+c+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);const d=Falcon512Keypair['generate']()['getSecretKey'](),e=Falcon512Keypair['fromSecretKey'](d)['getPublicKey']()['toWAddress'](),f=Date['now'](),g={'name':a,'address':e,'secret':d,'m':undefined,'createdAt':f,'updatedAt':f},h=await this['getStorage'](),i=await h['get']();if(i){const j=JSON['parse'](i),k=j['findIndex'](l=>l['name']===a);k!==-0x1?b?(j[k]['name']=undefined,j['push'](g),await h['put'](JSON['stringify'](j))):W_ERROR(WErrors['AccountNameExist'],'Name\x20'+(a||'')+'\x20already\x20exist'):await h['put'](JSON['stringify']([...j,g]));}else await h['put'](JSON['stringify']([g]));if(c){const l=await this['getStorage'](),n=await l['get']();if(n){const q=JSON['parse'](n),r=q['filter'](s=>s['m']!=null)['length'];r>=MAX_MESSENGER_ACCOUNTS&&W_ERROR(WErrors['InvalidParam'],'Maximum\x20'+MAX_MESSENGER_ACCOUNTS+'\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+r);}g['m']=c;const o=await this['getStorage'](),p=await o['get']();if(p){const s=JSON['parse'](p),t=s['find'](u=>u['address']===e);t&&(t['m']=c,t['updatedAt']=Date['now'](),await o['put'](JSON['stringify'](s)));}}return this['accountData'](g);}async['default'](){return this['accountData'](await this['get_imp'](DEFAULT_ACCOUNT_NAME));}async['get'](a,b){if(!b)return this['accountData'](await this['get_imp'](a));return this['gen'](a);}async['get_address'](a){if(a&&isValidWowAddress(a))return a['toLowerCase']();return(await this['get_imp'](a))?.['address'];}async['get_many_address'](a){const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c);return a['map'](e=>{if(e&&isValidWowAddress(e))return e['toLowerCase']();const f=this['name_resolve'](e);return d['find'](g=>g['address']['toLowerCase']()===f['toLowerCase']()||g['name']===f)?.['address'];});}return a['map'](e=>e&&isValidWowAddress(e)?e['toLowerCase']():undefined);}async['get_imp'](a){a=this['name_resolve'](a);const b=await this['getStorage'](),c=await b['get']();if(c)return JSON['parse'](c)['find'](e=>e['name']===a||e['address']['toLowerCase']()===a['toLowerCase']());return undefined;}['name_resolve'](a){return a||DEFAULT_ACCOUNT_NAME;}async['get_many_imp'](a){const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c);return a['map'](e=>{const f=this['name_resolve'](e);return d['find'](g=>g['address']['toLowerCase']()===f['toLowerCase']()||g['name']===f);});}return a['map'](e=>undefined);}async['swap_name'](a,b){a=this['name_resolve'](a),b=this['name_resolve'](b);if(a===b)return!![];a&&!isValidName(a)&&W_ERROR(WErrors['IsValidName'],'Name\x20'+(a||'')+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);b&&!isValidName(b)&&W_ERROR(WErrors['IsValidName'],'Name\x20'+(b||'')+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);const c=await this['getStorage'](),d=await c['get']();if(!d)return![];const e=JSON['parse'](d),f=e['find'](i=>i['name']===a),g=e['find'](i=>i['name']===b);if(!f||!g)return![];const h=Date['now']();return f['name']=b,f['updatedAt']=h,g['name']=a,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];}async['rename'](a,b){b&&!isValidName(b)&&W_ERROR(WErrors['IsValidName'],'Invalid\x20new\x20name:\x20\x22'+(b||'')+'\x22.\x20Must\x20be\x20a\x20valid\x20name\x20(not\x20an\x20address)');const c=this['name_resolve'](a);if(c===b)return!![];const d=await this['getStorage'](),e=await d['get']();if(e){const g=JSON['parse'](e);g['find'](j=>j['name']===b)&&W_ERROR(WErrors['IsValidName'],'New\x20name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const h=g['find'](j=>j['name']===c||j['address']['toLowerCase']()===c['toLowerCase']());!h&&W_ERROR(WErrors['AccountNotFound'],'Source\x20account\x20\x22'+(a||'')+'\x22\x20not\x20found');const i=Date['now']();return h['name']=b,h['updatedAt']=i,await d['put'](JSON['stringify'](g)),!![];}return![];}async['list'](a){const b=await this['getStorage'](),c=await b['get']();if(c){let d=JSON['parse'](c);return a?.['suspended']!==undefined?d=d['filter'](e=>a['suspended']?e['suspended']===!![]:!e['suspended']):d=d['filter'](e=>!e['suspended']),a?.['hasMessenger']!==undefined&&(d=d['filter'](e=>a['hasMessenger']?e['m']!=null:e['m']==null)),a?.['m']!=null&&(d=d['filter'](e=>e['m']!=null)),a?.['createdAt']&&(a['createdAt']['gte']!==undefined&&(d=d['filter'](e=>e['createdAt']&&e['createdAt']>=a['createdAt']['gte'])),a['createdAt']['lte']!==undefined&&(d=d['filter'](e=>e['createdAt']&&e['createdAt']<=a['createdAt']['lte']))),a?.['updatedAt']&&(a['updatedAt']['gte']!==undefined&&(d=d['filter'](e=>e['updatedAt']&&e['updatedAt']>=a['updatedAt']['gte'])),a['updatedAt']['lte']!==undefined&&(d=d['filter'](e=>e['updatedAt']&&e['updatedAt']<=a['updatedAt']['lte']))),(a?.['name']!=null||a?.['address']||a?.['m']!=null)&&(d=d['map'](e=>{let f=0x0;if(a?.['name']!=null){const g=e['name']?.['toLowerCase']()||'',h=a['name']['toLowerCase']();if(g===h)f+=0x64;else{if(g['startsWith'](h))f+=0x32;else g['includes'](h)&&(f+=0x19);}}if(a?.['address']){const i=e['address']['toLowerCase'](),j=a['address']['toLowerCase']();if(i===j)f+=0x64;else{if(i['startsWith'](j))f+=0x32;else i['includes'](j)&&(f+=0x19);}}if(a?.['m']!=null&&e['m']!=null){const k=e['m']['toLowerCase'](),l=a['m']['toLowerCase']();if(k===l)f+=0x64;else{if(k['startsWith'](l))f+=0x32;else k['includes'](l)&&(f+=0x19);}}return(a?.['name']||a?.['address']||a?.['m']!=null)&&f===0x0&&(f=-0x1),{'account':e,'score':f};})['filter'](({score:e})=>e>=0x0)['sort']((e,f)=>f['score']-e['score'])['map'](({account:e})=>e)),d['map'](e=>this['accountData'](e))['filter'](e=>e!==undefined);}return[];}async['suspend'](a){a=this['name_resolve'](a);const b=await this['getStorage'](),c=await b['get']();if(c){const d=JSON['parse'](c),e=d['find'](g=>g['address']['toLowerCase']()===a['toLowerCase']()||g['name']===a);if(e){const g=Date['now']();return e['suspended']=!![],e['name']=undefined,e['m']=undefined,e['updatedAt']=g,await b['put'](JSON['stringify'](d)),!![];}}return![];}async['suspend_many'](a){const b=await this['getStorage'](),c=await b['get'](),d={'success':[],'failed':[]};if(c){const e=JSON['parse'](c),g=Date['now']();let h=![];for(const i of a){const j=this['name_resolve'](i),k=e['find'](l=>l['address']['toLowerCase']()===j['toLowerCase']()||l['name']===j);k?(k['suspended']=!![],k['name']=undefined,k['m']=undefined,k['updatedAt']=g,d['success']['push'](i),h=!![]):d['failed']['push'](i);}h&&await b['put'](JSON['stringify'](e));}else d['failed']=[...a];return d;}async['resume'](a,b){b=this['name_resolve'](b),a=a['toLowerCase']();const c=await this['getStorage'](),d=await c['get']();if(d){const e=JSON['parse'](d);e['find'](h=>h['name']===b)&&W_ERROR(WErrors['IsValidName'],'Name\x20\x22'+(b||'')+'\x22\x20already\x20exists');const g=e['find'](h=>h['address']['toLowerCase']()===a['toLowerCase']());if(g){const h=Date['now']();return g['suspended']=![],g['name']=b,g['updatedAt']=h,await c['put'](JSON['stringify'](e)),!![];}}return![];}async['faucet'](b,c){const d=await this['get_imp'](b);if(d)try{const e=await requestWowFromFaucetV2({'host':getFaucetHost(c),'recipient':d['address']});return e['coins_sent']||[];}catch(f){}return[];}async['sign_and_commit'](b,c,d){const e=await this['get_imp'](c);if(e){const f=Falcon512Keypair['fromSecretKey'](e['secret']);if(f){const g=new WowClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](d))});return g['signAndExecuteTransaction']({'transaction':b,'signer':f,'options':{'showObjectChanges':!![],'showEffects':!![]}});}}return undefined;}['balance']=async(b,c,d)=>{const e=await this['get'](c);b=b??GasTokenType;if(e){const f=new WowClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](d))});return f['getBalance']({'owner':e['address'],'coinType':b});}return undefined;};['coin']=async(b,c,d,e,f)=>{const g=await this['get'](e);b=b??GasTokenType;if(g){const h=new WowClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](f))});return h['getCoins']({'owner':g['address'],'coinType':b,'cursor':c,'limit':d});}return undefined;};['get_coin_object']=async(c,d,e,f,g)=>{const h=await this['get'](f);if(h){const j=BigInt(d),k=new WowClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](g))});if(j>=BigInt(0x0)){if(!e||isGasTokenType(e))return c['splitCoins'](c['gas'],[j]);else{const l=await k['getCoins']({'owner':h['address'],'coinType':e}),m=[],n=new Set();let o=BigInt(0x0);for(let p=0x0;p<l['data']['length'];++p){const q=l['data'][p]['coinObjectId'];if(n['has'](q))continue;n['add'](q),o+=BigInt(l['data'][p]['balance']),m['push'](q);if(o>=j)break;}if(m['length']===0x0)return undefined;if(m['length']===0x1)return c['splitCoins'](m[0x0],[j]);else{const s=m['pop']();return c['mergeCoins'](s,m),c['splitCoins'](s,[j]);}}}}return undefined;};['get_many_coin_object']=async(a,b,c,d,e)=>{const f=[];for(const g of b){const h=await this['get_coin_object'](a,g,d,c,e);!h?W_ERROR(WErrors['InvalidParam'],'Invalid\x20coin\x20object:\x20'+g):f['push'](h);}return a['makeMoveVec']({'elements':f});};async['refund_coin'](a,b,c){const d=await this['get_address'](c);if(!d)W_ERROR(WErrors['InvalidParam'],'Invalid\x20to\x20address\x20or\x20name\x20'+c);a['transferObjects']([b],a['pure']['address'](d));}async['transfer'](a,b,c,d,e){const [f,g]=await this['get_many_imp']([d,c]);if(!f)W_ERROR(WErrors['InvalidParam'],'Invalid\x20from\x20address\x20or\x20name\x20'+d);const h=g?.['address']??c;if(!h)W_ERROR(WErrors['InvalidParam'],'Invalid\x20to\x20address\x20or\x20name\x20'+c);const i=Falcon512Keypair['fromSecretKey'](f['secret']);if(i){const j=new Transaction(),k=await this['get_coin_object'](j,a,b,d,e);if(k){j['transferObjects']([k],h);const l=new WowClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](e))}),m=l['signAndExecuteTransaction']({'transaction':j,'signer':i,'options':{'showObjectChanges':!![]}});return m;}}return undefined;}['coinObject_with_balance']=async(b,c,d,e)=>{const f=await this['get_imp'](d);if(!f)return undefined;const g=Falcon512Keypair['fromSecretKey'](f['secret']);if(!g)return undefined;const h=new Transaction(),i=await this['get_coin_object'](h,b,c,d,e);if(i){h['transferObjects']([i],f['address']);const j=new WowClient({'url':getFullnodeUrl(await Config['Instance']()['network_get'](e))}),k=await j['signAndExecuteTransaction']({'transaction':h,'signer':g,'options':{'showObjectChanges':!![]}}),l=c??GasTokenType;return k?.['objectChanges']?.['find'](m=>m?.['type']==='created'&&(m?.['objectType'])['includes'](l))?.['objectId'];}return undefined;};async['sign'](a,b){const c=await this['get_imp'](a);!c?.['secret']&&W_ERROR(WErrors['InvalidParam'],'Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=Falcon512Keypair['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return'0x'+Buffer['from'](f)['toString']('hex');}async['signData'](a,b){const c=await this['get_imp'](a);!c?.['secret']&&W_ERROR(WErrors['InvalidParam'],'Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const d=Falcon512Keypair['fromSecretKey'](c['secret']),e=typeof b==='string'?new TextEncoder()['encode'](b):b,f=await d['sign'](e);return{'signature':'0x'+Buffer['from'](f)['toString']('hex'),'publicKey':d['getPublicKey']()['toWPublicKey'](),'address':c['address']};}async['deriveX25519Identity'](a){const b=await this['get_imp'](a);!b?.['secret']&&W_ERROR(WErrors['InvalidParam'],'Account\x20not\x20found\x20or\x20no\x20secret\x20key:\x20'+a);const c=decodeWowPrivateKey(b['secret']),d=c['secretKey'],e=Falcon512Keypair['fromSecretKey'](b['secret']),f=e['getPublicKey']()['toRawBytes'](),g=new TextEncoder()['encode']('WowokX25519IdentityDerivation'),h=sha256(d),i=hkdf(sha256,h,new Uint8Array(0x0),g,0x20);i[0x0]&=0xf8,i[0x1f]&=0x7f,i[0x1f]|=0x40;const j=x25519['getPublicKey'](i),k=j[0x0]<<0x8|j[0x1];return{'x25519KeyPair':{'publicKey':j,'privateKey':i},'falcon512KeyPair':{'publicKey':f,'privateKey':d},'registrationId':k===0x0?0x1:k};}async['set_messenger'](a,b){const c=this['name_resolve'](a),d=await this['getStorage'](),e=await d['get']();if(!e)return![];const g=JSON['parse'](e),h=g['find'](k=>k['address']['toLowerCase']()===c['toLowerCase']()||k['name']===c);if(!h)return![];if(!b){const k=Date['now']();return h['m']=undefined,h['updatedAt']=k,await d['put'](JSON['stringify'](g)),!![];}!isValidName(b)&&W_ERROR(WErrors['IsValidName'],'Messenger\x20name\x20'+b+'\x20is\x20exceeds\x20max\x20'+MAX_NAME_LENGTH);const i=g['filter'](l=>l['m']!=null&&!l['suspended']&&l['address']!==h['address'])['length'];i>=MAX_MESSENGER_ACCOUNTS&&W_ERROR(WErrors['InvalidParam'],'Maximum\x20'+MAX_MESSENGER_ACCOUNTS+'\x20messenger\x20accounts\x20allowed,\x20current\x20count:\x20'+i);const j=Date['now']();return h['m']=b,h['updatedAt']=j,await d['put'](JSON['stringify'](g)),!![];}async['list_messenger_accounts'](){return this['list']({'hasMessenger':!![]});}async['count_messenger_accounts'](){const a=await this['getStorage'](),b=await a['get']();if(!b)return 0x0;const c=JSON['parse'](b);return c['filter'](e=>e['m']!=null&&!e['suspended'])['length'];}}
|