@rango-dev/provider-unisat 0.18.1-next.6 → 0.19.0
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.
- package/dist/mod.js +1 -1
- package/dist/mod.js.map +2 -2
- package/dist/signers/utxoSigner.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/signers/utxoSigner.ts +1 -0
- package/CHANGELOG.md +0 -90
package/dist/mod.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var f=Object.defineProperty;var o=(r,t)=>f(r,"name",{value:t,configurable:!0});var O=(r,t)=>()=>(r&&(t=r(r=0)),t);var
|
|
1
|
+
var f=Object.defineProperty;var o=(r,t)=>f(r,"name",{value:t,configurable:!0});var O=(r,t)=>()=>(r&&(t=r(r=0)),t);var j=(r,t)=>{for(var e in t)f(r,e,{get:t[e],enumerable:!0})};var b={};j(b,{BTCSigner:()=>m});import{parseErrorAndThrowStandardizeError as N}from"@hub3js/std/utils";import{isBitcoinBlockchain as k}from"@rango-dev/internal-blockchains";import*as l from"bitcoinjs-lib";import{SignerError as M}from"rango-types";var L,m,g=O(()=>{"use strict";L="https://go.getblock.io/f37bad28a991436483c0a3679a3acbee",m=class{static{o(this,"BTCSigner")}provider;constructor(t){this.provider=t}async signMessage(){throw M.UnimplementedError("signMessage")}async signAndSendTx(t){let{asset:e,psbt:n}=t;if(!n)throw new Error("No PSBT found to sign. Ensure a valid PSBT is provided.");if(!k(e.blockchain))throw new Error(`Signing ${e.blockchain} transaction is not implemented by the signer.`);if((await this.provider.getChain())?.enum!=="BITCOIN_MAINNET")throw new Error("Switch your network to Bitcoin to proceed swap.");let S=Buffer.from(n.unsignedPsbtBase64,"base64").toString("hex"),C=n.inputsToSign.flatMap(({address:i,signingIndexes:U})=>U.map(_=>({index:_,address:i}))),E=await this.provider.signPsbt(S,{autoFinalized:!0,toSignInputs:C}).catch(i=>{N(i)}),B=l.Psbt.fromHex(E).extractTransaction().toHex(),p=await fetch(L,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({method:"sendrawtransaction",params:[B]})});if(!p.ok){let i=await p.text();throw new Error(`Error broadcasting transaction: ${i}`)}let a=await p.json();if(!a.result)throw new Error(`Error broadcasting transaction. Error Code ${a.error.code}: ${a.error.message}`);return{hash:a.result}}}});import{defineVersions as Z}from"@hub3js/core/utils";import{ProviderBuilder as Y}from"@hub3js/core";import{CAIP_BITCOIN_CHAIN_ID as W,isChainSupported as R}from"@hub3js/bip122";import{UTXO_NAMESPACE as D}from"@hub3js/namespaces";import{DefaultSignerFactory as H,TransactionType as F}from"rango-types";async function d(r){let t=r.get(D),{BTCSigner:e}=await Promise.resolve().then(()=>(g(),b)),n=new H;return t&&n.registerSigner(F.TRANSFER,new e(t)),n}o(d,"getSigners");import{UTXO_NAMESPACE as h}from"@hub3js/namespaces";function c(){let{unisat:r}=window;if(!r)return null;let t=new Map;return r&&t.set(h,r),t}o(c,"unisat");function P(){let r=c();if(!r)throw new Error("Unisat is not injected. Please check your wallet.");return r}o(P,"getInstanceOrThrow");function u(){let t=c()?.get(h);if(!t)throw new Error("UniSat not injected. Please check your wallet.");return t}o(u,"bitcoinUnisat");var s="unisat",x={name:"UniSat",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/unisat/icon.svg",extensions:{chrome:"https://chromewebstore.google.com/detail/unisat-wallet/ppbibelpcjmhbdihakflkdcoccbgbkpo",homepage:"https://unisat.io/"},properties:[{name:"namespaces",value:{selection:"single",data:[{label:"BTC",value:"UTXO",id:"BTC",isChainSupported:R([W])}]}},{name:"signers",value:{getSigners:async()=>d(P())}}]};import{builders as A,CAIP_BITCOIN_CHAIN_ID as G}from"@hub3js/bip122";import{NamespaceBuilder as q}from"@hub3js/core";import*as T from"@hub3js/std/builders";import{standardizeAndThrowError as J}from"@hub3js/std/operators";import{CAIP_BITCOIN_CHAIN_ID as X,utils as $}from"@hub3js/bip122";function z(r){return async()=>{let t=await r().requestAccounts();return $.formatAccountsToCAIP(t,X)}}o(z,"connect");var w={connect:z};var[V,v]=A.changeAccountSubscriber(u,{network:G}).build(),K=A.connect().action(w.connect(u)).before(V).or(v).or(J).build(),Q=T.disconnect().after(v).build(),I=new q("UTXO",s).action(K).action(Q).build();var y=o(()=>new Y(s).init(function(r){let[,t]=r.state();c()&&(t("installed",!0),console.debug("[unisat] instance detected.",r))}).config("metadata",x).add("utxo",I).build(),"buildProvider");var Mt=o(()=>Z().version("1.0.0",y()).build(),"versions");export{s as WALLET_ID,Mt 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
3
|
"sources": ["../src/signers/utxoSigner.ts", "../src/mod.ts", "../src/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/utils.ts", "../src/namespaces/utxo.ts", "../src/actions/utxo.ts"],
|
|
4
|
-
"sourcesContent": ["import type { GenericSigner, Transfer } from 'rango-types';\n\nimport { parseErrorAndThrowStandardizeError } from '@hub3js/std/utils';\nimport { isBitcoinBlockchain } from '@rango-dev/internal-blockchains';\nimport * as bitcoin from 'bitcoinjs-lib';\nimport { SignerError } from 'rango-types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TransferExternalProvider = any;\n\nconst BTC_RPC_URL = 'https://go.getblock.io/f37bad28a991436483c0a3679a3acbee';\n\nexport class BTCSigner implements GenericSigner<Transfer> {\n private provider: TransferExternalProvider;\n constructor(provider: TransferExternalProvider) {\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 (!isBitcoinBlockchain(asset.blockchain)) {\n throw new Error(\n `Signing ${asset.blockchain} transaction is not implemented by the signer.`\n );\n }\n\n /*\n * TODO this logic should be added to queue manager rango preset, for safety we are rejecting signing process to avoid asset loss.\n * https://docs.unisat.io/dev/open-api-documentation/unisat-wallet/supported-chains\n */\n const currentChain = await this.provider.getChain();\n if (currentChain?.enum !== 'BITCOIN_MAINNET') {\n throw new Error(`Switch your network to Bitcoin to proceed swap.`);\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 // 3. Sign (& auto-finalize)\n const signedPsbtHex = await this.provider\n .signPsbt(psbtHex, {\n autoFinalized: true,\n toSignInputs,\n })\n .catch((e: unknown) => {\n parseErrorAndThrowStandardizeError(e);\n });\n\n // 4. Parse the PSBT hex and extract the raw transaction\n const psbtObject = bitcoin.Psbt.fromHex(signedPsbtHex);\n const finalPsbtBaseHex = psbtObject.extractTransaction().toHex();\n\n // 5. Broadcast PSBT to rpc node\n const response = await fetch(BTC_RPC_URL, {\n method: 'POST',\n body: JSON.stringify({\n method: 'sendrawtransaction',\n params: [finalPsbtBaseHex],\n }),\n });\n\n if (!response.ok) {\n // Handle network and fetch errors\n const errorText = await response.text();\n throw new Error(`Error broadcasting transaction: ${errorText}`);\n }\n\n const data = await response.json();\n\n if (!data.result) {\n // Handle Bitcoin specific errors\n throw new Error(\n `Error broadcasting transaction. Error Code ${data.error.code}: ${data.error.message}`\n );\n }\n\n return { hash: data.result };\n }\n}\n", "import { defineVersions } from '@hub3js/core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\nexport { WALLET_ID } from './constants.js';\n", "import { ProviderBuilder } from '@hub3js/core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { utxo } from './namespaces/utxo.js';\nimport { unisat as unisatInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (unisatInstance()) {\n setState('installed', true);\n console.debug('[unisat] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('utxo', utxo)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport {\n CAIP_BITCOIN_CHAIN_ID,\n isChainSupported as isBip122ChainSupported,\n} from '@hub3js/bip122';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'unisat';\n\nexport const metadata: ProviderMetadata = {\n name: 'UniSat',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/unisat/icon.svg',\n extensions: {\n chrome:\n 'https://chromewebstore.google.com/detail/unisat-wallet/ppbibelpcjmhbdihakflkdcoccbgbkpo',\n homepage: 'https://unisat.io/',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'single',\n data: [\n {\n label: 'BTC',\n value: 'UTXO',\n id: 'BTC',\n isChainSupported: isBip122ChainSupported([CAIP_BITCOIN_CHAIN_ID]),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { UTXO_NAMESPACE } from '@hub3js/namespaces';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const bitcoinInstance = provider.get(UTXO_NAMESPACE);\n const { BTCSigner } = await import('./signers/utxoSigner.js');\n const signers = new DefaultSignerFactory();\n if (!!bitcoinInstance) {\n signers.registerSigner(TxType.TRANSFER, new BTCSigner(bitcoinInstance));\n }\n return signers;\n}\n", "import type { ProviderAPI as UtxoProviderApi } from '@hub3js/bip122';\nimport type { InstanceMap } from '@hub3js/std/types';\n\nimport { UTXO_NAMESPACE } from '@hub3js/namespaces';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ProviderAPI = Record<string, any>;\nexport type ProviderObject = {\n [UTXO_NAMESPACE]: UtxoProviderApi;\n};\nexport type Provider = InstanceMap<ProviderObject>;\n\nexport function unisat(): Provider | null {\n const { unisat } = window;\n\n if (!unisat) {\n return null;\n }\n\n const instances: Provider = new Map();\n\n if (unisat) {\n instances.set(UTXO_NAMESPACE, unisat);\n }\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = unisat();\n\n if (!instances) {\n throw new Error('Unisat is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n\nexport function bitcoinUnisat(): ProviderAPI {\n const instances = unisat();\n const bitcoinInstance = instances?.get(UTXO_NAMESPACE);\n\n if (!bitcoinInstance) {\n throw new Error('UniSat not injected. Please check your wallet.');\n }\n\n return bitcoinInstance;\n}\n", "import type { UtxoActions } from '@hub3js/bip122';\n\nimport { builders, CAIP_BITCOIN_CHAIN_ID } from '@hub3js/bip122';\nimport { NamespaceBuilder } from '@hub3js/core';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { standardizeAndThrowError } from '@hub3js/std/operators';\n\nimport { utxoActions } from '../actions/utxo.js';\nimport { WALLET_ID } from '../constants.js';\nimport { bitcoinUnisat } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(bitcoinUnisat, { network: CAIP_BITCOIN_CHAIN_ID })\n .build();\n\nconst connect = builders\n .connect()\n .action(utxoActions.connect(bitcoinUnisat))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<UtxoActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst utxo = new NamespaceBuilder<UtxoActions>('UTXO', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .build();\n\nexport { utxo };\n", "import type { ProviderAPI, UtxoActions } from '@hub3js/bip122';\nimport type { Context, FunctionWithContext } from '@hub3js/core';\n\nimport { CAIP_BITCOIN_CHAIN_ID, utils } from '@hub3js/bip122';\n\nexport function connect(\n instance: () => ProviderAPI\n): FunctionWithContext<UtxoActions['connect'], Context> {\n return async () => {\n const accounts = await instance().requestAccounts();\n\n return utils.formatAccountsToCAIP(accounts, CAIP_BITCOIN_CHAIN_ID);\n };\n}\n\nexport const utxoActions = { connect };\n"],
|
|
5
|
-
"mappings": "gLAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,eAAAE,IAEA,OAAS,sCAAAC,MAA0C,oBACnD,OAAS,uBAAAC,MAA2B,kCACpC,UAAYC,MAAa,gBACzB,OAAS,eAAAC,MAAmB,cAL5B,IAUMC,EAEOL,EAZbM,EAAAC,EAAA,kBAUMF,EAAc,0DAEPL,EAAN,KAAmD,CAZ1D,MAY0D,CAAAQ,EAAA,kBAChD,SACR,YAAYC,EAAoC,CAC9C,KAAK,SAAWA,CAClB,CAEA,MAAM,aAA+B,CACnC,MAAML,EAAY,mBAAmB,aAAa,CACpD,CAEA,MAAM,cAAcM,EAAyC,CAC3D,GAAM,CAAE,MAAAC,EAAO,KAAAC,CAAK,EAAIF,EACxB,GAAI,CAACE,EACH,MAAM,IAAI,MACR,yDACF,EAGF,GAAI,CAACV,EAAoBS,EAAM,UAAU,EACvC,MAAM,IAAI,MACR,WAAWA,EAAM,UAAU,gDAC7B,EAQF,IADqB,MAAM,KAAK,SAAS,SAAS,IAChC,OAAS,kBACzB,MAAM,IAAI,MAAM,iDAAiD,EAInE,IAAME,EAAU,OAAO,KAAKD,EAAK,mBAAoB,QAAQ,EAAE,SAC7D,KACF,EAGME,EAAeF,EAAK,aAAa,QACrC,CAAC,CAAE,QAAAG,EAAS,eAAAC,CAAe,IACzBA,EAAe,IAAKC,IAAW,CAAE,MAAAA,EAAO,QAAAF,CAAQ,EAAE,CACtD,EAGMG,EAAgB,MAAM,KAAK,SAC9B,SAASL,EAAS,CACjB,cAAe,GACf,aAAAC,CACF,CAAC,EACA,MAAOK,GAAe,CACrBlB,EAAmCkB,CAAC,CACtC,CAAC,EAIGC,EADqB,OAAK,QAAQF,CAAa,EACjB,mBAAmB,EAAE,MAAM,EAGzDG,EAAW,MAAM,MAAMhB,EAAa,CACxC,OAAQ,OACR,KAAM,KAAK,UAAU,CACnB,OAAQ,qBACR,OAAQ,CAACe,CAAgB,CAC3B,CAAC,CACH,CAAC,EAED,GAAI,CAACC,EAAS,GAAI,CAEhB,IAAMC,EAAY,MAAMD,EAAS,KAAK,EACtC,MAAM,IAAI,MAAM,mCAAmCC,CAAS,EAAE,CAChE,CAEA,IAAMC,EAAO,MAAMF,EAAS,KAAK,EAEjC,GAAI,CAACE,EAAK,OAER,MAAM,IAAI,MACR,8CAA8CA,EAAK,MAAM,IAAI,KAAKA,EAAK,MAAM,OAAO,EACtF,EAGF,MAAO,CAAE,KAAMA,EAAK,MAAO,CAC7B,CACF,
|
|
4
|
+
"sourcesContent": ["import type { GenericSigner, Transfer } from 'rango-types';\n\nimport { parseErrorAndThrowStandardizeError } from '@hub3js/std/utils';\nimport { isBitcoinBlockchain } from '@rango-dev/internal-blockchains';\nimport * as bitcoin from 'bitcoinjs-lib';\nimport { SignerError } from 'rango-types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TransferExternalProvider = any;\n\nconst BTC_RPC_URL = 'https://go.getblock.io/f37bad28a991436483c0a3679a3acbee';\n\nexport class BTCSigner implements GenericSigner<Transfer> {\n private provider: TransferExternalProvider;\n constructor(provider: TransferExternalProvider) {\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 (!isBitcoinBlockchain(asset.blockchain)) {\n throw new Error(\n `Signing ${asset.blockchain} transaction is not implemented by the signer.`\n );\n }\n\n /*\n * TODO this logic should be added to queue manager rango preset, for safety we are rejecting signing process to avoid asset loss.\n * https://docs.unisat.io/dev/open-api-documentation/unisat-wallet/supported-chains\n */\n const currentChain = await this.provider.getChain();\n if (currentChain?.enum !== 'BITCOIN_MAINNET') {\n throw new Error(`Switch your network to Bitcoin to proceed swap.`);\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 // 3. Sign (& auto-finalize)\n const signedPsbtHex = await this.provider\n .signPsbt(psbtHex, {\n autoFinalized: true,\n toSignInputs,\n })\n .catch((e: unknown) => {\n parseErrorAndThrowStandardizeError(e);\n });\n\n // 4. Parse the PSBT hex and extract the raw transaction\n const psbtObject = bitcoin.Psbt.fromHex(signedPsbtHex);\n const finalPsbtBaseHex = psbtObject.extractTransaction().toHex();\n\n // 5. Broadcast PSBT to rpc node\n const response = await fetch(BTC_RPC_URL, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n method: 'sendrawtransaction',\n params: [finalPsbtBaseHex],\n }),\n });\n\n if (!response.ok) {\n // Handle network and fetch errors\n const errorText = await response.text();\n throw new Error(`Error broadcasting transaction: ${errorText}`);\n }\n\n const data = await response.json();\n\n if (!data.result) {\n // Handle Bitcoin specific errors\n throw new Error(\n `Error broadcasting transaction. Error Code ${data.error.code}: ${data.error.message}`\n );\n }\n\n return { hash: data.result };\n }\n}\n", "import { defineVersions } from '@hub3js/core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\nexport { WALLET_ID } from './constants.js';\n", "import { ProviderBuilder } from '@hub3js/core';\n\nimport { metadata, WALLET_ID } from './constants.js';\nimport { utxo } from './namespaces/utxo.js';\nimport { unisat as unisatInstance } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n if (unisatInstance()) {\n setState('installed', true);\n console.debug('[unisat] instance detected.', context);\n }\n })\n .config('metadata', metadata)\n .add('utxo', utxo)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport {\n CAIP_BITCOIN_CHAIN_ID,\n isChainSupported as isBip122ChainSupported,\n} from '@hub3js/bip122';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'unisat';\n\nexport const metadata: ProviderMetadata = {\n name: 'UniSat',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/unisat/icon.svg',\n extensions: {\n chrome:\n 'https://chromewebstore.google.com/detail/unisat-wallet/ppbibelpcjmhbdihakflkdcoccbgbkpo',\n homepage: 'https://unisat.io/',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'single',\n data: [\n {\n label: 'BTC',\n value: 'UTXO',\n id: 'BTC',\n isChainSupported: isBip122ChainSupported([CAIP_BITCOIN_CHAIN_ID]),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './utils.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { UTXO_NAMESPACE } from '@hub3js/namespaces';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const bitcoinInstance = provider.get(UTXO_NAMESPACE);\n const { BTCSigner } = await import('./signers/utxoSigner.js');\n const signers = new DefaultSignerFactory();\n if (!!bitcoinInstance) {\n signers.registerSigner(TxType.TRANSFER, new BTCSigner(bitcoinInstance));\n }\n return signers;\n}\n", "import type { ProviderAPI as UtxoProviderApi } from '@hub3js/bip122';\nimport type { InstanceMap } from '@hub3js/std/types';\n\nimport { UTXO_NAMESPACE } from '@hub3js/namespaces';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ProviderAPI = Record<string, any>;\nexport type ProviderObject = {\n [UTXO_NAMESPACE]: UtxoProviderApi;\n};\nexport type Provider = InstanceMap<ProviderObject>;\n\nexport function unisat(): Provider | null {\n const { unisat } = window;\n\n if (!unisat) {\n return null;\n }\n\n const instances: Provider = new Map();\n\n if (unisat) {\n instances.set(UTXO_NAMESPACE, unisat);\n }\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = unisat();\n\n if (!instances) {\n throw new Error('Unisat is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n\nexport function bitcoinUnisat(): ProviderAPI {\n const instances = unisat();\n const bitcoinInstance = instances?.get(UTXO_NAMESPACE);\n\n if (!bitcoinInstance) {\n throw new Error('UniSat not injected. Please check your wallet.');\n }\n\n return bitcoinInstance;\n}\n", "import type { UtxoActions } from '@hub3js/bip122';\n\nimport { builders, CAIP_BITCOIN_CHAIN_ID } from '@hub3js/bip122';\nimport { NamespaceBuilder } from '@hub3js/core';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { standardizeAndThrowError } from '@hub3js/std/operators';\n\nimport { utxoActions } from '../actions/utxo.js';\nimport { WALLET_ID } from '../constants.js';\nimport { bitcoinUnisat } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(bitcoinUnisat, { network: CAIP_BITCOIN_CHAIN_ID })\n .build();\n\nconst connect = builders\n .connect()\n .action(utxoActions.connect(bitcoinUnisat))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<UtxoActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst utxo = new NamespaceBuilder<UtxoActions>('UTXO', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .build();\n\nexport { utxo };\n", "import type { ProviderAPI, UtxoActions } from '@hub3js/bip122';\nimport type { Context, FunctionWithContext } from '@hub3js/core';\n\nimport { CAIP_BITCOIN_CHAIN_ID, utils } from '@hub3js/bip122';\n\nexport function connect(\n instance: () => ProviderAPI\n): FunctionWithContext<UtxoActions['connect'], Context> {\n return async () => {\n const accounts = await instance().requestAccounts();\n\n return utils.formatAccountsToCAIP(accounts, CAIP_BITCOIN_CHAIN_ID);\n };\n}\n\nexport const utxoActions = { connect };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["utxoSigner_exports", "__export", "BTCSigner", "parseErrorAndThrowStandardizeError", "isBitcoinBlockchain", "bitcoin", "SignerError", "BTC_RPC_URL", "init_utxoSigner", "__esmMin", "__name", "provider", "tx", "asset", "psbt", "psbtHex", "toSignInputs", "address", "signingIndexes", "index", "signedPsbtHex", "e", "finalPsbtBaseHex", "response", "errorText", "data", "defineVersions", "ProviderBuilder", "CAIP_BITCOIN_CHAIN_ID", "isBip122ChainSupported", "UTXO_NAMESPACE", "DefaultSignerFactory", "TxType", "getSigners", "provider", "bitcoinInstance", "UTXO_NAMESPACE", "BTCSigner", "signers", "DefaultSignerFactory", "TxType", "__name", "UTXO_NAMESPACE", "unisat", "instances", "UTXO_NAMESPACE", "__name", "getInstanceOrThrow", "bitcoinUnisat", "bitcoinInstance", "WALLET_ID", "metadata", "isBip122ChainSupported", "CAIP_BITCOIN_CHAIN_ID", "getSigners", "getInstanceOrThrow", "builders", "CAIP_BITCOIN_CHAIN_ID", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "CAIP_BITCOIN_CHAIN_ID", "utils", "connect", "instance", "accounts", "utils", "CAIP_BITCOIN_CHAIN_ID", "__name", "utxoActions", "changeAccountSubscriber", "changeAccountCleanup", "builders", "bitcoinUnisat", "CAIP_BITCOIN_CHAIN_ID", "connect", "utxoActions", "standardizeAndThrowError", "disconnect", "utxo", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "unisat", "metadata", "utxo", "versions", "__name", "defineVersions", "buildProvider"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utxoSigner.d.ts","sourceRoot":"","sources":["../../src/signers/utxoSigner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQ3D,KAAK,wBAAwB,GAAG,GAAG,CAAC;AAIpC,qBAAa,SAAU,YAAW,aAAa,CAAC,QAAQ,CAAC;IACvD,OAAO,CAAC,QAAQ,CAA2B;gBAC/B,QAAQ,EAAE,wBAAwB;IAIxC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"utxoSigner.d.ts","sourceRoot":"","sources":["../../src/signers/utxoSigner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQ3D,KAAK,wBAAwB,GAAG,GAAG,CAAC;AAIpC,qBAAa,SAAU,YAAW,aAAa,CAAC,QAAQ,CAAC;IACvD,OAAO,CAAC,QAAQ,CAA2B;gBAC/B,QAAQ,EAAE,wBAAwB;IAIxC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CA2E7D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/provider-unisat",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/mod.ts",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"@hub3js/core": "^0.62.0",
|
|
26
26
|
"@hub3js/namespaces": "^0.5.1",
|
|
27
27
|
"@hub3js/std": "^0.4.0",
|
|
28
|
-
"@rango-dev/internal-blockchains": "^0.
|
|
29
|
-
"@rango-dev/wallets-core": "^0.
|
|
28
|
+
"@rango-dev/internal-blockchains": "^0.2.0",
|
|
29
|
+
"@rango-dev/wallets-core": "^0.62.0",
|
|
30
30
|
"bitcoinjs-lib": "^6.1.7",
|
|
31
31
|
"caip": "^1.1.1",
|
|
32
32
|
"rango-types": "^0.5.0"
|
|
@@ -34,4 +34,4 @@
|
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|
|
36
36
|
}
|
|
37
|
-
}
|
|
37
|
+
}
|
|
@@ -71,6 +71,7 @@ export class BTCSigner implements GenericSigner<Transfer> {
|
|
|
71
71
|
// 5. Broadcast PSBT to rpc node
|
|
72
72
|
const response = await fetch(BTC_RPC_URL, {
|
|
73
73
|
method: 'POST',
|
|
74
|
+
headers: { 'Content-Type': 'application/json' },
|
|
74
75
|
body: JSON.stringify({
|
|
75
76
|
method: 'sendrawtransaction',
|
|
76
77
|
params: [finalPsbtBaseHex],
|
package/CHANGELOG.md
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# [0.18.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.17.0...provider-unisat@0.18.0) (2026-08-18)
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
# [0.17.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.16.0...provider-unisat@0.17.0) (2026-07-07)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# [0.16.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.15.1...provider-unisat@0.16.0) (2026-05-31)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## [0.15.1](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.15.0...provider-unisat@0.15.1) (2026-05-02)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# [0.15.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.14.0...provider-unisat@0.15.0) (2026-04-29)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
# [0.14.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.13.0...provider-unisat@0.14.0) (2025-12-30)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
# [0.13.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.12.0...provider-unisat@0.13.0) (2025-12-15)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
# [0.12.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.11.0...provider-unisat@0.12.0) (2025-12-09)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
# [0.11.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.10.1...provider-unisat@0.11.0) (2025-12-02)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
## [0.10.1](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.10.0...provider-unisat@0.10.1) (2025-11-22)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
# [0.8.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.7.0...provider-unisat@0.8.0) (2025-10-29)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
### Reverts
|
|
45
|
-
|
|
46
|
-
* Revert "feat: implement deep linking" ([a0b0edc](https://github.com/rango-exchange/rango-client/commit/a0b0edcc052bfea69af2037b73c0bb6a9b38c2a9))
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
# [0.7.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.6.0...provider-unisat@0.7.0) (2025-09-29)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
# [0.6.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.5.0...provider-unisat@0.6.0) (2025-09-06)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
### Features
|
|
58
|
-
|
|
59
|
-
* implement deep linking ([1dec48e](https://github.com/rango-exchange/rango-client/commit/1dec48e4db944977fb6d3797d7aa49527940fab6))
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
# [0.5.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.4.0...provider-unisat@0.5.0) (2025-08-19)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
### Bug Fixes
|
|
67
|
-
|
|
68
|
-
* add rango-dev/wallets-core to dependencies of providers ([84b4b2b](https://github.com/rango-exchange/rango-client/commit/84b4b2b7c3a7f5631228fb6ebf04617c3c4428e9))
|
|
69
|
-
* remove retry dynamic import and throw refined error on dynamic import failure ([a2944ac](https://github.com/rango-exchange/rango-client/commit/a2944ac3c05a0e945f6e5621fa5693ab89625485))
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
### Features
|
|
73
|
-
|
|
74
|
-
* implement retry mechanism for lazy imports ([9a8e191](https://github.com/rango-exchange/rango-client/commit/9a8e191711d2319990ca4d0613e8188a5f86842f))
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
# [0.4.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.3.0...provider-unisat@0.4.0) (2025-08-05)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
# [0.3.0](https://github.com/rango-exchange/rango-client/compare/provider-unisat@0.2.0...provider-unisat@0.3.0) (2025-07-22)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
### Reverts
|
|
86
|
-
|
|
87
|
-
* Revert "chore(release): publish" ([064ce15](https://github.com/rango-exchange/rango-client/commit/064ce157a2f819856f647f83aeb1c0410542e8d7))
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|