@swapkit/wallets 3.0.0-beta.22 → 3.0.0-beta.23

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 (82) hide show
  1. package/dist/{chunk-x5hgx9x9.js → chunk-0qaxr89s.js} +2 -2
  2. package/dist/{chunk-x5hgx9x9.js.map → chunk-0qaxr89s.js.map} +1 -1
  3. package/dist/chunk-bexr8da2.js +4 -0
  4. package/dist/chunk-bexr8da2.js.map +10 -0
  5. package/dist/chunk-dcj9twam.js +3 -0
  6. package/dist/chunk-dcj9twam.js.map +10 -0
  7. package/dist/{chunk-38ztynv0.js → chunk-qwd1kp32.js} +2 -2
  8. package/dist/{chunk-38ztynv0.js.map → chunk-qwd1kp32.js.map} +1 -1
  9. package/dist/chunk-sn6pgje5.js +3 -0
  10. package/dist/chunk-sn6pgje5.js.map +10 -0
  11. package/dist/chunk-wfattb4a.js +3 -0
  12. package/dist/chunk-wfattb4a.js.map +10 -0
  13. package/dist/{chunk-ebfkk1jn.js → chunk-zfnkndsr.js} +3 -3
  14. package/dist/{chunk-ebfkk1jn.js.map → chunk-zfnkndsr.js.map} +1 -1
  15. package/dist/src/bitget/index.js +2 -2
  16. package/dist/src/bitget/index.js.map +1 -1
  17. package/dist/src/coinbase/index.js +2 -2
  18. package/dist/src/coinbase/index.js.map +1 -1
  19. package/dist/src/cosmostation/index.js +2 -2
  20. package/dist/src/cosmostation/index.js.map +1 -1
  21. package/dist/src/ctrl/index.cjs +2 -2
  22. package/dist/src/ctrl/index.cjs.map +4 -4
  23. package/dist/src/ctrl/index.js +2 -2
  24. package/dist/src/ctrl/index.js.map +4 -4
  25. package/dist/src/evm-extensions/index.js +2 -2
  26. package/dist/src/evm-extensions/index.js.map +1 -1
  27. package/dist/src/exodus/index.js +2 -2
  28. package/dist/src/exodus/index.js.map +1 -1
  29. package/dist/src/index.js +2 -2
  30. package/dist/src/index.js.map +1 -1
  31. package/dist/src/keepkey/index.js +2 -2
  32. package/dist/src/keepkey/index.js.map +1 -1
  33. package/dist/src/keepkey-bex/index.js +2 -2
  34. package/dist/src/keepkey-bex/index.js.map +1 -1
  35. package/dist/src/keplr/index.js +2 -2
  36. package/dist/src/keplr/index.js.map +1 -1
  37. package/dist/src/keystore/index.cjs +2 -2
  38. package/dist/src/keystore/index.cjs.map +3 -3
  39. package/dist/src/keystore/index.js +2 -2
  40. package/dist/src/keystore/index.js.map +3 -3
  41. package/dist/src/ledger/index.cjs +3 -3
  42. package/dist/src/ledger/index.cjs.map +7 -6
  43. package/dist/src/ledger/index.js +3 -3
  44. package/dist/src/ledger/index.js.map +7 -6
  45. package/dist/src/okx/index.cjs +2 -2
  46. package/dist/src/okx/index.cjs.map +4 -4
  47. package/dist/src/okx/index.js +2 -2
  48. package/dist/src/okx/index.js.map +4 -4
  49. package/dist/src/onekey/index.js +2 -2
  50. package/dist/src/onekey/index.js.map +1 -1
  51. package/dist/src/phantom/index.js +2 -2
  52. package/dist/src/phantom/index.js.map +2 -2
  53. package/dist/src/polkadotjs/index.js +2 -2
  54. package/dist/src/polkadotjs/index.js.map +1 -1
  55. package/dist/src/radix/index.js +2 -2
  56. package/dist/src/radix/index.js.map +1 -1
  57. package/dist/src/talisman/index.js +2 -2
  58. package/dist/src/talisman/index.js.map +1 -1
  59. package/dist/src/trezor/index.js +2 -2
  60. package/dist/src/trezor/index.js.map +1 -1
  61. package/dist/src/walletconnect/index.cjs +2 -2
  62. package/dist/src/walletconnect/index.cjs.map +5 -6
  63. package/dist/src/walletconnect/index.js +2 -2
  64. package/dist/src/walletconnect/index.js.map +5 -6
  65. package/package.json +5 -3
  66. package/src/ctrl/index.ts +83 -0
  67. package/src/ctrl/walletHelpers.ts +16 -0
  68. package/src/helpers/near-browser-provider.d.ts +286 -0
  69. package/src/helpers/near.ts +206 -0
  70. package/src/keystore/index.ts +1 -0
  71. package/src/ledger/clients/near.ts +86 -0
  72. package/src/ledger/helpers/getLedgerAddress.ts +5 -0
  73. package/src/ledger/helpers/getLedgerClient.ts +7 -0
  74. package/src/ledger/index.ts +10 -0
  75. package/src/okx/helpers.ts +16 -0
  76. package/src/okx/index.ts +1 -0
  77. package/src/types.ts +11 -0
  78. package/src/walletconnect/constants.ts +2 -0
  79. package/src/walletconnect/helpers.ts +9 -2
  80. package/src/walletconnect/index.ts +68 -0
  81. /package/dist/{chunk-k9q04afa.js → chunk-ad832c7c.js} +0 -0
  82. /package/dist/{chunk-k9q04afa.js.map → chunk-ad832c7c.js.map} +0 -0
