{"version":3,"sources":["../../src/message/types.ts","../../src/utils/index.ts","../../src/message/index.ts","../../src/types.ts","../../src/index.ts"],"sourcesContent":["import { MethodName } from '../index';\r\nimport type { AccountInfo, NetworkInfo, IInitData } from '../types';\r\nexport interface IMetaData {\r\n  gameId: string;\r\n  userId: string;\r\n  walletAddress: string;\r\n}\r\n\r\nexport interface IMessageData {\r\n  uuid: string,\r\n  methodName: string,\r\n  from?: string | null,\r\n  metadata: IMetaData,\r\n  initData?: IInitData,\r\n  data: unknown\r\n}\r\n\r\nexport interface IResponseMessageData {\r\n  uuid: string,\r\n  status: string,\r\n  data: any,\r\n  methodName: string,\r\n  errMsg?: string\r\n}\r\n\r\nexport interface IRequestData {\r\n  method: MethodName,\r\n  data?: unknown,\r\n  initData?: IInitData,\r\n}\r\n\r\nexport enum TronSDKEvent {\r\n\tCONNECT = 'connect',\r\n\tGETACCOUNT = 'getAccount',\r\n\tDISCONNECT = 'disconnect',\r\n\tACCOUNT_CHANGE = 'accountChange',\r\n\tNETWORK_CHANGE ='luffa_switchChain',\r\n\tCHAIN_CHANGED ='chainChanged',\r\n};\r\nexport type TronSDKEventType = (typeof TronSDKEvent)[keyof typeof TronSDKEvent];\r\nexport interface TronSDKEventsMap {\r\n\t[TronSDKEvent.CONNECT]: AccountInfo;\r\n\t[TronSDKEvent.DISCONNECT]: void;\r\n\t[TronSDKEvent.ACCOUNT_CHANGE]: AccountInfo;\r\n\t[TronSDKEvent.GETACCOUNT]: AccountInfo[];\r\n\t[TronSDKEvent.NETWORK_CHANGE]: NetworkInfo;\r\n\t[TronSDKEvent.CHAIN_CHANGED]: string;\r\n}\r\nexport type TronSDKEventPayload<T extends TronSDKEventType> = T extends keyof TronSDKEventsMap ? TronSDKEventsMap[T] : undefined;\r\n\r\nexport type TronSDKEventListenersType = {\r\n\t[K in TronSDKEventType]?: Array<(payload: TronSDKEventPayload<K>) => void>;\r\n};\r\n","export const isLuffa = () => {\r\n  return window && window?._endlessWallet !== undefined || window?.webkit?.messageHandlers?._endlessWallet !== undefined || false;\r\n}\r\n\r\n\r\nexport const isLuffaMiniProgramWebview = () => {\r\n  const userAgent = window && window?.navigator?.userAgent || '';\r\n  return Boolean(userAgent.includes('miniProgram'));\r\n}\r\n\r\n\r\nexport const isLuffaMiniProgram = () => {\r\n  return Boolean(window?.wx && window?.wx?.getSystemInfoSync);\r\n}\r\n\r\nexport const networkMap: Partial<Record<string, string>> = {\r\n  ['mainnet']: 'endless',\r\n  ['testnet']: 'eds',\r\n}\r\nexport const getChain = (chainId: string) => {\r\n  const chainIdNumber = parseInt(chainId, 16);\r\n  let chain = '';\r\n  switch (chainIdNumber) {\r\n    case 728126428:\r\n      chain = 'tron';\r\n      break;\r\n    case 3448148188:\r\n      chain = 'tron_nile';\r\n      break;\r\n    case 1:\r\n      chain = 'eth';\r\n      break;\r\n    case 11155111:\r\n      chain = 'eth_sepolia';\r\n      break;\r\n    case 56:\r\n      chain = 'bsc';\r\n      break;\r\n    case 97:\r\n      chain = 'bsc_test';\r\n      break;\r\n    case 220:\r\n      chain = 'endless';\r\n      break;\r\n    case 221:\r\n      chain = 'eds';\r\n      break;\r\n  }\r\n  return chain;\r\n};\r\n\r\nexport const getChainIdByName = (chainName: string) => {\r\n  let chainId;\r\n  switch (chainName) {\r\n    case 'eth':\r\n      chainId = 1;\r\n      break;\r\n    case 'eth_sepolia':\r\n      chainId = 11155111;\r\n      break;\r\n    case 'bsc':\r\n      chainId = 56;\r\n      break;\r\n    case 'bsc_test':\r\n      chainId = 97;\r\n      break;\r\n    case 'tron':\r\n      chainId = 728126428;\r\n      break;\r\n    case 'tron_nile':\r\n      chainId = 3448148188;\r\n      break;\r\n    case 'endless':\r\n      chainId = 220;\r\n      break;\r\n    case 'eds':\r\n      chainId = 221;\r\n      break;\r\n  }\r\n  return chainId;\r\n};\r\nexport const isApproveTx = (tx: any) => {\r\n  const contract = tx.raw_data?.contract?.[0];\r\n  if (!contract || contract.type !== 'TriggerSmartContract') return { isApprove: false, spender: '' };\r\n\r\n  const methodId = contract.parameter?.value?.data?.slice(0, 8);\r\n  const isApprove = methodId === '095ea7b3';\r\n  let spender = '';\r\n  if (isApprove) {\r\n    try {\r\n      spender = window.tronWeb.address.fromHex('41' + tx.raw_data.contract[0].parameter.value.data.slice(8 + 24, 8 + 64));\r\n    } catch (e) {\r\n    }\r\n  }\r\n  return {\r\n    isApprove,\r\n    spender,\r\n  }\r\n}\r\nexport const isHexString = (value: string): boolean => {\r\n  return (\r\n    typeof value === 'string' &&\r\n    value.startsWith('0x') &&\r\n    value.length % 2 === 0 &&\r\n    /^[0-9a-fA-F]+$/.test(value.slice(2))\r\n  );\r\n}\r\n\r\nexport const hexToUtf8 = (hex: string): string => {\r\n  const clean = hex.slice(2);\r\n  const bytes = new Uint8Array(clean.length / 2);\r\n\r\n  for (let i = 0; i < clean.length; i += 2) {\r\n    bytes[i / 2] = parseInt(clean.slice(i, i + 2), 16);\r\n  }\r\n\r\n  const decoder = new TextDecoder('utf-8');\r\n  return decoder.decode(bytes);\r\n}\r\nexport const normalizeMessageForDisplay = (message: string): string => {\r\n  if (isHexString(message)) {\r\n    return hexToUtf8(message);\r\n  }\r\n  return message;\r\n}\r\n","import { AccountInfo, LuffaTronSdk, MethodName } from '../index';\r\nimport type { IMessageData, TronSDKEventListenersType, TronSDKEventPayload, TronSDKEventType } from './types';\r\nimport { TronSDKEvent, IResponseMessageData } from './types';\r\nimport { isLuffaMiniProgramWebview, isLuffaMiniProgram, isLuffa, networkMap, getChainIdByName } from '../utils';\r\n\r\nexport class PostMessage {\r\n  private static _instance: PostMessage;\r\n  callbacks: {\r\n    [key: string]: (data: unknown) => void;\r\n  } = {};\r\n  private listeners: TronSDKEventListenersType = {};\r\n\r\n  constructor() {\r\n    if (PostMessage._instance) return PostMessage._instance;\r\n    PostMessage._instance = this;\r\n    if (isLuffa()) {\r\n      window.tronWallet = {\r\n        sendResponse: this.sendResponse.bind(this),\r\n      };\r\n    }\r\n  }\r\n  // wallet emit sdk\r\n  // SDK processing method itself\r\n  private readonly receive = (msg: { data: IResponseMessageData }) => {\r\n    const eventType = msg.data.methodName as TronSDKEventType | MethodName;\r\n    // sdk callbacks\r\n    if (this.callbacks[msg.data.uuid + eventType]) {\r\n      this.callbacks[msg.data.uuid + eventType](msg.data.data);\r\n      delete this.callbacks[msg.data.uuid + eventType];\r\n    }\r\n\r\n    // Some events are being monitored by dapp and require running a monitoring callback\r\n    switch (eventType) {\r\n      case TronSDKEvent.NETWORK_CHANGE: {\r\n        let network = msg.data.data.network;\r\n        if (!network) break;\r\n        if (isLuffaMiniProgram()) {\r\n          network = msg.data.data;\r\n        }\r\n        this.emit(eventType, network);\r\n        this.emit(TronSDKEvent.CHAIN_CHANGED, `0x${getChainIdByName(network)?.toString(16)}`);\r\n\r\n        break;\r\n      }\r\n\r\n      // wallet to sdk send onAccountChange | connect\r\n      // sdk to dapp send event\r\n      // CONNECT and ACCOUNT_CHANGE return account as AccountAddress\r\n      case TronSDKEvent.CONNECT:\r\n      case TronSDKEvent.ACCOUNT_CHANGE: {\r\n        const accountInfo: AccountInfo = {\r\n          ...msg.data.data,\r\n        };\r\n        if (msg?.data?.data?.account) {\r\n          LuffaTronSdk.setAccountAddress(msg.data.data.account);\r\n        } else {\r\n          LuffaTronSdk.setAccountAddress(null);\r\n        }\r\n        this.emit(eventType, accountInfo);\r\n        break;\r\n      }\r\n\r\n      case TronSDKEvent.DISCONNECT: {\r\n        LuffaTronSdk.setAccountAddress(null);\r\n        this.emit(eventType, msg.data.data);\r\n        break;\r\n      }\r\n\r\n      default:\r\n        this.emit(eventType as TronSDKEventType, msg.data.data);\r\n        break;\r\n    }\r\n  };\r\n\r\n  readonly addListener = <K extends TronSDKEventType>(\r\n    methodName: K,\r\n    callback: (payload: TronSDKEventPayload<K>) => void\r\n  ) => {\r\n    if (!this.listeners[methodName]) {\r\n      this.listeners[methodName] = [];\r\n    }\r\n    this.listeners[methodName].push(callback);\r\n  };\r\n\r\n  readonly removeListener = <K extends TronSDKEventType>(\r\n    methodName: K,\r\n    callback?: (payload: TronSDKEventPayload<K>) => void\r\n  ) => {\r\n    if (callback) {\r\n      const index = this.listeners[methodName]?.indexOf(callback) ?? -1;\r\n      if (index > -1) {\r\n        this.listeners?.[methodName]?.splice(index, 1);\r\n      }\r\n    } else {\r\n      this.listeners[methodName] = [];\r\n    }\r\n  };\r\n\r\n  readonly emit = <K extends TronSDKEventType>(methodName: K, payload: TronSDKEventPayload<K>) => {\r\n    this.listeners?.[methodName]?.forEach((d) => d(payload));\r\n\r\n    this.emitTronEvent(methodName, payload);\r\n  };\r\n\r\n  private emitTronEvent<K extends TronSDKEventType>(methodName: K, payload: TronSDKEventPayload<K>) {\r\n    if (typeof window === 'undefined' || !window.tron) return;\r\n\r\n    let tronPayload: any;\r\n    switch (methodName) {\r\n      case TronSDKEvent.CONNECT:\r\n      case TronSDKEvent.ACCOUNT_CHANGE:\r\n        const account = (payload as AccountInfo)?.account || (payload as AccountInfo)?.address;\r\n        tronPayload = {\r\n          action: 'accountsChanged',\r\n          data: {\r\n            address: account,\r\n          }\r\n        };\r\n        break;\r\n      case TronSDKEvent.DISCONNECT:\r\n        tronPayload = undefined;\r\n        break;\r\n      default:\r\n        tronPayload = payload;\r\n        break;\r\n    }\r\n\r\n    try {\r\n      const event = new MessageEvent('message', {\r\n        data: {\r\n          isTronLink: true,\r\n          message: tronPayload,\r\n        }\r\n      });\r\n      window.dispatchEvent(event);\r\n    } catch (error) {\r\n      console.warn('Failed to emit tron event:', error);\r\n    }\r\n  }\r\n\r\n  readonly sendMessage = (data: IMessageData, callback?: (data: any) => void) => {\r\n    try {\r\n      if (isLuffa()) {\r\n        this.sendLuffaMessage(data, callback);\r\n        return;\r\n      }\r\n      if (isLuffaMiniProgram() || isLuffaMiniProgramWebview()) {\r\n        this.sendMiniProgramMessage(data, callback);\r\n        return;\r\n      }\r\n    } catch (error) {\r\n      console.error('sendMessage error: ', error);\r\n    }\r\n  };\r\n\r\n  private sendLuffaMessage(data: IMessageData, callback?: (data: any) => void) {\r\n    const initData = data?.initData || LuffaTronSdk.getIninData();\r\n    (data.initData = {\r\n      ...(initData || {}),\r\n      network: networkMap[initData.network] ?? initData.network,\r\n    }),\r\n      (data.from = LuffaTronSdk.getAccountAddress());\r\n    if (callback) {\r\n      this.callbacks[data.uuid + data.methodName] = callback;\r\n    }\r\n    console.log('luffa tron sendLuffaMessage: ', data);\r\n    if (window?._tronWallet) {\r\n      window._tronWallet?.sendMessage(JSON.stringify(data));\r\n    } else if (window?.webkit && window?.webkit?.messageHandlers?._tronWallet) {\r\n      window.webkit.messageHandlers._tronWallet?.postMessage(data);\r\n    }\r\n  }\r\n\r\n  private sendResponse(response: string) {\r\n    console.log('luffa tron sendResponse: ', response);\r\n    const responseData = JSON.parse(response);\r\n    console.log('luffa tron responseData: ', responseData);\r\n    this.receive({\r\n      data: responseData,\r\n    });\r\n  }\r\n\r\n  private sendMiniProgramMessage(data: IMessageData, callback?: (data: any) => void) {\r\n    let funName = 'invokeNativePlugin';\r\n    const accountAddress = LuffaTronSdk.getAccountAddress();\r\n    const initData = LuffaTronSdk.getIninData();\r\n    let api_name = 'luffaWebRequest';\r\n    let params = {\r\n      api_name,\r\n      data: {\r\n        func: data.methodName,\r\n        chainType: 'endless',\r\n        ...data,\r\n        initData: {\r\n          ...initData,\r\n          network: networkMap[initData.network] ?? initData.network,\r\n        },\r\n        from: accountAddress,\r\n      },\r\n    };\r\n    let callbackSuccessFun = (res: any) => {\r\n      callback &&\r\n        callback({\r\n          status: 'success',\r\n          ...(res.data || {}),\r\n        });\r\n    };\r\n    let callbackErrorFun = (res: any) => {\r\n      callback &&\r\n        callback({\r\n          status: 'error',\r\n          ...(res.data || {}),\r\n        });\r\n    };\r\n    switch (data.methodName) {\r\n      case MethodName.CONNECT:\r\n      case MethodName.GETACCOUNT:\r\n        callbackSuccessFun = (res) => {\r\n          LuffaTronSdk.setAccountAddress(res.data.account);\r\n          callback &&\r\n            callback({\r\n              account: res?.data?.address || '',\r\n              ...(res.data || {}),\r\n            });\r\n        };\r\n        callbackErrorFun = (res) => {\r\n          callback &&\r\n            callback({\r\n              account: '',\r\n            });\r\n        };\r\n        break;\r\n      case MethodName.SIGN_MESSAGE:\r\n      case MethodName.SIGN_TRANSACTION:\r\n      case MethodName.SIGN_BUILD_TRANSACTION:\r\n      case MethodName.SIGN_AND_SUBMIT_TRANSACTION:\r\n      case MethodName.EVM_APPROVE:\r\n        callbackSuccessFun = (res: any) => {\r\n          callback &&\r\n            callback({\r\n              status: 'success',\r\n              ...(res.data || {}),\r\n            });\r\n        };\r\n        callbackErrorFun = (res: any) => {\r\n          callback &&\r\n            callback({\r\n              status: 'error',\r\n              ...(res.data || {}),\r\n            });\r\n        };\r\n        break;\r\n\r\n      default:\r\n        break;\r\n    }\r\n    console.log('luffa tron funName: ', funName);\r\n    console.log('luffa tron params: ', params);\r\n    if (isLuffaMiniProgram()) {\r\n      wx[funName]({\r\n        ...params,\r\n        complete: (res: any) => {\r\n          console.log(`luffa tron wx ${funName} res: `, res);\r\n          if (res.status === undefined) {\r\n            callback &&\r\n              callback({\r\n                ...res,\r\n              });\r\n          } else if (res.status === 'success') {\r\n            callbackSuccessFun(res);\r\n            this.receive({\r\n              data: res,\r\n            });\r\n          } else {\r\n            callbackErrorFun(res);\r\n          }\r\n        },\r\n      });\r\n    } else if (isLuffaMiniProgramWebview()) {\r\n      window.WeixinJSBridge?.invoke(funName, params, (res) => {\r\n        console.log(`luffa tron WeixinJSBridge ${funName} res: `, res);\r\n        if (res.status === undefined) {\r\n          callback &&\r\n            callback({\r\n              ...res,\r\n            });\r\n        } else if (res.status === 'success') {\r\n          callbackSuccessFun(res);\r\n          this.receive({\r\n            data: res,\r\n          });\r\n        } else {\r\n          callbackErrorFun(res);\r\n        }\r\n      });\r\n    }\r\n  }\r\n}\r\n","\r\nimport type tronWebModule from 'tronWeb';\r\nimport type { TronWeb } from 'tronWeb';\r\ntype TronWebSDK = typeof tronWebModule;\r\nexport enum Network {\r\n  MAINNET = \"mainnet\",\r\n  TESTNET = \"testnet\",\r\n\tETH = 'eth',\r\n\tBSC = 'bsc',\r\n}\r\nexport type IInitData = {\r\n\tcolorMode?: 'light' | 'dark';\r\n\tnetwork: Network | string;\r\n\tfullnode?: string;\r\n\tindexer?: string;\r\n\twalletUrl?: string;\r\n\tprover?: string;\r\n\tcallbackWalletName?: string;\r\n\tminiprogram?: Boolean;\r\n\twindowWidth?: number;\r\n};\r\n\r\nexport type ChainData = {\r\n\ttargetNet: 'endless' | 'eds' | 'eth' | 'eth_sepolia' | 'bsc' | 'bsc_testnet' | 'tron' | 'tron_nile';\r\n}\r\n\r\nexport enum UserResponseStatus {\r\n\tAPPROVED = 'Approved',\r\n\tREJECTED = 'Rejected'\r\n}\r\n\r\nexport interface UserApproval<TResponseArgs> {\r\n\tstatus: UserResponseStatus.APPROVED;\r\n\targs: TResponseArgs;\r\n}\r\n\r\nexport interface UserRejection {\r\n\tstatus: UserResponseStatus.REJECTED;\r\n\tmessage?: string;\r\n}\r\n\r\nexport type UserResponse<TResponseArgs> = UserApproval<TResponseArgs> | UserRejection;\r\n\r\nexport interface AccountInfo {\r\n\taccount: string;\r\n\taddress: string;\r\n\tauthKey: string;\r\n\tansName?: string;\r\n}\r\n\r\nexport interface NetworkInfo {\r\n\tname: Network | string;\r\n\tchainId: number;\r\n\turl?: string;\r\n}\r\n\r\nexport type EndlessSignMessageInput = {\r\n\taddress?: boolean;\r\n\tapplication?: boolean;\r\n\tchainId?: boolean;\r\n\tmessage: string;\r\n\tnonce?: string;\r\n};\r\n\r\nexport type EndlessSignMessageOutput = {\r\n\taddress?: string;\r\n\tapplication?: string;\r\n\tchainId?: number;\r\n\tfullMessage: string;\r\n\tpublicKey: string;\r\n\tmessage: string;\r\n\tnonce: string;\r\n\tprefix: 'Endless';\r\n\tsignature: '';\r\n};\r\n\r\nexport interface EndlessSignAndSubmitTransactionInput {\r\n\tgasUnitPrice?: number; // defaults to estimated gas unit price\r\n\tmaxGasAmount?: number; // defaults to estimated max gas amount\r\n\tpayload: ''; // the transaction payload\r\n\toptions?: '';\r\n}\r\n\r\nexport enum EndlessSendTransactionType {\r\n\tSIGNATURE_ONLY = 'signatureOnly',\r\n\tSIGN_AND_SUBMIT = 'signAndSubmit'\r\n}\r\n\r\nexport enum EndlessWalletTransactionType {\r\n\tSIMPLE = 'simple',\r\n\tMULTI_AGENT = 'multiAgent'\r\n}\r\ninterface TronRequestArguments {\r\n\treadonly method: string;\r\n\treadonly params?: unknown[] | object;\r\n}\r\ninterface ProviderRpcError extends Error {\r\n\tcode: number;\r\n\tmessage: string;\r\n\tdata?: unknown;\r\n}\r\ntype TronEvent = 'connect' | 'disconnect' | 'chainChanged' | 'accountsChanged';\r\nexport type TronConnectCallback = (data: { chainId: string }) => void;\r\nexport type TronChainChangedCallback = TronConnectCallback;\r\nexport type TronDisconnectCallback = (error: ProviderRpcError) => void;\r\nexport type TronAccountsChangedCallback = (data: [string?]) => void;\r\nexport interface Tron {\r\n\trequest(args: { method: 'eth_requestAccounts' }): Promise<[string]>;\r\n\trequest(args: TronRequestArguments): Promise<unknown>;\r\n\r\n\ton(event: 'connect', cb: TronConnectCallback): void;\r\n\ton(event: 'disconnect', cb: TronDisconnectCallback): void;\r\n\ton(event: 'chainChanged', cb: TronChainChangedCallback): void;\r\n\ton(event: 'accountsChanged', cb: TronAccountsChangedCallback): void;\r\n\r\n\tremoveListener(event: TronEvent, cb: unknown): void;\r\n\ttronWeb: TronWeb | false;\r\n\tisTronLink: boolean;\r\n}\r\n\r\ndeclare global {\r\n\tconst tronWeb: TronWeb;\r\n\tconst TronWeb: TronWebSDK;\r\n\tconst wx: any\r\n\r\n\tinterface Window {\r\n\t\twx: any;\r\n\t\twebkit: any;\r\n\t\tendlessWallet?: {\r\n\t\t\tsendResponse: (response: any) => void;\r\n\t\t};\r\n\t\t_endlessWallet?: {\r\n\t\t\tsendMessage: (data: any) => void;\r\n\t\t};\r\n\t\tWeixinJSBridge: {\r\n\t\t\tinvoke(api: string, data: any, callback: (res: any) => void): void;\r\n\t\t\ton(api: string, callback: (res: any) => void): void;\r\n\t\t},\r\n\t\ttronWallet?: {\r\n\t\t\tsendResponse: (response: any) => void;\r\n\t\t},\r\n\t\t_tronWallet?: {\r\n\t\t\tsendMessage: (data: any) => void;\r\n\t\t},\r\n\t\ttron: Tron;\r\n\t\ttronWeb: TronWeb;\r\n\t\tTronWeb: TronWebSDK;\r\n\t}\r\n}\r\n","/* import { Buffer } from 'buffer';\r\nglobalThis.Buffer = Buffer; */\r\nimport { PostMessage } from './message';\r\nimport {\r\n  IInitData,\r\n  UserResponse,\r\n  AccountInfo,\r\n  UserResponseStatus,\r\n  EndlessSignMessageInput,\r\n  EndlessSignMessageOutput,\r\n  EndlessSignAndSubmitTransactionInput,\r\n  EndlessWalletTransactionType,\r\n  UserRejection,\r\n  NetworkInfo,\r\n  ChainData,\r\n} from './types';\r\n// web and WebView\r\n///// #if BUILD_PLATFORM !== 'MINIPROGRAM'\r\n///// #endif\r\nimport { isApproveTx, isLuffa, isLuffaMiniProgram, isLuffaMiniProgramWebview, normalizeMessageForDisplay } from './utils';\r\nimport { TronWebOptions } from 'tronWeb/lib/esm/types';\r\nimport { TronSDKEvent, TronSDKEventPayload, TronSDKEventType, IRequestData } from './message/types';\r\nexport { isLuffa, isLuffaMiniProgram, isLuffaMiniProgramWebview } from './utils';\r\nexport interface Metadata {\r\n  title: string;\r\n  url: string;\r\n  origin: string;\r\n  icon: string;\r\n  gameId: string;\r\n  userId: string;\r\n  walletAddress: string;\r\n}\r\nexport interface TronRequestParams {\r\n  method: 'eth_requestAccounts' | string;\r\n  params?: any;\r\n}\r\nexport { TronSDKEvent } from './message/types';\r\nexport { UserResponseStatus, EndlessSendTransactionType, EndlessWalletTransactionType } from './types';\r\nexport type { UserResponse, AccountInfo, EndlessSignAndSubmitTransactionInput } from './types';\r\nexport enum MethodName {\r\n  CONNECT = 'connect',\r\n  GETACCOUNT = 'getAccount',\r\n  DISCONNECT = 'disconnect',\r\n  NETWORK_CHANGE = 'luffa_switchChain',\r\n  SIGN_MESSAGE = 'signMessage',\r\n  SEND_TRANSACTION = 'sendTransaction',\r\n  SIGN_AND_SUBMIT_TRANSACTION = 'signAndSubmitTransaction',\r\n  SIGN_TRANSACTION = 'signTransaction',\r\n  SIGN_BUILD_TRANSACTION = 'signBuildTransaction',\r\n  EVM_APPROVE = 'evmApprove',\r\n  ACCOUNT_CHANGE = 'accountChange',\r\n}\r\nexport class LuffaTronSdk {\r\n  static readonly version: string = '1.0.5';\r\n  private static _instance: LuffaTronSdk;\r\n  private message: PostMessage | null = null;\r\n  private _metadata: Metadata = {} as Metadata;\r\n  private _initData: IInitData = {} as IInitData;\r\n  private accountAddress: string | null = null;\r\n  private _wallet: any | null = null;\r\n\r\n  static getIninData = (): IInitData => {\r\n    if (LuffaTronSdk._instance) {\r\n      return LuffaTronSdk._instance._initData;\r\n    } else {\r\n      return {} as IInitData;\r\n    }\r\n  };\r\n  static getAccountAddress = () => {\r\n    if (LuffaTronSdk._instance) {\r\n      return LuffaTronSdk._instance.accountAddress;\r\n    } else {\r\n      return null;\r\n    }\r\n  };\r\n  static setAccountAddress = (accountAddress: string | null) => {\r\n    if (LuffaTronSdk._instance) {\r\n      LuffaTronSdk._instance?._wallet?.setAddress(accountAddress);\r\n      LuffaTronSdk._instance.accountAddress = accountAddress;\r\n    }\r\n  };\r\n\r\n  constructor(initData: TronWebOptions & { network: string }) {\r\n    if (LuffaTronSdk._instance) return LuffaTronSdk._instance;\r\n    this.message = new PostMessage();\r\n    this.getMetadata();\r\n    this.initConfig(initData);\r\n    LuffaTronSdk._instance = this;\r\n  }\r\n\r\n  private initConfig(initData: TronWebOptions & { network: string }) {\r\n    this._initData.callbackWalletName = 'tronWallet';\r\n    this._initData.network = initData.network;\r\n    if (isLuffaMiniProgram()) {\r\n      return;\r\n    }\r\n    // web and WebView\r\n//    /// #if BUILD_PLATFORM !== 'MINIPROGRAM'\r\n//\r\n//    this._wallet = new window.TronWeb.TronWeb(initData);\r\n//    this._wallet.trx.sign = this.sendTransaction.bind(this);\r\n//    this._wallet.trx.signTransaction = this.sendTransaction.bind(this);\r\n//\r\n//    const tronProvider = Object.freeze({\r\n//      isTronLink: false,\r\n//      request: async (params: TronRequestParams) => {\r\n//        switch (params.method) {\r\n//          case 'eth_requestAccounts':\r\n//            return this.connect();\r\n//\r\n//          default:\r\n//            return { code: 4200, message: 'Unknown method called' };\r\n//        }\r\n//      },\r\n//      tronWeb: this._wallet,\r\n//      on: this.on,\r\n//      removeListener: this.off,\r\n//    });\r\n//\r\n//    Object.defineProperty(globalThis, 'tronWeb', {\r\n//      value: this._wallet,\r\n//      writable: false,\r\n//      configurable: false,\r\n//      enumerable: true\r\n//    });\r\n//\r\n//    Object.defineProperty(globalThis, 'tron', {\r\n//      value: tronProvider,\r\n//      writable: false,\r\n//      configurable: false,\r\n//      enumerable: true\r\n//    });\r\n//    /// #endif\r\n  }\r\n\r\n  async sendTransaction(params: any) {\r\n    if (!this.accountAddress) {\r\n      await this.connect();\r\n    }\r\n    console.log('this.accountAddress: ', this.accountAddress);\r\n    if (typeof params === 'string') {\r\n      return this.signMessage(params);\r\n    }\r\n    const { isApprove, spender } = isApproveTx(params);\r\n    console.log('isApprove: ', isApprove, spender);\r\n    if (isApprove) {\r\n      params.to = spender;\r\n      return this.signTransaction(params, MethodName.EVM_APPROVE)\r\n    } else {\r\n      return this.signTransaction(params)\r\n    }\r\n  }\r\n\r\n  changeNetwork(chainData: ChainData) {\r\n    this.message?.sendMessage({\r\n      uuid: new Date().getTime().toString(),\r\n      methodName: MethodName.NETWORK_CHANGE,\r\n      metadata: this._metadata,\r\n      data: {\r\n        ...chainData,\r\n      },\r\n    });\r\n  }\r\n\r\n  private getMetadata() {\r\n    if (!window) {\r\n      return;\r\n    }\r\n    const iconLink = document.querySelector('link[rel=\"icon\"]') || document.querySelector('link[rel=\"shortcut icon\"]');\r\n    let iconUrl = iconLink?.getAttribute('href') || '';\r\n    if (iconUrl && !iconUrl.startsWith('http')) {\r\n      iconUrl = new URL(iconUrl, window.location.origin).href;\r\n    }\r\n\r\n    this._metadata.title = window.document.title;\r\n    this._metadata.url = window.location.href;\r\n    this._metadata.origin = window.location.origin;\r\n    this._metadata.icon = iconUrl;\r\n  }\r\n\r\n  request = (data: IRequestData, callback?: (data: unknown) => void) => {\r\n    this.message?.sendMessage(\r\n      {\r\n        uuid: new Date().getTime().toString(),\r\n        methodName: data.method,\r\n        metadata: this._metadata,\r\n        data: data.data,\r\n        initData: data?.initData,\r\n      },\r\n      callback\r\n    );\r\n  };\r\n\r\n  getAccount = (): Promise<string[]> => {\r\n    return new Promise((resolve) => {\r\n      this.message?.sendMessage(\r\n        {\r\n          uuid: new Date().getTime().toString(),\r\n          methodName: MethodName.GETACCOUNT,\r\n          metadata: this._metadata,\r\n          data: {},\r\n        },\r\n        (data) => {\r\n          if (data?.account) {\r\n            this._wallet.setAddress(data.account);\r\n            this.accountAddress = data.account;\r\n            resolve([data.account]);\r\n          } else {\r\n            const res: UserResponse<AccountInfo> = {\r\n              status: UserResponseStatus.REJECTED,\r\n              message: data?.message || 'Wallet is not connected',\r\n            };\r\n            resolve([]);\r\n          }\r\n        }\r\n      );\r\n    });\r\n  };\r\n\r\n  connect = (): Promise<[string]> => {\r\n    return new Promise((resolve, reject) => {\r\n      this.message?.sendMessage(\r\n        {\r\n          uuid: new Date().getTime().toString(),\r\n          methodName: MethodName.CONNECT,\r\n          metadata: this._metadata,\r\n          data: {},\r\n        },\r\n        (data) => {\r\n          let res;\r\n          if (data?.account) {\r\n            this._wallet.setAddress(data.account);\r\n            this.accountAddress = data.account;\r\n            res = [data.account] as [string];\r\n            resolve(res);\r\n          } else {\r\n            res = {\r\n              code: 4001,\r\n              message: 'User rejected the request.',\r\n            };\r\n            reject(res);\r\n          }\r\n        }\r\n      );\r\n    });\r\n  };\r\n\r\n  disconnect = (callback?: (data: unknown) => void): Promise<void> => {\r\n    return new Promise((resolve, reject) => {\r\n      this.message?.sendMessage(\r\n        {\r\n          uuid: new Date().getTime().toString(),\r\n          methodName: MethodName.DISCONNECT,\r\n          metadata: this._metadata,\r\n          data: {},\r\n        },\r\n        (data: unknown) => {\r\n          this.accountAddress = null;\r\n          if (callback) callback(data);\r\n          resolve();\r\n        }\r\n      );\r\n    });\r\n  };\r\n\r\n  on = <K extends TronSDKEventType>(methodName: K, callback: (payload: TronSDKEventPayload<K>) => void) => {\r\n    if (this.message?.addListener) {\r\n      this.message?.addListener(methodName, callback);\r\n    }\r\n  };\r\n  off = <K extends TronSDKEventType>(methodName: K, callback?: (payload: TronSDKEventPayload<K>) => void) => {\r\n    if (this.message?.removeListener) {\r\n      this.message?.removeListener(methodName, callback);\r\n    }\r\n  };\r\n\r\n  signAndSubmitTransaction = (params: any): Promise<any> => {\r\n    console.log('signAndSubmitTransaction data: ', params);\r\n    return new Promise(async (resolve) => {\r\n      this.message?.sendMessage(\r\n        {\r\n          uuid: new Date().getTime().toString(),\r\n          methodName: MethodName.SIGN_AND_SUBMIT_TRANSACTION,\r\n          metadata: this._metadata,\r\n          data: params\r\n        },\r\n        (res) => {\r\n          if (res?.hash) {\r\n            resolve(res.hash);\r\n          } else {\r\n            resolve({\r\n              code: 4001,\r\n              message: res?.message\r\n            });\r\n          }\r\n        }\r\n      );\r\n    });\r\n  };\r\n\r\n  signTransaction = (params: any, methodName = MethodName.SIGN_BUILD_TRANSACTION): Promise<any> => {\r\n    return new Promise(async (resolve, reject) => {\r\n      const data: { raw_data_hex: string; to?: string } = {\r\n        raw_data_hex: params.raw_data_hex\r\n      }\r\n      if (params.to) {\r\n        data.to = params.to;\r\n      }\r\n      this.message?.sendMessage(\r\n        {\r\n          uuid: new Date().getTime().toString(),\r\n          methodName,\r\n          metadata: this._metadata,\r\n          data,\r\n        },\r\n        (res) => {\r\n          const signature = res?.signature?.split(',') || [];\r\n          console.log('luffa tron signature: ', signature);\r\n          if (Array.isArray(signature) && signature.length > 0) {\r\n            const result = {\r\n              ...params,\r\n              signature\r\n            };\r\n            resolve(result);\r\n          } else {\r\n            reject('Confirmation declined by user');\r\n          }\r\n        }\r\n      );\r\n    });\r\n  };\r\n\r\n  signMessage = (\r\n    data: string,\r\n    callback?: (data: unknown) => void\r\n  ): Promise<UserResponse<any>> => {\r\n    return new Promise(async (resolve) => {\r\n      this.message?.sendMessage(\r\n        {\r\n          uuid: new Date().getTime().toString(),\r\n          methodName: MethodName.SIGN_MESSAGE,\r\n          metadata: this._metadata,\r\n          data: {\r\n            message: normalizeMessageForDisplay(data)\r\n          }\r\n        },\r\n        (res) => {\r\n          console.log('signMessage res: ', res);\r\n          if (res?.signature) {\r\n            const result: UserResponse<any> = {\r\n              status: UserResponseStatus.APPROVED,\r\n              args: res,\r\n            };\r\n            resolve(result);\r\n          } else {\r\n            const result: UserRejection = { status: UserResponseStatus.REJECTED, message: res?.message };\r\n            resolve(result);\r\n          }\r\n          if (callback) callback(res);\r\n        }\r\n      );\r\n    });\r\n  };\r\n\r\n  onAccountChange = (callback: (data: AccountInfo) => void) => {\r\n    this.on(TronSDKEvent.ACCOUNT_CHANGE, callback);\r\n  };\r\n\r\n  onNetworkChange = (callback: (data: NetworkInfo) => void) => {\r\n    this.on(TronSDKEvent.NETWORK_CHANGE, callback);\r\n  };\r\n}\r\n"],"mappings":"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","names":["TronSDKEvent","isLuffa","isLuffaMiniProgramWebview","isLuffaMiniProgram","networkMap","getChainIdByName","chainName","chainId","isApproveTx","tx","contract","isApprove","spender","isHexString","value","hexToUtf8","hex","clean","bytes","i","normalizeMessageForDisplay","message","_PostMessage","__publicField","msg","eventType","network","isLuffaMiniProgram","getChainIdByName","accountInfo","LuffaTronSdk","methodName","callback","index","payload","d","data","isLuffa","isLuffaMiniProgramWebview","tronPayload","event","initData","networkMap","response","responseData","funName","accountAddress","params","callbackSuccessFun","res","callbackErrorFun","PostMessage","UserResponseStatus","EndlessSendTransactionType","EndlessWalletTransactionType","MethodName","_LuffaTronSdk","initData","__publicField","data","callback","resolve","res","reject","methodName","params","signature","result","normalizeMessageForDisplay","PostMessage","isLuffaMiniProgram","isApprove","spender","isApproveTx","chainData","iconUrl","accountAddress","LuffaTronSdk"]}