UNPKG

@luffalab/luffa-tron-sdk

Version:

luffa tron ts sdk

2 lines 9.09 kB
var _=Object.defineProperty;var x=(o,e,t)=>e in o?_(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var s=(o,e,t)=>x(o,typeof e!="symbol"?e+"":e,t);var h=(g=>(g.CONNECT="connect",g.GETACCOUNT="getAccount",g.DISCONNECT="disconnect",g.ACCOUNT_CHANGE="accountChange",g.NETWORK_CHANGE="luffa_switchChain",g.CHAIN_CHANGED="chainChanged",g))(h||{});var A=()=>window&&window?._endlessWallet!==void 0||window?.webkit?.messageHandlers?._endlessWallet!==void 0||!1,w=()=>!!(window&&window?.navigator?.userAgent||"").includes("miniProgram"),l=()=>!!(window?.wx&&window?.wx?.getSystemInfoSync),y={mainnet:"endless",testnet:"eds"};var v=o=>{let e;switch(o){case"eth":e=1;break;case"eth_sepolia":e=11155111;break;case"bsc":e=56;break;case"bsc_test":e=97;break;case"tron":e=728126428;break;case"tron_nile":e=3448148188;break;case"endless":e=220;break;case"eds":e=221;break}return e},C=o=>{let e=o.raw_data?.contract?.[0];if(!e||e.type!=="TriggerSmartContract")return{isApprove:!1,spender:""};let n=e.parameter?.value?.data?.slice(0,8)==="095ea7b3",a="";if(n)try{a=window.tronWeb.address.fromHex("41"+o.raw_data.contract[0].parameter.value.data.slice(32,72))}catch{}return{isApprove:n,spender:a}},M=o=>typeof o=="string"&&o.startsWith("0x")&&o.length%2===0&&/^[0-9a-fA-F]+$/.test(o.slice(2)),k=o=>{let e=o.slice(2),t=new Uint8Array(e.length/2);for(let a=0;a<e.length;a+=2)t[a/2]=parseInt(e.slice(a,a+2),16);return new TextDecoder("utf-8").decode(t)},D=o=>M(o)?k(o):o;var f=class f{constructor(){s(this,"callbacks",{});s(this,"listeners",{});s(this,"receive",e=>{let t=e.data.methodName;switch(this.callbacks[e.data.uuid+t]&&(this.callbacks[e.data.uuid+t](e.data.data),delete this.callbacks[e.data.uuid+t]),t){case"luffa_switchChain":{let n=e.data.data.network;if(!n)break;l()&&(n=e.data.data),this.emit(t,n),this.emit("chainChanged",`0x${v(n)?.toString(16)}`);break}case"connect":case"accountChange":{let n={...e.data.data};e?.data?.data?.account?u.setAccountAddress(e.data.data.account):u.setAccountAddress(null),this.emit(t,n);break}case"disconnect":{u.setAccountAddress(null),this.emit(t,e.data.data);break}default:this.emit(t,e.data.data);break}});s(this,"addListener",(e,t)=>{this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)});s(this,"removeListener",(e,t)=>{if(t){let n=this.listeners[e]?.indexOf(t)??-1;n>-1&&this.listeners?.[e]?.splice(n,1)}else this.listeners[e]=[]});s(this,"emit",(e,t)=>{this.listeners?.[e]?.forEach(n=>n(t)),this.emitTronEvent(e,t)});s(this,"sendMessage",(e,t)=>{try{if(A()){this.sendLuffaMessage(e,t);return}if(l()||w()){this.sendMiniProgramMessage(e,t);return}}catch{}});if(f._instance)return f._instance;f._instance=this,A()&&(window.tronWallet={sendResponse:this.sendResponse.bind(this)})}emitTronEvent(e,t){if(typeof window>"u"||!window.tron)return;let n;switch(e){case"connect":case"accountChange":n={action:"accountsChanged",data:{address:t?.account||t?.address}};break;case"disconnect":n=void 0;break;default:n=t;break}try{let a=new MessageEvent("message",{data:{isTronLink:!0,message:n}});window.dispatchEvent(a)}catch{}}sendLuffaMessage(e,t){let n=e?.initData||u.getIninData();e.initData={...n||{},network:y[n.network]??n.network},e.from=u.getAccountAddress(),t&&(this.callbacks[e.uuid+e.methodName]=t),window?._tronWallet?window._tronWallet?.sendMessage(JSON.stringify(e)):window?.webkit&&window?.webkit?.messageHandlers?._tronWallet&&window.webkit.messageHandlers._tronWallet?.postMessage(e)}sendResponse(e){let t=JSON.parse(e);this.receive({data:t})}sendMiniProgramMessage(e,t){let n="invokeNativePlugin",a=u.getAccountAddress(),d=u.getIninData(),p={api_name:"luffaWebRequest",data:{func:e.methodName,chainType:"endless",...e,initData:{...d,network:y[d.network]??d.network},from:a}},m=r=>{t&&t({status:"success",...r.data||{}})},T=r=>{t&&t({status:"error",...r.data||{}})};switch(e.methodName){case"connect":case"getAccount":m=r=>{u.setAccountAddress(r.data.account),t&&t({account:r?.data?.address||"",...r.data||{}})},T=r=>{t&&t({account:""})};break;case"signMessage":case"signTransaction":case"signBuildTransaction":case"signAndSubmitTransaction":case"evmApprove":m=r=>{t&&t({status:"success",...r.data||{}})},T=r=>{t&&t({status:"error",...r.data||{}})};break;default:break}l()?wx[n]({...p,complete:r=>{r.status===void 0?t&&t({...r}):r.status==="success"?(m(r),this.receive({data:r})):T(r)}}):w()&&window.WeixinJSBridge?.invoke(n,p,r=>{r.status===void 0?t&&t({...r}):r.status==="success"?(m(r),this.receive({data:r})):T(r)})}};s(f,"_instance");var N=f;var E=(t=>(t.APPROVED="Approved",t.REJECTED="Rejected",t))(E||{}),S=(t=>(t.SIGNATURE_ONLY="signatureOnly",t.SIGN_AND_SUBMIT="signAndSubmit",t))(S||{}),b=(t=>(t.SIMPLE="simple",t.MULTI_AGENT="multiAgent",t))(b||{});var I=(c=>(c.CONNECT="connect",c.GETACCOUNT="getAccount",c.DISCONNECT="disconnect",c.NETWORK_CHANGE="luffa_switchChain",c.SIGN_MESSAGE="signMessage",c.SEND_TRANSACTION="sendTransaction",c.SIGN_AND_SUBMIT_TRANSACTION="signAndSubmitTransaction",c.SIGN_TRANSACTION="signTransaction",c.SIGN_BUILD_TRANSACTION="signBuildTransaction",c.EVM_APPROVE="evmApprove",c.ACCOUNT_CHANGE="accountChange",c))(I||{}),i=class i{constructor(e){s(this,"message",null);s(this,"_metadata",{});s(this,"_initData",{});s(this,"accountAddress",null);s(this,"_wallet",null);s(this,"request",(e,t)=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:e.method,metadata:this._metadata,data:e.data,initData:e?.initData},t)});s(this,"getAccount",()=>new Promise(e=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"getAccount",metadata:this._metadata,data:{}},t=>{if(t?.account)this._wallet.setAddress(t.account),this.accountAddress=t.account,e([t.account]);else{let n={status:"Rejected",message:t?.message||"Wallet is not connected"};e([])}})}));s(this,"connect",()=>new Promise((e,t)=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"connect",metadata:this._metadata,data:{}},n=>{let a;n?.account?(this._wallet.setAddress(n.account),this.accountAddress=n.account,a=[n.account],e(a)):(a={code:4001,message:"User rejected the request."},t(a))})}));s(this,"disconnect",e=>new Promise((t,n)=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"disconnect",metadata:this._metadata,data:{}},a=>{this.accountAddress=null,e&&e(a),t()})}));s(this,"on",(e,t)=>{this.message?.addListener&&this.message?.addListener(e,t)});s(this,"off",(e,t)=>{this.message?.removeListener&&this.message?.removeListener(e,t)});s(this,"signAndSubmitTransaction",e=>new Promise(async t=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"signAndSubmitTransaction",metadata:this._metadata,data:e},n=>{n?.hash?t(n.hash):t({code:4001,message:n?.message})})}));s(this,"signTransaction",(e,t="signBuildTransaction")=>new Promise(async(n,a)=>{let d={raw_data_hex:e.raw_data_hex};e.to&&(d.to=e.to),this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:t,metadata:this._metadata,data:d},g=>{let p=g?.signature?.split(",")||[];if(Array.isArray(p)&&p.length>0){let m={...e,signature:p};n(m)}else a("Confirmation declined by user")})}));s(this,"signMessage",(e,t)=>new Promise(async n=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"signMessage",metadata:this._metadata,data:{message:D(e)}},a=>{if(a?.signature){let d={status:"Approved",args:a};n(d)}else{let d={status:"Rejected",message:a?.message};n(d)}t&&t(a)})}));s(this,"onAccountChange",e=>{this.on("accountChange",e)});s(this,"onNetworkChange",e=>{this.on("luffa_switchChain",e)});if(i._instance)return i._instance;this.message=new N,this.getMetadata(),this.initConfig(e),i._instance=this}initConfig(e){this._initData.callbackWalletName="tronWallet",this._initData.network=e.network,l()}async sendTransaction(e){if(this.accountAddress||await this.connect(),typeof e=="string")return this.signMessage(e);let{isApprove:t,spender:n}=C(e);return t?(e.to=n,this.signTransaction(e,"evmApprove")):this.signTransaction(e)}changeNetwork(e){this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"luffa_switchChain",metadata:this._metadata,data:{...e}})}getMetadata(){if(!window)return;let t=(document.querySelector('link[rel="icon"]')||document.querySelector('link[rel="shortcut icon"]'))?.getAttribute("href")||"";t&&!t.startsWith("http")&&(t=new URL(t,window.location.origin).href),this._metadata.title=window.document.title,this._metadata.url=window.location.href,this._metadata.origin=window.location.origin,this._metadata.icon=t}};s(i,"version","1.0.5"),s(i,"_instance"),s(i,"getIninData",()=>i._instance?i._instance._initData:{}),s(i,"getAccountAddress",()=>i._instance?i._instance.accountAddress:null),s(i,"setAccountAddress",e=>{i._instance&&(i._instance?._wallet?.setAddress(e),i._instance.accountAddress=e)});var u=i;export{S as EndlessSendTransactionType,b as EndlessWalletTransactionType,u as LuffaTronSdk,I as MethodName,h as TronSDKEvent,E as UserResponseStatus,A as isLuffa,l as isLuffaMiniProgram,w as isLuffaMiniProgramWebview}; //# sourceMappingURL=index.mjs.map