@@ -1,3 +1,3 @@
1
- import{a as jr}from"../../chunk-ebfkk1jn.js";import{c as Y,d as J}from"../../chunk-38ztynv0.js";import{Chain as N,ChainId as Vr,SKConfig as fr,SwapKitError as Q,WalletOption as U,createWallet as er,filterSupportedChains as kr}from"@swapkit/helpers";var F="wss://relay.walletconnect.com",O="eip155:1",l="eip155:56",L="eip155:43114",Z="cosmos:thorchain",o="cosmos:cosmoshub-4",T="cosmos:kaiyo-1",D="cosmos:mayachain-mainnet-v1",E="eip155:42161",S="eip155:10",rr="eip155:137",sr="eip155:8453",ur="debug",Nr={name:"THORSwap",description:"THORSwap multi-chain dex aggregator powered by THORChain",url:"https://app.thorswap.finance/",icons:["https://static.thorswap.net/logo.png"]},R;((I)=>{I.ETH_SEND_TRANSACTION="eth_sendTransaction";I.ETH_SIGN="eth_sign";I.PERSONAL_SIGN="personal_sign";I.ETH_SIGN_TYPED_DATA="eth_signTypedData"})(R||={});var i;((s)=>{s.ETH_CHAIN_CHANGED="chainChanged";s.ETH_ACCOUNTS_CHANGED="accountsChanged"})(i||={});var V;((p)=>{p.COSMOS_SIGN_DIRECT="cosmos_signDirect";p.COSMOS_SIGN_AMINO="cosmos_signAmino";p.COSMOS_GET_ACCOUNTS="cosmos_getAccounts"})(V||={});var vr;((r)=>{})(vr||={});var P;((s)=>{s.SOL_SIGN_TRANSACTION="solana_signTransaction";s.SOL_SIGN_MESSAGE="solana_signMessage"})(P||={});var g;((r)=>{})(g||={});var x;((s)=>{s.POLKADOT_SIGN_TRANSACTION="polkadot_signTransaction";s.POLKADOT_SIGN_MESSAGE="polkadot_signMessage"})(x||={});var d;((r)=>{})(d||={});var n;((t)=>{t.NEAR_SIGN_IN="near_signIn";t.NEAR_SIGN_OUT="near_signOut";t.NEAR_GET_ACCOUNTS="near_getAccounts";t.NEAR_SIGN_AND_SEND_TRANSACTION="near_signAndSendTransaction";t.NEAR_SIGN_AND_SEND_TRANSACTIONS="near_signAndSendTransactions"})(n||={});var _;((r)=>{})(_||={});import{SwapKitError as k,WalletOption as Kr}from"@swapkit/helpers";import{AbstractSigner as $r}from"ethers";import{Chain as C}from"@swapkit/helpers";var e=(r,u)=>{return(u.find((I)=>I.startsWith(G(r)))||"")?.split(":")?.[2]||""},G=(r)=>{switch(r){case C.Avalanche:return L;case C.Base:return sr;case C.BinanceSmartChain:return l;case C.Ethereum:return O;case C.THORChain:return Z;case C.Arbitrum:return E;case C.Optimism:return S;case C.Polygon:return rr;case C.Maya:return D;case C.Cosmos:return o;case C.Kujira:return T;default:return""}};class c extends $r{address;chain;walletconnect;provider;constructor({chain:r,provider:u,walletconnect:s}){super(u);this.chain=r,this.walletconnect=s,this.provider=u,this.address=""}getAddress=async()=>{if(!this.walletconnect)throw new k("wallet_walletconnect_connection_not_established");if(!this.address)this.address=e(this.chain,this.walletconnect.accounts);return this.address};signMessage=async(r)=>{let u=await this.walletconnect?.client.request({chainId:G(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sign",params:[r]}});return u.startsWith("0x")?u:`0x${u}`};signTransaction=()=>{throw new k("wallet_walletconnect_method_not_supported",{method:"signTransaction"})};signTypedData=()=>{throw new k("wallet_walletconnect_method_not_supported",{method:"signTypedData"})};sendTransaction=async({from:r,to:u,value:s,data:p})=>{let{toHexString:I}=await import("@swapkit/toolboxes/evm"),t={from:r,to:u,value:I(BigInt(s||0)),data:p};return await this.walletconnect?.client.request({chainId:G(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sendTransaction",params:[t]}})};connect=(r)=>{if(!r)throw new k({errorKey:"wallet_provider_not_found",info:{wallet:Kr.WALLETCONNECT,chain:this.chain}});return new c({chain:this.chain,walletconnect:this.walletconnect,provider:r})}}var pr=async({chain:r,walletconnect:u,provider:s})=>new c({chain:r,walletconnect:u,provider:s});import{SwapKitError as Ir}from"@swapkit/helpers";var br=(r)=>{let u=[];for(let s of r){let[p]=s.split(":");if(p&&!u.includes(p))u.push(p)}return u},qr=(r)=>{switch(r){case"eip155":return Object.values(R);case"cosmos":return Object.values(V);case"solana":return Object.values(P);case"polkadot":return Object.values(x);case"near":return Object.values(n);default:throw new Ir({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:r}})}},Rr=(r)=>{switch(r){case"eip155":return Object.values(i);case"cosmos":return[];case"solana":return Object.values(g);case"polkadot":return Object.values(d);case"near":return Object.values(_);default:throw new Ir({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:r}})}},tr=(r)=>{let u=br(r);return Object.fromEntries(u.map((s)=>[s,{methods:qr(s),chains:r.filter((p)=>p.startsWith(s)),events:Rr(s)}]))};var mr=er({name:"connectWalletconnect",walletType:U.WALLETCONNECT,supportedChains:[N.Arbitrum,N.Avalanche,N.Base,N.BinanceSmartChain,N.Cosmos,N.Ethereum,N.Kujira,N.Maya,N.Optimism,N.Polygon,N.THORChain],connect:({addChain:r,supportedChains:u,walletType:s})=>async function p(I,t){let f=kr({chains:I,supportedChains:u,walletType:s}),{walletConnectProjectId:y}=fr.get("apiKeys");if(!y)throw new Q("wallet_walletconnect_project_id_not_specified");let j=await Wr(f,y,t);if(!j)throw new Q("wallet_walletconnect_connection_not_established");let{session:X,accounts:v}=j;return await Promise.all(f.map(async(z)=>{let K=e(z,v),m=await Mr({session:X,address:K,chain:z,walletconnect:j});r({...m,address:K,chain:z,disconnect:j.disconnect,walletType:U.WALLETCONNECT})})),!0}}),Er=jr(mr);async function Mr({chain:r,walletconnect:u,address:s,session:p}){switch(r){case N.Arbitrum:case N.Avalanche:case N.Base:case N.BinanceSmartChain:case N.Ethereum:case N.Optimism:case N.Polygon:{let{getProvider:I,getEvmToolbox:t}=await import("@swapkit/toolboxes/evm"),f=await I(r),y=await pr({walletconnect:u,chain:r,provider:f});return await t(r,{provider:f,signer:y})}case N.THORChain:{let{SignMode:I}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:t}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),{encodePubkey:f,makeAuthInfoBytes:y}=(await import("@cosmjs/proto-signing")).default,{makeSignDoc:j}=(await import("@cosmjs/amino")).default,{getCosmosToolbox:X,buildAminoMsg:v,buildEncodedTxBody:z,createStargateClient:K,fromBase64:m,getDefaultChainFee:Cr,parseAminoMessageForDirectSigning:yr}=await import("@swapkit/toolboxes/cosmos"),M=await X(N.THORChain);async function hr(h){let b=await M.getAccount(h);if(r!==N.THORChain)return b;let[{address:B,algo:a,pubkey:q}]=await u?.client.request({chainId:Z,topic:p.topic,request:{method:"cosmos_getAccounts",params:{}}});return{...b,address:B,pubkey:{type:a,value:q}}}let W=Cr(r),Br=(h)=>u?.client.request({chainId:Z,topic:p.topic,request:{method:"cosmos_signAmino",params:{signerAddress:s,signDoc:h}}});async function H({assetValue:h,memo:$,...b}){let B=await M.getAccount(s);if(!B)throw new Q({errorKey:"wallet_missing_params",info:{account:B}});if(!B.pubkey)throw new Q({errorKey:"wallet_missing_params",info:{account:B,pubkey:B?.pubkey}});let{accountNumber:a,sequence:q=0}=B,A=[v({assetValue:h,memo:$,sender:s,...b})],Yr=Vr.THORChain,Jr=j(A,W,Yr,$,a?.toString(),q?.toString()||"0"),w=await Br(Jr),zr=await z({chain:N.THORChain,msgs:A.map(yr),memo:$||""}),Gr=f(B.pubkey),Qr=y([{pubkey:Gr,sequence:q}],W.amount,Number.parseInt(W.gas),void 0,void 0,I.SIGN_MODE_LEGACY_AMINO_JSON),Xr=t.fromPartial({bodyBytes:zr,authInfoBytes:Qr,signatures:[m(typeof w.signature==="string"?w.signature:w.signature.signature)]}),Zr=t.encode(Xr).finish();return(await(await K(fr.get("rpcUrls")[N.THORChain])).broadcastTx(Zr)).transactionHash}return{...M,transfer:(h)=>H(h),deposit:(h)=>H(h),getAccount:hr}}default:throw new Q({errorKey:"wallet_chain_not_supported",info:{chain:r,wallet:U.WALLETCONNECT}})}}async function Wr(r,u,s){let p;try{if(!u)throw new Q("wallet_walletconnect_project_id_not_specified");let I=tr(r.map(G)),{WalletConnectModalSign:t}=await import("@walletconnect/modal-sign-html"),f=new t({logger:ur,relayUrl:F,projectId:u,metadata:s?.metadata||Nr,...s?.core}),y=await f.getSession();if(y)await f.disconnect({topic:y.topic,reason:{code:0,message:"Resetting session"}});let j=await f.connect({requiredNamespaces:I}),X=Object.values(j.namespaces).flatMap((z)=>z.accounts);return{session:j,accounts:X,client:f,disconnect:async()=>{await f.disconnect({topic:j.topic,reason:{code:0,message:"User disconnected"}})}}}catch(I){}finally{if(p)p.closeModal()}return}export{mr as walletconnectWallet,Er as WC_SUPPORTED_CHAINS,Z as THORCHAIN_MAINNET_ID,rr as POLYGON_MAINNET_ID,S as OPTIMISM_MAINNET_ID,D as MAYACHAIN_MAINNET_ID,T as KUJIRA_MAINNET_ID,O as ETHEREUM_MAINNET_ID,P as DEFAULT_SOLANA_METHODS,g as DEFAULT_SOLANA_EVENTS,F as DEFAULT_RELAY_URL,x as DEFAULT_POLKADOT_METHODS,d as DEFAULT_POLKADOT_EVENTS,n as DEFAULT_NEAR_METHODS,_ as DEFAULT_NEAR_EVENTS,ur as DEFAULT_LOGGER,i as DEFAULT_EIP_155_EVENTS,R as DEFAULT_EIP155_METHODS,V as DEFAULT_COSMOS_METHODS,vr as DEFAULT_COSMOS_EVENTS,Nr as DEFAULT_APP_METADATA,o as COSMOS_HUB_MAINNET_ID,l as BSC_MAINNET_ID,sr as BASE_MAINNET_ID,L as AVALANCHE_MAINNET_ID,E as ARBITRUM_ONE_MAINNET_ID};
1
+ import{a as U5,b as g,c as A,d as N,e as P,f as s,g as d,h as C,i as l,j as h,k as I,l as t,m as e,n as c,o as V5,p as z5,q as H,r as i,s as T,t as FL,u as a,v as n,w as L5,x as O5,y as j5,z as F5}from"../../chunk-bexr8da2.js";import{A as X5}from"../../chunk-zfnkndsr.js";import{C as Z,D as y}from"../../chunk-qwd1kp32.js";import{Chain as j,ChainId as D5,SKConfig as Q5,SwapKitError as G,WalletOption as m,createWallet as R5,filterSupportedChains as B5}from"@swapkit/helpers";import{SwapKitError as E,WalletOption as k5}from"@swapkit/helpers";import{AbstractSigner as u5}from"ethers";import{Chain as Q,SKConfig as b5}from"@swapkit/helpers";var W=(L,O)=>{return(O.find((V)=>V.startsWith(v(L)))||"")?.split(":")?.[2]||""},v=(L)=>{switch(L){case Q.Avalanche:return N;case Q.Base:return t;case Q.BinanceSmartChain:return A;case Q.Ethereum:return g;case Q.THORChain:return P;case Q.Arbitrum:return l;case Q.Optimism:return h;case Q.Polygon:return I;case Q.Maya:return C;case Q.Cosmos:return s;case Q.Kujira:return d;case Q.Near:{let{isStagenet:O}=b5.get("envs");return O?c:e}default:return""}};class S extends u5{address;chain;walletconnect;provider;constructor({chain:L,provider:O,walletconnect:F}){super(O);this.chain=L,this.walletconnect=F,this.provider=O,this.address=""}getAddress=async()=>{if(!this.walletconnect)throw new E("wallet_walletconnect_connection_not_established");if(!this.address)this.address=W(this.chain,this.walletconnect.accounts);return this.address};signMessage=async(L)=>{let O=await this.walletconnect?.client.request({chainId:v(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sign",params:[L]}});return O.startsWith("0x")?O:`0x${O}`};signTransaction=()=>{throw new E("wallet_walletconnect_method_not_supported",{method:"signTransaction"})};signTypedData=()=>{throw new E("wallet_walletconnect_method_not_supported",{method:"signTypedData"})};sendTransaction=async({from:L,to:O,value:F,data:p})=>{let{toHexString:V}=await import("@swapkit/toolboxes/evm"),z={from:L,to:O,value:V(BigInt(F||0)),data:p};return await this.walletconnect?.client.request({chainId:v(this.chain),topic:this.walletconnect.session.topic,request:{method:"eth_sendTransaction",params:[z]}})};connect=(L)=>{if(!L)throw new E({errorKey:"wallet_provider_not_found",info:{wallet:k5.WALLETCONNECT,chain:this.chain}});return new S({chain:this.chain,walletconnect:this.walletconnect,provider:L})}}var o=async({chain:L,walletconnect:O,provider:F})=>new S({chain:L,walletconnect:O,provider:F});import{SwapKitError as p5}from"@swapkit/helpers";var W5=(L)=>{let O=[];for(let F of L){let[p]=F.split(":");if(p&&!O.includes(p))O.push(p)}return O},E5=(L)=>{switch(L){case"eip155":return Object.values(H);case"cosmos":return Object.values(T);case"solana":return Object.values(a);case"polkadot":return Object.values(L5);case"near":return Object.values(j5);default:throw new p5({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:L}})}},_5=(L)=>{switch(L){case"eip155":return Object.values(i);case"cosmos":return[];case"solana":return Object.values(n);case"polkadot":return Object.values(O5);case"near":return Object.values(F5);default:throw new p5({errorKey:"wallet_walletconnect_namespace_not_supported",info:{namespace:L}})}},f5=(L)=>{let O=W5(L);return Object.fromEntries(O.map((F)=>[F,{methods:E5(F),chains:L.filter((p)=>p.startsWith(F)),events:_5(F)}]))};var w5=R5({name:"connectWalletconnect",walletType:m.WALLETCONNECT,supportedChains:[j.Arbitrum,j.Avalanche,j.Base,j.BinanceSmartChain,j.Cosmos,j.Ethereum,j.Kujira,j.Maya,j.Near,j.Optimism,j.Polygon,j.THORChain],connect:({addChain:L,supportedChains:O,walletType:F})=>async function p(V,z){let f=B5({chains:V,supportedChains:O,walletType:F}),{walletConnectProjectId:X}=Q5.get("apiKeys");if(!X)throw new G("wallet_walletconnect_project_id_not_specified");let U=await S5(f,X,z);if(!U)throw new G("wallet_walletconnect_connection_not_established");let{session:$,accounts:Y}=U;return await Promise.all(f.map(async(q)=>{let r=W(q,Y),_=await H5({session:$,address:r,chain:q,walletconnect:U});L({..._,address:r,chain:q,disconnect:U.disconnect,walletType:m.WALLETCONNECT})})),!0}}),n5=X5(w5);async function H5({chain:L,walletconnect:O,address:F,session:p}){switch(L){case j.Arbitrum:case j.Avalanche:case j.Base:case j.BinanceSmartChain:case j.Ethereum:case j.Optimism:case j.Polygon:{let{getProvider:V,getEvmToolbox:z}=await import("@swapkit/toolboxes/evm"),f=await V(L),X=await o({walletconnect:O,chain:L,provider:f});return await z(L,{provider:f,signer:X})}case j.THORChain:{let{SignMode:V}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:z}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),{encodePubkey:f,makeAuthInfoBytes:X}=(await import("@cosmjs/proto-signing")).default,{makeSignDoc:U}=(await import("@cosmjs/amino")).default,{getCosmosToolbox:$,buildAminoMsg:Y,buildEncodedTxBody:q,createStargateClient:r,fromBase64:_,getDefaultChainFee:Z5,parseAminoMessageForDirectSigning:y5}=await import("@swapkit/toolboxes/cosmos"),D=await $(j.THORChain);async function G5(J){let k=await D.getAccount(J);if(L!==j.THORChain)return k;let[{address:K,algo:B,pubkey:u}]=await O?.client.request({chainId:P,topic:p.topic,request:{method:"cosmos_getAccounts",params:{}}});return{...k,address:K,pubkey:{type:B,value:u}}}let R=Z5(L),J5=(J)=>O?.client.request({chainId:P,topic:p.topic,request:{method:"cosmos_signAmino",params:{signerAddress:F,signDoc:J}}});async function x({assetValue:J,memo:b,...k}){let K=await D.getAccount(F);if(!K)throw new G({errorKey:"wallet_missing_params",info:{account:K}});if(!K.pubkey)throw new G({errorKey:"wallet_missing_params",info:{account:K,pubkey:K?.pubkey}});let{accountNumber:B,sequence:u=0}=K,M=[Y({assetValue:J,memo:b,sender:F,...k})],K5=D5.THORChain,$5=U(M,R,K5,b,B?.toString(),u?.toString()||"0"),w=await J5($5),q5=await q({chain:j.THORChain,msgs:M.map(y5),memo:b||""}),v5=f(K.pubkey),Y5=X([{pubkey:v5,sequence:u}],R.amount,Number.parseInt(R.gas),void 0,void 0,V.SIGN_MODE_LEGACY_AMINO_JSON),r5=z.fromPartial({bodyBytes:q5,authInfoBytes:Y5,signatures:[_(typeof w.signature==="string"?w.signature:w.signature.signature)]}),P5=z.encode(r5).finish();return(await(await r(Q5.get("rpcUrls")[j.THORChain])).broadcastTx(P5)).transactionHash}return{...D,transfer:(J)=>x(J),deposit:(J)=>x(J),getAccount:G5}}case j.Near:{let{getNearToolbox:V}=await import("@swapkit/toolboxes/near"),{DEFAULT_NEAR_METHODS:z}=await import("../../chunk-bexr8da2.js");return await V({signer:{getPublicKey(){return Promise.reject(new G("wallet_walletconnect_method_not_supported",{method:"getPublicKey"}))},signNep413Message(U,$,Y,q,r){return Promise.reject(new G("wallet_walletconnect_method_not_supported",{method:"signNep413Message"}))},async signTransaction(U){if(!O)throw new G("wallet_walletconnect_connection_not_established");let $=await O.client.request({topic:p.topic,chainId:v(j.Near),request:{method:z.NEAR_SIGN_AND_SEND_TRANSACTION,params:{transaction:U}}});return[new Uint8Array(32),$]},signDelegateAction(U){return Promise.reject(new G("wallet_walletconnect_method_not_supported",{method:"signDelegateAction"}))},getAddress(){return Promise.resolve(F)}}})}default:throw new G({errorKey:"wallet_chain_not_supported",info:{chain:L,wallet:m.WALLETCONNECT}})}}async function S5(L,O,F){let p;try{if(!O)throw new G("wallet_walletconnect_project_id_not_specified");let V=f5(L.map(v)),{WalletConnectModalSign:z}=await import("@walletconnect/modal-sign-html"),f=new z({logger:V5,relayUrl:U5,projectId:O,metadata:F?.metadata||z5,...F?.core}),X=await f.getSession();if(X)await f.disconnect({topic:X.topic,reason:{code:0,message:"Resetting session"}});let U=await f.connect({requiredNamespaces:V}),$=Object.values(U.namespaces).flatMap((q)=>q.accounts);return{session:U,accounts:$,client:f,disconnect:async()=>{await f.disconnect({topic:U.topic,reason:{code:0,message:"User disconnected"}})}}}catch(V){}finally{if(p)p.closeModal()}return}export{w5 as walletconnectWallet,n5 as WC_SUPPORTED_CHAINS,P as THORCHAIN_MAINNET_ID,I as POLYGON_MAINNET_ID,h as OPTIMISM_MAINNET_ID,c as NEAR_TESTNET_ID,e as NEAR_MAINNET_ID,C as MAYACHAIN_MAINNET_ID,d as KUJIRA_MAINNET_ID,g as ETHEREUM_MAINNET_ID,a as DEFAULT_SOLANA_METHODS,n as DEFAULT_SOLANA_EVENTS,U5 as DEFAULT_RELAY_URL,L5 as DEFAULT_POLKADOT_METHODS,O5 as DEFAULT_POLKADOT_EVENTS,j5 as DEFAULT_NEAR_METHODS,F5 as DEFAULT_NEAR_EVENTS,V5 as DEFAULT_LOGGER,i as DEFAULT_EIP_155_EVENTS,H as DEFAULT_EIP155_METHODS,T as DEFAULT_COSMOS_METHODS,FL as DEFAULT_COSMOS_EVENTS,z5 as DEFAULT_APP_METADATA,s as COSMOS_HUB_MAINNET_ID,A as BSC_MAINNET_ID,t as BASE_MAINNET_ID,N as AVALANCHE_MAINNET_ID,l as ARBITRUM_ONE_MAINNET_ID};
2
2
 
3
- //# debugId=69F5DD1DEC96EE7364756E2164756E21
3
+ //# debugId=2E19DE3633C3931E64756E2164756E21
@@ -1,14 +1,13 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/walletconnect/index.ts", "../src/walletconnect/constants.ts", "../src/walletconnect/evmSigner.ts", "../src/walletconnect/helpers.ts", "../src/walletconnect/namespaces.ts"],
3
+ "sources": ["../src/walletconnect/index.ts", "../src/walletconnect/evmSigner.ts", "../src/walletconnect/helpers.ts", "../src/walletconnect/namespaces.ts"],
4
4
  "sourcesContent": [
5
- "import type { StdSignDoc } from \"@cosmjs/amino\";\nimport {\n Chain,\n ChainId,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams, createThorchainToolbox } from \"@swapkit/toolboxes/cosmos\";\nimport type { WalletConnectModalSign } from \"@walletconnect/modal-sign-html\";\nimport type { SessionTypes, SignClientTypes } from \"@walletconnect/types\";\n\nimport { getWalletSupportedChains } from \"../utils\";\nimport {\n DEFAULT_APP_METADATA,\n DEFAULT_COSMOS_METHODS,\n DEFAULT_LOGGER,\n DEFAULT_RELAY_URL,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\nimport { getEVMSigner } from \"./evmSigner\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport { getRequiredNamespaces } from \"./namespaces\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const walletconnectWallet = createWallet({\n name: \"connectWalletconnect\",\n walletType: WalletOption.WALLETCONNECT,\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Cosmos,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectWalletconnect(\n chains: Chain[],\n walletconnectOptions?: SignClientTypes.Options,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const { walletConnectProjectId } = SKConfig.get(\"apiKeys\");\n\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n\n const walletconnect = await getWalletconnect(\n filteredChains,\n walletConnectProjectId,\n walletconnectOptions,\n );\n\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n const { session, accounts } = walletconnect;\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const address = getAddressByChain(chain, accounts);\n const toolbox = await getToolbox({ session, address, chain, walletconnect });\n\n addChain({\n ...toolbox,\n address,\n chain,\n disconnect: walletconnect.disconnect,\n walletType: WalletOption.WALLETCONNECT,\n });\n }),\n );\n\n return true;\n },\n});\n\nexport const WC_SUPPORTED_CHAINS = getWalletSupportedChains(walletconnectWallet);\nexport type Walletconnect = Awaited<ReturnType<typeof getWalletconnect>>;\n\nasync function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({\n chain,\n walletconnect,\n address,\n session,\n}: {\n walletconnect: Walletconnect;\n session: SessionTypes.Struct;\n chain: T;\n address: string;\n}) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ walletconnect, chain, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n\n case Chain.THORChain: {\n const { SignMode } = await import(\"cosmjs-types/cosmos/tx/signing/v1beta1/signing.js\");\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx.js\");\n const { encodePubkey, makeAuthInfoBytes } = (await import(\"@cosmjs/proto-signing\")).default;\n const { makeSignDoc } = (await import(\"@cosmjs/amino\")).default;\n const {\n getCosmosToolbox,\n buildAminoMsg,\n buildEncodedTxBody,\n createStargateClient,\n fromBase64,\n getDefaultChainFee,\n parseAminoMessageForDirectSigning,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n\n async function getAccount(accountAddress: string) {\n const cosmosToolbox = toolbox;\n const account = await (\n cosmosToolbox as Awaited<ReturnType<typeof createThorchainToolbox>>\n ).getAccount(accountAddress);\n\n if (chain !== Chain.THORChain) {\n return account;\n }\n\n const [{ address, algo, pubkey }] = (await walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_GET_ACCOUNTS,\n params: {},\n },\n })) as [{ address: string; algo: string; pubkey: string }];\n\n return { ...account, address, pubkey: { type: algo, value: pubkey } };\n }\n\n const fee = getDefaultChainFee(chain);\n\n const signRequest = (signDoc: StdSignDoc) =>\n walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_SIGN_AMINO,\n params: { signerAddress: address, signDoc },\n },\n });\n\n async function thorchainTransfer({\n assetValue,\n memo,\n ...rest\n }: GenericTransferParams | ThorchainDepositParams) {\n const account = await toolbox.getAccount(address);\n if (!account) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { account } });\n }\n\n if (!account.pubkey) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { account, pubkey: account?.pubkey },\n });\n }\n\n const { accountNumber, sequence = 0 } = account;\n\n const msgs = [buildAminoMsg({ assetValue, memo, sender: address, ...rest })];\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n msgs,\n fee,\n chainId,\n memo,\n accountNumber?.toString(),\n sequence?.toString() || \"0\",\n );\n\n const signature: any = await signRequest(signDoc);\n\n const bodyBytes = await buildEncodedTxBody({\n chain: Chain.THORChain,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n memo: memo || \"\",\n });\n const pubkey = encodePubkey(account.pubkey);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey, sequence }],\n fee.amount,\n Number.parseInt(fee.gas),\n undefined,\n undefined,\n SignMode.SIGN_MODE_LEGACY_AMINO_JSON,\n );\n\n const txRaw = TxRaw.fromPartial({\n bodyBytes,\n authInfoBytes,\n signatures: [\n fromBase64(\n typeof signature.signature === \"string\"\n ? signature.signature\n : signature.signature.signature,\n ),\n ],\n });\n const txBytes = TxRaw.encode(txRaw).finish();\n\n const broadcaster = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const result = await broadcaster.broadcastTx(txBytes);\n return result.transactionHash;\n }\n\n return {\n ...toolbox,\n transfer: (params: GenericTransferParams) => thorchainTransfer(params),\n deposit: (params: ThorchainDepositParams) => thorchainTransfer(params),\n getAccount,\n };\n }\n default:\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.WALLETCONNECT },\n });\n }\n}\n\nasync function getWalletconnect(\n chains: Chain[],\n walletConnectProjectId?: string,\n walletconnectOptions?: SignClientTypes.Options,\n) {\n let modal: WalletConnectModalSign | undefined;\n try {\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n const requiredNamespaces = getRequiredNamespaces(chains.map(chainToChainId));\n\n const { WalletConnectModalSign } = await import(\"@walletconnect/modal-sign-html\");\n\n const client = new WalletConnectModalSign({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n metadata: walletconnectOptions?.metadata || DEFAULT_APP_METADATA,\n ...walletconnectOptions?.core,\n });\n\n const oldSession = await client.getSession();\n\n // disconnect old Session cause we can't handle using it with current ui\n if (oldSession) {\n await client.disconnect({\n topic: oldSession.topic,\n reason: { code: 0, message: \"Resetting session\" },\n });\n }\n\n const session = await client.connect({ requiredNamespaces });\n\n const accounts = Object.values(session.namespaces).flatMap(\n (namespace: any) => namespace.accounts,\n );\n\n const disconnect = async () => {\n await client.disconnect({\n topic: session.topic,\n reason: { code: 0, message: \"User disconnected\" },\n });\n };\n\n return { session, accounts, client, disconnect };\n } catch (_e) {\n // Errors are handled by returning undefined\n } finally {\n if (modal) {\n // @ts-expect-error wrong typing\n modal.closeModal();\n }\n }\n return undefined;\n}\n",
6
- "import type { ClientMetadata } from \"./types\";\n\nexport const DEFAULT_RELAY_URL = \"wss://relay.walletconnect.com\";\n\nexport const ETHEREUM_MAINNET_ID = \"eip155:1\";\nexport const BSC_MAINNET_ID = \"eip155:56\";\nexport const AVALANCHE_MAINNET_ID = \"eip155:43114\";\nexport const THORCHAIN_MAINNET_ID = \"cosmos:thorchain\";\nexport const COSMOS_HUB_MAINNET_ID = \"cosmos:cosmoshub-4\";\nexport const KUJIRA_MAINNET_ID = \"cosmos:kaiyo-1\";\nexport const MAYACHAIN_MAINNET_ID = \"cosmos:mayachain-mainnet-v1\";\nexport const ARBITRUM_ONE_MAINNET_ID = \"eip155:42161\";\nexport const OPTIMISM_MAINNET_ID = \"eip155:10\";\nexport const POLYGON_MAINNET_ID = \"eip155:137\";\nexport const BASE_MAINNET_ID = \"eip155:8453\";\n\nexport const DEFAULT_LOGGER = \"debug\";\n\nexport const DEFAULT_APP_METADATA: ClientMetadata = {\n name: \"THORSwap\",\n description: \"THORSwap multi-chain dex aggregator powered by THORChain\",\n url: \"https://app.thorswap.finance/\",\n icons: [\"https://static.thorswap.net/logo.png\"],\n};\n\n/**\n * EIP155\n */\nexport enum DEFAULT_EIP155_METHODS {\n ETH_SEND_TRANSACTION = \"eth_sendTransaction\",\n // not supported by most WC wallets\n // ETH_SIGN_TRANSACTION = 'eth_signTransaction',\n ETH_SIGN = \"eth_sign\",\n PERSONAL_SIGN = \"personal_sign\",\n ETH_SIGN_TYPED_DATA = \"eth_signTypedData\",\n}\n\nexport enum DEFAULT_EIP_155_EVENTS {\n ETH_CHAIN_CHANGED = \"chainChanged\",\n ETH_ACCOUNTS_CHANGED = \"accountsChanged\",\n}\n\n/**\n * COSMOS\n */\nexport enum DEFAULT_COSMOS_METHODS {\n COSMOS_SIGN_DIRECT = \"cosmos_signDirect\",\n COSMOS_SIGN_AMINO = \"cosmos_signAmino\",\n COSMOS_GET_ACCOUNTS = \"cosmos_getAccounts\",\n}\n\nexport enum DEFAULT_COSMOS_EVENTS {}\n\n/**\n * SOLANA\n */\nexport enum DEFAULT_SOLANA_METHODS {\n SOL_SIGN_TRANSACTION = \"solana_signTransaction\",\n SOL_SIGN_MESSAGE = \"solana_signMessage\",\n}\n\nexport enum DEFAULT_SOLANA_EVENTS {}\n\n/**\n * POLKADOT\n */\nexport enum DEFAULT_POLKADOT_METHODS {\n POLKADOT_SIGN_TRANSACTION = \"polkadot_signTransaction\",\n POLKADOT_SIGN_MESSAGE = \"polkadot_signMessage\",\n}\n\nexport enum DEFAULT_POLKADOT_EVENTS {}\n\n/**\n * NEAR\n */\nexport enum DEFAULT_NEAR_METHODS {\n NEAR_SIGN_IN = \"near_signIn\",\n NEAR_SIGN_OUT = \"near_signOut\",\n NEAR_GET_ACCOUNTS = \"near_getAccounts\",\n NEAR_SIGN_AND_SEND_TRANSACTION = \"near_signAndSendTransaction\",\n NEAR_SIGN_AND_SEND_TRANSACTIONS = \"near_signAndSendTransactions\",\n}\n\nexport enum DEFAULT_NEAR_EVENTS {}\n",
5
+ "import type { StdSignDoc } from \"@cosmjs/amino\";\nimport {\n Chain,\n ChainId,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams, createThorchainToolbox } from \"@swapkit/toolboxes/cosmos\";\nimport type { NearSigner } from \"@swapkit/toolboxes/near\";\nimport type { WalletConnectModalSign } from \"@walletconnect/modal-sign-html\";\nimport type { SessionTypes, SignClientTypes } from \"@walletconnect/types\";\nimport type { Transaction } from \"near-api-js/lib/transaction\";\n\nimport { getWalletSupportedChains } from \"../utils\";\nimport {\n DEFAULT_APP_METADATA,\n DEFAULT_COSMOS_METHODS,\n DEFAULT_LOGGER,\n DEFAULT_RELAY_URL,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\nimport { getEVMSigner } from \"./evmSigner\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport { getRequiredNamespaces } from \"./namespaces\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const walletconnectWallet = createWallet({\n name: \"connectWalletconnect\",\n walletType: WalletOption.WALLETCONNECT,\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Cosmos,\n Chain.Ethereum,\n Chain.Kujira,\n Chain.Maya,\n Chain.Near,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectWalletconnect(\n chains: Chain[],\n walletconnectOptions?: SignClientTypes.Options,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const { walletConnectProjectId } = SKConfig.get(\"apiKeys\");\n\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n\n const walletconnect = await getWalletconnect(\n filteredChains,\n walletConnectProjectId,\n walletconnectOptions,\n );\n\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n\n const { session, accounts } = walletconnect;\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const address = getAddressByChain(chain, accounts);\n const toolbox = await getToolbox({ session, address, chain, walletconnect });\n\n addChain({\n ...toolbox,\n address,\n chain,\n disconnect: walletconnect.disconnect,\n walletType: WalletOption.WALLETCONNECT,\n });\n }),\n );\n\n return true;\n },\n});\n\nexport const WC_SUPPORTED_CHAINS = getWalletSupportedChains(walletconnectWallet);\nexport type Walletconnect = Awaited<ReturnType<typeof getWalletconnect>>;\n\nasync function getToolbox<T extends (typeof WC_SUPPORTED_CHAINS)[number]>({\n chain,\n walletconnect,\n address,\n session,\n}: {\n walletconnect: Walletconnect;\n session: SessionTypes.Struct;\n chain: T;\n address: string;\n}) {\n switch (chain) {\n case Chain.Arbitrum:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.BinanceSmartChain:\n case Chain.Ethereum:\n case Chain.Optimism:\n case Chain.Polygon: {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n const provider = await getProvider(chain);\n const signer = await getEVMSigner({ walletconnect, chain, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n\n case Chain.THORChain: {\n const { SignMode } = await import(\"cosmjs-types/cosmos/tx/signing/v1beta1/signing.js\");\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx.js\");\n const { encodePubkey, makeAuthInfoBytes } = (await import(\"@cosmjs/proto-signing\")).default;\n const { makeSignDoc } = (await import(\"@cosmjs/amino\")).default;\n const {\n getCosmosToolbox,\n buildAminoMsg,\n buildEncodedTxBody,\n createStargateClient,\n fromBase64,\n getDefaultChainFee,\n parseAminoMessageForDirectSigning,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n\n async function getAccount(accountAddress: string) {\n const cosmosToolbox = toolbox;\n const account = await (\n cosmosToolbox as Awaited<ReturnType<typeof createThorchainToolbox>>\n ).getAccount(accountAddress);\n\n if (chain !== Chain.THORChain) {\n return account;\n }\n\n const [{ address, algo, pubkey }] = (await walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_GET_ACCOUNTS,\n params: {},\n },\n })) as [{ address: string; algo: string; pubkey: string }];\n\n return { ...account, address, pubkey: { type: algo, value: pubkey } };\n }\n\n const fee = getDefaultChainFee(chain);\n\n const signRequest = (signDoc: StdSignDoc) =>\n walletconnect?.client.request({\n chainId: THORCHAIN_MAINNET_ID,\n topic: session.topic,\n request: {\n method: DEFAULT_COSMOS_METHODS.COSMOS_SIGN_AMINO,\n params: { signerAddress: address, signDoc },\n },\n });\n\n async function thorchainTransfer({\n assetValue,\n memo,\n ...rest\n }: GenericTransferParams | ThorchainDepositParams) {\n const account = await toolbox.getAccount(address);\n if (!account) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { account } });\n }\n\n if (!account.pubkey) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { account, pubkey: account?.pubkey },\n });\n }\n\n const { accountNumber, sequence = 0 } = account;\n\n const msgs = [buildAminoMsg({ assetValue, memo, sender: address, ...rest })];\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n msgs,\n fee,\n chainId,\n memo,\n accountNumber?.toString(),\n sequence?.toString() || \"0\",\n );\n\n const signature: any = await signRequest(signDoc);\n\n const bodyBytes = await buildEncodedTxBody({\n chain: Chain.THORChain,\n msgs: msgs.map(parseAminoMessageForDirectSigning),\n memo: memo || \"\",\n });\n const pubkey = encodePubkey(account.pubkey);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey, sequence }],\n fee.amount,\n Number.parseInt(fee.gas),\n undefined,\n undefined,\n SignMode.SIGN_MODE_LEGACY_AMINO_JSON,\n );\n\n const txRaw = TxRaw.fromPartial({\n bodyBytes,\n authInfoBytes,\n signatures: [\n fromBase64(\n typeof signature.signature === \"string\"\n ? signature.signature\n : signature.signature.signature,\n ),\n ],\n });\n const txBytes = TxRaw.encode(txRaw).finish();\n\n const broadcaster = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const result = await broadcaster.broadcastTx(txBytes);\n return result.transactionHash;\n }\n\n return {\n ...toolbox,\n transfer: (params: GenericTransferParams) => thorchainTransfer(params),\n deposit: (params: ThorchainDepositParams) => thorchainTransfer(params),\n getAccount,\n };\n }\n\n case Chain.Near: {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const { DEFAULT_NEAR_METHODS } = await import(\"./constants\");\n\n // Create a NEAR signer that uses WalletConnect\n const signer = {\n getPublicKey() {\n // WalletConnect NEAR doesn't expose public key directly\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"getPublicKey\",\n }),\n );\n },\n\n signNep413Message(\n _message: string,\n _accountId: string,\n _recipient: string,\n _nonce: Uint8Array,\n _callbackUrl?: string,\n ) {\n // WalletConnect NEAR spec doesn't include NEP-413 message signing\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signNep413Message\",\n }),\n );\n },\n\n async signTransaction(transaction: Transaction) {\n if (!walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n // WalletConnect signs and sends in one operation\n const result = await walletconnect.client.request({\n topic: session.topic,\n chainId: chainToChainId(Chain.Near),\n request: {\n method: DEFAULT_NEAR_METHODS.NEAR_SIGN_AND_SEND_TRANSACTION,\n params: { transaction },\n },\n });\n // Return dummy hash and result\n return [new Uint8Array(32), result];\n },\n\n signDelegateAction(_delegateAction: any) {\n return Promise.reject(\n new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signDelegateAction\",\n }),\n );\n },\n\n getAddress() {\n return Promise.resolve(address);\n },\n } as NearSigner;\n\n const toolbox = await getNearToolbox({ signer });\n return toolbox;\n }\n\n default:\n throw new SwapKitError({\n errorKey: \"wallet_chain_not_supported\",\n info: { chain, wallet: WalletOption.WALLETCONNECT },\n });\n }\n}\n\nasync function getWalletconnect(\n chains: Chain[],\n walletConnectProjectId?: string,\n walletconnectOptions?: SignClientTypes.Options,\n) {\n let modal: WalletConnectModalSign | undefined;\n try {\n if (!walletConnectProjectId) {\n throw new SwapKitError(\"wallet_walletconnect_project_id_not_specified\");\n }\n const requiredNamespaces = getRequiredNamespaces(chains.map(chainToChainId));\n\n const { WalletConnectModalSign } = await import(\"@walletconnect/modal-sign-html\");\n\n const client = new WalletConnectModalSign({\n logger: DEFAULT_LOGGER,\n relayUrl: DEFAULT_RELAY_URL,\n projectId: walletConnectProjectId,\n metadata: walletconnectOptions?.metadata || DEFAULT_APP_METADATA,\n ...walletconnectOptions?.core,\n });\n\n const oldSession = await client.getSession();\n\n // disconnect old Session cause we can't handle using it with current ui\n if (oldSession) {\n await client.disconnect({\n topic: oldSession.topic,\n reason: { code: 0, message: \"Resetting session\" },\n });\n }\n\n const session = await client.connect({ requiredNamespaces });\n\n const accounts = Object.values(session.namespaces).flatMap(\n (namespace: any) => namespace.accounts,\n );\n\n const disconnect = async () => {\n await client.disconnect({\n topic: session.topic,\n reason: { code: 0, message: \"User disconnected\" },\n });\n };\n\n return { session, accounts, client, disconnect };\n } catch (_e) {\n // Errors are handled by returning undefined\n } finally {\n if (modal) {\n // @ts-expect-error wrong typing\n modal.closeModal();\n }\n }\n return undefined;\n}\n",
7
6
  "import { type EVMChain, SwapKitError, WalletOption } from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest, TransactionResponse } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { DEFAULT_EIP155_METHODS } from \"./constants\";\nimport { chainToChainId, getAddressByChain } from \"./helpers\";\nimport type { Walletconnect } from \"./index\";\n\ninterface WalletconnectEVMSignerParams {\n chain: EVMChain;\n walletconnect: Walletconnect;\n provider: Provider | JsonRpcProvider;\n}\n\nclass WalletconnectSigner extends AbstractSigner {\n address: string;\n\n private chain: EVMChain;\n private walletconnect: Walletconnect;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, provider, walletconnect }: WalletconnectEVMSignerParams) {\n super(provider);\n this.chain = chain;\n this.walletconnect = walletconnect;\n this.provider = provider;\n this.address = \"\";\n }\n\n // biome-ignore lint/suspicious/useAwait: fulfil implementation type\n getAddress = async () => {\n if (!this.walletconnect) {\n throw new SwapKitError(\"wallet_walletconnect_connection_not_established\");\n }\n if (!this.address) {\n this.address = getAddressByChain(this.chain, this.walletconnect.accounts);\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n // this is probably broken\n const txHash = (await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SIGN,\n params: [message],\n },\n })) as string;\n\n return txHash.startsWith(\"0x\") ? txHash : `0x${txHash}`;\n };\n\n signTransaction = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTransaction\",\n });\n\n // const baseTx = {\n // from,\n // to,\n // value: BigNumber.from(value || 0).toHexString(),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n // ANCHOR (@Towan) - Implement in future\n signTypedData = () => {\n throw new SwapKitError(\"wallet_walletconnect_method_not_supported\", {\n method: \"signTypedData\",\n });\n\n // const { toHexString } = await import('@swapkit/toolboxes/evm');\n\n // const baseTx = {\n // from,\n // to,\n // value: toHexString(value || 0n),\n // data,\n // };\n\n // const txHash = (await this.walletconnect?.client.request({\n // chainId: chainToChainId(this.chain),\n // topic: this.walletconnect.session.topic,\n // request: {\n // method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA,\n // params: [baseTx],\n // },\n // })) as string;\n\n // return txHash.startsWith('0x') ? txHash : `0x${txHash}`;\n };\n\n sendTransaction = async ({ from, to, value, data }: TransactionRequest) => {\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n\n const baseTx = {\n from,\n to,\n value: toHexString(BigInt(value || 0)),\n data,\n };\n const response = await this.walletconnect?.client.request({\n chainId: chainToChainId(this.chain),\n topic: this.walletconnect.session.topic,\n request: {\n method: DEFAULT_EIP155_METHODS.ETH_SEND_TRANSACTION,\n params: [baseTx],\n },\n });\n\n return response as TransactionResponse;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: { wallet: WalletOption.WALLETCONNECT, chain: this.chain },\n });\n }\n\n return new WalletconnectSigner({\n chain: this.chain,\n walletconnect: this.walletconnect,\n provider,\n });\n };\n}\nexport const getEVMSigner = async ({\n chain,\n walletconnect,\n provider,\n}: WalletconnectEVMSignerParams) => new WalletconnectSigner({ chain, walletconnect, provider });\n",
8
- "import { Chain, type EVMChain } from \"@swapkit/helpers\";\n\nimport {\n ARBITRUM_ONE_MAINNET_ID,\n AVALANCHE_MAINNET_ID,\n BASE_MAINNET_ID,\n BSC_MAINNET_ID,\n COSMOS_HUB_MAINNET_ID,\n ETHEREUM_MAINNET_ID,\n KUJIRA_MAINNET_ID,\n MAYACHAIN_MAINNET_ID,\n OPTIMISM_MAINNET_ID,\n POLYGON_MAINNET_ID,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\n\nexport const getAddressByChain = (\n chain: EVMChain | Chain.THORChain | Chain.Maya | Chain.Kujira | Chain.Cosmos,\n accounts: string[],\n) => {\n const account = accounts.find((account) => account.startsWith(chainToChainId(chain))) || \"\";\n const address = account?.split(\":\")?.[2];\n\n return address || \"\";\n};\n\nexport const chainToChainId = (chain: Chain) => {\n switch (chain) {\n case Chain.Avalanche:\n return AVALANCHE_MAINNET_ID;\n case Chain.Base:\n return BASE_MAINNET_ID;\n case Chain.BinanceSmartChain:\n return BSC_MAINNET_ID;\n case Chain.Ethereum:\n return ETHEREUM_MAINNET_ID;\n case Chain.THORChain:\n return THORCHAIN_MAINNET_ID;\n case Chain.Arbitrum:\n return ARBITRUM_ONE_MAINNET_ID;\n case Chain.Optimism:\n return OPTIMISM_MAINNET_ID;\n case Chain.Polygon:\n return POLYGON_MAINNET_ID;\n case Chain.Maya:\n return MAYACHAIN_MAINNET_ID;\n case Chain.Cosmos:\n return COSMOS_HUB_MAINNET_ID;\n case Chain.Kujira:\n return KUJIRA_MAINNET_ID;\n default:\n return \"\";\n }\n};\n",
7
+ "import { Chain, type EVMChain, SKConfig } from \"@swapkit/helpers\";\n\nimport {\n ARBITRUM_ONE_MAINNET_ID,\n AVALANCHE_MAINNET_ID,\n BASE_MAINNET_ID,\n BSC_MAINNET_ID,\n COSMOS_HUB_MAINNET_ID,\n ETHEREUM_MAINNET_ID,\n KUJIRA_MAINNET_ID,\n MAYACHAIN_MAINNET_ID,\n NEAR_MAINNET_ID,\n NEAR_TESTNET_ID,\n OPTIMISM_MAINNET_ID,\n POLYGON_MAINNET_ID,\n THORCHAIN_MAINNET_ID,\n} from \"./constants\";\n\nexport const getAddressByChain = (\n chain: EVMChain | Chain.THORChain | Chain.Maya | Chain.Kujira | Chain.Cosmos | Chain.Near,\n accounts: string[],\n) => {\n const account = accounts.find((account) => account.startsWith(chainToChainId(chain))) || \"\";\n const address = account?.split(\":\")?.[2];\n\n return address || \"\";\n};\n\nexport const chainToChainId = (chain: Chain) => {\n switch (chain) {\n case Chain.Avalanche:\n return AVALANCHE_MAINNET_ID;\n case Chain.Base:\n return BASE_MAINNET_ID;\n case Chain.BinanceSmartChain:\n return BSC_MAINNET_ID;\n case Chain.Ethereum:\n return ETHEREUM_MAINNET_ID;\n case Chain.THORChain:\n return THORCHAIN_MAINNET_ID;\n case Chain.Arbitrum:\n return ARBITRUM_ONE_MAINNET_ID;\n case Chain.Optimism:\n return OPTIMISM_MAINNET_ID;\n case Chain.Polygon:\n return POLYGON_MAINNET_ID;\n case Chain.Maya:\n return MAYACHAIN_MAINNET_ID;\n case Chain.Cosmos:\n return COSMOS_HUB_MAINNET_ID;\n case Chain.Kujira:\n return KUJIRA_MAINNET_ID;\n case Chain.Near: {\n // Use testnet if stagenet is enabled\n const { isStagenet } = SKConfig.get(\"envs\");\n return isStagenet ? NEAR_TESTNET_ID : NEAR_MAINNET_ID;\n }\n default:\n return \"\";\n }\n};\n",
9
8
  "import type { ProposalTypes } from \"@walletconnect/types\";\n\nimport { SwapKitError } from \"@swapkit/helpers\";\nimport {\n DEFAULT_COSMOS_METHODS,\n DEFAULT_EIP155_METHODS,\n DEFAULT_EIP_155_EVENTS,\n DEFAULT_NEAR_EVENTS,\n DEFAULT_NEAR_METHODS,\n DEFAULT_POLKADOT_EVENTS,\n DEFAULT_POLKADOT_METHODS,\n DEFAULT_SOLANA_EVENTS,\n DEFAULT_SOLANA_METHODS,\n} from \"./constants\";\n\nexport const getNamespacesFromChains = (chains: string[]) => {\n const supportedNamespaces: string[] = [];\n for (const chainId of chains) {\n const [namespace] = chainId.split(\":\");\n if (namespace && !supportedNamespaces.includes(namespace)) {\n supportedNamespaces.push(namespace);\n }\n }\n\n return supportedNamespaces;\n};\n\nexport const getSupportedMethodsByNamespace = (namespace: string) => {\n switch (namespace) {\n case \"eip155\":\n return Object.values(DEFAULT_EIP155_METHODS);\n case \"cosmos\":\n return Object.values(DEFAULT_COSMOS_METHODS);\n case \"solana\":\n return Object.values(DEFAULT_SOLANA_METHODS);\n case \"polkadot\":\n return Object.values(DEFAULT_POLKADOT_METHODS);\n case \"near\":\n return Object.values(DEFAULT_NEAR_METHODS);\n default:\n throw new SwapKitError({\n errorKey: \"wallet_walletconnect_namespace_not_supported\",\n info: { namespace },\n });\n }\n};\n\nexport const getSupportedEventsByNamespace = (namespace: string) => {\n switch (namespace) {\n case \"eip155\":\n return Object.values(DEFAULT_EIP_155_EVENTS);\n case \"cosmos\":\n return [];\n case \"solana\":\n return Object.values(DEFAULT_SOLANA_EVENTS);\n case \"polkadot\":\n return Object.values(DEFAULT_POLKADOT_EVENTS);\n case \"near\":\n return Object.values(DEFAULT_NEAR_EVENTS);\n default:\n throw new SwapKitError({\n errorKey: \"wallet_walletconnect_namespace_not_supported\",\n info: { namespace },\n });\n }\n};\n\nexport const getRequiredNamespaces = (chains: string[]): ProposalTypes.RequiredNamespaces => {\n const selectedNamespaces = getNamespacesFromChains(chains);\n\n return Object.fromEntries(\n selectedNamespaces.map((namespace) => [\n namespace,\n {\n methods: getSupportedMethodsByNamespace(namespace),\n chains: chains.filter((chain) => chain.startsWith(namespace)),\n events: getSupportedEventsByNamespace(namespace) as any[],\n },\n ]),\n );\n};\n"
10
9
  ],
11
- "mappings": "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",
12
- "debugId": "69F5DD1DEC96EE7364756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "2E19DE3633C3931E64756E2164756E21",
13
12
  "names": []
14
13
  }
package/package.json CHANGED
@@ -11,6 +11,7 @@
11
11
  "@ledgerhq/hw-app-btc": "10.9.2",
12
12
  "@ledgerhq/hw-app-cosmos": "6.32.2",
13
13
  "@ledgerhq/hw-app-eth": "6.45.6",
14
+ "@ledgerhq/hw-app-near": "6.31.2",
14
15
  "@ledgerhq/hw-app-xrp": "6.31.2",
15
16
  "@ledgerhq/hw-transport": "6.31.6",
16
17
  "@ledgerhq/hw-transport-webusb": "6.29.6",
@@ -22,13 +23,14 @@
22
23
  "@scure/base": "1.2.6",
23
24
  "@scure/bip39": "1.6.0",
24
25
  "@solana/web3.js": "1.98.2",
25
- "@swapkit/helpers": "3.0.0-beta.14",
26
- "@swapkit/toolboxes": "1.0.0-beta.19",
26
+ "@swapkit/helpers": "3.0.0-beta.15",
27
+ "@swapkit/toolboxes": "1.0.0-beta.20",
27
28
  "@trezor/connect-web": "9.6.0",
28
29
  "@walletconnect/modal-sign-html": "2.7.0",
29
30
  "bitcoinjs-lib": "6.1.7",
30
31
  "blakejs": "1.2.1",
31
32
  "cosmjs-types": "0.9.0",
33
+ "near-api-js": "^6.1.0",
32
34
  "ripple-binary-codec": "2.4.0",
33
35
  "sats-connect": "3.5.0",
34
36
  "ts-pattern": "5.7.1"
@@ -159,5 +161,5 @@
159
161
  "type-check:go": "tsgo"
160
162
  },
161
163
  "type": "module",
162
- "version": "3.0.0-beta.22"
164
+ "version": "3.0.0-beta.23"
163
165
  }
package/src/ctrl/index.ts CHANGED
@@ -8,6 +8,7 @@ import {
8
8
  filterSupportedChains,
9
9
  } from "@swapkit/helpers";
10
10
 
11
+ import type { NearCreateTransactionParams } from "@swapkit/toolboxes/near";
11
12
  import { getWalletSupportedChains } from "../utils";
12
13
  import { getCtrlAddress, getCtrlMethods, getCtrlProvider, walletTransfer } from "./walletHelpers";
13
14
 
@@ -27,6 +28,7 @@ export const ctrlWallet = createWallet({
27
28
  Chain.Kujira,
28
29
  Chain.Litecoin,
29
30
  Chain.Maya,
31
+ Chain.Near,
30
32
  Chain.Optimism,
31
33
  Chain.Polygon,
32
34
  Chain.Solana,
@@ -153,6 +155,87 @@ async function getWalletMethods(chain: (typeof CTRL_SUPPORTED_CHAINS)[number]) {
153
155
  });
154
156
  }
155
157
 
158
+ case Chain.Near: {
159
+ if (!window.xfi?.near) {
160
+ throw new SwapKitError("wallet_ctrl_not_found", { chain: Chain.Near });
161
+ }
162
+
163
+ const { createNearSignerFromProvider } = await import("../helpers/near");
164
+ const { getNearToolbox } = await import("@swapkit/toolboxes/near");
165
+
166
+ const provider = window.xfi.near;
167
+ const signer = await createNearSignerFromProvider(provider, "CTRL");
168
+ const accountId = await signer.getAddress();
169
+ const toolbox = await getNearToolbox({ signer });
170
+
171
+ // Override transfer method to use CTRL's direct API
172
+ const transfer = async (params: GenericTransferParams) => {
173
+ const { transfer: transferAction } = await import("near-api-js/lib/transaction");
174
+
175
+ // Convert AssetValue to NEAR amount (yoctoNEAR)
176
+ const amountInYocto = params.assetValue.getBaseValue("string");
177
+
178
+ // Create transfer action
179
+ const action = transferAction(BigInt(amountInYocto));
180
+
181
+ // Create transaction object for CTRL
182
+ const transaction = {
183
+ signerId: accountId,
184
+ receiverId: params.recipient,
185
+ actions: [action],
186
+ };
187
+
188
+ const txHash: string = await provider.request({
189
+ method: "signAndSendTransaction",
190
+ params: {
191
+ transaction,
192
+ },
193
+ });
194
+
195
+ return txHash;
196
+ };
197
+
198
+ // Override createTransaction to build NEAR transactions for CTRL
199
+ const createTransaction = async (params: NearCreateTransactionParams) => {
200
+ const { functionCall, transfer: transferAction } = await import(
201
+ "near-api-js/lib/transaction"
202
+ );
203
+
204
+ if (params.functionCall) {
205
+ // Function call transaction
206
+ const { methodName, args, attachedDeposit } = params.functionCall;
207
+ const action = functionCall(
208
+ methodName,
209
+ args,
210
+ BigInt("30000000000000"), // 30 TGas default
211
+ BigInt(attachedDeposit || "0"),
212
+ );
213
+
214
+ return {
215
+ signerId: accountId,
216
+ receiverId: params.recipient,
217
+ actions: [action],
218
+ };
219
+ }
220
+
221
+ // Simple transfer transaction
222
+ const amountInYocto = params.assetValue.getBaseValue("string");
223
+ const action = transferAction(BigInt(amountInYocto));
224
+
225
+ return {
226
+ signerId: accountId,
227
+ receiverId: params.recipient,
228
+ actions: [action],
229
+ };
230
+ };
231
+
232
+ return {
233
+ ...toolbox,
234
+ transfer,
235
+ createTransaction,
236
+ };
237
+ }
238
+
156
239
  default:
157
240
  return null;
158
241
  }
@@ -92,6 +92,7 @@ async function transaction({
92
92
  });
93
93
  }
