@rango-dev/provider-okx 0.55.2-next.1 → 0.55.2-next.2

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.
@@ -0,0 +1,12 @@
1
+ import type { OkxBtcAddress } from '../types.js';
2
+ import { ActionBuilder } from '@rango-dev/wallets-core';
3
+ import { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';
4
+ import { type ProviderAPI, type UtxoActions } from '@rango-dev/wallets-core/namespaces/utxo';
5
+ export declare const changeAccountSubscriber: (getInstance: () => ProviderAPI) => ChangeAccountSubscriberBuilder<OkxBtcAddress, ProviderAPI>;
6
+ declare function canEagerConnect(getInstance: () => ProviderAPI): ActionBuilder<UtxoActions, "canEagerConnect">;
7
+ export declare const utxoBuilders: {
8
+ changeAccountSubscriber: (getInstance: () => ProviderAPI) => ChangeAccountSubscriberBuilder<OkxBtcAddress, ProviderAPI>;
9
+ canEagerConnect: typeof canEagerConnect;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=utxo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../src/builders/utxo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,WAAW,EACjB,MAAM,yCAAyC,CAAC;AAEjD,eAAO,MAAM,uBAAuB,gBAAiB,MAAM,WAAW,+DAqBhE,CAAC;AAEP,iBAAS,eAAe,CAAC,WAAW,EAAE,MAAM,WAAW,iDAYtD;AAED,eAAO,MAAM,YAAY;2CArC4B,MAAM,WAAW;;CAqCE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAMhE,eAAO,MAAM,SAAS,QAAQ,CAAC;AAC/B,eAAO,MAAM,2BAA2B,kBAcvC,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,gBA2CtB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAWhE,eAAO,MAAM,SAAS,QAAQ,CAAC;AAC/B,eAAO,MAAM,2BAA2B,kBAcvC,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,gBAqDtB,CAAC"}
package/dist/mod.js CHANGED
@@ -1,2 +1,2 @@
1
- var U=Object.defineProperty;var t=(e,o)=>U(e,"name",{value:o,configurable:!0});import{defineVersions as Ce}from"@rango-dev/wallets-core/utils";import{canEagerlyConnectToEvm as V,canSwitchNetworkToEvm as z,chooseInstance as h,getEvmAccounts as G,getSolanaAccounts as C,Networks as p,switchNetworkForEvm as q,WalletTypes as Y}from"@rango-dev/wallets-shared";import{isEvmBlockchain as J}from"rango-types";import"@rango-dev/wallets-core";import{LegacyNetworks as n}from"@rango-dev/wallets-core/legacy";import{solanaBlockchain as j}from"rango-types";import{dynamicImportWithRefinedError as K,getNetworkInstance as b,Networks as y}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as F,TransactionType as k}from"rango-types";import{DefaultSolanaSigner as W}from"@rango-dev/signer-solana";import{SignerError as X,SignerErrorCode as D}from"rango-types";var u=class extends W{static{t(this,"OKXSolanaSigner")}constructor(o){super(o)}async signMessage(o){try{let{signature:r}=await this.provider.request({method:"signMessage",params:{message:o}});return r}catch(r){throw new X(D.SIGN_TX_ERROR,void 0,r)}}};async function m(e){let o=b(e,y.ETHEREUM),r=b(e,y.SOLANA),a=new F,{DefaultEvmSigner:c}=await K(async()=>await import("@rango-dev/signer-evm"));return a.registerSigner(k.EVM,new c(o)),a.registerSigner(k.SOLANA,new u(r)),a}t(m,"getSigners");import{LegacyNetworks as f}from"@rango-dev/wallets-core/legacy";function i(){let{okxwallet:e}=window;if(!e)return null;let o=new Map;return e&&o.set(f.ETHEREUM,e),e.solana&&o.set(f.SOLANA,e.solana),o}t(i,"okx");function x(){let e=i();if(!e)throw new Error("OKX Wallet is not injected. Please check your wallet.");return e}t(x,"getInstanceOrThrow");function s(){let o=i()?.get(f.ETHEREUM);if(!o)throw new Error("OKX Wallet not injected or EVM not enabled. Please check your wallet.");return o}t(s,"evmOKX");function d(){let o=i()?.get(f.SOLANA);if(!o)throw new Error("OKX Wallet not injected or Solana not enabled. Please check your wallet.");return o}t(d,"solanaOKX");var l="okx",S=[n.ETHEREUM,n.BSC,n.POLYGON,n.FANTOM,n.ARBITRUM,n.OPTIMISM,n.CRONOS,n.BOBA,n.GNOSIS,n.MOONBEAM,n.MOONRIVER,n.HARMONY,n.AVAX_CCHAIN],P={name:"OKX",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/okx/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",brave:"https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",firefox:"https://addons.mozilla.org/en-US/firefox/addon/okexwallet",homepage:"https://www.okx.com/web3"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>e.filter(o=>S.includes(o.name))},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:e=>j(e)}]}},{name:"signers",value:{getSigners:async()=>m(x())}}]};var Q=Y.OKX,Z={type:Q,defaultNetwork:p.ETHEREUM},$=i,ee=t(async({instance:e,meta:o})=>{let r=[],a=h(e,o,p.ETHEREUM);if(a){let E=await G(a);r.push(E)}let c=await C(e);return r.push(...Array.isArray(c)?c:[c]),r},"connect"),oe=t(({instance:e,updateAccounts:o,meta:r})=>{let a=h(e,r,p.ETHEREUM),c=t(async E=>{let _=r.filter(J).find(A=>A.name===p.ETHEREUM)?.chainId;o(E,_);let v=await C(e);(Array.isArray(v)?v:[v]).forEach(({chainId:A,accounts:H})=>{o(H,A)})},"handleEvmAccountsChanged");return a?.on?.("accountsChanged",c),()=>{a?.off?.("accountsChanged",c)}},"subscribe"),te=t(async e=>{let o=h(e.instance,e.meta,e.network);return q({...e,instance:o})},"switchNetwork"),re=z,ne=m,ae=t(async({instance:e,meta:o})=>{let r=h(e,o,p.ETHEREUM);return r?V({instance:r,meta:o}):Promise.resolve(!1)},"canEagerConnect"),ce=t(e=>({name:"OKX",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/okx/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",BRAVE:"https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",FIREFOX:"https://addons.mozilla.org/en-US/firefox/addon/okexwallet",DEFAULT:"https://www.okx.com/web3"},color:"white",supportedChains:e.filter(o=>S.includes(o.name))}),"getWalletInfo"),I=t(()=>({config:Z,getInstance:$,connect:ee,subscribe:oe,switchNetwork:te,canSwitchNetworkTo:re,getSigners:ne,getWalletInfo:ce,canEagerConnect:ae}),"buildLegacyProvider");import{ProviderBuilder as Pe}from"@rango-dev/wallets-core";import{NamespaceBuilder as ie}from"@rango-dev/wallets-core";import{builders as se,standardizeAndThrowError as le}from"@rango-dev/wallets-core/namespaces/common";import{actions as w,builders as g,utils as me}from"@rango-dev/wallets-core/namespaces/evm";var[de,T]=g.changeAccountSubscriber(s).onSwitchAccount(e=>{e.payload.length||e.preventDefault()}).format(async(e,o)=>{let r=await e.request({method:"eth_chainId"});return me.formatAccountsToCAIP(o.filter(Boolean),r)}).build(),pe=g.connect().action(w.connect(s)).before(de).or(T).or(le).build(),ge=se.disconnect().before(()=>{s().disconnect()}).after(T).build(),ue=g.canSwitchNetwork().action(w.canSwitchNetwork()).build(),fe=g.canEagerConnect().action(w.canEagerConnect(s)).build(),he=g.getChainId().action(w.getChainId(s)).build(),N=new ie("EVM",l).action(pe).action(ge).action(fe).action(ue).action(he).build();import{ActionBuilder as we,NamespaceBuilder as Ee}from"@rango-dev/wallets-core";import{builders as ve,standardizeAndThrowError as Ae}from"@rango-dev/wallets-core/namespaces/common";import{actions as O,builders as M,utils as Se}from"@rango-dev/wallets-core/namespaces/solana";var[be,L]=M.changeAccountSubscriber(d).onSwitchAccount(e=>{e.payload||e.preventDefault()}).format(async(e,o)=>Se.formatAccountsToCAIP(o?[o]:[])).build(),ye=M.connect().action(O.connect(d)).before(be).or(L).or(Ae).build(),ke=ve.disconnect().before(()=>{d().disconnect()}).after(L).build(),xe=new we("canEagerConnect").action(O.canEagerConnect(d)).build(),R=new Ee("Solana",l).action(ye).action(ke).action(xe).build();var B=t(()=>new Pe(l).init(function(e){let[,o]=e.state();i()&&(o("installed",!0),console.debug("[okx] instance detected.",e))}).config("metadata",P).add("solana",R).add("evm",N).build(),"buildProvider");var ko=t(()=>Ce().version("0.0.0",I()).version("1.0.0",B()).build(),"versions");export{ko as versions};
1
+ var V=Object.defineProperty;var r=(e,o)=>V(e,"name",{value:o,configurable:!0});import{defineVersions as Je}from"@rango-dev/wallets-core/utils";import{canEagerlyConnectToEvm as oe,canSwitchNetworkToEvm as te,chooseInstance as v,getEvmAccounts as re,getSolanaAccounts as M,Networks as w,switchNetworkForEvm as ne,WalletTypes as ae}from"@rango-dev/wallets-shared";import{isEvmBlockchain as ce}from"rango-types";import"@rango-dev/wallets-core";import{LegacyNetworks as a}from"@rango-dev/wallets-core/legacy";import{Networks as Z}from"@rango-dev/wallets-shared";import{solanaBlockchain as ee}from"rango-types";import{dynamicImportWithRefinedError as J,getNetworkInstance as x,Networks as P}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as Q,TransactionType as k}from"rango-types";import{DefaultSolanaSigner as z}from"@rango-dev/signer-solana";import{SignerError as G,SignerErrorCode as q}from"rango-types";var E=class extends z{static{r(this,"OKXSolanaSigner")}constructor(o){super(o)}async signMessage(o){try{let{signature:t}=await this.provider.request({method:"signMessage",params:{message:o}});return t}catch(t){throw new G(q.SIGN_TX_ERROR,void 0,t)}}};import{Networks as Y}from"@rango-dev/wallets-shared";import{SignerError as $}from"rango-types";var b=class{static{r(this,"OKXUTXOSigner")}provider;constructor(o){this.provider=o}async signMessage(){throw $.UnimplementedError("signMessage")}async signAndSendTx(o){let{asset:t,psbt:c}=o;if(!c)throw new Error("No PSBT found to sign. Ensure a valid PSBT is provided.");if(t.blockchain!==Y.BTC)throw new Error(`Signing ${t.blockchain} transaction is not implemented by the signer.`);let n=Buffer.from(c.unsignedPsbtBase64,"base64").toString("hex"),l=c.inputsToSign.flatMap(({address:m,signingIndexes:d})=>d.map(I=>({index:I,address:m})));try{let m=await this.provider.signPsbt(n,{autoFinalized:!0,toSignInputs:l});return{hash:await this.provider.pushPsbt(m)}}catch(m){throw new Error(m?.message||"Error during signing transaction")}}};async function g(e){let o=x(e,P.ETHEREUM),t=x(e,P.SOLANA),c=x(e,P.BTC),n=new Q,{DefaultEvmSigner:l}=await J(async()=>await import("@rango-dev/signer-evm"));return n.registerSigner(k.EVM,new l(o)),n.registerSigner(k.SOLANA,new E(t)),n.registerSigner(k.TRANSFER,new b(c)),n}r(g,"getSigners");import{LegacyNetworks as p}from"@rango-dev/wallets-core/legacy";function i(){let{okxwallet:e}=window;if(!e)return null;let o=new Map;return e&&o.set(p.ETHEREUM,e),e.solana&&o.set(p.SOLANA,e.solana),e.bitcoin&&o.set(p.BTC,e.bitcoin),o}r(i,"okx");function B(){let e=i();if(!e)throw new Error("OKX Wallet is not injected. Please check your wallet.");return e}r(B,"getInstanceOrThrow");function u(){let o=i()?.get(p.ETHEREUM);if(!o)throw new Error("OKX Wallet not injected or EVM not enabled. Please check your wallet.");return o}r(u,"evmOKX");function f(){let o=i()?.get(p.SOLANA);if(!o)throw new Error("OKX Wallet not injected or Solana not enabled. Please check your wallet.");return o}r(f,"solanaOKX");function h(){let o=i()?.get(p.BTC);if(!o)throw new Error("OKX Wallet not injected or Utxo not enabled. Please check your wallet.");return o}r(h,"bitcoinOKX");async function O(){let o=await h().connect();if(o.error?.message)throw new Error(o.error.message);return o}r(O,"getBitcoinAccounts");var s="okx",C=[a.ETHEREUM,a.BSC,a.POLYGON,a.FANTOM,a.ARBITRUM,a.OPTIMISM,a.CRONOS,a.BOBA,a.GNOSIS,a.MOONBEAM,a.MOONRIVER,a.HARMONY,a.AVAX_CCHAIN],N={name:"OKX",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/okx/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",brave:"https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",firefox:"https://addons.mozilla.org/en-US/firefox/addon/okexwallet",homepage:"https://www.okx.com/web3"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:e=>e.filter(o=>C.includes(o.name))},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:e=>ee(e)},{label:"BTC",value:"UTXO",id:"BTC",getSupportedChains:e=>e.filter(o=>o.name===Z.BTC)}]}},{name:"signers",value:{getSigners:async()=>g(B())}}]};var ie=ae.OKX,se={type:ie,defaultNetwork:w.ETHEREUM},le=i,me=r(async({instance:e,meta:o})=>{let t=[],c=v(e,o,w.ETHEREUM);if(c){let l=await re(c);t.push(l)}let n=await M(e);return t.push(...Array.isArray(n)?n:[n]),t},"connect"),de=r(({instance:e,updateAccounts:o,meta:t})=>{let c=v(e,t,w.ETHEREUM),n=r(async l=>{let m=t.filter(ce).find(y=>y.name===w.ETHEREUM)?.chainId;o(l,m);let d=await M(e);(Array.isArray(d)?d:[d]).forEach(({chainId:y,accounts:j})=>{o(j,y)})},"handleEvmAccountsChanged");return c?.on?.("accountsChanged",n),()=>{c?.off?.("accountsChanged",n)}},"subscribe"),pe=r(async e=>{let o=v(e.instance,e.meta,e.network);return ne({...e,instance:o})},"switchNetwork"),ue=te,ge=g,fe=r(async({instance:e,meta:o})=>{let t=v(e,o,w.ETHEREUM);return t?oe({instance:t,meta:o}):Promise.resolve(!1)},"canEagerConnect"),he=r(e=>({name:"OKX",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/okx/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",BRAVE:"https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge",FIREFOX:"https://addons.mozilla.org/en-US/firefox/addon/okexwallet",DEFAULT:"https://www.okx.com/web3"},color:"white",supportedChains:e.filter(o=>C.includes(o.name))}),"getWalletInfo"),L=r(()=>({config:se,getInstance:le,connect:me,subscribe:de,switchNetwork:pe,canSwitchNetworkTo:ue,getSigners:ge,getWalletInfo:he,canEagerConnect:fe}),"buildLegacyProvider");import{ProviderBuilder as $e}from"@rango-dev/wallets-core";import{NamespaceBuilder as we}from"@rango-dev/wallets-core";import{builders as Ae,standardizeAndThrowError as Ee}from"@rango-dev/wallets-core/namespaces/common";import{actions as S,builders as A,utils as be}from"@rango-dev/wallets-core/namespaces/evm";var[ve,R]=A.changeAccountSubscriber(u).onSwitchAccount(e=>{e.payload.length||e.preventDefault()}).format(async(e,o)=>{let t=await e.request({method:"eth_chainId"});return be.formatAccountsToCAIP(o.filter(Boolean),t)}).build(),Se=A.connect().action(S.connect(u)).before(ve).or(R).or(Ee).build(),ye=Ae.disconnect().before(()=>{u().disconnect()}).after(R).build(),xe=A.canSwitchNetwork().action(S.canSwitchNetwork()).build(),Pe=A.canEagerConnect().action(S.canEagerConnect(u)).build(),ke=A.getChainId().action(S.getChainId(u)).build(),U=new we("EVM",s).action(Se).action(ye).action(Pe).action(xe).action(ke).build();import{ActionBuilder as Ce,NamespaceBuilder as Te}from"@rango-dev/wallets-core";import{builders as Ie,standardizeAndThrowError as Be}from"@rango-dev/wallets-core/namespaces/common";import{actions as X,builders as H,utils as Oe}from"@rango-dev/wallets-core/namespaces/solana";var[Ne,_]=H.changeAccountSubscriber(f).onSwitchAccount(e=>{e.payload||e.preventDefault()}).format(async(e,o)=>Oe.formatAccountsToCAIP(o?[o]:[])).build(),Me=H.connect().action(X.connect(f)).before(Ne).or(_).or(Be).build(),Le=Ie.disconnect().before(()=>{f().disconnect()}).after(_).build(),Re=new Ce("canEagerConnect").action(X.canEagerConnect(f)).build(),W=new Te("Solana",s).action(Me).action(Le).action(Re).build();import{NamespaceBuilder as Ke}from"@rango-dev/wallets-core";import{builders as De,standardizeAndThrowError as Fe}from"@rango-dev/wallets-core/namespaces/common";import{utils as je}from"@rango-dev/wallets-core/namespaces/utxo";import{builders as Ve}from"@rango-dev/wallets-core/namespaces/utxo";import{ActionBuilder as Ue}from"@rango-dev/wallets-core";import{ChangeAccountSubscriberBuilder as Xe}from"@rango-dev/wallets-core/namespaces/common";import{utils as He}from"@rango-dev/wallets-core/namespaces/utxo";var _e=r(e=>new Xe().getInstance(e).onSwitchAccount(o=>{o.payload?.address||o.preventDefault()}).format(async(o,t)=>He.formatAccountsToCAIP(t?[t.address]:[])).addEventListener((o,t)=>o.addListener("accountChanged",t)).removeEventListener((o,t)=>o.removeListener("accountChanged",t)),"changeAccountSubscriber");function We(e){return new Ue("canEagerConnect").action(async()=>{let o=e();try{return!!(await o.getAccounts()).length}catch{return!1}})}r(We,"canEagerConnect");var T={changeAccountSubscriber:_e,canEagerConnect:We};var[ze,K]=T.changeAccountSubscriber(h).build(),Ge=T.canEagerConnect(h).build(),qe=Ve.connect().action(async function(){let e=await O();if(!e?.address)throw new Error("Couldn't find any address!");return je.formatAccountsToCAIP([e.address])}).before(ze).or(K).or(Fe).build(),Ye=De.disconnect().before(()=>{h().disconnect()}).after(K).build(),D=new Ke("UTXO",s).action(qe).action(Ye).action(Ge).build();var F=r(()=>new $e(s).init(function(e){let[,o]=e.state();i()&&(o("installed",!0),console.debug("[okx] instance detected.",e))}).config("metadata",N).add("solana",W).add("evm",U).add("utxo",D).build(),"buildProvider");var ut=r(()=>Je().version("0.0.0",L()).version("1.0.0",F()).build(),"versions");export{ut as versions};
2
2
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/mod.ts", "../src/legacy/index.ts", "../src/constants.ts", "../src/signer.ts", "../src/signers/solana.ts", "../src/utils.ts", "../src/provider.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts"],
4
- "sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildLegacyProvider } from './legacy/index.js';\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions()\n .version('0.0.0', buildLegacyProvider())\n .version('1.0.0', buildProvider())\n .build();\n\nexport { versions };\n", "import type { LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';\nimport type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n ProviderConnectResult,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n getSolanaAccounts,\n Networks,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { isEvmBlockchain } from 'rango-types';\n\nimport { OKX_WALLET_SUPPORTED_CHAINS } from '../constants.js';\nimport signer from '../signer.js';\nimport { okx } from '../utils.js';\n\nconst WALLET = WalletTypes.OKX;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = okx;\nexport const connect: Connect = async ({ instance, meta }) => {\n const results: ProviderConnectResult[] = [];\n\n const evmInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n\n if (evmInstance) {\n const evmResults = await getEvmAccounts(evmInstance);\n results.push(evmResults);\n }\n\n const solanaResults = await getSolanaAccounts(instance);\n\n results.push(\n ...(Array.isArray(solanaResults) ? solanaResults : [solanaResults])\n );\n\n return results;\n};\n\nexport const subscribe: Subscribe = ({ instance, updateAccounts, meta }) => {\n const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const handleEvmAccountsChanged = async (addresses: string[]) => {\n const eth_chainId = meta\n .filter(isEvmBlockchain)\n .find((blockchain) => blockchain.name === Networks.ETHEREUM)?.chainId;\n\n updateAccounts(addresses, eth_chainId);\n const solanaResults = await getSolanaAccounts(instance);\n const resultsArray = Array.isArray(solanaResults)\n ? solanaResults\n : [solanaResults];\n\n resultsArray.forEach(({ chainId, accounts }) => {\n updateAccounts(accounts, chainId);\n });\n };\n ethInstance?.on?.('accountsChanged', handleEvmAccountsChanged);\n\n return () => {\n ethInstance?.off?.('accountsChanged', handleEvmAccountsChanged);\n };\n};\n\nexport const switchNetwork: SwitchNetwork = async (options) => {\n const instance = chooseInstance(\n options.instance,\n options.meta,\n options.network\n );\n return switchNetworkForEvm({\n ...options,\n instance,\n });\n};\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Provider = any;\nexport const getSigners: (provider: Provider) => Promise<SignerFactory> =\n signer;\n\nexport const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n if (evm_instance) {\n return canEagerlyConnectToEvm({ instance: evm_instance, meta });\n }\n return Promise.resolve(false);\n};\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => ({\n name: 'OKX',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/okx/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge',\n FIREFOX: 'https://addons.mozilla.org/en-US/firefox/addon/okexwallet',\n DEFAULT: 'https://www.okx.com/web3',\n },\n color: 'white',\n supportedChains: allBlockChains.filter((blockchainMeta) =>\n OKX_WALLET_SUPPORTED_CHAINS.includes(blockchainMeta.name as Networks)\n ),\n});\nconst buildLegacyProvider: () => LegacyProviderInterface = () => ({\n config,\n getInstance,\n connect,\n subscribe,\n switchNetwork,\n canSwitchNetworkTo,\n getSigners,\n getWalletInfo,\n canEagerConnect,\n});\n\nexport { buildLegacyProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\nimport { type BlockchainMeta, solanaBlockchain } from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'okx';\nexport const OKX_WALLET_SUPPORTED_CHAINS = [\n LegacyNetworks.ETHEREUM,\n LegacyNetworks.BSC,\n LegacyNetworks.POLYGON,\n LegacyNetworks.FANTOM,\n LegacyNetworks.ARBITRUM,\n LegacyNetworks.OPTIMISM,\n LegacyNetworks.CRONOS,\n LegacyNetworks.BOBA,\n LegacyNetworks.GNOSIS,\n LegacyNetworks.MOONBEAM,\n LegacyNetworks.MOONRIVER,\n LegacyNetworks.HARMONY,\n LegacyNetworks.AVAX_CCHAIN,\n];\n\nexport const metadata: ProviderMetadata = {\n name: 'OKX',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/okx/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge',\n brave:\n 'https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge',\n firefox: 'https://addons.mozilla.org/en-US/firefox/addon/okexwallet',\n homepage: 'https://www.okx.com/web3',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n allBlockchains.filter((blockchainMeta) =>\n OKX_WALLET_SUPPORTED_CHAINS.includes(\n blockchainMeta.name as LegacyNetworks\n )\n ),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './types.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { OKXSolanaSigner } from './signers/solana.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(TxType.SOLANA, new OKXSolanaSigner(solProvider));\n return signers;\n}\n", "import {\n DefaultSolanaSigner,\n type SolanaExternalProvider,\n} from '@rango-dev/signer-solana';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nexport class OKXSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n try {\n const { signature } = await this.provider.request({\n method: 'signMessage',\n params: {\n message: msg,\n },\n });\n return signature;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n}\n", "import type { Provider } from './types.js';\nimport type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\nexport function okx(): Provider | null {\n const { okxwallet } = window;\n if (!okxwallet) {\n return null;\n }\n const instances: Provider = new Map();\n if (okxwallet) {\n instances.set(LegacyNetworks.ETHEREUM, okxwallet);\n }\n if (okxwallet.solana) {\n instances.set(LegacyNetworks.SOLANA, okxwallet.solana);\n }\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = okx();\n\n if (!instances) {\n throw new Error('OKX Wallet is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n\nexport function evmOKX(): EvmProviderApi {\n const instances = okx();\n\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n\n if (!evmInstance) {\n throw new Error(\n 'OKX Wallet not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaOKX(): SolanaProviderApi {\n const instance = okx();\n const solanaInstance = instance?.get(LegacyNetworks.SOLANA);\n\n if (!solanaInstance) {\n throw new Error(\n 'OKX Wallet not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance as SolanaProviderApi;\n}\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { okx as okxInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (okxInstance()) {\n setState('installed', true);\n console.debug('[okx] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('solana', solana)\n .add('evm', evm)\n .build();\n\nexport { buildProvider };\n", "import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n actions,\n builders,\n utils,\n} from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmOKX } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmOKX)\n /*\n * Okx wallet may call the `changeAccount` event with `null` value\n * but we shouldn't disconnect in this case.\n */\n .onSwitchAccount((event) => {\n if (!event.payload.length) {\n event.preventDefault();\n }\n })\n .format(async (instance, event) => {\n const chainId = await instance.request({ method: 'eth_chainId' });\n // The wallet may emit a `null` value in its `sent` event.\n return utils.formatAccountsToCAIP(event.filter(Boolean), chainId);\n })\n .build();\nconst connect = builders\n .connect()\n .action(actions.connect(evmOKX))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .before(() => {\n evmOKX().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(actions.canEagerConnect(evmOKX))\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmOKX))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n actions,\n builders,\n utils,\n} from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { WALLET_ID } from '../constants.js';\nimport { solanaOKX } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(solanaOKX)\n /*\n * Okx wallet may call the `changeAccount` event with `null` value\n * but we shouldn't disconnect in this case.\n */\n .onSwitchAccount((event) => {\n if (!event.payload) {\n event.preventDefault();\n }\n })\n .format(async (_, event) => {\n // The wallet may emit a `null` value in its `sent` event.\n return utils.formatAccountsToCAIP(event ? [event] : []);\n })\n .build();\n\nconst connect = builders\n .connect()\n .action(actions.connect(solanaOKX))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .before(() => {\n solanaOKX().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(actions.canEagerConnect(solanaOKX))\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { solana };\n"],
5
- "mappings": "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",
6
- "names": ["defineVersions", "canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "getSolanaAccounts", "Networks", "switchNetworkForEvm", "WalletTypes", "isEvmBlockchain", "LegacyNetworks", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "SignerError", "SignerErrorCode", "OKXSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "signature", "error", "SignerError", "SignerErrorCode", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "OKXSolanaSigner", "__name", "LegacyNetworks", "okx", "okxwallet", "instances", "LegacyNetworks", "__name", "getInstanceOrThrow", "evmOKX", "evmInstance", "solanaOKX", "solanaInstance", "WALLET_ID", "OKX_WALLET_SUPPORTED_CHAINS", "LegacyNetworks", "metadata", "allBlockchains", "blockchainMeta", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "okx", "connect", "__name", "instance", "meta", "results", "evmInstance", "chooseInstance", "evmResults", "getEvmAccounts", "solanaResults", "getSolanaAccounts", "subscribe", "updateAccounts", "ethInstance", "handleEvmAccountsChanged", "addresses", "eth_chainId", "isEvmBlockchain", "blockchain", "chainId", "accounts", "switchNetwork", "options", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "evm_instance", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "blockchainMeta", "OKX_WALLET_SUPPORTED_CHAINS", "buildLegacyProvider", "ProviderBuilder", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "utils", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmOKX", "event", "instance", "chainId", "utils", "connect", "actions", "standardizeAndThrowError", "disconnect", "commonBuilders", "canSwitchNetwork", "canEagerConnect", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "ActionBuilder", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "utils", "changeAccountSubscriber", "changeAccountCleanup", "builders", "solanaOKX", "event", "_", "utils", "connect", "actions", "standardizeAndThrowError", "disconnect", "commonBuilders", "canEagerConnect", "ActionBuilder", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "okx", "metadata", "solana", "evm", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
3
+ "sources": ["../src/mod.ts", "../src/legacy/index.ts", "../src/constants.ts", "../src/signer.ts", "../src/signers/solana.ts", "../src/signers/utxo.ts", "../src/utils.ts", "../src/provider.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts", "../src/namespaces/utxo.ts", "../src/builders/utxo.ts"],
4
+ "sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildLegacyProvider } from './legacy/index.js';\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions()\n .version('0.0.0', buildLegacyProvider())\n .version('1.0.0', buildProvider())\n .build();\n\nexport { versions };\n", "import type { LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';\nimport type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n ProviderConnectResult,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n chooseInstance,\n getEvmAccounts,\n getSolanaAccounts,\n Networks,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { isEvmBlockchain } from 'rango-types';\n\nimport { OKX_WALLET_SUPPORTED_CHAINS } from '../constants.js';\nimport signer from '../signer.js';\nimport { okx } from '../utils.js';\n\nconst WALLET = WalletTypes.OKX;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.ETHEREUM,\n};\n\nexport const getInstance = okx;\nexport const connect: Connect = async ({ instance, meta }) => {\n const results: ProviderConnectResult[] = [];\n\n const evmInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n\n if (evmInstance) {\n const evmResults = await getEvmAccounts(evmInstance);\n results.push(evmResults);\n }\n\n const solanaResults = await getSolanaAccounts(instance);\n\n results.push(\n ...(Array.isArray(solanaResults) ? solanaResults : [solanaResults])\n );\n\n return results;\n};\n\nexport const subscribe: Subscribe = ({ instance, updateAccounts, meta }) => {\n const ethInstance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const handleEvmAccountsChanged = async (addresses: string[]) => {\n const eth_chainId = meta\n .filter(isEvmBlockchain)\n .find((blockchain) => blockchain.name === Networks.ETHEREUM)?.chainId;\n\n updateAccounts(addresses, eth_chainId);\n const solanaResults = await getSolanaAccounts(instance);\n const resultsArray = Array.isArray(solanaResults)\n ? solanaResults\n : [solanaResults];\n\n resultsArray.forEach(({ chainId, accounts }) => {\n updateAccounts(accounts, chainId);\n });\n };\n ethInstance?.on?.('accountsChanged', handleEvmAccountsChanged);\n\n return () => {\n ethInstance?.off?.('accountsChanged', handleEvmAccountsChanged);\n };\n};\n\nexport const switchNetwork: SwitchNetwork = async (options) => {\n const instance = chooseInstance(\n options.instance,\n options.meta,\n options.network\n );\n return switchNetworkForEvm({\n ...options,\n instance,\n });\n};\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Provider = any;\nexport const getSigners: (provider: Provider) => Promise<SignerFactory> =\n signer;\n\nexport const canEagerConnect: CanEagerConnect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n if (evm_instance) {\n return canEagerlyConnectToEvm({ instance: evm_instance, meta });\n }\n return Promise.resolve(false);\n};\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => ({\n name: 'OKX',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/okx/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge',\n FIREFOX: 'https://addons.mozilla.org/en-US/firefox/addon/okexwallet',\n DEFAULT: 'https://www.okx.com/web3',\n },\n color: 'white',\n supportedChains: allBlockChains.filter((blockchainMeta) =>\n OKX_WALLET_SUPPORTED_CHAINS.includes(blockchainMeta.name as Networks)\n ),\n});\nconst buildLegacyProvider: () => LegacyProviderInterface = () => ({\n config,\n getInstance,\n connect,\n subscribe,\n switchNetwork,\n canSwitchNetworkTo,\n getSigners,\n getWalletInfo,\n canEagerConnect,\n});\n\nexport { buildLegacyProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\nimport { Networks } from '@rango-dev/wallets-shared';\nimport {\n type BlockchainMeta,\n solanaBlockchain,\n type TransferBlockchainMeta,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'okx';\nexport const OKX_WALLET_SUPPORTED_CHAINS = [\n LegacyNetworks.ETHEREUM,\n LegacyNetworks.BSC,\n LegacyNetworks.POLYGON,\n LegacyNetworks.FANTOM,\n LegacyNetworks.ARBITRUM,\n LegacyNetworks.OPTIMISM,\n LegacyNetworks.CRONOS,\n LegacyNetworks.BOBA,\n LegacyNetworks.GNOSIS,\n LegacyNetworks.MOONBEAM,\n LegacyNetworks.MOONRIVER,\n LegacyNetworks.HARMONY,\n LegacyNetworks.AVAX_CCHAIN,\n];\n\nexport const metadata: ProviderMetadata = {\n name: 'OKX',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/okx/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge',\n brave:\n 'https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge',\n firefox: 'https://addons.mozilla.org/en-US/firefox/addon/okexwallet',\n homepage: 'https://www.okx.com/web3',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n allBlockchains.filter((blockchainMeta) =>\n OKX_WALLET_SUPPORTED_CHAINS.includes(\n blockchainMeta.name as LegacyNetworks\n )\n ),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n {\n label: 'BTC',\n value: 'UTXO',\n id: 'BTC',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n allBlockchains.filter(\n (chain): chain is TransferBlockchainMeta =>\n chain.name === Networks.BTC\n ),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './types.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { OKXSolanaSigner } from './signers/solana.js';\nimport { OKXUTXOSigner } from './signers/utxo.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\n const utxoProvider = getNetworkInstance(provider, Networks.BTC);\n\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(TxType.SOLANA, new OKXSolanaSigner(solProvider));\n signers.registerSigner(TxType.TRANSFER, new OKXUTXOSigner(utxoProvider));\n\n return signers;\n}\n", "import {\n DefaultSolanaSigner,\n type SolanaExternalProvider,\n} from '@rango-dev/signer-solana';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nexport class OKXSolanaSigner extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n try {\n const { signature } = await this.provider.request({\n method: 'signMessage',\n params: {\n message: msg,\n },\n });\n return signature;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n}\n", "import type { ProviderAPI } from '@rango-dev/wallets-core/namespaces/utxo';\nimport type { GenericSigner, Transfer } from 'rango-types';\n\nimport { Networks } from '@rango-dev/wallets-shared';\nimport { SignerError } from 'rango-types';\n\nexport class OKXUTXOSigner implements GenericSigner<Transfer> {\n private provider: ProviderAPI;\n constructor(provider: ProviderAPI) {\n this.provider = provider;\n }\n\n async signMessage(): Promise<string> {\n throw SignerError.UnimplementedError('signMessage');\n }\n\n async signAndSendTx(tx: Transfer): Promise<{ hash: string }> {\n const { asset, psbt } = tx;\n if (!psbt) {\n throw new Error(\n 'No PSBT found to sign. Ensure a valid PSBT is provided.'\n );\n }\n\n if (asset.blockchain !== Networks.BTC) {\n throw new Error(\n `Signing ${asset.blockchain} transaction is not implemented by the signer.`\n );\n }\n // 1. Decode Base64 to hex\n const psbtHex = Buffer.from(psbt.unsignedPsbtBase64, 'base64').toString(\n 'hex'\n );\n\n // 2. Build UniSat inputs\n const toSignInputs = psbt.inputsToSign.flatMap(\n ({ address, signingIndexes }) =>\n signingIndexes.map((index) => ({ index, address }))\n );\n\n try {\n // 3. Sign (& auto-finalize)\n const signedPsbtHex = await this.provider.signPsbt(psbtHex, {\n autoFinalized: true,\n toSignInputs,\n });\n\n // 4. Push signed psbt\n const transactionHash = await this.provider.pushPsbt(signedPsbtHex);\n\n return { hash: transactionHash };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n throw new Error(error?.message || 'Error during signing transaction');\n }\n }\n}\n", "import type { OkxBtcAddress, Provider } from './types.js';\nimport type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';\nimport type { ProviderAPI as UtxoProviderApi } from '@rango-dev/wallets-core/namespaces/utxo';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\nexport function okx(): Provider | null {\n const { okxwallet } = window;\n if (!okxwallet) {\n return null;\n }\n const instances: Provider = new Map();\n if (okxwallet) {\n instances.set(LegacyNetworks.ETHEREUM, okxwallet);\n }\n if (okxwallet.solana) {\n instances.set(LegacyNetworks.SOLANA, okxwallet.solana);\n }\n if (okxwallet.bitcoin) {\n instances.set(LegacyNetworks.BTC, okxwallet.bitcoin);\n }\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = okx();\n\n if (!instances) {\n throw new Error('OKX Wallet is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n\nexport function evmOKX(): EvmProviderApi {\n const instances = okx();\n\n const evmInstance = instances?.get(LegacyNetworks.ETHEREUM);\n\n if (!evmInstance) {\n throw new Error(\n 'OKX Wallet not injected or EVM not enabled. Please check your wallet.'\n );\n }\n\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaOKX(): SolanaProviderApi {\n const instance = okx();\n const solanaInstance = instance?.get(LegacyNetworks.SOLANA);\n\n if (!solanaInstance) {\n throw new Error(\n 'OKX Wallet not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance as SolanaProviderApi;\n}\nexport function bitcoinOKX(): UtxoProviderApi {\n const instance = okx();\n const bitcoinInstance = instance?.get(LegacyNetworks.BTC);\n\n if (!bitcoinInstance) {\n throw new Error(\n 'OKX Wallet not injected or Utxo not enabled. Please check your wallet.'\n );\n }\n\n return bitcoinInstance as UtxoProviderApi;\n}\nexport async function getBitcoinAccounts(): Promise<OkxBtcAddress> {\n const instance = bitcoinOKX();\n const requestResult = await instance.connect();\n\n if (requestResult.error?.message) {\n throw new Error(requestResult.error.message);\n }\n\n return requestResult;\n}\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { utxo } from './namespaces/utxo.js';\nimport { okx as okxInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (okxInstance()) {\n setState('installed', true);\n console.debug('[okx] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('solana', solana)\n .add('evm', evm)\n .add('utxo', utxo)\n\n .build();\n\nexport { buildProvider };\n", "import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n actions,\n builders,\n utils,\n} from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmOKX } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmOKX)\n /*\n * Okx wallet may call the `changeAccount` event with `null` value\n * but we shouldn't disconnect in this case.\n */\n .onSwitchAccount((event) => {\n if (!event.payload.length) {\n event.preventDefault();\n }\n })\n .format(async (instance, event) => {\n const chainId = await instance.request({ method: 'eth_chainId' });\n // The wallet may emit a `null` value in its `sent` event.\n return utils.formatAccountsToCAIP(event.filter(Boolean), chainId);\n })\n .build();\nconst connect = builders\n .connect()\n .action(actions.connect(evmOKX))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .before(() => {\n evmOKX().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(actions.canEagerConnect(evmOKX))\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmOKX))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import type { SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { ActionBuilder, NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n actions,\n builders,\n utils,\n} from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { WALLET_ID } from '../constants.js';\nimport { solanaOKX } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(solanaOKX)\n /*\n * Okx wallet may call the `changeAccount` event with `null` value\n * but we shouldn't disconnect in this case.\n */\n .onSwitchAccount((event) => {\n if (!event.payload) {\n event.preventDefault();\n }\n })\n .format(async (_, event) => {\n // The wallet may emit a `null` value in its `sent` event.\n return utils.formatAccountsToCAIP(event ? [event] : []);\n })\n .build();\n\nconst connect = builders\n .connect()\n .action(actions.connect(solanaOKX))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .before(() => {\n solanaOKX().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(actions.canEagerConnect(solanaOKX))\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { solana };\n", "import { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n utils,\n type UtxoActions,\n} from '@rango-dev/wallets-core/namespaces/utxo';\nimport { builders } from '@rango-dev/wallets-core/namespaces/utxo';\n\nimport { utxoBuilders } from '../builders/utxo.js';\nimport { WALLET_ID } from '../constants.js';\nimport { bitcoinOKX, getBitcoinAccounts } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = utxoBuilders\n .changeAccountSubscriber(bitcoinOKX)\n .build();\n\nconst canEagerConnect = utxoBuilders.canEagerConnect(bitcoinOKX).build();\n\nconst connect = builders\n .connect()\n .action(async function () {\n const accountsResult = await getBitcoinAccounts();\n\n if (!accountsResult?.address) {\n throw new Error(\"Couldn't find any address!\");\n }\n return utils.formatAccountsToCAIP([accountsResult.address]);\n })\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<UtxoActions>()\n .before(() => {\n bitcoinOKX().disconnect();\n })\n .after(changeAccountCleanup)\n .build();\n\nconst utxo = new NamespaceBuilder<UtxoActions>('UTXO', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { utxo };\n", "import type { OkxBtcAddress } from '../types.js';\n\nimport { ActionBuilder } from '@rango-dev/wallets-core';\nimport { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';\nimport {\n type ProviderAPI,\n utils,\n type UtxoActions,\n} from '@rango-dev/wallets-core/namespaces/utxo';\n\nexport const changeAccountSubscriber = (getInstance: () => ProviderAPI) =>\n new ChangeAccountSubscriberBuilder<OkxBtcAddress, ProviderAPI>()\n .getInstance(getInstance)\n /*\n * Okx wallet may call the `changeAccount` event with `null` value\n * but we shouldn't disconnect in this case.\n */\n .onSwitchAccount((event) => {\n if (!event.payload?.address) {\n event.preventDefault();\n }\n })\n\n .format(async (_, event) => {\n return utils.formatAccountsToCAIP(event ? [event.address] : []);\n })\n .addEventListener((instance, callback) => {\n return instance.addListener('accountChanged', callback);\n })\n .removeEventListener((instance, callback) => {\n return instance.removeListener('accountChanged', callback);\n });\n\nfunction canEagerConnect(getInstance: () => ProviderAPI) {\n return new ActionBuilder<UtxoActions, 'canEagerConnect'>(\n 'canEagerConnect'\n ).action(async () => {\n const instance = getInstance();\n try {\n const accounts = await instance.getAccounts();\n return !!accounts.length;\n } catch {\n return false;\n }\n });\n}\n\nexport const utxoBuilders = { changeAccountSubscriber, canEagerConnect };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "chooseInstance", "getEvmAccounts", "getSolanaAccounts", "Networks", "switchNetworkForEvm", "WalletTypes", "isEvmBlockchain", "LegacyNetworks", "Networks", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "SignerError", "SignerErrorCode", "OKXSolanaSigner", "DefaultSolanaSigner", "__name", "provider", "msg", "signature", "error", "SignerError", "SignerErrorCode", "Networks", "SignerError", "OKXUTXOSigner", "__name", "provider", "SignerError", "tx", "asset", "psbt", "Networks", "psbtHex", "toSignInputs", "address", "signingIndexes", "index", "signedPsbtHex", "error", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "utxoProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "OKXSolanaSigner", "OKXUTXOSigner", "__name", "LegacyNetworks", "okx", "okxwallet", "instances", "LegacyNetworks", "__name", "getInstanceOrThrow", "evmOKX", "evmInstance", "solanaOKX", "solanaInstance", "bitcoinOKX", "bitcoinInstance", "getBitcoinAccounts", "requestResult", "WALLET_ID", "OKX_WALLET_SUPPORTED_CHAINS", "LegacyNetworks", "metadata", "allBlockchains", "blockchainMeta", "solanaBlockchain", "chain", "Networks", "getSigners", "getInstanceOrThrow", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "okx", "connect", "__name", "instance", "meta", "results", "evmInstance", "chooseInstance", "evmResults", "getEvmAccounts", "solanaResults", "getSolanaAccounts", "subscribe", "updateAccounts", "ethInstance", "handleEvmAccountsChanged", "addresses", "eth_chainId", "isEvmBlockchain", "blockchain", "chainId", "accounts", "switchNetwork", "options", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "evm_instance", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "blockchainMeta", "OKX_WALLET_SUPPORTED_CHAINS", "buildLegacyProvider", "ProviderBuilder", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "utils", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmOKX", "event", "instance", "chainId", "utils", "connect", "actions", "standardizeAndThrowError", "disconnect", "commonBuilders", "canSwitchNetwork", "canEagerConnect", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "ActionBuilder", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "utils", "changeAccountSubscriber", "changeAccountCleanup", "builders", "solanaOKX", "event", "_", "utils", "connect", "actions", "standardizeAndThrowError", "disconnect", "commonBuilders", "canEagerConnect", "ActionBuilder", "solana", "NamespaceBuilder", "WALLET_ID", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "utils", "builders", "ActionBuilder", "ChangeAccountSubscriberBuilder", "utils", "changeAccountSubscriber", "__name", "getInstance", "ChangeAccountSubscriberBuilder", "event", "_", "utils", "instance", "callback", "canEagerConnect", "ActionBuilder", "utxoBuilders", "changeAccountSubscriber", "changeAccountCleanup", "utxoBuilders", "bitcoinOKX", "canEagerConnect", "connect", "builders", "accountsResult", "getBitcoinAccounts", "utils", "standardizeAndThrowError", "disconnect", "commonBuilders", "utxo", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "okx", "metadata", "solana", "evm", "utxo", "versions", "__name", "defineVersions", "buildLegacyProvider", "buildProvider"]
7
7
  }
@@ -0,0 +1,4 @@
1
+ import { type UtxoActions } from '@rango-dev/wallets-core/namespaces/utxo';
2
+ declare const utxo: import("@rango-dev/wallets-core").ProxiedNamespace<UtxoActions>;
3
+ export { utxo };
4
+ //# sourceMappingURL=utxo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../src/namespaces/utxo.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,yCAAyC,CAAC;AAoCjD,QAAA,MAAM,IAAI,iEAIA,CAAC;AAEX,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"inputs":{"src/signers/solana.ts":{"bytes":644,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":915,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signers/solana.ts","kind":"import-statement","original":"./signers/solana.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1490,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":2063,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/legacy/index.ts":{"bytes":3891,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/signer.ts","kind":"import-statement","original":"../signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":1882,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/namespaces/solana.ts":{"bytes":1635,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":655,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":332,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"src/legacy/index.ts","kind":"import-statement","original":"./legacy/index.js"},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":22930},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":144},"src/legacy/index.ts":{"bytesInOutput":1733},"src/constants.ts":{"bytesInOutput":980},"src/signer.ts":{"bytesInOutput":423},"src/signers/solana.ts":{"bytesInOutput":377},"src/utils.ts":{"bytesInOutput":668},"src/provider.ts":{"bytesInOutput":262},"src/namespaces/evm.ts":{"bytesInOutput":865},"src/namespaces/solana.ts":{"bytesInOutput":691}},"bytes":6278}}}
1
+ {"inputs":{"src/signers/solana.ts":{"bytes":644,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signers/utxo.ts":{"bytes":1717,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":1111,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signers/solana.ts","kind":"import-statement","original":"./signers/solana.js"},{"path":"src/signers/utxo.ts","kind":"import-statement","original":"./signers/utxo.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":2281,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":2484,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/legacy/index.ts":{"bytes":3891,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/signer.ts","kind":"import-statement","original":"../signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":1882,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/namespaces/solana.ts":{"bytes":1635,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/builders/utxo.ts":{"bytes":1511,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/utxo.ts":{"bytes":1414,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"src/builders/utxo.ts","kind":"import-statement","original":"../builders/utxo.js"},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":724,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.js"},{"path":"src/namespaces/utxo.ts","kind":"import-statement","original":"./namespaces/utxo.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":332,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"src/legacy/index.ts","kind":"import-statement","original":"./legacy/index.js"},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":32947},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":144},"src/legacy/index.ts":{"bytesInOutput":1751},"src/constants.ts":{"bytesInOutput":1121},"src/signer.ts":{"bytesInOutput":474},"src/signers/solana.ts":{"bytesInOutput":377},"src/signers/utxo.ts":{"bytesInOutput":831},"src/utils.ts":{"bytesInOutput":993},"src/provider.ts":{"bytesInOutput":276},"src/namespaces/evm.ts":{"bytesInOutput":865},"src/namespaces/solana.ts":{"bytesInOutput":691},"src/namespaces/utxo.ts":{"bytesInOutput":695},"src/builders/utxo.ts":{"bytesInOutput":738}},"bytes":9091}}}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,aAAa,kDAaP,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,aAAa,kDAeP,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAUxB"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,aAAa,CAAC,CAcxB"}
@@ -0,0 +1,11 @@
1
+ import type { ProviderAPI } from '@rango-dev/wallets-core/namespaces/utxo';
2
+ import type { GenericSigner, Transfer } from 'rango-types';
3
+ export declare class OKXUTXOSigner implements GenericSigner<Transfer> {
4
+ private provider;
5
+ constructor(provider: ProviderAPI);
6
+ signMessage(): Promise<string>;
7
+ signAndSendTx(tx: Transfer): Promise<{
8
+ hash: string;
9
+ }>;
10
+ }
11
+ //# sourceMappingURL=utxo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../src/signers/utxo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK3D,qBAAa,aAAc,YAAW,aAAa,CAAC,QAAQ,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAc;gBAClB,QAAQ,EAAE,WAAW;IAI3B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAwC7D"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,16 @@
1
1
  import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
2
2
  import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
3
3
  import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
4
+ import type { ProviderAPI as UtxoProviderApi } from '@rango-dev/wallets-core/namespaces/utxo';
5
+ export type OkxBtcAddress = {
6
+ address: string;
7
+ publicKey: string;
8
+ compressedPublicKey: string;
9
+ };
4
10
  export type ProviderObject = {
5
11
  [LegacyNetworks.ETHEREUM]: EvmProviderApi;
6
12
  [LegacyNetworks.SOLANA]: SolanaProviderApi;
13
+ [LegacyNetworks.BTC]: UtxoProviderApi;
7
14
  };
8
15
  export type Provider = Map<keyof ProviderObject, ProviderObject[keyof ProviderObject]>;
9
16
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAElG,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1C,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5C,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,GAAG,CACxB,MAAM,cAAc,EACpB,cAAc,CAAC,MAAM,cAAc,CAAC,CACrC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE9F,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1C,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3C,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,GAAG,CACxB,MAAM,cAAc,EACpB,cAAc,CAAC,MAAM,cAAc,CAAC,CACrC,CAAC"}
package/dist/utils.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- import type { Provider } from './types.js';
1
+ import type { OkxBtcAddress, Provider } from './types.js';
2
2
  import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
3
3
  import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
4
+ import type { ProviderAPI as UtxoProviderApi } from '@rango-dev/wallets-core/namespaces/utxo';
4
5
  export declare function okx(): Provider | null;
5
6
  export declare function getInstanceOrThrow(): Provider;
6
7
  export declare function evmOKX(): EvmProviderApi;
7
8
  export declare function solanaOKX(): SolanaProviderApi;
9
+ export declare function bitcoinOKX(): UtxoProviderApi;
10
+ export declare function getBitcoinAccounts(): Promise<OkxBtcAddress>;
8
11
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAIlG,wBAAgB,GAAG,IAAI,QAAQ,GAAG,IAAI,CAcrC;AAED,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C;AAED,wBAAgB,MAAM,IAAI,cAAc,CAYvC;AAED,wBAAgB,SAAS,IAAI,iBAAiB,CAW7C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAI9F,wBAAgB,GAAG,IAAI,QAAQ,GAAG,IAAI,CAgBrC;AAED,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C;AAED,wBAAgB,MAAM,IAAI,cAAc,CAYvC;AAED,wBAAgB,SAAS,IAAI,iBAAiB,CAW7C;AACD,wBAAgB,UAAU,IAAI,eAAe,CAW5C;AACD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,CASjE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-okx",
3
- "version": "0.55.2-next.1",
3
+ "version": "0.55.2-next.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/mod.ts",
@@ -30,4 +30,4 @@
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  }
33
- }
33
+ }
package/readme.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # OKX Wallet
2
+
2
3
  OKX Wallet integration for hub.
3
4
  [Homepage](https://www.okx.com/web3) | [Docs](https://www.okx.com/web3/build/docs)
4
5
 
@@ -9,55 +10,67 @@ More about implementation status can be found [here](../readme.md).
9
10
  ### Group
10
11
 
11
12
  #### ✅ Solana
13
+
12
14
  - Fully supported in this integration.
13
15
  - No known limitations.
14
16
 
15
17
  ---
16
18
 
17
19
  #### ⚠️ EVM
20
+
18
21
  Supported networks :
19
- - Ethereum
20
- - BSC
21
- - Polygon
22
- - Fantom
23
- - Arbitrum
24
- - Optimism
25
- - Cronos
26
- - Boba
27
- - Gnosis
28
- - Moonbeam
29
- - Moonriver
30
- - Harmony
22
+
23
+ - Ethereum
24
+ - BSC
25
+ - Polygon
26
+ - Fantom
27
+ - Arbitrum
28
+ - Optimism
29
+ - Cronos
30
+ - Boba
31
+ - Gnosis
32
+ - Moonbeam
33
+ - Moonriver
34
+ - Harmony
31
35
  - Avalanche C-Chain
32
36
 
37
+ #### ⚠️ UTXO Chains
33
38
 
34
- #### 🚧 Cosmos
35
- The wallet supports Cosmos, but it is **not implemented** in the current integration.
39
+ The wallet only supports bitcoin.
40
+
41
+ #### 🚧 Cosmos
36
42
 
43
+ The wallet supports Cosmos, but it is **not implemented** in the current integration.
37
44
 
38
45
  #### 🚧 TON
39
- The wallet supports TON, but it is **not implemented** in the current integration.
40
46
 
47
+ The wallet supports TON, but it is **not implemented** in the current integration.
41
48
 
42
49
  #### 🚧 Sui
50
+
43
51
  The wallet supports Sui, but it is **not implemented** in the current integration.
44
52
 
45
53
 
46
- #### 🚧 UTXO Chains
47
- The wallet supports UTXO-based networks, but they are **not implemented** in the current integration.
48
54
 
49
55
  ### Feature
50
56
 
51
57
  #### ⚠️ Disconnect
58
+
52
59
  The disconnect function will not work for this wallet, as it attempts to invoke disconnect on the connect method for private key imported wallets.
53
60
  If the user disconnects the dApp from the wallet itself, we won't disconnect ourself. But we will get disconnected after refreshing the page.
54
61
  If the user connects the wallet to one account, switches to another account, and then disconnects one of the two from the wallet, the dApp automatically switches to the remaining account that wasn’t disconnected.
55
62
 
56
63
 
57
64
 
65
+ Here’s the updated **Switch Account** section with a concise mention that connection order affects switching accounts:
66
+
67
+ ---
68
+
58
69
  #### ⚠️ Switch Account
59
- If you switch accounts while still connected to the application, the `accountChanged` event will only emit for the last connected namespace. In result of that, the account for previously connected namespaces will not get updated and requires a disconnect and reconnect to properly connect to the desired account.
60
- Also, when you call connect on a previously connected namespace, it doesn't return the address of the new account the user switched to. To prevent the user from being stuck in such situation, we call `disconnect` on the wallet whenever user disconnects the wallet from the provider. This results in a limitation which is explained in the `Disconnect` section.
70
+
71
+ **Connection order also affects this behavior** depending on which namespace was connected first, some account updates may not propagate correctly across other namespaces. As a result, previously connected namespaces will not update automatically and require a manual disconnect and reconnect to sync the correct account.
72
+
73
+ Additionally, calling `connect` on a namespace that was already connected does not return the address of the newly selected account. To avoid leaving the user in an inconsistent state, we invoke a full wallet `disconnect` when the user disconnects the wallet from the provider.
61
74
 
62
75
 
63
76
  ---
@@ -0,0 +1,48 @@
1
+ import type { OkxBtcAddress } from '../types.js';
2
+
3
+ import { ActionBuilder } from '@rango-dev/wallets-core';
4
+ import { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';
5
+ import {
6
+ type ProviderAPI,
7
+ utils,
8
+ type UtxoActions,
9
+ } from '@rango-dev/wallets-core/namespaces/utxo';
10
+
11
+ export const changeAccountSubscriber = (getInstance: () => ProviderAPI) =>
12
+ new ChangeAccountSubscriberBuilder<OkxBtcAddress, ProviderAPI>()
13
+ .getInstance(getInstance)
14
+ /*
15
+ * Okx wallet may call the `changeAccount` event with `null` value
16
+ * but we shouldn't disconnect in this case.
17
+ */
18
+ .onSwitchAccount((event) => {
19
+ if (!event.payload?.address) {
20
+ event.preventDefault();
21
+ }
22
+ })
23
+
24
+ .format(async (_, event) => {
25
+ return utils.formatAccountsToCAIP(event ? [event.address] : []);
26
+ })
27
+ .addEventListener((instance, callback) => {
28
+ return instance.addListener('accountChanged', callback);
29
+ })
30
+ .removeEventListener((instance, callback) => {
31
+ return instance.removeListener('accountChanged', callback);
32
+ });
33
+
34
+ function canEagerConnect(getInstance: () => ProviderAPI) {
35
+ return new ActionBuilder<UtxoActions, 'canEagerConnect'>(
36
+ 'canEagerConnect'
37
+ ).action(async () => {
38
+ const instance = getInstance();
39
+ try {
40
+ const accounts = await instance.getAccounts();
41
+ return !!accounts.length;
42
+ } catch {
43
+ return false;
44
+ }
45
+ });
46
+ }
47
+
48
+ export const utxoBuilders = { changeAccountSubscriber, canEagerConnect };
package/src/constants.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  import { type ProviderMetadata } from '@rango-dev/wallets-core';
2
2
  import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
3
- import { type BlockchainMeta, solanaBlockchain } from 'rango-types';
3
+ import { Networks } from '@rango-dev/wallets-shared';
4
+ import {
5
+ type BlockchainMeta,
6
+ solanaBlockchain,
7
+ type TransferBlockchainMeta,
8
+ } from 'rango-types';
4
9
 
5
10
  import getSigners from './signer.js';
6
11
  import { getInstanceOrThrow } from './utils.js';
@@ -57,6 +62,16 @@ export const metadata: ProviderMetadata = {
57
62
  getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
58
63
  solanaBlockchain(allBlockchains),
59
64
  },
65
+ {
66
+ label: 'BTC',
67
+ value: 'UTXO',
68
+ id: 'BTC',
69
+ getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
70
+ allBlockchains.filter(
71
+ (chain): chain is TransferBlockchainMeta =>
72
+ chain.name === Networks.BTC
73
+ ),
74
+ },
60
75
  ],
61
76
  },
62
77
  },
