@gardenfi/wallet-connectors 2.5.0 → 3.0.0-beta.10
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/index.cjs +1 -1
- package/dist/index.js +10 -5
- package/dist/index10.cjs +1 -1
- package/dist/index10.js +72 -70
- package/dist/index11.cjs +1 -1
- package/dist/index11.js +82 -40
- package/dist/index12.cjs +1 -1
- package/dist/index12.js +71 -159
- package/dist/index13.cjs +1 -1
- package/dist/index13.js +40 -180
- package/dist/index14.cjs +1 -1
- package/dist/index14.js +169 -3
- package/dist/index15.cjs +1 -1
- package/dist/index15.js +206 -2
- package/dist/index16.cjs +1 -1
- package/dist/index16.js +8 -2
- package/dist/index17.cjs +1 -3
- package/dist/index17.js +2 -114
- package/dist/index18.cjs +1 -1
- package/dist/index18.js +3 -2
- package/dist/index19.cjs +1 -0
- package/dist/index19.js +4 -0
- package/dist/index2.cjs +1 -1
- package/dist/index2.js +5 -5
- package/dist/index20.cjs +1 -0
- package/dist/index20.js +4 -0
- package/dist/index21.cjs +3 -0
- package/dist/index21.js +116 -0
- package/dist/index22.cjs +1 -0
- package/dist/index22.js +4 -0
- package/dist/index5.cjs +1 -1
- package/dist/index5.js +2 -2
- package/dist/index7.cjs +1 -1
- package/dist/index7.js +110 -60
- package/dist/index8.cjs +1 -1
- package/dist/index8.js +90 -72
- package/dist/index9.cjs +1 -1
- package/dist/index9.js +38 -84
- package/dist/src/index.d.ts +1 -0
- package/dist/src/spark/constants.d.ts +14 -0
- package/dist/src/spark/index.d.ts +5 -0
- package/dist/src/spark/providers/sparkWalletsProvider.d.ts +13 -0
- package/dist/src/spark/providers/sparkWalletsProvider.types.d.ts +22 -0
- package/dist/src/spark/providers/xverse/provider.d.ts +28 -0
- package/dist/src/spark/providers/xverse/xverse.types.d.ts +11 -0
- package/dist/src/spark/spark.types.d.ts +51 -0
- package/package.json +4 -3
package/dist/index9.js
CHANGED
|
@@ -1,110 +1,64 @@
|
|
|
1
|
-
var
|
|
2
|
-
throw TypeError(
|
|
1
|
+
var y = (e) => {
|
|
2
|
+
throw TypeError(e);
|
|
3
3
|
};
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var o;
|
|
15
|
-
class W {
|
|
16
|
-
constructor(t) {
|
|
17
|
-
P(this, o);
|
|
18
|
-
this.address = "", this.id = c.Phantom.id, this.name = c.Phantom.name, this.icon = c.Phantom.icon, this.disconnect = () => (this.address = "", Promise.resolve(u("Disconnected Phantom wallet"))), y(this, o, t);
|
|
4
|
+
var g = (e, t, r) => t.has(e) || y("Cannot " + r);
|
|
5
|
+
var n = (e, t, r) => (g(e, t, "read from private field"), r ? r.call(e) : t.get(e)), d = (e, t, r) => t.has(e) ? y("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, r), a = (e, t, r, w) => (g(e, t, "write to private field"), w ? w.call(e, r) : t.set(e, r), r);
|
|
6
|
+
import { Ok as c, Err as o, executeWithTryCatch as h, Network as l } from "@gardenfi/utils";
|
|
7
|
+
import { WALLET_CONFIG as u } from "./index3.js";
|
|
8
|
+
var i, s;
|
|
9
|
+
class E {
|
|
10
|
+
constructor(t, r) {
|
|
11
|
+
d(this, i);
|
|
12
|
+
d(this, s);
|
|
13
|
+
this.address = "", this.id = u.OKX.id, this.name = u.OKX.name, this.icon = u.OKX.icon, this.disconnect = () => (this.address = "", n(this, i).disconnect(), Promise.resolve(c("Disconnected OKX wallet"))), a(this, i, t), a(this, s, r);
|
|
19
14
|
}
|
|
20
|
-
async connect(
|
|
21
|
-
if (t || (t = a.MAINNET), t === a.TESTNET)
|
|
22
|
-
return i("Phantom wallet does not support testnet");
|
|
15
|
+
async connect() {
|
|
23
16
|
try {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
e.purpose === "payment" && (this.address = e.address);
|
|
27
|
-
return this.address === "" ? i("Could not connect to Phantom bitcoin payment account") : u({
|
|
17
|
+
const t = await n(this, i).connect();
|
|
18
|
+
return !t || !t.address ? o("Failed to connect to OKX wallet") : (this.address = t.address, c({
|
|
28
19
|
address: this.address,
|
|
29
20
|
provider: this,
|
|
30
|
-
network:
|
|
31
|
-
id:
|
|
32
|
-
});
|
|
33
|
-
} catch (
|
|
34
|
-
return
|
|
21
|
+
network: n(this, s),
|
|
22
|
+
id: u.OKX.id
|
|
23
|
+
}));
|
|
24
|
+
} catch (t) {
|
|
25
|
+
return o("Error while connecting to the OKX wallet", t);
|
|
35
26
|
}
|
|
36
27
|
}
|
|
28
|
+
async getPublicKey() {
|
|
29
|
+
return await h(async () => await n(this, i).getPublicKey(), "Error while getting public key from OKX wallet");
|
|
30
|
+
}
|
|
37
31
|
async requestAccounts() {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return t.length > 0 && (this.address = t[0].address), t.map((r) => r.address);
|
|
41
|
-
}, "Error while requesting accounts from Phantom wallet");
|
|
32
|
+
const t = await this.connect();
|
|
33
|
+
return t.ok ? c([t.val.address]) : o(t.error);
|
|
42
34
|
}
|
|
43
35
|
async getAccounts() {
|
|
44
|
-
return this.requestAccounts();
|
|
36
|
+
return n(this, s) === l.TESTNET ? await this.requestAccounts() : await h(async () => await n(this, i).getAccounts(), "Error while getting accounts from OKX wallet");
|
|
45
37
|
}
|
|
46
|
-
// bitcoin testnet is not supported in Phantom wallet
|
|
47
38
|
async getNetwork() {
|
|
48
|
-
return
|
|
39
|
+
return c(n(this, s));
|
|
49
40
|
}
|
|
50
41
|
async switchNetwork() {
|
|
51
|
-
|
|
42
|
+
a(this, s, n(this, s) === l.MAINNET ? l.TESTNET : l.MAINNET);
|
|
43
|
+
const t = await this.connect();
|
|
44
|
+
return t.error ? o(
|
|
45
|
+
`Failed to connect to ${n(this, s)}: ${t.error}`
|
|
46
|
+
) : c(n(this, s));
|
|
52
47
|
}
|
|
53
48
|
async getBalance() {
|
|
54
|
-
return await
|
|
55
|
-
const t = await v(this.address, a.MAINNET);
|
|
56
|
-
if (t.ok && t.val)
|
|
57
|
-
return t.val;
|
|
58
|
-
throw new Error(t.error);
|
|
59
|
-
}, "Error while getting balance from Phantom wallet");
|
|
49
|
+
return await h(async () => await n(this, i).getBalance(), "Error while getting balance from OKX wallet");
|
|
60
50
|
}
|
|
61
51
|
async sendBitcoin(t, r) {
|
|
62
|
-
return await
|
|
63
|
-
const e = m.networks.bitcoin, f = new I(a.MAINNET);
|
|
64
|
-
try {
|
|
65
|
-
const { txHex: d, utxoCount: A } = await B.generateUnsignedPSBT(
|
|
66
|
-
f,
|
|
67
|
-
e,
|
|
68
|
-
this.address,
|
|
69
|
-
t,
|
|
70
|
-
r
|
|
71
|
-
), E = await s(this, o).signPSBT(
|
|
72
|
-
this.fromHexString(d),
|
|
73
|
-
{
|
|
74
|
-
inputsToSign: [
|
|
75
|
-
{
|
|
76
|
-
address: this.address,
|
|
77
|
-
signingIndexes: Array.from({ length: A }, (S, x) => x),
|
|
78
|
-
sigHash: m.Transaction.SIGHASH_ALL
|
|
79
|
-
}
|
|
80
|
-
]
|
|
81
|
-
}
|
|
82
|
-
), w = m.Psbt.fromBuffer(
|
|
83
|
-
Buffer.from(E)
|
|
84
|
-
);
|
|
85
|
-
w.finalizeAllInputs();
|
|
86
|
-
const h = w.extractTransaction();
|
|
87
|
-
console.log("tx", h);
|
|
88
|
-
const T = h.getId();
|
|
89
|
-
return await f.broadcast(h.toHex()), T;
|
|
90
|
-
} catch (d) {
|
|
91
|
-
throw new Error(`Failed to send bitcoin: ${d}`);
|
|
92
|
-
}
|
|
93
|
-
}, "Error while sending bitcoin from Phantom wallet");
|
|
94
|
-
}
|
|
95
|
-
fromHexString(t) {
|
|
96
|
-
return Uint8Array.from(
|
|
97
|
-
t.match(/.{1,2}/g).map((r) => parseInt(r, 16))
|
|
98
|
-
);
|
|
52
|
+
return await h(async () => await n(this, i).sendBitcoin(t, r), "Error while sending bitcoin from OKX wallet");
|
|
99
53
|
}
|
|
100
54
|
on(t, r) {
|
|
101
|
-
|
|
55
|
+
n(this, i).on(t, r);
|
|
102
56
|
}
|
|
103
57
|
off(t, r) {
|
|
104
|
-
|
|
58
|
+
n(this, i).off(t, r);
|
|
105
59
|
}
|
|
106
60
|
}
|
|
107
|
-
|
|
61
|
+
i = new WeakMap(), s = new WeakMap();
|
|
108
62
|
export {
|
|
109
|
-
|
|
63
|
+
E as OKXProvider
|
|
110
64
|
};
|
package/dist/src/index.d.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const SupportedWallets: {
|
|
2
|
+
Xverse: {
|
|
3
|
+
name: string;
|
|
4
|
+
icon: string;
|
|
5
|
+
description: string;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
export declare const WALLET_CONFIG: {
|
|
9
|
+
readonly Xverse: {
|
|
10
|
+
readonly id: "Xverse";
|
|
11
|
+
readonly name: "Xverse Wallet";
|
|
12
|
+
readonly icon: "https://garden.imgix.net/wallets/xverse.svg";
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { SparkWalletProvider, useSparkWallet } from './providers/sparkWalletsProvider';
|
|
2
|
+
export { XverseSparkProvider } from './providers/xverse/provider';
|
|
3
|
+
export type { XVerseSparkProvider as XVerseSparkProviderType, XverseSparkNetworkType } from './providers/xverse/xverse.types';
|
|
4
|
+
export type { AvailableWallets as AvailableSparkWallets, SparkWalletProviderProps, SparkWalletProviderContextType, } from './providers/sparkWalletsProvider.types';
|
|
5
|
+
export type { IInjectedSparkProvider, SparkConnect, Balance as SparkBalance, WalletId as SparkWalletId, } from './spark.types';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { XVerseSparkProvider as XVerseSparkProviderType } from './xverse/xverse.types';
|
|
3
|
+
import { SparkWalletProviderContextType, SparkWalletProviderProps } from './sparkWalletsProvider.types';
|
|
4
|
+
|
|
5
|
+
declare global {
|
|
6
|
+
interface Window {
|
|
7
|
+
XverseProviders?: {
|
|
8
|
+
BitcoinProvider: XVerseSparkProviderType;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export declare const SparkWalletProvider: ({ children, network, store, }: SparkWalletProviderProps) => React.JSX.Element;
|
|
13
|
+
export declare const useSparkWallet: () => SparkWalletProviderContextType;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IInjectedSparkProvider } from '../spark.types';
|
|
2
|
+
import { AsyncResult, IStore, Network, Result } from '@gardenfi/utils';
|
|
3
|
+
|
|
4
|
+
export type AvailableWallets = {
|
|
5
|
+
[key: string]: IInjectedSparkProvider;
|
|
6
|
+
};
|
|
7
|
+
export type SparkWalletProviderContextType = {
|
|
8
|
+
availableWallets: AvailableWallets;
|
|
9
|
+
connect: (SparkWallet: IInjectedSparkProvider, network?: Network) => AsyncResult<void, string>;
|
|
10
|
+
updateAccount: () => Promise<void>;
|
|
11
|
+
provider: IInjectedSparkProvider | undefined;
|
|
12
|
+
account: string | undefined;
|
|
13
|
+
network: Network | undefined;
|
|
14
|
+
disconnect: () => Result<void, string>;
|
|
15
|
+
isConnecting: boolean;
|
|
16
|
+
isConnected: boolean;
|
|
17
|
+
};
|
|
18
|
+
export type SparkWalletProviderProps = {
|
|
19
|
+
network: Network;
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
store: IStore;
|
|
22
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Balance, SparkConnect, IInjectedSparkProvider } from '../../spark.types';
|
|
2
|
+
import { XVerseSparkProvider } from './xverse.types';
|
|
3
|
+
import { AsyncResult, Network } from '@gardenfi/utils';
|
|
4
|
+
|
|
5
|
+
export declare class XverseSparkProvider implements IInjectedSparkProvider {
|
|
6
|
+
#private;
|
|
7
|
+
address: string;
|
|
8
|
+
id: "Xverse";
|
|
9
|
+
name: "Xverse Wallet";
|
|
10
|
+
icon: "https://garden.imgix.net/wallets/xverse.svg";
|
|
11
|
+
constructor(provider: XVerseSparkProvider);
|
|
12
|
+
connect: (network?: Network) => AsyncResult<SparkConnect, string>;
|
|
13
|
+
getBalance: () => Promise<import('@gardenfi/utils').Result<Balance, string>>;
|
|
14
|
+
requestAccounts: () => AsyncResult<string[], string>;
|
|
15
|
+
getAccounts: () => AsyncResult<string[], string>;
|
|
16
|
+
sendSpark: (toAddress: string, satoshis: number) => AsyncResult<string, string>;
|
|
17
|
+
getNetwork(): Promise<import('@gardenfi/utils').Result<Network.MAINNET | Network.TESTNET, string>>;
|
|
18
|
+
switchNetwork(): AsyncResult<Network, string>;
|
|
19
|
+
/**
|
|
20
|
+
* not available in XVerse Spark wallet
|
|
21
|
+
*/
|
|
22
|
+
on: () => void;
|
|
23
|
+
/**
|
|
24
|
+
* not available in XVerse Spark wallet
|
|
25
|
+
*/
|
|
26
|
+
off: () => void;
|
|
27
|
+
disconnect: () => AsyncResult<string, string>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface XVerseSparkProvider {
|
|
2
|
+
request: (method: string, params: any) => Promise<{
|
|
3
|
+
result?: any;
|
|
4
|
+
error?: any;
|
|
5
|
+
status: 'success' | 'error';
|
|
6
|
+
}>;
|
|
7
|
+
}
|
|
8
|
+
export declare enum XverseSparkNetworkType {
|
|
9
|
+
Mainnet = "mainnet",
|
|
10
|
+
Regtest = "regtest"
|
|
11
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AsyncResult, Network } from '@gardenfi/utils';
|
|
2
|
+
import { WALLET_CONFIG } from './constants';
|
|
3
|
+
|
|
4
|
+
export type Balance = {
|
|
5
|
+
confirmed: number;
|
|
6
|
+
unconfirmed: number;
|
|
7
|
+
total: number;
|
|
8
|
+
};
|
|
9
|
+
export type SparkConnect = {
|
|
10
|
+
address: string;
|
|
11
|
+
provider: IInjectedSparkProvider;
|
|
12
|
+
network: Network;
|
|
13
|
+
id: WalletId;
|
|
14
|
+
};
|
|
15
|
+
export type WalletId = (typeof WALLET_CONFIG)[keyof typeof WALLET_CONFIG]['id'];
|
|
16
|
+
export type ProviderEvents = {
|
|
17
|
+
accountsChanged: (accounts: string[]) => void;
|
|
18
|
+
};
|
|
19
|
+
export interface IInjectedSparkProvider {
|
|
20
|
+
id: WalletId;
|
|
21
|
+
address: string;
|
|
22
|
+
name: string;
|
|
23
|
+
icon: string;
|
|
24
|
+
getBalance: () => AsyncResult<Balance, string>;
|
|
25
|
+
/**
|
|
26
|
+
* requests accounts from the wallet, if not connected, it will connect first
|
|
27
|
+
* @returns {AsyncResult<string[], string>}
|
|
28
|
+
*/
|
|
29
|
+
requestAccounts: () => AsyncResult<string[], string>;
|
|
30
|
+
/**
|
|
31
|
+
* silently gets accounts if already connected
|
|
32
|
+
* @returns {AsyncResult<string[], string>}
|
|
33
|
+
*/
|
|
34
|
+
getAccounts: () => AsyncResult<string[], string>;
|
|
35
|
+
sendSpark: (toAddress: string, satoshis: number) => AsyncResult<string, string>;
|
|
36
|
+
getNetwork: () => AsyncResult<Network, string>;
|
|
37
|
+
switchNetwork: () => AsyncResult<Network, string>;
|
|
38
|
+
connect: (network?: Network) => AsyncResult<SparkConnect, string>;
|
|
39
|
+
disconnect: () => AsyncResult<string, string>;
|
|
40
|
+
on<E extends keyof ProviderEvents>(event: E, cb: ProviderEvents[E]): void;
|
|
41
|
+
off<E extends keyof ProviderEvents>(event: E, cb: ProviderEvents[E]): void;
|
|
42
|
+
}
|
|
43
|
+
export type SelectedAccount = {
|
|
44
|
+
address: string;
|
|
45
|
+
publicKey: string;
|
|
46
|
+
};
|
|
47
|
+
export interface SparkWallet {
|
|
48
|
+
name: string;
|
|
49
|
+
symbol: string;
|
|
50
|
+
connect: () => AsyncResult<IInjectedSparkProvider, string>;
|
|
51
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gardenfi/wallet-connectors",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-beta.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "vite build",
|
|
@@ -37,12 +37,13 @@
|
|
|
37
37
|
},
|
|
38
38
|
"sideEffects": false,
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@gardenfi/core": "3.1.0",
|
|
41
|
-
"@gardenfi/utils": "3.1.0",
|
|
40
|
+
"@gardenfi/core": "3.1.0-beta.1",
|
|
41
|
+
"@gardenfi/utils": "3.1.0-beta.1",
|
|
42
42
|
"axios": "^1.7.9",
|
|
43
43
|
"bitcoinjs-lib": "^6.1.7",
|
|
44
44
|
"bitcore-lib-ltc": "^10.10.5",
|
|
45
45
|
"react": "^18.3.1",
|
|
46
|
+
"sats-connect": "^4.2.1",
|
|
46
47
|
"tiny-secp256k1": "^2.2.3"
|
|
47
48
|
}
|
|
48
49
|
}
|