wative-core 1.2.1 → 2.2.0

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.
Files changed (62) hide show
  1. package/CHANGELOG.md +136 -0
  2. package/LICENSE +55 -0
  3. package/README.md +496 -0
  4. package/dist/artifacts/evm/index.cjs +1 -0
  5. package/dist/artifacts/evm/index.d.cts +6 -0
  6. package/dist/artifacts/evm/index.d.ts +6 -0
  7. package/dist/artifacts/evm/index.js +1 -0
  8. package/dist/artifacts/svm/index.cjs +1 -0
  9. package/dist/artifacts/svm/index.d.cts +9 -0
  10. package/dist/artifacts/svm/index.d.ts +9 -0
  11. package/dist/artifacts/svm/index.js +1 -0
  12. package/dist/container-provider-C59yqd5Z.d.ts +48 -0
  13. package/dist/container-provider-i614LDE1.d.cts +48 -0
  14. package/dist/evm-BLml33LX.d.cts +34 -0
  15. package/dist/evm-DTzqGlL6.d.ts +34 -0
  16. package/dist/file-sink-B73MuigK.d.cts +44 -0
  17. package/dist/file-sink-LS4hyXXi.d.ts +44 -0
  18. package/dist/index.cjs +1 -0
  19. package/dist/index.d.cts +194 -0
  20. package/dist/index.d.ts +194 -0
  21. package/dist/index.js +1 -0
  22. package/dist/index.node.cjs +1 -0
  23. package/dist/index.node.d.cts +6 -0
  24. package/dist/index.node.d.ts +6 -0
  25. package/dist/index.node.js +1 -0
  26. package/dist/node/index.cjs +1 -0
  27. package/dist/node/index.d.cts +7 -0
  28. package/dist/node/index.d.ts +7 -0
  29. package/dist/node/index.js +1 -0
  30. package/dist/svm-CCzqNAWM.d.cts +59 -0
  31. package/dist/svm-DieFbh9k.d.ts +59 -0
  32. package/dist/workspace-CamTHxso.d.cts +737 -0
  33. package/dist/workspace-CamTHxso.d.ts +737 -0
  34. package/package.json +85 -37
  35. package/tests/01-quick-start.test.cjs +37 -0
  36. package/tests/02-hd-account.test.cjs +71 -0
  37. package/tests/03-pk-account.test.cjs +59 -0
  38. package/tests/04-network-management.test.cjs +94 -0
  39. package/tests/05-asset-management.test.cjs +117 -0
  40. package/tests/06-address-signing.test.cjs +55 -0
  41. package/tests/07-custom-provider.test.cjs +164 -0
  42. package/tests/08-persistence.test.cjs +105 -0
  43. package/tests/09-workspace-filter.test.cjs +84 -0
  44. package/tests/10-default-network.test.cjs +70 -0
  45. package/tests/11-subpath-imports.test.cjs +21 -0
  46. package/tests/12-logger.test.cjs +44 -0
  47. package/tests/13-workspace-config.test.cjs +43 -0
  48. package/tests/14-esm-runtime.test.mjs +81 -0
  49. package/tests/15-package-resolution.test.cjs +76 -0
  50. package/tests/16-known-answer-vectors.test.cjs +141 -0
  51. package/tests/17-locked-state.test.cjs +162 -0
  52. package/tests/README.md +72 -0
  53. package/lib/account.d.ts +0 -69
  54. package/lib/index.d.ts +0 -6
  55. package/lib/index.esm.js +0 -1
  56. package/lib/index.umd.js +0 -1
  57. package/lib/mnemonic.d.ts +0 -3
  58. package/lib/utils.d.ts +0 -21
  59. package/src/account.ts +0 -749
  60. package/src/index.ts +0 -11
  61. package/src/mnemonic.ts +0 -2084
  62. package/src/utils.ts +0 -132