@@ -0,0 +1,51 @@
1
+ import { NamespaceBuilder } from '@rango-dev/wallets-core';
2
+ import {
3
+ builders as commonBuilders,
4
+ standardizeAndThrowError,
5
+ } from '@rango-dev/wallets-core/namespaces/common';
6
+ import {
7
+ utils,
8
+ type UtxoActions,
9
+ } from '@rango-dev/wallets-core/namespaces/utxo';
10
+ import { builders } from '@rango-dev/wallets-core/namespaces/utxo';
11
+
12
+ import { utxoBuilders } from '../builders/utxo.js';
13
+ import { WALLET_ID } from '../constants.js';
14
+ import { bitcoinOKX, getBitcoinAccounts } from '../utils.js';
15
+
16
+ const [changeAccountSubscriber, changeAccountCleanup] = utxoBuilders
17
+ .changeAccountSubscriber(bitcoinOKX)
18
+ .build();
19
+
20
+ const canEagerConnect = utxoBuilders.canEagerConnect(bitcoinOKX).build();
21
+
22
+ const connect = builders
23
+ .connect()
24
+ .action(async function () {
25
+ const accountsResult = await getBitcoinAccounts();
26
+
27
+ if (!accountsResult?.address) {
28
+ throw new Error("Couldn't find any address!");
29
+ }
30
+ return utils.formatAccountsToCAIP([accountsResult.address]);
31
+ })
32
+ .before(changeAccountSubscriber)
33
+ .or(changeAccountCleanup)
34
+ .or(standardizeAndThrowError)
35
+ .build();
36
+
37
+ const disconnect = commonBuilders
38
+ .disconnect<UtxoActions>()
39
+ .before(() => {
40
+ bitcoinOKX().disconnect();
41
+ })
42
+ .after(changeAccountCleanup)
43
+ .build();
44
+
45
+ const utxo = new NamespaceBuilder<UtxoActions>('UTXO', WALLET_ID)
46
+ .action(connect)
47
+ .action(disconnect)
48
+ .action(canEagerConnect)
49
+ .build();
50
+
51
+ export { utxo };
package/src/provider.ts CHANGED
@@ -3,6 +3,7 @@ import { ProviderBuilder } from '@rango-dev/wallets-core';
3
3
  import { metadata, WALLET_ID } from './constants.js';
