bitcoin-wallet-connector 0.1.0 → 0.2.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/README.md +24 -21
- package/lib/BitcoinConnectionProvider.d.ts +3 -3
- package/lib/BitcoinWalletConnector-BC92ulXx.js +2 -0
- package/lib/BitcoinWalletConnector-BC92ulXx.js.map +1 -0
- package/lib/{BitcoinWalletAdapterConnector-Bq835yj0.mjs → BitcoinWalletConnector-CS0BshOl.mjs} +11 -19
- package/lib/BitcoinWalletConnector-CS0BshOl.mjs.map +1 -0
- package/lib/{BitcoinWalletAdapterConnector.d.ts → BitcoinWalletConnector.d.ts} +4 -5
- package/lib/BitgetWalletAdapter.impl-D8kqiYDi.mjs +11 -0
- package/lib/BitgetWalletAdapter.impl-D8kqiYDi.mjs.map +1 -0
- package/lib/BitgetWalletAdapter.impl-DiyzNQ9d.js +2 -0
- package/lib/BitgetWalletAdapter.impl-DiyzNQ9d.js.map +1 -0
- package/lib/{LeatherWalletAdapter.impl-RUYx555r.mjs → LeatherWalletAdapter.impl-B1PoZS7z.mjs} +48 -37
- package/lib/LeatherWalletAdapter.impl-B1PoZS7z.mjs.map +1 -0
- package/lib/LeatherWalletAdapter.impl-BIWirus3.js +2 -0
- package/lib/LeatherWalletAdapter.impl-BIWirus3.js.map +1 -0
- package/lib/{MagicEdenWalletAdapter.impl-CrA6SGvG.mjs → MagicEdenWalletAdapter.impl-B3d5lbkD.mjs} +31 -20
- package/lib/MagicEdenWalletAdapter.impl-B3d5lbkD.mjs.map +1 -0
- package/lib/MagicEdenWalletAdapter.impl-DLBP3p4o.js +2 -0
- package/lib/MagicEdenWalletAdapter.impl-DLBP3p4o.js.map +1 -0
- package/lib/OkxWalletAdapter.impl-7cj96tmr.js +2 -0
- package/lib/OkxWalletAdapter.impl-7cj96tmr.js.map +1 -0
- package/lib/{OkxWalletAdapter.impl-BepoUL1B.mjs → OkxWalletAdapter.impl-nRgHsPTn.mjs} +13 -9
- package/lib/OkxWalletAdapter.impl-nRgHsPTn.mjs.map +1 -0
- package/lib/{UnisatCompatibleWalletAdapterImpl-M38FqkZI.mjs → UnisatCompatibleWalletAdapterImpl-8lRRF7Zj.mjs} +18 -10
- package/lib/UnisatCompatibleWalletAdapterImpl-8lRRF7Zj.mjs.map +1 -0
- package/lib/{UnisatCompatibleWalletAdapterImpl-Cq2Oqk1b.js → UnisatCompatibleWalletAdapterImpl-C-JWrc9s.js} +2 -2
- package/lib/UnisatCompatibleWalletAdapterImpl-C-JWrc9s.js.map +1 -0
- package/lib/UnisatWalletAdapter.impl-DXDfnHz_.js +2 -0
- package/lib/UnisatWalletAdapter.impl-DXDfnHz_.js.map +1 -0
- package/lib/UnisatWalletAdapter.impl-DvA33Ikj.mjs +19 -0
- package/lib/UnisatWalletAdapter.impl-DvA33Ikj.mjs.map +1 -0
- package/lib/WalletAdapters.types-CExaiK0o.js +2 -0
- package/lib/WalletAdapters.types-CExaiK0o.js.map +1 -0
- package/lib/WalletAdapters.types-DBvhI1hu.mjs +20 -0
- package/lib/WalletAdapters.types-DBvhI1hu.mjs.map +1 -0
- package/lib/WalletAdapters.types.d.ts +7 -12
- package/lib/{XverseCompatibleWalletAdapterImpl-Bf-BK5VK.js → XverseCompatibleWalletAdapterImpl-Dp_GUxQM.js} +2 -2
- package/lib/XverseCompatibleWalletAdapterImpl-Dp_GUxQM.js.map +1 -0
- package/lib/{XverseCompatibleWalletAdapterImpl-DXKnO_-V.mjs → XverseCompatibleWalletAdapterImpl-bgp9xDYH.mjs} +12 -8
- package/lib/XverseCompatibleWalletAdapterImpl-bgp9xDYH.mjs.map +1 -0
- package/lib/{XverseWalletAdapter.impl-CZO0RQva.mjs → XverseWalletAdapter.impl-BOpY4Vf8.mjs} +15 -15
- package/lib/XverseWalletAdapter.impl-BOpY4Vf8.mjs.map +1 -0
- package/lib/XverseWalletAdapter.impl-D0eOtEOa.js +2 -0
- package/lib/XverseWalletAdapter.impl-D0eOtEOa.js.map +1 -0
- package/lib/adapters/BitgetWalletAdapter.d.ts +6 -2
- package/lib/adapters/LeatherWalletAdapter.d.ts +4 -2
- package/lib/adapters/LeatherWalletAdapter.impl.d.ts +8 -1
- package/lib/adapters/MagicEdenWalletAdapter.d.ts +5 -2
- package/lib/adapters/MagicEdenWalletAdapter.impl.d.ts +1 -1
- package/lib/adapters/MockAddressWalletAdapter.d.ts +8 -32
- package/lib/adapters/OkxWalletAdapter.d.ts +3 -2
- package/lib/adapters/OkxWalletAdapter.impl.d.ts +5 -1
- package/lib/adapters/UnisatWalletAdapter.d.ts +3 -2
- package/lib/adapters/UnisatWalletAdapter.impl.d.ts +4 -0
- package/lib/adapters/XverseWalletAdapter.d.ts +3 -2
- package/lib/adapters/XverseWalletAdapter.impl.d.ts +1 -1
- package/lib/adapters/index.d.ts +6 -6
- package/lib/adapters.js +1 -1
- package/lib/adapters.mjs +8 -8
- package/lib/constants-B7qVf97f.mjs +5 -0
- package/lib/constants-B7qVf97f.mjs.map +1 -0
- package/lib/constants-Dr0_Mix2.js +2 -0
- package/lib/constants-Dr0_Mix2.js.map +1 -0
- package/lib/constants.d.ts +1 -0
- package/lib/{index-D7YwhNAG.mjs → index-DM4G-LJz.mjs} +639 -590
- package/lib/index-DM4G-LJz.mjs.map +1 -0
- package/lib/index-jRY8YhyK.js +2 -0
- package/lib/index-jRY8YhyK.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.mjs +13 -13
- package/lib/react.js +1 -1
- package/lib/react.js.map +1 -1
- package/lib/react.mjs +7 -7
- package/lib/react.mjs.map +1 -1
- package/lib/{transaction-CiLOYSE_.mjs → transaction-4ShhFCwN.mjs} +2 -2
- package/lib/{transaction-CiLOYSE_.mjs.map → transaction-4ShhFCwN.mjs.map} +1 -1
- package/lib/{transaction-CzdnbXSo.js → transaction-B6SlpRzN.js} +2 -2
- package/lib/{transaction-CzdnbXSo.js.map → transaction-B6SlpRzN.js.map} +1 -1
- package/lib/utils/UnisatCompatibleWalletAdapterImpl.d.ts +11 -3
- package/lib/utils/XverseCompatibleWalletAdapterImpl.d.ts +4 -0
- package/lib/utils/XverseCompatibleWalletAdapterImpl_legacy.d.ts +7 -2
- package/package.json +9 -10
- package/src/BitcoinConnectionProvider.stories.tsx +111 -43
- package/src/BitcoinConnectionProvider.tsx +5 -5
- package/src/{BitcoinWalletAdapterConnector.ts → BitcoinWalletConnector.ts} +18 -26
- package/src/WalletAdapters.types.ts +13 -22
- package/src/adapters/BitgetWalletAdapter.impl.ts +2 -1
- package/src/adapters/BitgetWalletAdapter.ts +9 -7
- package/src/adapters/LeatherWalletAdapter.impl.ts +23 -13
- package/src/adapters/LeatherWalletAdapter.ts +11 -8
- package/src/adapters/MagicEdenWalletAdapter.impl.ts +9 -8
- package/src/adapters/MagicEdenWalletAdapter.ts +17 -14
- package/src/adapters/MockAddressWalletAdapter.ts +61 -35
- package/src/adapters/OkxWalletAdapter.impl.ts +12 -7
- package/src/adapters/OkxWalletAdapter.ts +10 -7
- package/src/adapters/UnisatWalletAdapter.impl.ts +8 -2
- package/src/adapters/UnisatWalletAdapter.ts +9 -7
- package/src/adapters/XverseWalletAdapter.impl.ts +6 -6
- package/src/adapters/XverseWalletAdapter.ts +10 -7
- package/src/adapters/index.ts +6 -6
- package/src/constants.ts +1 -0
- package/src/index.ts +1 -1
- package/src/utils/UnisatCompatibleWalletAdapterImpl.ts +11 -2
- package/src/utils/XverseCompatibleWalletAdapterImpl.ts +4 -0
- package/src/utils/XverseCompatibleWalletAdapterImpl_legacy.ts +19 -7
- package/lib/BitcoinWalletAdapterConnector-Bq835yj0.mjs.map +0 -1
- package/lib/BitcoinWalletAdapterConnector-DMef0iHV.js +0 -2
- package/lib/BitcoinWalletAdapterConnector-DMef0iHV.js.map +0 -1
- package/lib/BitgetWalletAdapter.impl-C_HLO7Oi.mjs +0 -10
- package/lib/BitgetWalletAdapter.impl-C_HLO7Oi.mjs.map +0 -1
- package/lib/BitgetWalletAdapter.impl-CxnKMf7U.js +0 -2
- package/lib/BitgetWalletAdapter.impl-CxnKMf7U.js.map +0 -1
- package/lib/LeatherWalletAdapter.impl-B2QgX_tO.js +0 -2
- package/lib/LeatherWalletAdapter.impl-B2QgX_tO.js.map +0 -1
- package/lib/LeatherWalletAdapter.impl-RUYx555r.mjs.map +0 -1
- package/lib/MagicEdenWalletAdapter.impl-CrA6SGvG.mjs.map +0 -1
- package/lib/MagicEdenWalletAdapter.impl-Di3Nu2S5.js +0 -2
- package/lib/MagicEdenWalletAdapter.impl-Di3Nu2S5.js.map +0 -1
- package/lib/OkxWalletAdapter.impl-BepoUL1B.mjs.map +0 -1
- package/lib/OkxWalletAdapter.impl-C8kesjGu.js +0 -2
- package/lib/OkxWalletAdapter.impl-C8kesjGu.js.map +0 -1
- package/lib/UnisatCompatibleWalletAdapterImpl-Cq2Oqk1b.js.map +0 -1
- package/lib/UnisatCompatibleWalletAdapterImpl-M38FqkZI.mjs.map +0 -1
- package/lib/UnisatWalletAdapter.impl-CJB22se8.mjs +0 -14
- package/lib/UnisatWalletAdapter.impl-CJB22se8.mjs.map +0 -1
- package/lib/UnisatWalletAdapter.impl-EISvxdpc.js +0 -2
- package/lib/UnisatWalletAdapter.impl-EISvxdpc.js.map +0 -1
- package/lib/WalletAdapters.types-CnvOqHFH.mjs +0 -32
- package/lib/WalletAdapters.types-CnvOqHFH.mjs.map +0 -1
- package/lib/WalletAdapters.types-De_x1lzr.js +0 -2
- package/lib/WalletAdapters.types-De_x1lzr.js.map +0 -1
- package/lib/XverseCompatibleWalletAdapterImpl-Bf-BK5VK.js.map +0 -1
- package/lib/XverseCompatibleWalletAdapterImpl-DXKnO_-V.mjs.map +0 -1
- package/lib/XverseWalletAdapter.impl-CZO0RQva.mjs.map +0 -1
- package/lib/XverseWalletAdapter.impl-lJwMi-Iv.js +0 -2
- package/lib/XverseWalletAdapter.impl-lJwMi-Iv.js.map +0 -1
- package/lib/index-D7YwhNAG.mjs.map +0 -1
- package/lib/index-Zx0KcpYx.js +0 -2
- package/lib/index-Zx0KcpYx.js.map +0 -1
|
@@ -66,11 +66,11 @@ export interface WalletAdapterAddress extends Partial<WalletAdapterAddressWithPu
|
|
|
66
66
|
}
|
|
67
67
|
export interface WalletAdapterMetadata {
|
|
68
68
|
name: string;
|
|
69
|
-
iconUrl: Promise<string>;
|
|
69
|
+
iconUrl: () => Promise<string>;
|
|
70
70
|
websiteUrl: string;
|
|
71
71
|
downloadUrl: string;
|
|
72
72
|
}
|
|
73
|
-
export interface
|
|
73
|
+
export interface WalletAdapterFactory<T extends WalletAdapter> {
|
|
74
74
|
adapterId: string;
|
|
75
75
|
metadata: WalletAdapterMetadata;
|
|
76
76
|
getAdapter(): Availability<T>;
|
|
@@ -86,22 +86,17 @@ export interface WalletAdapter {
|
|
|
86
86
|
unsubscribe: () => void;
|
|
87
87
|
};
|
|
88
88
|
signMessage(address: string, message: string): Promise<SignMessageResult>;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
feeRate?: number;
|
|
92
|
-
}): Promise<{
|
|
93
|
-
txid: string;
|
|
89
|
+
signAndFinalizePsbt(psbtHex: string, signIndices: [address: string, signIndex: number][]): Promise<{
|
|
90
|
+
signedPsbtHex: string;
|
|
94
91
|
}>;
|
|
95
|
-
|
|
96
|
-
|
|
92
|
+
sendBitcoinFeeRateCapability: WalletAdapterSendBitcoinCapability;
|
|
93
|
+
sendBitcoin(fromAddress: string, receiverAddress: string, satoshiAmount: bigint, options?: {
|
|
97
94
|
feeRate?: number;
|
|
98
95
|
}): Promise<{
|
|
99
96
|
txid: string;
|
|
100
97
|
}>;
|
|
101
|
-
signAndFinalizePsbt(psbtHex: string, signIndices: [address: string, signIndex: number][]): Promise<{
|
|
102
|
-
signedPsbtHex: string;
|
|
103
|
-
}>;
|
|
104
98
|
}
|
|
99
|
+
export type WalletAdapterSendBitcoinCapability = "unavailable" | "available" | "required";
|
|
105
100
|
export declare class WalletAdapterErrorBase extends Error {
|
|
106
101
|
constructor(message: string);
|
|
107
102
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const o=require("./index-
|
|
2
|
-
//# sourceMappingURL=XverseCompatibleWalletAdapterImpl-
|
|
1
|
+
"use strict";const o=require("./index-jRY8YhyK.js"),c=require("./WalletAdapters.types-CExaiK0o.js"),A=require("./transaction-B6SlpRzN.js");class P{walletDisplayName;getProviderId;parseAddresses;constructor(e){this.walletDisplayName=e.walletDisplayName,this.getProviderId=e.getProviderId,this.parseAddresses=e.parseAddresses}async getSdk(){return Promise.resolve().then(()=>require("./index-CaV3F1Nm.js"))}async connect(){await(await this.getSdk()).request("wallet_connect",null)}async disconnect(){return Promise.resolve()}async getAddresses(){const e=await this.getSdk(),t=await l(e.request("getAddresses",{purposes:[e.AddressPurpose.Ordinals,e.AddressPurpose.Payment]},await this.getProviderId()));if(t==null)throw new c.WalletAdapterNotConnectedError(this.walletDisplayName);return this.parseAddresses({sdk:e,network:t.network.bitcoin.name,addresses:t.addresses})}async signMessage(e,t){const a=await this.getSdk();return{result:(await l(a.request("signMessage",{address:e,message:t,protocol:a.MessageSigningProtocols.BIP322},await this.getProviderId()))).signature,address:e,algorithm:c.SignMessageAlgorithm.BIP322}}sendBitcoinFeeRateCapability="unavailable";async sendBitcoin(e,t,a){if((await this.getAddresses()).find(r=>r.purposes.includes(c.WalletAdapterAddressPurpose.Bitcoin))==null)throw new u({code:-32602,message:"Bitcoin address not found"});const d=await this.getSdk();return await l(d.request("sendTransfer",{recipients:[{address:t,amount:Number(a)}]},await this.getProviderId()))}sendInscriptionFeeRateCapability="unavailable";async signAndFinalizePsbt(e,t){const a=await this.getSdk(),n=o.base64.encode(o.hex.decode(e)),d=await l(a.request("signPsbt",{psbt:n,signInputs:t.reduce((i,[g,h])=>(i[g]=[h],i),{}),broadcast:!1},await this.getProviderId())),r=A.Transaction.fromPSBT(o.base64.decode(d.psbt),{allowUnknownInputs:!0,allowUnknownOutputs:!0,disableScriptCheck:!0,allowLegacyWitnessUtxo:!0});return r.finalize(),{signedPsbtHex:o.hex.encode(r.toPSBT())}}onAddressesChanged(e){const t=[];return(async()=>{const a=await this.getSdk(),n=async()=>{try{const i=await this.getAddresses();e({addresses:i})}catch(i){console.warn(`[${this.walletDisplayName}] Failed to get addresses on change:`,i)}},d=a.addListener("accountChange",n),r=a.addListener("networkChange",n);t.push(d,r)})(),{unsubscribe:()=>{t.forEach(a=>a())}}}}var w=(s=>(s[s.PARSE_ERROR=-32700]="PARSE_ERROR",s[s.INVALID_REQUEST=-32600]="INVALID_REQUEST",s[s.METHOD_NOT_FOUND=-32601]="METHOD_NOT_FOUND",s[s.INVALID_PARAMS=-32602]="INVALID_PARAMS",s[s.INTERNAL_ERROR=-32603]="INTERNAL_ERROR",s[s.USER_REJECTION=-32e3]="USER_REJECTION",s[s.METHOD_NOT_SUPPORTED=-32001]="METHOD_NOT_SUPPORTED",s[s.ACCESS_DENIED=-32002]="ACCESS_DENIED",s))(w||{});function p(s){return s!=null&&"code"in s&&"message"in s}class u extends Error{code;constructor(e){super(e.message),this.code=e.code,this.cause=e}}const l=async s=>{try{const e=await s;if(e.status==="error")throw e.error;return e.result}catch(e){throw p(e)?e.code===-32e3?new o.UserRejectError:new u(e):e}};exports.XverseCompatibleProviderError=u;exports.XverseCompatibleWalletAdapterImpl=P;exports.XverseRpcErrorCode=w;
|
|
2
|
+
//# sourceMappingURL=XverseCompatibleWalletAdapterImpl-Dp_GUxQM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XverseCompatibleWalletAdapterImpl-Dp_GUxQM.js","sources":["../src/utils/XverseCompatibleWalletAdapterImpl.ts"],"sourcesContent":["import { base64, hex } from \"@scure/base\"\nimport * as btc from \"@scure/btc-signer\"\nimport { UserRejectError } from \"../utils/error\"\nimport {\n SignMessageAlgorithm,\n SignMessageResult,\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n WalletAdapterAddress,\n WalletAdapterAddressPurpose,\n WalletAdapterNotConnectedError,\n} from \"../WalletAdapters.types\"\n\nexport type XverseCompatibleWalletAdapterGetProviderIdFn = () => Promise<string>\n\nexport type XverseCompatibleWalletAdapterParsedAddressesFn = (info: {\n sdk: typeof import(\"sats-connect\")\n network: import(\"sats-connect\").BitcoinNetworkType\n addresses: import(\"sats-connect\").Address[]\n}) => Promise<XverseCompatibleWalletAdapterImplAddress[]>\n\nexport type XverseCompatibleWalletAdapterImplAddress = WalletAdapterAddress & {\n publicKey: string\n}\n\nexport class XverseCompatibleWalletAdapterImpl implements WalletAdapter {\n protected readonly walletDisplayName: string\n protected readonly getProviderId: XverseCompatibleWalletAdapterGetProviderIdFn\n protected readonly parseAddresses: XverseCompatibleWalletAdapterParsedAddressesFn\n\n constructor(info: {\n walletDisplayName: string\n getProviderId: XverseCompatibleWalletAdapterGetProviderIdFn\n parseAddresses: XverseCompatibleWalletAdapterParsedAddressesFn\n }) {\n this.walletDisplayName = info.walletDisplayName\n this.getProviderId = info.getProviderId\n this.parseAddresses = info.parseAddresses\n }\n\n private async getSdk(): Promise<typeof import(\"sats-connect\")> {\n return import(\"sats-connect\")\n }\n\n async connect(): Promise<void> {\n await (await this.getSdk()).request(\"wallet_connect\", null)\n }\n\n async disconnect(): Promise<void> {\n return Promise.resolve()\n }\n\n async getAddresses(): Promise<XverseCompatibleWalletAdapterImplAddress[]> {\n const sdk = await this.getSdk()\n\n const resp = await handleRpcError(\n sdk.request(\n \"getAddresses\",\n {\n purposes: [sdk.AddressPurpose.Ordinals, sdk.AddressPurpose.Payment],\n },\n await this.getProviderId(),\n ),\n )\n\n if (resp == null) {\n throw new WalletAdapterNotConnectedError(this.walletDisplayName)\n }\n\n return this.parseAddresses({\n sdk,\n network: resp.network.bitcoin.name,\n addresses: resp.addresses,\n })\n }\n\n async signMessage(\n address: string,\n message: string,\n ): Promise<SignMessageResult> {\n const sdk = await this.getSdk()\n\n const result = await handleRpcError(\n sdk.request(\n \"signMessage\",\n {\n address,\n message,\n protocol: sdk.MessageSigningProtocols.BIP322,\n },\n await this.getProviderId(),\n ),\n )\n\n return {\n result: result.signature,\n address,\n algorithm: SignMessageAlgorithm.BIP322,\n }\n }\n\n sendBitcoinFeeRateCapability = \"unavailable\" as const\n async sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n ): Promise<{ txid: string }> {\n const senderAddress = (await this.getAddresses()).find(a =>\n a.purposes.includes(WalletAdapterAddressPurpose.Bitcoin),\n )\n if (senderAddress == null) {\n throw new XverseCompatibleProviderError({\n code: XverseRpcErrorCode.INVALID_PARAMS,\n message: \"Bitcoin address not found\",\n })\n }\n\n const sdk = await this.getSdk()\n\n return await handleRpcError(\n sdk.request(\n \"sendTransfer\",\n {\n recipients: [\n {\n address: receiverAddress,\n amount: Number(satoshiAmount),\n },\n ],\n },\n await this.getProviderId(),\n ),\n )\n }\n\n /**\n * @internal\n * @experimental\n */\n sendInscriptionFeeRateCapability = \"unavailable\" as const\n\n async signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{\n signedPsbtHex: string\n }> {\n const sdk = await this.getSdk()\n\n const psbtBase64 = base64.encode(hex.decode(psbtHex))\n\n const result = await handleRpcError(\n sdk.request(\n \"signPsbt\",\n {\n psbt: psbtBase64,\n signInputs: signIndices.reduce(\n (acc, [address, signIndex]) => {\n acc[address] = [signIndex]\n return acc\n },\n {} as Record<string, number[]>,\n ),\n broadcast: false,\n },\n await this.getProviderId(),\n ),\n )\n\n const tx = btc.Transaction.fromPSBT(base64.decode(result.psbt), {\n allowUnknownInputs: true,\n allowUnknownOutputs: true,\n disableScriptCheck: true,\n allowLegacyWitnessUtxo: true,\n })\n tx.finalize()\n\n return { signedPsbtHex: hex.encode(tx.toPSBT()) }\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n // Xverse uses sats-connect Wallet.addListener for events\n // https://docs.xverse.app/sats-connect/xverse-wallet-events\n const removeListeners: Array<() => void> = []\n\n void (async () => {\n const sdk = await this.getSdk()\n\n const handler = async (): Promise<void> => {\n try {\n const addresses = await this.getAddresses()\n callback({ addresses })\n } catch (error) {\n console.warn(\n `[${this.walletDisplayName}] Failed to get addresses on change:`,\n error,\n )\n }\n }\n\n // Listen to account and network changes\n const removeAccountListener = sdk.addListener(\"accountChange\", handler)\n const removeNetworkListener = sdk.addListener(\"networkChange\", handler)\n\n removeListeners.push(removeAccountListener, removeNetworkListener)\n })()\n\n return {\n unsubscribe: () => {\n removeListeners.forEach(remove => remove())\n },\n }\n }\n}\n\nexport enum XverseRpcErrorCode {\n /**\n * Parse error Invalid JSON\n **/\n PARSE_ERROR = -32700,\n /**\n * The JSON sent is not a valid Request object.\n **/\n INVALID_REQUEST = -32600,\n /**\n * The method does not exist/is not available.\n **/\n METHOD_NOT_FOUND = -32601,\n /**\n * Invalid method parameter(s).\n */\n INVALID_PARAMS = -32602,\n /**\n * Internal JSON-RPC error.\n * This is a generic error, used when the server encounters an error in performing the request.\n **/\n INTERNAL_ERROR = -32603,\n /**\n * user rejected/canceled the request\n */\n USER_REJECTION = -32000,\n /**\n * method is not supported for the address provided\n */\n METHOD_NOT_SUPPORTED = -32001,\n /**\n * The client does not have permission to access the requested resource.\n */\n ACCESS_DENIED = -32002,\n}\nexport interface XverseCompatibleProviderAPIThrownError {\n code: XverseRpcErrorCode\n message: string\n}\nexport function isXverseCompatibleProviderAPIThrownError(\n err: any,\n): err is XverseCompatibleProviderAPIThrownError {\n return err != null && \"code\" in err && \"message\" in err\n}\n\nexport class XverseCompatibleProviderError extends Error {\n readonly code: number\n constructor(err: XverseCompatibleProviderAPIThrownError) {\n super(err.message)\n this.code = err.code\n this.cause = err\n }\n}\n\nconst handleRpcError = async <T>(\n promise: Promise<\n { status: \"success\"; result: T } | { status: \"error\"; error: unknown }\n >,\n): Promise<T> => {\n try {\n const res = await promise\n if (res.status === \"error\") {\n throw res.error\n }\n return res.result\n } catch (e: any) {\n if (isXverseCompatibleProviderAPIThrownError(e)) {\n if (e.code === XverseRpcErrorCode.USER_REJECTION) {\n throw new UserRejectError()\n }\n throw new XverseCompatibleProviderError(e)\n }\n throw e\n }\n}\n"],"names":["XverseCompatibleWalletAdapterImpl","info","sdk","resp","handleRpcError","WalletAdapterNotConnectedError","address","message","SignMessageAlgorithm","fromAddress","receiverAddress","satoshiAmount","a","WalletAdapterAddressPurpose","XverseCompatibleProviderError","psbtHex","signIndices","psbtBase64","base64","hex","result","acc","signIndex","tx","btc.Transaction","callback","removeListeners","handler","addresses","error","removeAccountListener","removeNetworkListener","remove","XverseRpcErrorCode","isXverseCompatibleProviderAPIThrownError","err","promise","res","UserRejectError"],"mappings":"2IAyBO,MAAMA,CAA2D,CACnD,kBACA,cACA,eAEnB,YAAYC,EAIT,CACD,KAAK,kBAAoBA,EAAK,kBAC9B,KAAK,cAAgBA,EAAK,cAC1B,KAAK,eAAiBA,EAAK,cAC7B,CAEA,MAAc,QAAiD,CAC7D,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,qBAAc,CAAA,CAC9B,CAEA,MAAM,SAAyB,CAC7B,MAAO,MAAM,KAAK,OAAA,GAAU,QAAQ,iBAAkB,IAAI,CAC5D,CAEA,MAAM,YAA4B,CAChC,OAAO,QAAQ,QAAA,CACjB,CAEA,MAAM,cAAoE,CACxE,MAAMC,EAAM,MAAM,KAAK,OAAA,EAEjBC,EAAO,MAAMC,EACjBF,EAAI,QACF,eACA,CACE,SAAU,CAACA,EAAI,eAAe,SAAUA,EAAI,eAAe,OAAO,CAAA,EAEpE,MAAM,KAAK,cAAA,CAAc,CAC3B,EAGF,GAAIC,GAAQ,KACV,MAAM,IAAIE,EAAAA,+BAA+B,KAAK,iBAAiB,EAGjE,OAAO,KAAK,eAAe,CACzB,IAAAH,EACA,QAASC,EAAK,QAAQ,QAAQ,KAC9B,UAAWA,EAAK,SAAA,CACjB,CACH,CAEA,MAAM,YACJG,EACAC,EAC4B,CAC5B,MAAML,EAAM,MAAM,KAAK,OAAA,EAcvB,MAAO,CACL,QAba,MAAME,EACnBF,EAAI,QACF,cACA,CACE,QAAAI,EACA,QAAAC,EACA,SAAUL,EAAI,wBAAwB,MAAA,EAExC,MAAM,KAAK,cAAA,CAAc,CAC3B,GAIe,UACf,QAAAI,EACA,UAAWE,EAAAA,qBAAqB,MAAA,CAEpC,CAEA,6BAA+B,cAC/B,MAAM,YACJC,EACAC,EACAC,EAC2B,CAI3B,IAHuB,MAAM,KAAK,aAAA,GAAgB,KAAKC,GACrDA,EAAE,SAAS,SAASC,EAAAA,4BAA4B,OAAO,CAAA,GAEpC,KACnB,MAAM,IAAIC,EAA8B,CACtC,KAAM,OACN,QAAS,2BAAA,CACV,EAGH,MAAMZ,EAAM,MAAM,KAAK,OAAA,EAEvB,OAAO,MAAME,EACXF,EAAI,QACF,eACA,CACE,WAAY,CACV,CACE,QAASQ,EACT,OAAQ,OAAOC,CAAa,CAAA,CAC9B,CACF,EAEF,MAAM,KAAK,cAAA,CAAc,CAC3B,CAEJ,CAMA,iCAAmC,cAEnC,MAAM,oBACJI,EACAC,EAGC,CACD,MAAMd,EAAM,MAAM,KAAK,OAAA,EAEjBe,EAAaC,EAAAA,OAAO,OAAOC,EAAAA,IAAI,OAAOJ,CAAO,CAAC,EAE9CK,EAAS,MAAMhB,EACnBF,EAAI,QACF,WACA,CACE,KAAMe,EACN,WAAYD,EAAY,OACtB,CAACK,EAAK,CAACf,EAASgB,CAAS,KACvBD,EAAIf,CAAO,EAAI,CAACgB,CAAS,EAClBD,GAET,CAAA,CAAC,EAEH,UAAW,EAAA,EAEb,MAAM,KAAK,cAAA,CAAc,CAC3B,EAGIE,EAAKC,EAAAA,YAAgB,SAASN,EAAAA,OAAO,OAAOE,EAAO,IAAI,EAAG,CAC9D,mBAAoB,GACpB,oBAAqB,GACrB,mBAAoB,GACpB,uBAAwB,EAAA,CACzB,EACD,OAAAG,EAAG,SAAA,EAEI,CAAE,cAAeJ,EAAAA,IAAI,OAAOI,EAAG,OAAA,CAAQ,CAAA,CAChD,CAEA,mBAAmBE,EAEjB,CAGA,MAAMC,EAAqC,CAAA,EAE3C,OAAM,SAAY,CAChB,MAAMxB,EAAM,MAAM,KAAK,OAAA,EAEjByB,EAAU,SAA2B,CACzC,GAAI,CACF,MAAMC,EAAY,MAAM,KAAK,aAAA,EAC7BH,EAAS,CAAE,UAAAG,EAAW,CACxB,OAASC,EAAO,CACd,QAAQ,KACN,IAAI,KAAK,iBAAiB,uCAC1BA,CAAA,CAEJ,CACF,EAGMC,EAAwB5B,EAAI,YAAY,gBAAiByB,CAAO,EAChEI,EAAwB7B,EAAI,YAAY,gBAAiByB,CAAO,EAEtED,EAAgB,KAAKI,EAAuBC,CAAqB,CACnE,GAAA,EAEO,CACL,YAAa,IAAM,CACjBL,EAAgB,QAAQM,GAAUA,EAAA,CAAQ,CAC5C,CAAA,CAEJ,CACF,CAEO,IAAKC,GAAAA,IAIVA,EAAAA,EAAA,YAAc,MAAA,EAAd,cAIAA,EAAAA,EAAA,gBAAkB,MAAA,EAAlB,kBAIAA,EAAAA,EAAA,iBAAmB,MAAA,EAAnB,mBAIAA,EAAAA,EAAA,eAAiB,MAAA,EAAjB,iBAKAA,EAAAA,EAAA,eAAiB,MAAA,EAAjB,iBAIAA,EAAAA,EAAA,eAAiB,KAAA,EAAjB,iBAIAA,EAAAA,EAAA,qBAAuB,MAAA,EAAvB,uBAIAA,EAAAA,EAAA,cAAgB,MAAA,EAAhB,gBAjCUA,IAAAA,GAAA,CAAA,CAAA,EAuCL,SAASC,EACdC,EAC+C,CAC/C,OAAOA,GAAO,MAAQ,SAAUA,GAAO,YAAaA,CACtD,CAEO,MAAMrB,UAAsC,KAAM,CAC9C,KACT,YAAYqB,EAA6C,CACvD,MAAMA,EAAI,OAAO,EACjB,KAAK,KAAOA,EAAI,KAChB,KAAK,MAAQA,CACf,CACF,CAEA,MAAM/B,EAAiB,MACrBgC,GAGe,CACf,GAAI,CACF,MAAMC,EAAM,MAAMD,EAClB,GAAIC,EAAI,SAAW,QACjB,MAAMA,EAAI,MAEZ,OAAOA,EAAI,MACb,OAAS,EAAQ,CACf,MAAIH,EAAyC,CAAC,EACxC,EAAE,OAAS,MACP,IAAII,EAAAA,gBAEN,IAAIxB,EAA8B,CAAC,EAErC,CACR,CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { d as
|
|
3
|
-
import { T as p } from "./transaction-
|
|
1
|
+
import { p as l, h as c, i as h } from "./index-DM4G-LJz.mjs";
|
|
2
|
+
import { d as A, S as m, a as P } from "./WalletAdapters.types-DBvhI1hu.mjs";
|
|
3
|
+
import { T as p } from "./transaction-4ShhFCwN.mjs";
|
|
4
4
|
class b {
|
|
5
5
|
walletDisplayName;
|
|
6
6
|
getProviderId;
|
|
@@ -28,7 +28,7 @@ class b {
|
|
|
28
28
|
)
|
|
29
29
|
);
|
|
30
30
|
if (t == null)
|
|
31
|
-
throw new
|
|
31
|
+
throw new A(this.walletDisplayName);
|
|
32
32
|
return this.parseAddresses({
|
|
33
33
|
sdk: s,
|
|
34
34
|
network: t.network.bitcoin.name,
|
|
@@ -50,13 +50,13 @@ class b {
|
|
|
50
50
|
)
|
|
51
51
|
)).signature,
|
|
52
52
|
address: s,
|
|
53
|
-
algorithm:
|
|
53
|
+
algorithm: m.BIP322
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
sendBitcoinFeeRateCapability = "unavailable";
|
|
57
57
|
async sendBitcoin(s, t, a) {
|
|
58
58
|
if ((await this.getAddresses()).find(
|
|
59
|
-
(i) => i.purposes.includes(
|
|
59
|
+
(i) => i.purposes.includes(P.Bitcoin)
|
|
60
60
|
) == null)
|
|
61
61
|
throw new u({
|
|
62
62
|
code: -32602,
|
|
@@ -78,6 +78,10 @@ class b {
|
|
|
78
78
|
)
|
|
79
79
|
);
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* @internal
|
|
83
|
+
* @experimental
|
|
84
|
+
*/
|
|
81
85
|
sendInscriptionFeeRateCapability = "unavailable";
|
|
82
86
|
async signAndFinalizePsbt(s, t) {
|
|
83
87
|
const a = await this.getSdk(), n = l.encode(c.decode(s)), d = await o(
|
|
@@ -140,7 +144,7 @@ const o = async (e) => {
|
|
|
140
144
|
throw s.error;
|
|
141
145
|
return s.result;
|
|
142
146
|
} catch (s) {
|
|
143
|
-
throw S(s) ? s.code === -32e3 ? new
|
|
147
|
+
throw S(s) ? s.code === -32e3 ? new h() : new u(s) : s;
|
|
144
148
|
}
|
|
145
149
|
};
|
|
146
150
|
export {
|
|
@@ -148,4 +152,4 @@ export {
|
|
|
148
152
|
u as a,
|
|
149
153
|
I as b
|
|
150
154
|
};
|
|
151
|
-
//# sourceMappingURL=XverseCompatibleWalletAdapterImpl-
|
|
155
|
+
//# sourceMappingURL=XverseCompatibleWalletAdapterImpl-bgp9xDYH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XverseCompatibleWalletAdapterImpl-bgp9xDYH.mjs","sources":["../src/utils/XverseCompatibleWalletAdapterImpl.ts"],"sourcesContent":["import { base64, hex } from \"@scure/base\"\nimport * as btc from \"@scure/btc-signer\"\nimport { UserRejectError } from \"../utils/error\"\nimport {\n SignMessageAlgorithm,\n SignMessageResult,\n WalletAdapter,\n WalletAdapter_onAddressesChanged_callback,\n WalletAdapterAddress,\n WalletAdapterAddressPurpose,\n WalletAdapterNotConnectedError,\n} from \"../WalletAdapters.types\"\n\nexport type XverseCompatibleWalletAdapterGetProviderIdFn = () => Promise<string>\n\nexport type XverseCompatibleWalletAdapterParsedAddressesFn = (info: {\n sdk: typeof import(\"sats-connect\")\n network: import(\"sats-connect\").BitcoinNetworkType\n addresses: import(\"sats-connect\").Address[]\n}) => Promise<XverseCompatibleWalletAdapterImplAddress[]>\n\nexport type XverseCompatibleWalletAdapterImplAddress = WalletAdapterAddress & {\n publicKey: string\n}\n\nexport class XverseCompatibleWalletAdapterImpl implements WalletAdapter {\n protected readonly walletDisplayName: string\n protected readonly getProviderId: XverseCompatibleWalletAdapterGetProviderIdFn\n protected readonly parseAddresses: XverseCompatibleWalletAdapterParsedAddressesFn\n\n constructor(info: {\n walletDisplayName: string\n getProviderId: XverseCompatibleWalletAdapterGetProviderIdFn\n parseAddresses: XverseCompatibleWalletAdapterParsedAddressesFn\n }) {\n this.walletDisplayName = info.walletDisplayName\n this.getProviderId = info.getProviderId\n this.parseAddresses = info.parseAddresses\n }\n\n private async getSdk(): Promise<typeof import(\"sats-connect\")> {\n return import(\"sats-connect\")\n }\n\n async connect(): Promise<void> {\n await (await this.getSdk()).request(\"wallet_connect\", null)\n }\n\n async disconnect(): Promise<void> {\n return Promise.resolve()\n }\n\n async getAddresses(): Promise<XverseCompatibleWalletAdapterImplAddress[]> {\n const sdk = await this.getSdk()\n\n const resp = await handleRpcError(\n sdk.request(\n \"getAddresses\",\n {\n purposes: [sdk.AddressPurpose.Ordinals, sdk.AddressPurpose.Payment],\n },\n await this.getProviderId(),\n ),\n )\n\n if (resp == null) {\n throw new WalletAdapterNotConnectedError(this.walletDisplayName)\n }\n\n return this.parseAddresses({\n sdk,\n network: resp.network.bitcoin.name,\n addresses: resp.addresses,\n })\n }\n\n async signMessage(\n address: string,\n message: string,\n ): Promise<SignMessageResult> {\n const sdk = await this.getSdk()\n\n const result = await handleRpcError(\n sdk.request(\n \"signMessage\",\n {\n address,\n message,\n protocol: sdk.MessageSigningProtocols.BIP322,\n },\n await this.getProviderId(),\n ),\n )\n\n return {\n result: result.signature,\n address,\n algorithm: SignMessageAlgorithm.BIP322,\n }\n }\n\n sendBitcoinFeeRateCapability = \"unavailable\" as const\n async sendBitcoin(\n fromAddress: string,\n receiverAddress: string,\n satoshiAmount: bigint,\n ): Promise<{ txid: string }> {\n const senderAddress = (await this.getAddresses()).find(a =>\n a.purposes.includes(WalletAdapterAddressPurpose.Bitcoin),\n )\n if (senderAddress == null) {\n throw new XverseCompatibleProviderError({\n code: XverseRpcErrorCode.INVALID_PARAMS,\n message: \"Bitcoin address not found\",\n })\n }\n\n const sdk = await this.getSdk()\n\n return await handleRpcError(\n sdk.request(\n \"sendTransfer\",\n {\n recipients: [\n {\n address: receiverAddress,\n amount: Number(satoshiAmount),\n },\n ],\n },\n await this.getProviderId(),\n ),\n )\n }\n\n /**\n * @internal\n * @experimental\n */\n sendInscriptionFeeRateCapability = \"unavailable\" as const\n\n async signAndFinalizePsbt(\n psbtHex: string,\n signIndices: [address: string, signIndex: number][],\n ): Promise<{\n signedPsbtHex: string\n }> {\n const sdk = await this.getSdk()\n\n const psbtBase64 = base64.encode(hex.decode(psbtHex))\n\n const result = await handleRpcError(\n sdk.request(\n \"signPsbt\",\n {\n psbt: psbtBase64,\n signInputs: signIndices.reduce(\n (acc, [address, signIndex]) => {\n acc[address] = [signIndex]\n return acc\n },\n {} as Record<string, number[]>,\n ),\n broadcast: false,\n },\n await this.getProviderId(),\n ),\n )\n\n const tx = btc.Transaction.fromPSBT(base64.decode(result.psbt), {\n allowUnknownInputs: true,\n allowUnknownOutputs: true,\n disableScriptCheck: true,\n allowLegacyWitnessUtxo: true,\n })\n tx.finalize()\n\n return { signedPsbtHex: hex.encode(tx.toPSBT()) }\n }\n\n onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): {\n unsubscribe: () => void\n } {\n // Xverse uses sats-connect Wallet.addListener for events\n // https://docs.xverse.app/sats-connect/xverse-wallet-events\n const removeListeners: Array<() => void> = []\n\n void (async () => {\n const sdk = await this.getSdk()\n\n const handler = async (): Promise<void> => {\n try {\n const addresses = await this.getAddresses()\n callback({ addresses })\n } catch (error) {\n console.warn(\n `[${this.walletDisplayName}] Failed to get addresses on change:`,\n error,\n )\n }\n }\n\n // Listen to account and network changes\n const removeAccountListener = sdk.addListener(\"accountChange\", handler)\n const removeNetworkListener = sdk.addListener(\"networkChange\", handler)\n\n removeListeners.push(removeAccountListener, removeNetworkListener)\n })()\n\n return {\n unsubscribe: () => {\n removeListeners.forEach(remove => remove())\n },\n }\n }\n}\n\nexport enum XverseRpcErrorCode {\n /**\n * Parse error Invalid JSON\n **/\n PARSE_ERROR = -32700,\n /**\n * The JSON sent is not a valid Request object.\n **/\n INVALID_REQUEST = -32600,\n /**\n * The method does not exist/is not available.\n **/\n METHOD_NOT_FOUND = -32601,\n /**\n * Invalid method parameter(s).\n */\n INVALID_PARAMS = -32602,\n /**\n * Internal JSON-RPC error.\n * This is a generic error, used when the server encounters an error in performing the request.\n **/\n INTERNAL_ERROR = -32603,\n /**\n * user rejected/canceled the request\n */\n USER_REJECTION = -32000,\n /**\n * method is not supported for the address provided\n */\n METHOD_NOT_SUPPORTED = -32001,\n /**\n * The client does not have permission to access the requested resource.\n */\n ACCESS_DENIED = -32002,\n}\nexport interface XverseCompatibleProviderAPIThrownError {\n code: XverseRpcErrorCode\n message: string\n}\nexport function isXverseCompatibleProviderAPIThrownError(\n err: any,\n): err is XverseCompatibleProviderAPIThrownError {\n return err != null && \"code\" in err && \"message\" in err\n}\n\nexport class XverseCompatibleProviderError extends Error {\n readonly code: number\n constructor(err: XverseCompatibleProviderAPIThrownError) {\n super(err.message)\n this.code = err.code\n this.cause = err\n }\n}\n\nconst handleRpcError = async <T>(\n promise: Promise<\n { status: \"success\"; result: T } | { status: \"error\"; error: unknown }\n >,\n): Promise<T> => {\n try {\n const res = await promise\n if (res.status === \"error\") {\n throw res.error\n }\n return res.result\n } catch (e: any) {\n if (isXverseCompatibleProviderAPIThrownError(e)) {\n if (e.code === XverseRpcErrorCode.USER_REJECTION) {\n throw new UserRejectError()\n }\n throw new XverseCompatibleProviderError(e)\n }\n throw e\n }\n}\n"],"names":["XverseCompatibleWalletAdapterImpl","info","sdk","resp","handleRpcError","WalletAdapterNotConnectedError","address","message","SignMessageAlgorithm","fromAddress","receiverAddress","satoshiAmount","a","WalletAdapterAddressPurpose","XverseCompatibleProviderError","psbtHex","signIndices","psbtBase64","base64","hex","result","acc","signIndex","tx","btc.Transaction","callback","removeListeners","handler","addresses","error","removeAccountListener","removeNetworkListener","remove","XverseRpcErrorCode","isXverseCompatibleProviderAPIThrownError","err","promise","res","e","UserRejectError"],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
class
|
|
1
|
+
import { n as u, d as T, h as o, e as K, l as N, o as A } from "./index-DM4G-LJz.mjs";
|
|
2
|
+
import { c as P } from "./misc-B5EWO_dn.mjs";
|
|
3
|
+
import { X as b } from "./XverseCompatibleWalletAdapterImpl-bgp9xDYH.mjs";
|
|
4
|
+
import { W as r, a as c, b as n } from "./WalletAdapters.types-DBvhI1hu.mjs";
|
|
5
|
+
class E extends b {
|
|
6
6
|
constructor() {
|
|
7
7
|
super({
|
|
8
|
-
walletDisplayName:
|
|
9
|
-
getProviderId: async () =>
|
|
10
|
-
parseAddresses: async ({ sdk: e, network: p, addresses:
|
|
11
|
-
const d = p === e.BitcoinNetworkType.Mainnet ? r.MAINNET : p === e.BitcoinNetworkType.Testnet ? r.TESTNET : p === e.BitcoinNetworkType.Testnet4 ? r.TESTNET : p === e.BitcoinNetworkType.Signet ? r.UNKNOWN : p === e.BitcoinNetworkType.Regtest ? r.UNKNOWN : r.UNKNOWN, y =
|
|
8
|
+
walletDisplayName: u.name,
|
|
9
|
+
getProviderId: async () => A,
|
|
10
|
+
parseAddresses: async ({ sdk: e, network: p, addresses: l }) => {
|
|
11
|
+
const d = p === e.BitcoinNetworkType.Mainnet ? r.MAINNET : p === e.BitcoinNetworkType.Testnet ? r.TESTNET : p === e.BitcoinNetworkType.Testnet4 ? r.TESTNET : p === e.BitcoinNetworkType.Signet ? r.UNKNOWN : p === e.BitcoinNetworkType.Regtest ? r.UNKNOWN : r.UNKNOWN, y = T(
|
|
12
12
|
d === r.MAINNET ? "mainnet" : "testnet"
|
|
13
13
|
);
|
|
14
|
-
return
|
|
14
|
+
return l.flatMap((s) => {
|
|
15
15
|
const t = [];
|
|
16
16
|
switch (s.purpose) {
|
|
17
17
|
case e.AddressPurpose.Ordinals:
|
|
@@ -26,7 +26,7 @@ class B extends b {
|
|
|
26
26
|
break;
|
|
27
27
|
}
|
|
28
28
|
const a = o.encode(
|
|
29
|
-
|
|
29
|
+
K(y, s.address)
|
|
30
30
|
);
|
|
31
31
|
switch (s.addressType) {
|
|
32
32
|
case e.AddressType.stacks:
|
|
@@ -69,7 +69,7 @@ class B extends b {
|
|
|
69
69
|
}
|
|
70
70
|
case e.AddressType.p2sh: {
|
|
71
71
|
const i = o.encode(
|
|
72
|
-
|
|
72
|
+
N(
|
|
73
73
|
y,
|
|
74
74
|
o.decode(s.publicKey)
|
|
75
75
|
)
|
|
@@ -92,7 +92,7 @@ class B extends b {
|
|
|
92
92
|
case e.AddressType.spark:
|
|
93
93
|
return [];
|
|
94
94
|
default:
|
|
95
|
-
return
|
|
95
|
+
return P(s.addressType), [];
|
|
96
96
|
}
|
|
97
97
|
});
|
|
98
98
|
}
|
|
@@ -100,6 +100,6 @@ class B extends b {
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
export {
|
|
103
|
-
|
|
103
|
+
E as XverseWalletAdapterImpl
|
|
104
104
|
};
|
|
105
|
-
//# sourceMappingURL=XverseWalletAdapter.impl-
|
|
105
|
+
//# sourceMappingURL=XverseWalletAdapter.impl-BOpY4Vf8.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XverseWalletAdapter.impl-BOpY4Vf8.mjs","sources":["../src/adapters/XverseWalletAdapter.impl.ts"],"sourcesContent":["import { hex } from \"@scure/base\"\nimport {\n addressToScriptPubKey,\n getRedeemScriptOf_P2SH_P2WPKH_publicKey,\n} from \"../utils/bitcoinAddressHelpers\"\nimport { getBitcoinNetwork } from \"../utils/bitcoinNetworkHelpers\"\nimport { checkNever } from \"../utils/misc\"\nimport {\n XverseCompatibleWalletAdapterImpl,\n XverseCompatibleWalletAdapterImplAddress,\n} from \"../utils/XverseCompatibleWalletAdapterImpl\"\nimport {\n WalletAdapter,\n WalletAdapterAddressPurpose,\n WalletAdapterAddressType,\n WalletAdapterBitcoinNetwork,\n} from \"../WalletAdapters.types\"\nimport { metadata, XVERSE_PROVIDER_ID } from \"./XverseWalletAdapter\"\n\ndeclare global {\n interface Window {\n btc_providers?: import(\"sats-connect\").Provider[]\n }\n}\n\nexport type XverseWalletAdapterAddresses =\n XverseCompatibleWalletAdapterImplAddress\n\n/**\n * Derivation path (BIP-49): m/49'/0'/0'/0/ address_index\n */\n\nexport class XverseWalletAdapterImpl\n extends XverseCompatibleWalletAdapterImpl\n implements WalletAdapter\n{\n constructor() {\n super({\n walletDisplayName: metadata.name,\n getProviderId: async () => {\n return XVERSE_PROVIDER_ID\n },\n parseAddresses: async ({ sdk, network: xverseNetwork, addresses }) => {\n // prettier-ignore\n const network =\n xverseNetwork === sdk.BitcoinNetworkType.Mainnet ? WalletAdapterBitcoinNetwork.MAINNET :\n xverseNetwork === sdk.BitcoinNetworkType.Testnet ? WalletAdapterBitcoinNetwork.TESTNET :\n xverseNetwork === sdk.BitcoinNetworkType.Testnet4 ? WalletAdapterBitcoinNetwork.TESTNET :\n xverseNetwork === sdk.BitcoinNetworkType.Signet ? WalletAdapterBitcoinNetwork.UNKNOWN :\n xverseNetwork === sdk.BitcoinNetworkType.Regtest ? WalletAdapterBitcoinNetwork.UNKNOWN :\n (checkNever(xverseNetwork), WalletAdapterBitcoinNetwork.UNKNOWN)\n\n const bitcoinNetwork = getBitcoinNetwork(\n network === WalletAdapterBitcoinNetwork.MAINNET\n ? \"mainnet\"\n : \"testnet\",\n )\n\n return addresses.flatMap((a): XverseWalletAdapterAddresses[] => {\n const purposes: WalletAdapterAddressPurpose[] = []\n switch (a.purpose) {\n case sdk.AddressPurpose.Ordinals:\n purposes.push(\n WalletAdapterAddressPurpose.Ordinals,\n WalletAdapterAddressPurpose.BRC20,\n WalletAdapterAddressPurpose.Runes,\n )\n break\n case sdk.AddressPurpose.Payment:\n purposes.push(WalletAdapterAddressPurpose.Bitcoin)\n break\n }\n\n const scriptPubKey = hex.encode(\n addressToScriptPubKey(bitcoinNetwork, a.address),\n )\n\n switch (a.addressType) {\n case sdk.AddressType.stacks:\n return []\n case sdk.AddressType.p2pkh:\n return [\n {\n purposes,\n network,\n addressType: WalletAdapterAddressType.P2PKH,\n address: a.address,\n scriptPubKey,\n publicKey: a.publicKey,\n },\n ]\n case sdk.AddressType.p2wpkh:\n return [\n {\n purposes,\n network,\n addressType: WalletAdapterAddressType.P2WPKH,\n address: a.address,\n scriptPubKey,\n publicKey: a.publicKey,\n },\n ]\n case sdk.AddressType.p2tr: {\n const tapInternalKey: string = a.publicKey\n return [\n {\n purposes,\n network,\n addressType: WalletAdapterAddressType.P2TR,\n address: a.address,\n scriptPubKey,\n publicKey: a.publicKey,\n tapInternalKey,\n },\n ]\n }\n case sdk.AddressType.p2sh: {\n const redeemScript = hex.encode(\n getRedeemScriptOf_P2SH_P2WPKH_publicKey(\n bitcoinNetwork,\n hex.decode(a.publicKey),\n ),\n )\n return [\n {\n purposes,\n network,\n addressType: WalletAdapterAddressType.P2SH_P2WPKH,\n address: a.address,\n scriptPubKey,\n publicKey: a.publicKey,\n redeemScript,\n },\n ]\n }\n case sdk.AddressType.p2wsh:\n // not supported\n return []\n case sdk.AddressType.starknet:\n case sdk.AddressType.spark:\n return []\n default:\n checkNever(a.addressType)\n return []\n }\n })\n },\n })\n }\n}\n"],"names":["XverseWalletAdapterImpl","XverseCompatibleWalletAdapterImpl","metadata","XVERSE_PROVIDER_ID","sdk","xverseNetwork","addresses","network","WalletAdapterBitcoinNetwork","bitcoinNetwork","getBitcoinNetwork","a","purposes","WalletAdapterAddressPurpose","scriptPubKey","hex","addressToScriptPubKey","WalletAdapterAddressType","tapInternalKey","redeemScript","getRedeemScriptOf_P2SH_P2WPKH_publicKey","checkNever"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./index-jRY8YhyK.js"),o=require("./misc-CigR0RqC.js"),u=require("./XverseCompatibleWalletAdapterImpl-Dp_GUxQM.js"),t=require("./WalletAdapters.types-CExaiK0o.js");class y extends u.XverseCompatibleWalletAdapterImpl{constructor(){super({walletDisplayName:s.metadata$3.name,getProviderId:async()=>s.XVERSE_PROVIDER_ID,parseAddresses:async({sdk:e,network:p,addresses:n})=>{const a=p===e.BitcoinNetworkType.Mainnet?t.WalletAdapterBitcoinNetwork.MAINNET:p===e.BitcoinNetworkType.Testnet||p===e.BitcoinNetworkType.Testnet4?t.WalletAdapterBitcoinNetwork.TESTNET:(p===e.BitcoinNetworkType.Signet||p===e.BitcoinNetworkType.Regtest,t.WalletAdapterBitcoinNetwork.UNKNOWN),i=s.getBitcoinNetwork(a===t.WalletAdapterBitcoinNetwork.MAINNET?"mainnet":"testnet");return n.flatMap(r=>{const d=[];switch(r.purpose){case e.AddressPurpose.Ordinals:d.push(t.WalletAdapterAddressPurpose.Ordinals,t.WalletAdapterAddressPurpose.BRC20,t.WalletAdapterAddressPurpose.Runes);break;case e.AddressPurpose.Payment:d.push(t.WalletAdapterAddressPurpose.Bitcoin);break}const l=s.hex.encode(s.addressToScriptPubKey(i,r.address));switch(r.addressType){case e.AddressType.stacks:return[];case e.AddressType.p2pkh:return[{purposes:d,network:a,addressType:t.WalletAdapterAddressType.P2PKH,address:r.address,scriptPubKey:l,publicKey:r.publicKey}];case e.AddressType.p2wpkh:return[{purposes:d,network:a,addressType:t.WalletAdapterAddressType.P2WPKH,address:r.address,scriptPubKey:l,publicKey:r.publicKey}];case e.AddressType.p2tr:{const c=r.publicKey;return[{purposes:d,network:a,addressType:t.WalletAdapterAddressType.P2TR,address:r.address,scriptPubKey:l,publicKey:r.publicKey,tapInternalKey:c}]}case e.AddressType.p2sh:{const c=s.hex.encode(s.getRedeemScriptOf_P2SH_P2WPKH_publicKey(i,s.hex.decode(r.publicKey)));return[{purposes:d,network:a,addressType:t.WalletAdapterAddressType.P2SH_P2WPKH,address:r.address,scriptPubKey:l,publicKey:r.publicKey,redeemScript:c}]}case e.AddressType.p2wsh:return[];case e.AddressType.starknet:case e.AddressType.spark:return[];default:return o.checkNever(r.addressType),[]}})}})}}exports.XverseWalletAdapterImpl=y;
|
|
2
|
+
//# sourceMappingURL=XverseWalletAdapter.impl-D0eOtEOa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XverseWalletAdapter.impl-D0eOtEOa.js","sources":["../src/adapters/XverseWalletAdapter.impl.ts"],"sourcesContent":["import { hex } from \"@scure/base\"\nimport {\n addressToScriptPubKey,\n getRedeemScriptOf_P2SH_P2WPKH_publicKey,\n} from \"../utils/bitcoinAddressHelpers\"\nimport { getBitcoinNetwork } from \"../utils/bitcoinNetworkHelpers\"\nimport { checkNever } from \"../utils/misc\"\nimport {\n XverseCompatibleWalletAdapterImpl,\n XverseCompatibleWalletAdapterImplAddress,\n} from \"../utils/XverseCompatibleWalletAdapterImpl\"\nimport {\n WalletAdapter,\n WalletAdapterAddressPurpose,\n WalletAdapterAddressType,\n WalletAdapterBitcoinNetwork,\n} from \"../WalletAdapters.types\"\nimport { metadata, XVERSE_PROVIDER_ID } from \"./XverseWalletAdapter\"\n\ndeclare global {\n interface Window {\n btc_providers?: import(\"sats-connect\").Provider[]\n }\n}\n\nexport type XverseWalletAdapterAddresses =\n XverseCompatibleWalletAdapterImplAddress\n\n/**\n * Derivation path (BIP-49): m/49'/0'/0'/0/ address_index\n */\n\nexport class XverseWalletAdapterImpl\n extends XverseCompatibleWalletAdapterImpl\n implements WalletAdapter\n{\n constructor() {\n super({\n walletDisplayName: metadata.name,\n getProviderId: async () => {\n return XVERSE_PROVIDER_ID\n },\n parseAddresses: async ({ sdk, network: xverseNetwork, addresses }) => {\n // prettier-ignore\n const network =\n xverseNetwork === sdk.BitcoinNetworkType.Mainnet ? WalletAdapterBitcoinNetwork.MAINNET :\n xverseNetwork === sdk.BitcoinNetworkType.Testnet ? WalletAdapterBitcoinNetwork.TESTNET :\n xverseNetwork === sdk.BitcoinNetworkType.Testnet4 ? WalletAdapterBitcoinNetwork.TESTNET :\n xverseNetwork === sdk.BitcoinNetworkType.Signet ? WalletAdapterBitcoinNetwork.UNKNOWN :\n xverseNetwork === sdk.BitcoinNetworkType.Regtest ? WalletAdapterBitcoinNetwork.UNKNOWN :\n (checkNever(xverseNetwork), WalletAdapterBitcoinNetwork.UNKNOWN)\n\n const bitcoinNetwork = getBitcoinNetwork(\n network === WalletAdapterBitcoinNetwork.MAINNET\n ? \"mainnet\"\n : \"testnet\",\n )\n\n return addresses.flatMap((a): XverseWalletAdapterAddresses[] => {\n const purposes: WalletAdapterAddressPurpose[] = []\n switch (a.purpose) {\n case sdk.AddressPurpose.Ordinals:\n purposes.push(\n WalletAdapterAddressPurpose.Ordinals,\n WalletAdapterAddressPurpose.BRC20,\n WalletAdapterAddressPurpose.Runes,\n )\n break\n case sdk.AddressPurpose.Payment:\n purposes.push(WalletAdapterAddressPurpose.Bitcoin)\n break\n }\n\n const scriptPubKey = hex.encode(\n addressToScriptPubKey(bitcoinNetwork, a.address),\n )\n\n switch (a.addressType) {\n case sdk.AddressType.stacks:\n return []\n case sdk.AddressType.p2pkh:\n return [\n {\n purposes,\n network,\n addressType: WalletAdapterAddressType.P2PKH,\n address: a.address,\n scriptPubKey,\n publicKey: a.publicKey,\n },\n ]\n case sdk.AddressType.p2wpkh:\n return [\n {\n purposes,\n network,\n addressType: WalletAdapterAddressType.P2WPKH,\n address: a.address,\n scriptPubKey,\n publicKey: a.publicKey,\n },\n ]\n case sdk.AddressType.p2tr: {\n const tapInternalKey: string = a.publicKey\n return [\n {\n purposes,\n network,\n addressType: WalletAdapterAddressType.P2TR,\n address: a.address,\n scriptPubKey,\n publicKey: a.publicKey,\n tapInternalKey,\n },\n ]\n }\n case sdk.AddressType.p2sh: {\n const redeemScript = hex.encode(\n getRedeemScriptOf_P2SH_P2WPKH_publicKey(\n bitcoinNetwork,\n hex.decode(a.publicKey),\n ),\n )\n return [\n {\n purposes,\n network,\n addressType: WalletAdapterAddressType.P2SH_P2WPKH,\n address: a.address,\n scriptPubKey,\n publicKey: a.publicKey,\n redeemScript,\n },\n ]\n }\n case sdk.AddressType.p2wsh:\n // not supported\n return []\n case sdk.AddressType.starknet:\n case sdk.AddressType.spark:\n return []\n default:\n checkNever(a.addressType)\n return []\n }\n })\n },\n })\n }\n}\n"],"names":["XverseWalletAdapterImpl","XverseCompatibleWalletAdapterImpl","metadata","XVERSE_PROVIDER_ID","sdk","xverseNetwork","addresses","network","WalletAdapterBitcoinNetwork","bitcoinNetwork","getBitcoinNetwork","a","purposes","WalletAdapterAddressPurpose","scriptPubKey","hex","addressToScriptPubKey","WalletAdapterAddressType","tapInternalKey","redeemScript","getRedeemScriptOf_P2SH_P2WPKH_publicKey","checkNever"],"mappings":"oQAgCO,MAAMA,UACHC,EAAAA,iCAEV,CACE,aAAc,CACZ,MAAM,CACJ,kBAAmBC,EAAAA,WAAS,KAC5B,cAAe,SACNC,EAAAA,mBAET,eAAgB,MAAO,CAAE,IAAAC,EAAK,QAASC,EAAe,UAAAC,KAAgB,CAEpE,MAAMC,EACJF,IAAkBD,EAAI,mBAAmB,QAAUI,EAAAA,4BAA4B,QAC/EH,IAAkBD,EAAI,mBAAmB,SACzCC,IAAkBD,EAAI,mBAAmB,SADUI,EAAAA,4BAA4B,SAE/EH,IAAkBD,EAAI,mBAAmB,QACzCC,IAAkBD,EAAI,mBAAmB,QAAUI,EAAAA,4BAA4B,SAG3EC,EAAiBC,EAAAA,kBACrBH,IAAYC,EAAAA,4BAA4B,QACpC,UACA,SAAA,EAGN,OAAOF,EAAU,QAASK,GAAsC,CAC9D,MAAMC,EAA0C,CAAA,EAChD,OAAQD,EAAE,QAAA,CACR,KAAKP,EAAI,eAAe,SACtBQ,EAAS,KACPC,EAAAA,4BAA4B,SAC5BA,EAAAA,4BAA4B,MAC5BA,8BAA4B,KAAA,EAE9B,MACF,KAAKT,EAAI,eAAe,QACtBQ,EAAS,KAAKC,EAAAA,4BAA4B,OAAO,EACjD,KAAA,CAGJ,MAAMC,EAAeC,EAAAA,IAAI,OACvBC,wBAAsBP,EAAgBE,EAAE,OAAO,CAAA,EAGjD,OAAQA,EAAE,YAAA,CACR,KAAKP,EAAI,YAAY,OACnB,MAAO,CAAA,EACT,KAAKA,EAAI,YAAY,MACnB,MAAO,CACL,CACE,SAAAQ,EACA,QAAAL,EACA,YAAaU,EAAAA,yBAAyB,MACtC,QAASN,EAAE,QACX,aAAAG,EACA,UAAWH,EAAE,SAAA,CACf,EAEJ,KAAKP,EAAI,YAAY,OACnB,MAAO,CACL,CACE,SAAAQ,EACA,QAAAL,EACA,YAAaU,EAAAA,yBAAyB,OACtC,QAASN,EAAE,QACX,aAAAG,EACA,UAAWH,EAAE,SAAA,CACf,EAEJ,KAAKP,EAAI,YAAY,KAAM,CACzB,MAAMc,EAAyBP,EAAE,UACjC,MAAO,CACL,CACE,SAAAC,EACA,QAAAL,EACA,YAAaU,EAAAA,yBAAyB,KACtC,QAASN,EAAE,QACX,aAAAG,EACA,UAAWH,EAAE,UACb,eAAAO,CAAA,CACF,CAEJ,CACA,KAAKd,EAAI,YAAY,KAAM,CACzB,MAAMe,EAAeJ,EAAAA,IAAI,OACvBK,EAAAA,wCACEX,EACAM,MAAI,OAAOJ,EAAE,SAAS,CAAA,CACxB,EAEF,MAAO,CACL,CACE,SAAAC,EACA,QAAAL,EACA,YAAaU,EAAAA,yBAAyB,YACtC,QAASN,EAAE,QACX,aAAAG,EACA,UAAWH,EAAE,UACb,aAAAQ,CAAA,CACF,CAEJ,CACA,KAAKf,EAAI,YAAY,MAEnB,MAAO,CAAA,EACT,KAAKA,EAAI,YAAY,SACrB,KAAKA,EAAI,YAAY,MACnB,MAAO,CAAA,EACT,QACEiB,OAAAA,EAAAA,WAAWV,EAAE,WAAW,EACjB,CAAA,CAAC,CAEd,CAAC,CACH,CAAA,CACD,CACH,CACF"}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import { WalletAdapter,
|
|
2
|
-
|
|
1
|
+
import { WalletAdapter, WalletAdapterMetadata, WalletAdapterFactory } from '../WalletAdapters.types';
|
|
2
|
+
/**
|
|
3
|
+
* https://web3.bitget.com/en/docs/wallet/brand-assets.html
|
|
4
|
+
*/
|
|
5
|
+
export declare const metadata: WalletAdapterMetadata;
|
|
6
|
+
export declare function BitgetWalletAdapterFactory(): WalletAdapterFactory<WalletAdapter>;
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import { WalletAdapter,
|
|
2
|
-
export declare const
|
|
1
|
+
import { WalletAdapter, WalletAdapterFactory, WalletAdapterMetadata } from '../WalletAdapters.types';
|
|
2
|
+
export declare const adapterId = "LeatherProvider.BitcoinProvider";
|
|
3
|
+
export declare const metadata: WalletAdapterMetadata;
|
|
4
|
+
export declare function LeatherWalletAdapterFactory(): WalletAdapterFactory<WalletAdapter>;
|
|
@@ -10,7 +10,6 @@ type Addresses = (WalletAdapterAddress & {
|
|
|
10
10
|
export declare class LeatherWalletAdapterImpl implements WalletAdapter {
|
|
11
11
|
private request;
|
|
12
12
|
constructor(request: RequestFn);
|
|
13
|
-
private readonly walletDisplayName;
|
|
14
13
|
private retrieveConnectedAddress;
|
|
15
14
|
connect(): Promise<void>;
|
|
16
15
|
disconnect(): Promise<void>;
|
|
@@ -22,7 +21,15 @@ export declare class LeatherWalletAdapterImpl implements WalletAdapter {
|
|
|
22
21
|
}): Promise<{
|
|
23
22
|
txid: string;
|
|
24
23
|
}>;
|
|
24
|
+
/**
|
|
25
|
+
* @internal
|
|
26
|
+
* @experimental
|
|
27
|
+
*/
|
|
25
28
|
sendInscriptionFeeRateCapability: "available";
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
* @experimental
|
|
32
|
+
*/
|
|
26
33
|
sendInscription(fromAddress: string, receiverAddress: string, inscriptionId: string, options?: {
|
|
27
34
|
feeRate?: number;
|
|
28
35
|
}): Promise<{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WalletAdapter, WalletAdapterBitcoinNetwork,
|
|
1
|
+
import { WalletAdapter, WalletAdapterBitcoinNetwork, WalletAdapterFactory, WalletAdapterMetadata } from '../WalletAdapters.types';
|
|
2
2
|
import { MagicEdenBitcoinProvider } from './MagicEdenWalletAdapter.impl';
|
|
3
3
|
declare global {
|
|
4
4
|
interface Window {
|
|
@@ -8,4 +8,7 @@ declare global {
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
export declare const MAGICEDEN_PROVIDER_ID = "magiceden.bitcoin";
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const metadata: WalletAdapterMetadata;
|
|
12
|
+
export declare const MagicEdenWalletAdapterFactory: (options: {
|
|
13
|
+
network: WalletAdapterBitcoinNetwork;
|
|
14
|
+
}) => WalletAdapterFactory<WalletAdapter>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { WalletAdapter, WalletAdapter_onAddressesChanged_callback, WalletAdapterBitcoinNetwork } from '../WalletAdapters.types';
|
|
2
1
|
import { XverseCompatibleWalletAdapterImpl_legacy } from '../utils/XverseCompatibleWalletAdapterImpl_legacy';
|
|
2
|
+
import { WalletAdapter, WalletAdapter_onAddressesChanged_callback, WalletAdapterBitcoinNetwork } from '../WalletAdapters.types';
|
|
3
3
|
interface MagicEdenBitcoinProviderEvents {
|
|
4
4
|
accountsChanged: [
|
|
5
5
|
event: {
|
|
@@ -1,33 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
private inner;
|
|
6
|
-
private addresses;
|
|
7
|
-
constructor(network: BitcoinNetwork, inner: WalletAdapter, addresses: Partial<{
|
|
8
|
-
bitcoin: Partial<WalletAdapterAddress> & {
|
|
9
|
-
address: string;
|
|
10
|
-
};
|
|
11
|
-
ordinals: Partial<WalletAdapterAddress> & {
|
|
12
|
-
address: string;
|
|
13
|
-
};
|
|
14
|
-
}>);
|
|
15
|
-
connect(): Promise<void>;
|
|
16
|
-
disconnect(): Promise<void>;
|
|
17
|
-
getAddresses(): Promise<WalletAdapterAddress[]>;
|
|
18
|
-
signMessage(address: string, message: string): Promise<SignMessageResult>;
|
|
19
|
-
get sendBitcoinFeeRateCapability(): "unavailable" | "available" | "required";
|
|
20
|
-
get sendInscriptionFeeRateCapability(): "unavailable" | "available" | "required";
|
|
21
|
-
sendBitcoin(fromAddress: string, receiverAddress: string, satoshiAmount: bigint): Promise<{
|
|
22
|
-
txid: string;
|
|
23
|
-
}>;
|
|
24
|
-
sendInscription(fromAddress: string, receiverAddress: string, inscriptionId: string): Promise<{
|
|
25
|
-
txid: string;
|
|
26
|
-
}>;
|
|
27
|
-
signAndFinalizePsbt(psbtHex: string): Promise<{
|
|
28
|
-
signedPsbtHex: string;
|
|
29
|
-
}>;
|
|
30
|
-
onAddressesChanged(_callback: WalletAdapter_onAddressesChanged_callback): {
|
|
31
|
-
unsubscribe: () => void;
|
|
1
|
+
import { WalletAdapter, WalletAdapterAddress, WalletAdapterBitcoinNetwork, WalletAdapterFactory } from '../WalletAdapters.types';
|
|
2
|
+
export declare const MockAddressWalletAdapterFactory: (network: WalletAdapterBitcoinNetwork, mockedAdapter: WalletAdapterFactory<WalletAdapter>, mockedAddresses: Partial<{
|
|
3
|
+
bitcoin: Partial<WalletAdapterAddress> & {
|
|
4
|
+
address: string;
|
|
32
5
|
};
|
|
33
|
-
|
|
6
|
+
ordinals: Partial<WalletAdapterAddress> & {
|
|
7
|
+
address: string;
|
|
8
|
+
};
|
|
9
|
+
}>) => WalletAdapterFactory<WalletAdapter>;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { WalletAdapter,
|
|
2
|
-
export declare const
|
|
1
|
+
import { WalletAdapter, WalletAdapterFactory, WalletAdapterMetadata } from '../WalletAdapters.types';
|
|
2
|
+
export declare const metadata: WalletAdapterMetadata;
|
|
3
|
+
export declare function OkxWalletAdapterFactory(): WalletAdapterFactory<WalletAdapter>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BitcoinWalletAdapterError } from '../utils/error';
|
|
2
|
-
import { SignMessageResult, WalletAdapter, WalletAdapter_onAddressesChanged_callback } from '../WalletAdapters.types';
|
|
3
2
|
import { UniSatEvents, UnisatCompatibleProviderAPI, UnisatCompatibleWalletAdapterImpl } from '../utils/UnisatCompatibleWalletAdapterImpl';
|
|
3
|
+
import { SignMessageResult, WalletAdapter, WalletAdapter_onAddressesChanged_callback } from '../WalletAdapters.types';
|
|
4
4
|
declare enum RpcErrorCode {
|
|
5
5
|
PARSE_ERROR = -32700,
|
|
6
6
|
INVALID_REQUEST = -32600,
|
|
@@ -33,6 +33,10 @@ export declare class OkxWalletAdapterImpl extends UnisatCompatibleWalletAdapterI
|
|
|
33
33
|
}): Promise<{
|
|
34
34
|
txid: string;
|
|
35
35
|
}>;
|
|
36
|
+
/**
|
|
37
|
+
* @internal
|
|
38
|
+
* @experimental
|
|
39
|
+
*/
|
|
36
40
|
sendInscription(fromAddress: string, receiverAddress: string, inscriptionId: string, options?: {
|
|
37
41
|
feeRate?: number;
|
|
38
42
|
}): Promise<{
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { WalletAdapter,
|
|
2
|
-
export declare const
|
|
1
|
+
import { WalletAdapter, WalletAdapterMetadata, WalletAdapterFactory } from '../WalletAdapters.types';
|
|
2
|
+
export declare const metadata: WalletAdapterMetadata;
|
|
3
|
+
export declare function UnisatWalletAdapterFactory(): WalletAdapterFactory<WalletAdapter>;
|
|
@@ -10,5 +10,9 @@ import { WalletAdapter } from '../WalletAdapters.types';
|
|
|
10
10
|
export declare class UnisatWalletAdapterImpl extends UnisatCompatibleWalletAdapterImpl implements WalletAdapter {
|
|
11
11
|
constructor(provider: UnisatCompatibleProviderAPI);
|
|
12
12
|
sendBitcoinFeeRateCapability: "required";
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
* @experimental
|
|
16
|
+
*/
|
|
13
17
|
sendInscriptionFeeRateCapability: "unavailable";
|
|
14
18
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { WalletAdapter,
|
|
1
|
+
import { WalletAdapter, WalletAdapterFactory, WalletAdapterMetadata } from '../WalletAdapters.types';
|
|
2
2
|
export declare const XVERSE_PROVIDER_ID = "XverseProviders.BitcoinProvider";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const metadata: WalletAdapterMetadata;
|
|
4
|
+
export declare function XverseWalletAdapterFactory(): WalletAdapterFactory<WalletAdapter>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { WalletAdapter } from '../WalletAdapters.types';
|
|
2
1
|
import { XverseCompatibleWalletAdapterImpl, XverseCompatibleWalletAdapterImplAddress } from '../utils/XverseCompatibleWalletAdapterImpl';
|
|
2
|
+
import { WalletAdapter } from '../WalletAdapters.types';
|
|
3
3
|
declare global {
|
|
4
4
|
interface Window {
|
|
5
5
|
btc_providers?: import("sats-connect").Provider[];
|
package/lib/adapters/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { BitgetWalletAdapterFactory } from './BitgetWalletAdapter';
|
|
2
|
+
export { LeatherWalletAdapterFactory } from './LeatherWalletAdapter';
|
|
3
3
|
export { MagicEdenWalletAdapterFactory } from './MagicEdenWalletAdapter';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
4
|
+
export { MockAddressWalletAdapterFactory } from './MockAddressWalletAdapter';
|
|
5
|
+
export { OkxWalletAdapterFactory } from './OkxWalletAdapter';
|
|
6
|
+
export { UnisatWalletAdapterFactory } from './UnisatWalletAdapter';
|
|
7
|
+
export { XverseWalletAdapterFactory } from './XverseWalletAdapter';
|
package/lib/adapters.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./index-jRY8YhyK.js");exports.BitgetWalletAdapterFactory=t.BitgetWalletAdapterFactory;exports.LeatherWalletAdapterFactory=t.LeatherWalletAdapterFactory;exports.MagicEdenWalletAdapterFactory=t.MagicEdenWalletAdapterFactory;exports.MockAddressWalletAdapterFactory=t.MockAddressWalletAdapterFactory;exports.OkxWalletAdapterFactory=t.OkxWalletAdapterFactory;exports.UnisatWalletAdapterFactory=t.UnisatWalletAdapterFactory;exports.XverseWalletAdapterFactory=t.XverseWalletAdapterFactory;
|
|
2
2
|
//# sourceMappingURL=adapters.js.map
|
package/lib/adapters.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { B as
|
|
1
|
+
import { B as e, L as r, M as l, a as s, O as d, U as o, X as c } from "./index-DM4G-LJz.mjs";
|
|
2
2
|
export {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
s as
|
|
7
|
-
d as
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
e as BitgetWalletAdapterFactory,
|
|
4
|
+
r as LeatherWalletAdapterFactory,
|
|
5
|
+
l as MagicEdenWalletAdapterFactory,
|
|
6
|
+
s as MockAddressWalletAdapterFactory,
|
|
7
|
+
d as OkxWalletAdapterFactory,
|
|
8
|
+
o as UnisatWalletAdapterFactory,
|
|
9
|
+
c as XverseWalletAdapterFactory
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=adapters.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants-B7qVf97f.mjs","sources":["../src/constants.ts"],"sourcesContent":["export const LOCAL_STORAGE_KEY_PREFIX = \"bitcoin-wallet-connector\"\n"],"names":["LOCAL_STORAGE_KEY_PREFIX"],"mappings":"AAAO,MAAMA,IAA2B;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants-Dr0_Mix2.js","sources":["../src/constants.ts"],"sourcesContent":["export const LOCAL_STORAGE_KEY_PREFIX = \"bitcoin-wallet-connector\"\n"],"names":["LOCAL_STORAGE_KEY_PREFIX"],"mappings":"aAAO,MAAMA,EAA2B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const LOCAL_STORAGE_KEY_PREFIX = "bitcoin-wallet-connector";
|