94
94
 
95
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>
95
96
  export async function getCtrlAddress(chain: Chain) {
96
97
  try {
97
98
  const eipProvider = (await getCtrlProvider(chain)) as Eip1193Provider;
@@ -146,6 +147,21 @@ export async function getCtrlAddress(chain: Chain) {
146
147
  return accounts.publicKey.toString();
147
148
  }
148
149
 
150
+ if (chain === Chain.Near) {
151
+ if (!window.xfi?.near) {
152
+ throw new SwapKitError("wallet_ctrl_not_found", { chain: Chain.Near });
153
+ }
154
+
155
+ if (!window.xfi.near.isSignedIn?.()) {
156
+ const result = await window.xfi.near.request<string[]>?.({
157
+ method: "connect",
158
+ });
159
+ return result?.[0] || "";
160
+ }
161
+
162
+ return window.xfi.near.getAccountId?.() || "";
163
+ }
164
+
149
165
  const accounts = await eipProvider.request({ method: "request_accounts", params: [] });
150
166
  return accounts[0];
151
167
  } catch (_error) {
@@ -0,0 +1,286 @@
1
+ /**
2
+ * NEAR Browser Wallet Provider Interface Definitions
3
+ *
4
+ * This file contains the standard TypeScript interface definitions for NEAR browser wallet providers
5
+ * that inject themselves into the window object (e.g., OKX, XDEFI/CTRL, etc.)
6
+ *
7
+ * Based on:
8
+ * - NEAR Protocol wallet-selector library
9
+ * - Common patterns from OKX, XDEFI/CTRL, and other NEAR wallet implementations
10
+ * - NEAR API JS types
11
+ */
12
+
13
+ import type { PublicKey } from "near-api-js/lib/utils";
14
+
15
+ /**
16
+ * Transaction action types supported by NEAR
17
+ */
18
+ export interface NearAction {
19
+ type: "FunctionCall" | "Transfer" | "Stake" | "AddKey" | "DeleteKey" | "DeleteAccount";
20
+ params?: {
21
+ methodName?: string;
22
+ args?: object;
23
+ gas?: string;
24
+ deposit?: string;
25
+ publicKey?: string;
26
+ beneficiaryId?: string;
27
+ };
28
+ }
29
+
30
+ /**
31
+ * Transaction structure for NEAR
32
+ */
33
+ export interface NearTransaction {
34
+ receiverId: string;
35
+ actions: NearAction[];
36
+ // Optional fields
37
+ signerId?: string;
38
+ publicKey?: string;
39
+ nonce?: number;
40
+ recentBlockHash?: string;
41
+ }
42
+
43
+ /**
44
+ * Message signing parameters
45
+ */
46
+ export interface NearSignMessageParams {
47
+ message: string;
48
+ recipient: string;
49
+ nonce: Buffer | Uint8Array;
50
+ callbackUrl?: string;
51
+ state?: string;
52
+ }
53
+
54
+ /**
55
+ * Signed message response
56
+ */
57
+ export interface NearSignedMessage {
58
+ accountId: string;
59
+ publicKey: string;
60
+ signature: string;
61
+ // Optional callback data
62
+ callbackUrl?: string;
63
+ state?: string;
64
+ }
65
+
66
+ /**
67
+ * Sign-in request parameters
68
+ */
69
+ export interface NearSignInParams {
70
+ contractId?: string;
71
+ methodNames?: string[];
72
+ // Success and failure URLs for browser wallets
73
+ successUrl?: string;
74
+ failureUrl?: string;
75
+ }
76
+
77
+ /**
78
+ * Account information
79
+ */
80
+ export interface NearAccount {
81
+ accountId: string;
82
+ publicKey?: string;
83
+ }
84
+
85
+ /**
86
+ * Access key information
87
+ */
88
+ export interface NearAccessKey {
89
+ publicKey: PublicKey;
90
+ accessKey: {
91
+ nonce: number;
92
+ permission:
93
+ | "FullAccess"
94
+ | {
95
+ FunctionCall: {
96
+ allowance?: string;
97
+ receiverId: string;
98
+ methodNames: string[];
99
+ };
100
+ };
101
+ };
102
+ }
103
+
104
+ /**
105
+ * Transaction execution result
106
+ */
107
+ export interface NearFinalExecutionOutcome {
108
+ status: object;
109
+ transaction: object;
110
+ transaction_outcome: object;
111
+ receipts_outcome: object[];
112
+ }
113
+
114
+ /**
115
+ * Standard NEAR browser wallet provider interface
116
+ *
117
+ * This interface represents the common API surface that NEAR browser wallets
118
+ * expose when they inject themselves into the window object.
119
+ */
120
+ export interface NearBrowserWalletProvider {
121
+ // Connection Management
122
+ /**
123
+ * Request connection to the wallet
124
+ * Returns array of account IDs that were connected
125
+ */
126
+ connect(): Promise<string[]>;
127
+
128
+ /**
129
+ * Alternative connection method used by some wallets
130
+ */
131
+ request?(params: { method: "connect"; params?: any }): Promise<string[]>;
132
+
133
+ /**
134
+ * Disconnect from the wallet
135
+ */
136
+ disconnect(): Promise<void>;
137
+
138
+ /**
139
+ * Sign out from the wallet (some wallets use this instead of disconnect)
140
+ */
141
+ signOut?(): void;
142
+
143
+ // Account Management
144
+ /**
145
+ * Check if user is signed in
146
+ */
147
+ isSignedIn?(): boolean;
148
+
149
+ /**
150
+ * Get the current account ID
151
+ */
152
+ getAccountId(): string | Promise<string>;
153
+
154
+ /**
155
+ * Get list of accounts (some wallets support multiple accounts)
156
+ */
157
+ getAccounts?(): Promise<NearAccount[]>;
158
+
159
+ /**
160
+ * Get the public key for the current account
161
+ */
162
+ getPublicKey?(): Promise<string>;
163
+
164
+ // Legacy sign-in methods (used by some wallets)
165
+ /**
166
+ * Request sign in (legacy method)
167
+ */
168
+ requestSignIn?(params: NearSignInParams): Promise<NearAccount>;
169
+
170
+ // Signing Operations
171
+ /**
172
+ * Sign a message
173
+ */
174
+ signMessage(params: NearSignMessageParams): Promise<NearSignedMessage>;
175
+
176
+ /**
177
+ * Sign and send a single transaction
178
+ */
179
+ signAndSendTransaction(params: {
180
+ receiverId: string;
181
+ actions: NearAction[];
182
+ // Optional parameters
183
+ signerId?: string;
184
+ publicKey?: string;
185
+ nonce?: number;
186
+ recentBlockHash?: string;
187
+ }): Promise<NearFinalExecutionOutcome>;
188
+
189
+ /**
190
+ * Sign and send multiple transactions
191
+ */
192
+ signAndSendTransactions(params: {
193
+ transactions: NearTransaction[];
194
+ }): Promise<NearFinalExecutionOutcome[]>;
195
+
196
+ /**
197
+ * Request signing of transactions (alternative method used by some wallets)
198
+ */
199
+ requestSignTransactions?(params: {
200
+ transactions: NearTransaction[];
201
+ }): Promise<any>;
202
+
203
+ // Verification
204
+ /**
205
+ * Verify ownership of an account
206
+ */
207
+ verifyOwner?(params: {
208
+ message: string;
209
+ // Additional parameters may vary by wallet
210
+ }): Promise<{
211
+ accountId: string;
212
+ publicKey: string;
213
+ signature: string;
214
+ // Additional fields may be returned
215
+ }>;
216
+
217
+ // Network Information
218
+ /**
219
+ * Get the current network (mainnet, testnet, etc.)
220
+ */
221
+ getNetwork?(): string | Promise<string>;
222
+
223
+ /**
224
+ * Check if wallet is connected to mainnet
225
+ */
226
+ isMainnet?(): boolean;
227
+
228
+ // Wallet Metadata
229
+ /**
230
+ * Wallet name or identifier
231
+ */
232
+ name?: string;
233
+
234
+ /**
235
+ * Wallet version
236
+ */
237
+ version?: string;
238
+
239
+ /**
240
+ * Check if this is a specific wallet (used for wallet detection)
241
+ */
242
+ isOKX?: boolean;
243
+ isXDEFI?: boolean;
244
+ isCTRL?: boolean;
245
+
246
+ // Event Handling (not all wallets support events)
247
+ on?(event: "accountsChanged" | "networkChanged" | "disconnect", handler: Function): void;
248
+ off?(event: string, handler: Function): void;
249
+ removeListener?(event: string, handler: Function): void;
250
+ }
251
+
252
+ /**
253
+ * Extended window interface for NEAR wallets
254
+ */
255
+ declare global {
256
+ interface Window {
257
+ // Generic NEAR provider (if wallet uses this pattern)
258
+ near?: NearBrowserWalletProvider;
259
+
260
+ // Specific wallet providers
261
+ okxwallet?: {
262
+ near: NearBrowserWalletProvider;
263
+ };
264
+
265
+ xfi?: {
266
+ near: NearBrowserWalletProvider;
267
+ };
268
+
269
+ // Add other wallet-specific providers as needed
270
+ }
271
+ }
272
+
273
+ /**
274
+ * Helper type for wallet detection
275
+ */
276
+ export type NearWalletType = "okx" | "xdefi" | "ctrl" | "generic";
277
+
278
+ /**
279
+ * Configuration for NEAR network
280
+ */
281
+ export interface NearNetworkConfig {
282
+ networkId: "mainnet" | "testnet" | "betanet";
283
+ nodeUrl: string;
284
+ walletUrl?: string;
285
+ helperUrl?: string;
286
+ }