4
4
  import { evm } from './namespaces/evm.js';
5
5
  import { solana } from './namespaces/solana.js';
6
+ import { utxo } from './namespaces/utxo.js';
6
7
  import { okx as okxInstance } from './utils.js';
7
8
 
8
9
  const buildProvider = () =>
@@ -18,6 +19,8 @@ const buildProvider = () =>
18
19
  .config('metadata', metadata)
19
20
  .add('solana', solana)
20
21
  .add('evm', evm)
22
+ .add('utxo', utxo)
23
+
21
24
  .build();
22
25
 
23
26
  export { buildProvider };
package/src/signer.ts CHANGED
@@ -9,17 +9,22 @@ import {
9
9
  import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
10
10
 
11
11
  import { OKXSolanaSigner } from './signers/solana.js';
12
+ import { OKXUTXOSigner } from './signers/utxo.js';
12
13
 
13
14
  export default async function getSigners(
14
15
  provider: Provider
15
16
  ): Promise<SignerFactory> {
16
17
  const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);
17
18
  const solProvider = getNetworkInstance(provider, Networks.SOLANA);
19
+ const utxoProvider = getNetworkInstance(provider, Networks.BTC);
20
+
18
21
  const signers = new DefaultSignerFactory();
19
22
  const { DefaultEvmSigner } = await dynamicImportWithRefinedError(
20
23
  async () => await import('@rango-dev/signer-evm')
21
24
  );
22
25
  signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
23
26
  signers.registerSigner(TxType.SOLANA, new OKXSolanaSigner(solProvider));
27
+ signers.registerSigner(TxType.TRANSFER, new OKXUTXOSigner(utxoProvider));
28
+
24
29
  return signers;
25
30
  }
