@luffalab/luffa-tron-sdk
Version:
luffa tron ts sdk
2 lines • 8.46 kB
JavaScript
var b=Object.defineProperty;var _=(r,e,t)=>e in r?b(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var s=(r,e,t)=>_(r,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,T=()=>!!(window&&window?.navigator?.userAgent||"").includes("miniProgram"),l=()=>!!(window?.wx&&window?.wx?.getSystemInfoSync),w={mainnet:"endless",testnet:"eds"};var y=r=>{let e;switch(r){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=r=>{let e=r.raw_data?.contract?.[0];if(!e||e.type!=="TriggerSmartContract")return{isApprove:!1,spender:""};let n=e.parameter?.value?.data?.slice(0,8)==="095ea7b3",i="";if(n)try{i=window.tronWeb.address.fromHex("41"+r.raw_data.contract[0].parameter.value.data.slice(32,72))}catch{}return{isApprove:n,spender:i}};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${y(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))});s(this,"sendMessage",(e,t)=>{try{if(A()){this.sendLuffaMessage(e,t);return}if(l()||T()){this.sendMiniProgramMessage(e,t);return}}catch{}});if(f._instance)return f._instance;f._instance=this,A()&&(window.tronWallet={sendResponse:this.sendResponse.bind(this)})}sendLuffaMessage(e,t){let n=e?.initData||u.getIninData();e.initData={...n||{},network:w[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",i=u.getAccountAddress(),d=u.getIninData(),p={api_name:"luffaWebRequest",data:{func:e.methodName,chainType:"endless",...e,initData:{...d,network:w[d.network]??d.network},from:i}},m=a=>{t&&t({status:"success",...a.data||{}})},E=a=>{t&&t({status:"error",...a.data||{}})};switch(e.methodName){case"connect":case"getAccount":m=a=>{u.setAccountAddress(a.data.account),t&&t({account:a?.data?.address||"",...a.data||{}})},E=a=>{t&&t({account:""})};break;case"signMessage":case"signTransaction":case"signBuildTransaction":case"signAndSubmitTransaction":case"evmApprove":m=a=>{t&&t({status:"success",...a.data||{}})},E=a=>{t&&t({status:"error",...a.data||{}})};break;default:break}l()?wx[n]({...p,complete:a=>{a.status===void 0?t&&t({...a}):a.status==="success"?(m(a),this.receive({data:a})):E(a)}}):T()&&window.WeixinJSBridge?.invoke(n,p,a=>{a.status===void 0?t&&t({...a}):a.status==="success"?(m(a),this.receive({data:a})):E(a)})}};s(f,"_instance");var N=f;var v=(t=>(t.APPROVED="Approved",t.REJECTED="Rejected",t))(v||{}),D=(t=>(t.SIGNATURE_ONLY="signatureOnly",t.SIGN_AND_SUBMIT="signAndSubmit",t))(D||{}),S=(t=>(t.SIMPLE="simple",t.MULTI_AGENT="multiAgent",t))(S||{});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||{}),o=class o{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.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 i;n?.account?(this._wallet.setAddress(n.account),this.accountAddress=n.account,i=[n.account],e(i)):(i={code:4001,message:"User rejected the request."},t(i))})}));s(this,"disconnect",e=>new Promise((t,n)=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"disconnect",metadata:this._metadata,data:{}},i=>{this.accountAddress=null,e&&e(i),t()})}));s(this,"signMessage",(e,t)=>new Promise(n=>{this.message?.sendMessage({uuid:new Date().getTime().toString(),methodName:"signMessage",metadata:this._metadata,data:e},i=>{if(i?.signature){let d={status:"Approved",args:{fullMessage:e.message,signature:i.signature,publicKey:i.publicKey,nonce:"",message:e.message,prefix:"Endless"}};n(d)}else{let d={status:"Rejected",message:i?.message};n(d)}t&&t(i)})}));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,i)=>{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 i("Confirmation declined by user")})}));s(this,"onAccountChange",e=>{this.on("accountChange",e)});s(this,"onNetworkChange",e=>{this.on("luffa_switchChain",e)});if(o._instance)return o._instance;this.message=new N,this.getMetadata(),this.initConfig(e),o._instance=this}initConfig(e){this._initData.callbackWalletName="tronWallet",this._initData.network=e.network,l()}async sendTransaction(e){if(!this.accountAddress){let i=await this.connect();this.accountAddress=i[0]}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(o,"version","1.0.4"),s(o,"_instance"),s(o,"getIninData",()=>o._instance?o._instance._initData:{}),s(o,"getAccountAddress",()=>o._instance?o._instance.accountAddress:null),s(o,"setAccountAddress",e=>{o._instance&&(o._instance.accountAddress=e)});var u=o;export{h as EndLessSDKEvent,D as EndlessSendTransactionType,S as EndlessWalletTransactionType,u as LuffaTronSdk,I as MethodName,v as UserResponseStatus,A as isLuffa,l as isLuffaMiniProgram,T as isLuffaMiniProgramWebview};
//# sourceMappingURL=index.mjs.map