package/lib/index.umd.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs"),require("path"),require("web3"),require("tweetnacl"),require("bs58"),require("bip39"),require("@solana/web3.js"),require("@coral-xyz/anchor"),require("crypto-js"),require("ethereumjs-wallet"),require("micro-ed25519-hdkey")):"function"==typeof define&&define.amd?define(["exports","fs","path","web3","tweetnacl","bs58","bip39","@solana/web3.js","@coral-xyz/anchor","crypto-js","ethereumjs-wallet","micro-ed25519-hdkey"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).demo={},e.fs,e.path,e.Web3,e.nacl,e.bs58,e.bip39,e.web3_js,e.anchor,e.CryptoJS,e.ethereumjsWallet,e.microEd25519Hdkey)}(this,function(e,t,a,r,s,o,n,i,c,l,u,d){"use strict";function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function p(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}}),t.default=e,Object.freeze(t)}var g=p(t),m=p(a),b=h(r),f=p(s),y=p(o),w=p(n),v=p(l);const k=async(e,t)=>{let a;try{a={status:!0,output:await e(...t)}}catch(e){a={status:!1,output:e.toString()}}return a};class x{constructor(e){this.web3=new b.default(e)}async getEvmGasPrice(){return await k(this.web3.eth.getGasPrice,[])}async getEvmGasLimit(e,t){return await k(this.web3.eth.estimateGas,[e,t])}}const _=e=>(e=e.trim(),g.existsSync(e)),A=(e,t)=>{const a=t.length;if(0===a)return!0;for(let r=0;r<a;r++){const a=m.join(e,`accounts/${t[r]}.json`);if(!_(a))return!1}return!0},S=e=>e=(e=(e=(e=e.trim()).toLocaleLowerCase()).replace(/\s+/g,"-").trim()).replace(/\-+/g,"-").trim(),j=(e,t)=>{let a=[];const r=m.join(e,"network.json");if(!_(r))throw new Error("network.json not found");let s=(e=>{let t=[];for(let a=0;a<e.length;a++)t.push(S(e[a]));return t})(P(r).accounts);for(let e=0;e<t.length;e++)s.includes(t[e])&&a.push(t[e]);return a},P=e=>{const t=g.readFileSync(e).toString();return JSON.parse(t)},z=(e,t)=>{const a=JSON.stringify(e);g.writeFileSync(t,a)},T=(e,t)=>v.AES.encrypt(e,t).toString(),q=(e,t)=>v.AES.decrypt(e,t).toString(v.enc.Utf8),E=["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"],C=new b.default(b.default.givenProvider);class K{constructor(e,t,a,r){if(this.account_passwords={},this.account_ciphertexts={},this.disable_address=!1,this.account_signatures="",this.setting_path=e,this.account_labels=t,0!==t.length){if(a){if(t.length!==a.length)throw new Error("account_labels should have same length for account_passwords");for(let e=0;e<t.length;e++){if(!this.checkPassword(t[e],a[e].trim()))throw new Error("account_passwords is not correct");this.account_passwords[t[e]]=a[e].trim()}}r&&(this.disable_address=r),this.reload()}}isLogin(e){return e in this.account_passwords}reloadAccount(){this.reload()}getAccountLabel(e){let t=null;for(let a in this.account_ciphertexts)a.toLocaleLowerCase().includes(e.toLocaleLowerCase())&&(t=a);return null===t?null:{account_address:t,account_label:this.account_ciphertexts[t].account_label}}login(e,t){return this.checkPassword(e,t)?(this.account_passwords[e]=t,this.account_labels.push(e),this.reload(),{status:!0,output:"Login success"}):{status:!1,output:"Password is not correct"}}getAccounts(e){let t=this.getAccountSignature();t!==this.account_signatures&&(this.account_signatures=t,this.reload());let a=Object.keys(this.account_ciphertexts),r=[];for(let t=0;t<a.length;t++)this.getAccountChainType(a[t])===e&&r.push(a[t]);return r}checkAccountLabelIsExist(e){return A(this.setting_path,[e])}checkAccountIsExist(e){return(e=this.getAccountChecksumAddress(e))in this.account_ciphertexts||(this.reload(),e in this.account_ciphertexts)}checkPassword(e,t){let a=m.join(this.setting_path,`accounts/${e}.json`);if(!_(a))return!1;let r,s=P(a);r="PK"===s.account_type?{salt:t,...s.data[0].ciphertexts}:{slat:t,data:s.pp_ciphertexts};let o=v.SHA256(JSON.stringify(r)).toString();return s.signature===o}showPrivateKey(e){if(!this.checkAccountIsExist(e))throw new Error("Account is not exist");e=this.getAccountChecksumAddress(e);let t=this.account_ciphertexts[e],a=this.account_passwords[t.account_label];return q(t.data,a)}getAccountChainType(e){return e.startsWith("0x")&&42===e.length?"evm":/^[A-HJ-NP-Za-km-z1-9]*$/.test(e)?"solana":"unknown"}generatePKAccount(e,t,a,r,s){if(s&&this.checkAccountLabelIsExist(e))throw new Error("Account labels already exist");if(!s&&!this.account_passwords[e])throw new Error("Password is not correct");s||(a=this.account_passwords[e]);let o,n=T(t,a);try{o=this.getAccountAddressByPrivateKey(t,r)}catch(e){return{status:!1,output:e.message}}let i={address:o,data:n},c={salt:a,...i},l={signature:v.SHA256(JSON.stringify(c)).toString(),account_type:"PK",tag:"",ciphertexts:i};return s||(this.account_passwords[e]=a,this.account_labels.push(e)),{status:!0,output:l}}generatePPAccount(e,t,a){if(this.checkAccountLabelIsExist(e))return{status:!1,output:"Account labels already exist"};let r=T(t,a),s={slat:a,data:r},o=v.SHA256(JSON.stringify(s)).toString(),n=this.getSubAccount("evm",t,0);if(!1===n.status)return{status:!1,output:n.output};let i=this.getSubAccount("solana",t,0);if(!1===i.status)return{status:!1,output:i.output};let c={signature:o,account_type:"PP",pp_ciphertexts:r,tag:"",data:[{ciphertexts:{evm:{address:n.output.address,data:T(n.output.pk,a)},solana:{address:i.output.address,data:T(i.output.pk,a)}}}]};return this.account_passwords[e]=a,this.account_labels.push(e),{status:!0,output:c}}generateSubAccount(e,t){if(!this.checkAccountLabelIsExist(e))return{status:!1,output:"Account labels not exist"};let a=m.join(this.setting_path,`accounts/${e}.json`),r=P(a).pp_ciphertexts,s=q(r,this.account_passwords[e]),o=this.getSubAccount("evm",s,t);if(!1===o.status)return{status:!1,output:o.output};let n=this.getSubAccount("solana",s,t);return!1===n.status?{status:!1,output:n.output}:{status:!0,output:{evm:{address:o.output.address,data:T(o.output.pk,this.account_passwords[e])},solana:{address:n.output.address,data:T(n.output.pk,this.account_passwords[e])}}}}resetPassword(e,t){if(!this.checkAccountLabelIsExist(e))return{status:!1,output:"Account labels not exist"};if(!this.checkPassword(e,this.account_passwords[e]))return{status:!1,output:"account passwords is not correct"};let a=m.join(this.setting_path,`accounts/${e}.json`),r=P(a);if("PK"===r.account_type){let s=r.data;for(let a=0;a<s.length;a++){let r=s[a].ciphertexts.data,o=q(r,this.account_passwords[e]);s[a].ciphertexts.data=T(o,t)}let o={salt:t,...r.data[0].ciphertexts};return r.signature=v.SHA256(JSON.stringify(o)).toString(),z(r,a),delete this.account_passwords[e],{status:!0,output:"Password reset successfully"}}let s=q(r.pp_ciphertexts,this.account_passwords[e]);r.pp_ciphertexts=T(s,t);let o={slat:t,data:r.pp_ciphertexts};r.signature=v.SHA256(JSON.stringify(o)).toString();let n=r.data;for(let a=0;a<n.length;a++){let r=q(n[a].ciphertexts.evm.data,this.account_passwords[e]);n[a].ciphertexts.evm.data=T(r,t);let s=q(n[a].ciphertexts.solana.data,this.account_passwords[e]);n[a].ciphertexts.solana.data=T(s,t)}return z(r,a),delete this.account_passwords[e],{status:!0,output:"Password reset successfully"}}signTransaction(e,t,a){return e=this.getAccountChecksumAddress(e),this.checkAccountIsExist(e)?"unknown"===this.getAccountChainType(e)?{status:!1,output:"Chain type unknown"}:"evm"===this.getAccountChainType(e)?this.signEvmTransaction(t,a):this.signSolanaTransaction(e,a,t):{status:!1,output:"Account is not exist"}}signTransactionOffline(e,t,a){"chainId"in t||(t.chainId=a);const r=this.showPrivateKey(e),s=new b.default(b.default.givenProvider);return k(s.eth.accounts.signTransaction.bind(s.eth.accounts),[t,r])}sendSignedTransaction(e,t,a){return e=this.getAccountChecksumAddress(e),this.checkAccountIsExist(e)?"unknown"===this.getAccountChainType(e)?{status:!1,output:"Chain type unknown"}:"evm"===this.getAccountChainType(e)?this.sendEvmTransaction(t,a):this.sendSolanaTransaction(t,a):{status:!1,output:"Account is not exist"}}signMessage(e,t){return e=this.getAccountChecksumAddress(e),this.checkAccountIsExist(e)?"unknown"===this.getAccountChainType(e)?{status:!1,output:"Chain type unknown"}:"evm"===this.getAccountChainType(e)?{status:!0,output:this.signEvmMessage(t,e)}:{status:!0,output:this.signSolanaMessage(t,e)}:{status:!1,output:"Account is not exist"}}async simulateTransaction(e,t,a){const r=new i.Connection(t),s=this.showPrivateKey(e),o=i.Keypair.fromSecretKey(y.decode(s));return await k(r.simulateTransaction.bind(r),[a,[o]])}async signEvmTransaction(e,t){if(!this.account_passwords)return{status:!1,output:"Please set password first"};let a=e.from;if(!e.gas){let a=new x(t),r=await a.getEvmGasLimit(e,t);if(!r.status)return r;e.gas=r.output}if(!e.gasPrice){let a=new x(t),r=await a.getEvmGasPrice();if(!r.status)return r;e.gasPrice=r.output}const r=this.showPrivateKey(a),s=new b.default(t);return await k(s.eth.accounts.signTransaction.bind(s.eth.accounts),[e,r])}async sendEvmTransaction(e,t){const a=new b.default(t);return await k(a.eth.sendSignedTransaction.bind(a.eth),[e])}async signSolanaTransaction(e,t,a){const r=this.showPrivateKey(e),s=i.Keypair.fromSecretKey(y.decode(r)),o=new c.Wallet(s);if(!("recentBlockhash"in a)||!a.recentBlockhash){const e=new i.Connection(t);let r=await k(e.getLatestBlockhash.bind(e),[]);if(!r.status)return{status:!1,output:"Failed to get latest blockhash"};a.recentBlockhash=r.output.blockhash}return a.feePayer=o.publicKey,await k(o.signTransaction.bind(o),[a])}async sendSolanaTransaction(e,t){const a=new i.Connection(t);return await k(a.sendRawTransaction.bind(a),[e.serialize()])}signEvmMessage(e,t){const a=this.showPrivateKey(t);return C.eth.accounts.sign(e,a).signature}signSolanaMessage(e,t){const a=this.showPrivateKey(t),r=f.sign.detached(new Uint8Array(e.match(/.{1,2}/g).map(e=>parseInt(e,16))),y.decode(a));return y.encode(r)}checkIsDisableAddress(e,t){if(!e||!this.disable_address)return!1;let a=e.length;for(let r=0;r<a;r++){let a=e[r].from,s=e[r].to;if(t>=a&&t<=s)return!0}return!1}reload(){if(this.account_labels=j(this.setting_path,this.account_labels),!A(this.setting_path,this.account_labels))throw new Error("Account labels not exist");let e={},t=this.account_labels.length;for(let a=0;a<t;a++){let t=m.join(this.setting_path,`accounts/${this.account_labels[a]}.json`);if(!g.existsSync(t))continue;let r=JSON.parse(g.readFileSync(t,"utf8"));if("PK"===r.account_type){let t=r.data;if(!t)continue;let s=t.length;for(let r=0;r<s;r++)e[t[r].ciphertexts.address]={account_label:this.account_labels[a],data:t[r].ciphertexts.data};continue}let s=r.data.length,o=r.disabled_slots;for(let t=0;t<s;t++)this.checkIsDisableAddress(o,t)||(e[r.data[t].ciphertexts.evm.address]={account_label:this.account_labels[a],data:r.data[t].ciphertexts.evm.data},e[r.data[t].ciphertexts.solana.address]={account_label:this.account_labels[a],data:r.data[t].ciphertexts.solana.data})}this.account_ciphertexts=e}getAccountChecksumAddress(e){return"evm"===this.getAccountChainType(e)&&(e=C.utils.toChecksumAddress(e)),e}getAccountAddressByPrivateKey(e,t){return"evm"===this.getNetworkTypeByChainId(t)?C.eth.accounts.privateKeyToAccount(e).address:i.Keypair.fromSecretKey(y.decode(e)).publicKey.toBase58()}getNetworkTypeByChainId(e){return"901"===e||"902"===e||"903"===e?"solana":"evm"}getSubAccount(e,t,a){if(!(e=>{const t=e.split(/\s+/g),a=t.length;if(12!==a&&24!==a)return!1;for(let e=0;e<a;e++)if(!E.includes(t[e]))return!1;return!0})(t))return{status:!1,output:"Please set correct mnemonic"};if("solana"===e){const e=w.mnemonicToSeedSync(t);let r=d.HDKey.fromMasterSeed(e),s=i.Keypair.fromSeed(r.derive(`m/44'/501'/${a}'/0'`).privateKey);return{status:!0,output:{address:s.publicKey.toBase58(),pk:y.encode(s.secretKey)}}}if("evm"===e){const e=w.mnemonicToSeedSync(t),r=u.hdkey.fromMasterSeed(e).derivePath("m/44'/60'/0'/0").deriveChild(a).getWallet();return{status:!0,output:{address:C.utils.toChecksumAddress(r.getAddressString()),pk:r.getPrivateKeyString()}}}return{status:!1,output:"Unknown chain type"}}getAccountSignature(){let e=this.account_labels.length,t=v.algo.MD5.create();for(let a=0;a<e;a++){let e=m.join(this.setting_path,`accounts/${this.account_labels[a]}.json`);const r=65536,s=g.openSync(e,"r"),o=Buffer.alloc(r);let n=0;try{for(;;){const e=g.readSync(s,o,0,r,n);if(0===e)break;const a=o.subarray(0,e).toString("utf8");t.update(a),n+=e}}finally{g.closeSync(s)}t.update("|SEPARATOR|")}return t.finalize().toString()}}const O=require("../package.json");class I{constructor(e,t,a,r){this.account=new K(e,t,a,r)}}I.version=O.version,e.WativeCore=I,Object.defineProperty(e,"__esModule",{value:!0})});
package/lib/mnemonic.d.ts DELETED
@@ -1,3 +0,0 @@
1
- declare const checkMnemonic: (mnemonic: string) => boolean;
2
- declare const generateMnemonic: () => string;
3
- export { checkMnemonic, generateMnemonic };
package/lib/utils.d.ts DELETED
@@ -1,21 +0,0 @@
1
- export interface Result {
2
- status: boolean;
3
- output: any;
4
- }
5
- export declare const excutePromiseFunction: (fn: Function, params: any) => Promise<Result>;
6
- export declare class EvmGasUtil {
7
- private web3;
8
- constructor(rpc_url: string);
9
- getEvmGasPrice(): Promise<Result>;
10
- getEvmGasLimit(tx_params: any, rpc_url: string): Promise<Result>;
11
- }
12
- export declare const checkFileExistence: (file_path: string) => boolean;
13
- export declare const checkAccountLabelsExistence: (setting_path: string, account_labels: string[]) => boolean;
14
- export declare const getKeystoreSlugByAccountName: (account_name: string) => string;
15
- export declare const batchGetKeystoreSlugByAccountName: (account_name_list: string[]) => string[];
16
- export declare const getAccountLabels: (setting_path: string, account_labels: string[]) => any;
17
- export declare const getJsonParams: (jsonFilePath: string) => any;
18
- export declare const setJsonParams: (data: any, jsonFilePath: string) => void;
19
- export declare const encryptMessage: (message: string, password: string) => string;
20
- export declare const decryptMessage: (ciphertext: string, password: string) => string;
21
- export declare const hexToUint8Array: (hex_string: string) => Uint8Array;