@@ -0,0 +1,57 @@
1
+ import type { ProviderAPI } from '@rango-dev/wallets-core/namespaces/utxo';
2
+ import type { GenericSigner, Transfer } from 'rango-types';
3
+
4
+ import { Networks } from '@rango-dev/wallets-shared';
5
+ import { SignerError } from 'rango-types';
6
+
7
+ export class OKXUTXOSigner implements GenericSigner<Transfer> {
8
+ private provider: ProviderAPI;
9
+ constructor(provider: ProviderAPI) {
10
+ this.provider = provider;
11
+ }
12
+
13
+ async signMessage(): Promise<string> {
14
+ throw SignerError.UnimplementedError('signMessage');
15
+ }
16
+
17
+ async signAndSendTx(tx: Transfer): Promise<{ hash: string }> {
18
+ const { asset, psbt } = tx;
19
+ if (!psbt) {
20
+ throw new Error(
21
+ 'No PSBT found to sign. Ensure a valid PSBT is provided.'
22
+ );
23
+ }
24
+
25
+ if (asset.blockchain !== Networks.BTC) {
26
+ throw new Error(
27
+ `Signing ${asset.blockchain} transaction is not implemented by the signer.`
28
+ );
29
+ }
30
+ // 1. Decode Base64 to hex
31
+ const psbtHex = Buffer.from(psbt.unsignedPsbtBase64, 'base64').toString(
32
+ 'hex'
33
+ );
34
+
35
+ // 2. Build UniSat inputs
36
+ const toSignInputs = psbt.inputsToSign.flatMap(
37
+ ({ address, signingIndexes }) =>
38
+ signingIndexes.map((index) => ({ index, address }))
39
+ );
40
+
41
+ try {
42
+ // 3. Sign (& auto-finalize)
43
+ const signedPsbtHex = await this.provider.signPsbt(psbtHex, {
44
+ autoFinalized: true,
45
+ toSignInputs,
46
+ });
47
+
48
+ // 4. Push signed psbt
49
+ const transactionHash = await this.provider.pushPsbt(signedPsbtHex);
50
+
51
+ return { hash: transactionHash };
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
+ } catch (error: any) {
54
+ throw new Error(error?.message || 'Error during signing transaction');
55
+ }
56
+ }
57
+ }
package/src/types.ts CHANGED
@@ -1,10 +1,17 @@
1
1
  import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
2
2
  import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
3
3
  import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
4
+ import type { ProviderAPI as UtxoProviderApi } from '@rango-dev/wallets-core/namespaces/utxo';
4
5
 
6
+ export type OkxBtcAddress = {
7
+ address: string;
8
+ publicKey: string;
9
+ compressedPublicKey: string;
10
+ };
5
11
  export type ProviderObject = {
6
12
  [LegacyNetworks.ETHEREUM]: EvmProviderApi;
7
13
  [LegacyNetworks.SOLANA]: SolanaProviderApi;
14
+ [LegacyNetworks.BTC]: UtxoProviderApi;
8
15
  };
9
16
  export type Provider = Map<
10
17
  keyof ProviderObject,
package/src/utils.ts CHANGED
@@ -1,6 +1,7 @@
1
- import type { Provider } from './types.js';
1
+ import type { OkxBtcAddress, Provider } from './types.js';
2
2
  import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
3
3
  import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
4
+ import type { ProviderAPI as UtxoProviderApi } from '@rango-dev/wallets-core/namespaces/utxo';
4
5
 
5
6
  import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
6
7
 
@@ -16,7 +17,9 @@ export function okx(): Provider | null {
16
17
  if (okxwallet.solana) {
17
18
  instances.set(LegacyNetworks.SOLANA, okxwallet.solana);
18
19
  }
19
-
20
+ if (okxwallet.bitcoin) {
21
+ instances.set(LegacyNetworks.BTC, okxwallet.bitcoin);
22
+ }
20
23
  return instances;
21
24
  }
22
25
 
@@ -56,3 +59,25 @@ export function solanaOKX(): SolanaProviderApi {
56
59
 
57
60
  return solanaInstance as SolanaProviderApi;
58
61
  }
62
+ export function bitcoinOKX(): UtxoProviderApi {
63
+ const instance = okx();
64
+ const bitcoinInstance = instance?.get(LegacyNetworks.BTC);
65
+
66
+ if (!bitcoinInstance) {
67
+ throw new Error(
68
+ 'OKX Wallet not injected or Utxo not enabled. Please check your wallet.'
69
+ );
70
+ }
71
+
72
+ return bitcoinInstance as UtxoProviderApi;
73
+ }
74
+ export async function getBitcoinAccounts(): Promise<OkxBtcAddress> {
75
+ const instance = bitcoinOKX();
76
+ const requestResult = await instance.connect();
77
+
78
+ if (requestResult.error?.message) {
79
+ throw new Error(requestResult.error.message);
80
+ }
81
+
82
+ return requestResult;
83
+ }