@txnlab/use-wallet 1.1.5 → 1.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/dist/cjs/clients/index.d.ts +3 -2
- package/dist/cjs/clients/kmd/client.d.ts +1 -0
- package/dist/cjs/clients/mnemonic/client.d.ts +24 -0
- package/dist/cjs/clients/mnemonic/constants.d.ts +1 -0
- package/dist/cjs/clients/mnemonic/index.d.ts +2 -0
- package/dist/cjs/clients/mnemonic/types.d.ts +28 -0
- package/dist/cjs/constants/constants.d.ts +2 -1
- package/dist/cjs/hooks/useWallet.d.ts +1 -0
- package/dist/cjs/index.js +161 -24
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/store/state/clientStore.d.ts +2 -0
- package/dist/esm/clients/index.d.ts +3 -2
- package/dist/esm/clients/kmd/client.d.ts +1 -0
- package/dist/esm/clients/mnemonic/client.d.ts +24 -0
- package/dist/esm/clients/mnemonic/constants.d.ts +1 -0
- package/dist/esm/clients/mnemonic/index.d.ts +2 -0
- package/dist/esm/clients/mnemonic/types.d.ts +28 -0
- package/dist/esm/constants/constants.d.ts +2 -1
- package/dist/esm/hooks/useWallet.d.ts +1 -0
- package/dist/esm/index.js +161 -25
- package/dist/esm/store/state/clientStore.d.ts +2 -0
- package/dist/index.d.ts +73 -28
- package/package.json +2 -2
|
@@ -5,8 +5,9 @@ import exodus from "./exodus";
|
|
|
5
5
|
import algosigner from "./algosigner";
|
|
6
6
|
import walletconnect from "./walletconnect";
|
|
7
7
|
import kmd from "./kmd";
|
|
8
|
-
|
|
8
|
+
import mnemonic from "./mnemonic";
|
|
9
|
+
export { pera, myalgo, defly, exodus, algosigner, walletconnect, kmd, mnemonic, };
|
|
9
10
|
declare const _default: {
|
|
10
|
-
[x: string]: typeof pera | typeof myalgo | typeof defly | typeof exodus | typeof algosigner | typeof walletconnect | typeof kmd;
|
|
11
|
+
[x: string]: typeof pera | typeof myalgo | typeof defly | typeof exodus | typeof algosigner | typeof walletconnect | typeof kmd | typeof mnemonic;
|
|
11
12
|
};
|
|
12
13
|
export default _default;
|
|
@@ -23,6 +23,7 @@ declare class KMDWalletClient extends BaseWallet {
|
|
|
23
23
|
releaseToken(token: string): Promise<void>;
|
|
24
24
|
listWallets(): Promise<Record<string, string>>;
|
|
25
25
|
listAccounts(wallet: string, password: string): Promise<Array<Account>>;
|
|
26
|
+
getWalletId(): Promise<string>;
|
|
26
27
|
signTransactions(connectedAccounts: string[], transactions: Uint8Array[], indexesToSign?: number[], returnGroup?: boolean): Promise<Uint8Array[]>;
|
|
27
28
|
signEncodedTransactions(transactions: TransactionsArray): Promise<Uint8Array[]>;
|
|
28
29
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import BaseWallet from "../base";
|
|
2
|
+
import { PROVIDER_ID } from "../../constants";
|
|
3
|
+
import type { Wallet, TransactionsArray, Network } from "../../types";
|
|
4
|
+
import { InitParams, MnemonicWalletClientConstructor } from "./types";
|
|
5
|
+
declare class MnemonicWalletClient extends BaseWallet {
|
|
6
|
+
#private;
|
|
7
|
+
id: PROVIDER_ID;
|
|
8
|
+
network: Network;
|
|
9
|
+
constructor({ metadata, id, algosdk, algodClient, network, }: MnemonicWalletClientConstructor);
|
|
10
|
+
static metadata: {
|
|
11
|
+
id: PROVIDER_ID;
|
|
12
|
+
name: string;
|
|
13
|
+
icon: string;
|
|
14
|
+
isWalletConnect: boolean;
|
|
15
|
+
};
|
|
16
|
+
static init({ algodOptions, algosdkStatic, network, }: InitParams): Promise<MnemonicWalletClient | null>;
|
|
17
|
+
connect(): Promise<Wallet>;
|
|
18
|
+
disconnect(): Promise<void>;
|
|
19
|
+
reconnect(): Promise<Wallet | null>;
|
|
20
|
+
requestPassword(): Promise<string>;
|
|
21
|
+
signTransactions(connectedAccounts: string[], transactions: Uint8Array[], indexesToSign?: number[], returnGroup?: boolean): Promise<Uint8Array[]>;
|
|
22
|
+
signEncodedTransactions(transactions: TransactionsArray): Promise<Uint8Array[]>;
|
|
23
|
+
}
|
|
24
|
+
export default MnemonicWalletClient;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ICON = "data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e %3c!-- Generated by Pixelmator Pro 3.2.2 --%3e %3csvg width='409' height='210' viewBox='0 0 409 210' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctext id='MNEMONIC' xml:space='preserve' x='0' y='129' font-family='Helvetica' font-size='72' fill='black'%3eMNEMONIC%3c/text%3e%3c/svg%3e";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type _algosdk from "algosdk";
|
|
2
|
+
import type { AlgodClientOptions, Network, Metadata } from "../../types";
|
|
3
|
+
import { PROVIDER_ID } from "../../constants";
|
|
4
|
+
export declare type ClientOptions = {
|
|
5
|
+
wallet: string;
|
|
6
|
+
password: string;
|
|
7
|
+
host: string;
|
|
8
|
+
token: string;
|
|
9
|
+
port: string;
|
|
10
|
+
};
|
|
11
|
+
export interface InitWalletHandle {
|
|
12
|
+
wallet_handle_token: string;
|
|
13
|
+
message?: string;
|
|
14
|
+
error?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare type MnemonicWalletClientConstructor = {
|
|
17
|
+
metadata: Metadata;
|
|
18
|
+
id: PROVIDER_ID;
|
|
19
|
+
algosdk: typeof _algosdk;
|
|
20
|
+
algodClient: _algosdk.Algodv2;
|
|
21
|
+
network: Network;
|
|
22
|
+
};
|
|
23
|
+
export declare type InitParams = {
|
|
24
|
+
clientOptions?: ClientOptions;
|
|
25
|
+
algodOptions?: AlgodClientOptions;
|
|
26
|
+
algosdkStatic?: typeof _algosdk;
|
|
27
|
+
network?: Network;
|
|
28
|
+
};
|
|
@@ -6,7 +6,8 @@ export declare enum PROVIDER_ID {
|
|
|
6
6
|
ALGOSIGNER = "algosigner",
|
|
7
7
|
DEFLY = "defly",
|
|
8
8
|
EXODUS = "exodus",
|
|
9
|
-
WALLETCONNECT = "walletconnect"
|
|
9
|
+
WALLETCONNECT = "walletconnect",
|
|
10
|
+
MNEMONIC = "mnemonic"
|
|
10
11
|
}
|
|
11
12
|
export declare const DEFAULT_NETWORK: Network;
|
|
12
13
|
export declare const DEFAULT_NODE_BASEURL = "https://mainnet-api.algonode.cloud";
|
|
@@ -10,6 +10,7 @@ export default function useWallet(): {
|
|
|
10
10
|
defly: Promise<import("../clients/base/base").default | null>;
|
|
11
11
|
exodus: Promise<import("../clients/base/base").default | null>;
|
|
12
12
|
walletconnect: Promise<import("../clients/base/base").default | null>;
|
|
13
|
+
mnemonic: Promise<import("../clients/base/base").default | null>;
|
|
13
14
|
}> | null;
|
|
14
15
|
providers: Provider[] | null;
|
|
15
16
|
connectedAccounts: import("../types").Account[];
|
package/dist/cjs/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var require$$0 = require('react');
|
|
4
4
|
var utils = require('@json-rpc-tools/utils');
|
|
5
|
+
var algosdk = require('algosdk');
|
|
5
6
|
|
|
6
7
|
exports.PROVIDER_ID = void 0;
|
|
7
8
|
(function (PROVIDER_ID) {
|
|
@@ -12,6 +13,7 @@ exports.PROVIDER_ID = void 0;
|
|
|
12
13
|
PROVIDER_ID["DEFLY"] = "defly";
|
|
13
14
|
PROVIDER_ID["EXODUS"] = "exodus";
|
|
14
15
|
PROVIDER_ID["WALLETCONNECT"] = "walletconnect";
|
|
16
|
+
PROVIDER_ID["MNEMONIC"] = "mnemonic";
|
|
15
17
|
})(exports.PROVIDER_ID || (exports.PROVIDER_ID = {}));
|
|
16
18
|
const DEFAULT_NETWORK$1 = "mainnet";
|
|
17
19
|
const DEFAULT_NODE_BASEURL = "https://mainnet-api.algonode.cloud";
|
|
@@ -1076,7 +1078,7 @@ class BaseClient {
|
|
|
1076
1078
|
}
|
|
1077
1079
|
}
|
|
1078
1080
|
|
|
1079
|
-
const ICON$
|
|
1081
|
+
const ICON$7 = "data:image/svg+xml;base64," +
|
|
1080
1082
|
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzcgMTg3Ij48cmVjdCB4PSItMTEuMzgiIHk9Ii0yNS45NyIgd2lkdGg9IjIwMC4wMiIgaGVpZ2h0PSIyMzEuNTMiIHN0eWxlPSJmaWxsOiNmZTU7Ii8+PHBhdGggZD0iTTk0LjA1LDU5LjYxYzIuMDUsOC40OCwxLjM2LDE1Ljk0LTEuNTUsMTYuNjYtMi45LC43Mi02LjkxLTUuNTctOC45Ni0xNC4wNS0yLjA1LTguNDgtMS4zNi0xNS45NCwxLjU1LTE2LjY2LDIuOS0uNzIsNi45MSw1LjU3LDguOTYsMTQuMDVaIiBzdHlsZT0iZmlsbDojMWMxYzFjOyIvPjxwYXRoIGQ9Ik0xMjcuODUsNjYuOWMtNC41My00LjgxLTEzLjU1LTMuNS0yMC4xNSwyLjkxLTYuNTksNi40MS04LjI2LDE1LjUtMy43MywyMC4zMSw0LjUzLDQuOCwxMy41NSwzLjUsMjAuMTUtMi45MXM4LjI2LTE1LjUsMy43My0yMC4zMVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTkxLjc5LDE0MC40N2MyLjktLjcyLDMuNDktOC42LDEuMzItMTcuNjEtMi4xNy05LTYuMjktMTUuNzEtOS4xOS0xNC45OS0yLjksLjcyLTMuNDksOC42LTEuMzIsMTcuNjEsMi4xNyw5LDYuMjksMTUuNzEsOS4xOSwxNC45OVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTYyLjIyLDcxLjNjOC4zNywyLjQ3LDE0LjQ4LDYuOCwxMy42Niw5LjY3LS44MywyLjg3LTguMjgsMy4yLTE2LjY1LC43My04LjM3LTIuNDctMTQuNDgtNi44LTEzLjY2LTkuNjcsLjgzLTIuODcsOC4yOC0zLjIsMTYuNjUtLjczWiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48cGF0aCBkPSJNMTE2LjU0LDEwMy43NGM4Ljg4LDIuNjIsMTUuNDEsNy4wNywxNC41OSw5Ljk0LS44MywyLjg3LTguNywzLjA4LTE3LjU4LC40Ni04Ljg4LTIuNjItMTUuNDEtNy4wNy0xNC41OS05Ljk0LC44My0yLjg3LDguNy0zLjA4LDE3LjU4LS40NloiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTcxLjY0LDk3LjcxYy0yLjA4LTIuMTUtOC44OCwuOTgtMTUuMiw2Ljk5LTYuMzIsNi4wMS05Ljc2LDEyLjYzLTcuNjksMTQuNzgsMi4wOCwyLjE1LDguODgtLjk4LDE1LjItNi45OSw2LjMyLTYuMDEsOS43Ni0xMi42Myw3LjY5LTE0Ljc4WiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48L3N2Zz4=";
|
|
1081
1083
|
|
|
1082
1084
|
class PeraWalletClient extends BaseClient {
|
|
@@ -1091,7 +1093,7 @@ class PeraWalletClient extends BaseClient {
|
|
|
1091
1093
|
static metadata = {
|
|
1092
1094
|
id: exports.PROVIDER_ID.PERA,
|
|
1093
1095
|
name: "Pera",
|
|
1094
|
-
icon: ICON$
|
|
1096
|
+
icon: ICON$7,
|
|
1095
1097
|
isWalletConnect: true,
|
|
1096
1098
|
};
|
|
1097
1099
|
static async init({ clientOptions, algodOptions, clientStatic, algosdkStatic, network = DEFAULT_NETWORK$1, }) {
|
|
@@ -1245,7 +1247,7 @@ class PeraWalletClient extends BaseClient {
|
|
|
1245
1247
|
}
|
|
1246
1248
|
}
|
|
1247
1249
|
|
|
1248
|
-
const ICON$
|
|
1250
|
+
const ICON$6 = "data:image/svg+xml;base64," +
|
|
1249
1251
|
"PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgPHBhdGggZmlsbD0iIzI0NUVDNiIgZD0iTTE2LDMyYy0zLjIsMC02LjItMC45LTguOS0yLjdjLTIuNi0xLjgtNC43LTQuMy01LjktNy4yQzAsMTkuMi0wLjMsMTYsMC4zLDEyLjlDMC45LDkuOCwyLjQsNyw0LjcsNC43IEM2LjIsMy4yLDcuOSwyLDkuOSwxLjJDMTEuOCwwLjQsMTMuOSwwLDE2LDBzNC4yLDAuNCw2LjEsMS4yYzEuOSwwLjgsMy43LDIsNS4yLDMuNXMyLjcsMy4zLDMuNSw1LjJjMC44LDEuOSwxLjIsNCwxLjIsNi4xIHMtMC40LDQuMi0xLjIsNi4xYy0wLjgsMS45LTIsMy43LTMuNSw1LjJjLTEuNSwxLjUtMy4yLDIuNy01LjIsMy41QzIwLjIsMzEuNiwxOC4xLDMyLDE2LDMyTDE2LDMyeiBNMjAuMiwxMS4ybDAuMSwwLjVsMi42LDkuNWgyLjEgTDIxLjUsOC45bC0wLjEtMC4zaC0xLjlsMCwwLjFsLTEuNywzLjFMMTYsMTQuOWwwLDAuMWwwLTAuMWwtMC4yLTAuOGwtMC42LTIuNGwtMC4xLTAuMmwtMC43LTIuNmwtMC4xLTAuM2gtMS45bDAsMC4xbC0xLjcsMy4xIGwtMS44LDMuMkw3LjEsMThsLTEuOCwzLjJoMi4xTDkuMiwxOGwxLjgtMy4ybDEuOC0zLjJsMC4zLTAuNWwwLjEsMC41bDAuNSwyLjFsMC43LDIuNmwwLjIsMC45TDE0LjIsMThsLTEuOCwzLjJoMi4xbDAuOC0xLjMgbDEuMy0yLjNsMS41LTIuN2wxLjgtMy4yTDIwLjIsMTEuMkwyMC4yLDExLjJ6Ii8+Cjwvc3ZnPgo=";
|
|
1250
1252
|
|
|
1251
1253
|
/**
|
|
@@ -1264,7 +1266,7 @@ class MyAlgoWalletClient extends BaseClient {
|
|
|
1264
1266
|
static metadata = {
|
|
1265
1267
|
id: exports.PROVIDER_ID.MYALGO,
|
|
1266
1268
|
name: "MyAlgo",
|
|
1267
|
-
icon: ICON$
|
|
1269
|
+
icon: ICON$6,
|
|
1268
1270
|
isWalletConnect: false,
|
|
1269
1271
|
};
|
|
1270
1272
|
static async init({ clientOptions, algodOptions, clientStatic, algosdkStatic, network = DEFAULT_NETWORK$1, }) {
|
|
@@ -1372,7 +1374,7 @@ class MyAlgoWalletClient extends BaseClient {
|
|
|
1372
1374
|
}
|
|
1373
1375
|
}
|
|
1374
1376
|
|
|
1375
|
-
const ICON$
|
|
1377
|
+
const ICON$5 = "data:image/svg+xml;base64," +
|
|
1376
1378
|
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEuNjgyMDksMCwwLDEuNjgyMDksMjI2LjM2OCwyMTIuODE4KSI+CiAgICAgICAgPHBhdGggZD0iTTMyNy4wNDksMjgwLjE5MkwxNjkuNTI0LDEzTDEyLDI4MC4xOTJMMTY5LjUyNCwxODkuMDg0TDMyNy4wNDksMjgwLjE5MloiIHN0eWxlPSJmaWxsOndoaXRlO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS42ODIwOSwwLDAsMS42ODIwOSwyMjYuMzY4LDIxMi44MTgpIj4KICAgICAgICA8cGF0aCBkPSJNMjk5LjU0NiwzMDdMMTY5LjUyNSwyMzguNDczTDM5LjUwNCwzMDdMMTY5LjUyNSwyNjQuNjdMMjk5LjU0NiwzMDdaIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgIDwvZz4KPC9zdmc+Cg==";
|
|
1377
1379
|
|
|
1378
1380
|
class DeflyWalletClient extends BaseClient {
|
|
@@ -1387,7 +1389,7 @@ class DeflyWalletClient extends BaseClient {
|
|
|
1387
1389
|
static metadata = {
|
|
1388
1390
|
id: exports.PROVIDER_ID.DEFLY,
|
|
1389
1391
|
name: "Defly",
|
|
1390
|
-
icon: ICON$
|
|
1392
|
+
icon: ICON$5,
|
|
1391
1393
|
isWalletConnect: true,
|
|
1392
1394
|
};
|
|
1393
1395
|
static async init({ clientOptions, algodOptions, clientStatic, algosdkStatic, network = DEFAULT_NETWORK$1, }) {
|
|
@@ -1542,7 +1544,7 @@ class DeflyWalletClient extends BaseClient {
|
|
|
1542
1544
|
}
|
|
1543
1545
|
}
|
|
1544
1546
|
|
|
1545
|
-
const ICON$
|
|
1547
|
+
const ICON$4 = "data:image/svg+xml;base64," +
|
|
1546
1548
|
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjUuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDAgMzAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOnVybCgjU1ZHSURfMDAwMDAwNDM0MjYxNjcxNDAxMDY1ODIyNzAwMDAwMDIxMzA3Njg5MDYwNzMxMTM0ODRfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEwMjUxOTMxNjAxNTI3NjU4MTY0MDAwMDAxNjI3NDExMjM4MzE3NTY0MTc1OV8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTt9Cgkuc3Qze2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEzODU2MzM4MjQ2MjA4NjAyMDM1MDAwMDAxNDg3ODQ5MDI3MDc4MjA3MTIwN18pO30KCS5zdDR7bWFzazp1cmwoI21hc2swXzE2NjFfMjk1XzAwMDAwMDg4MTMyMjUxNTk3NDQxNTczNDkwMDAwMDExNjkzNjEyMDE4NTA2NjgxNDgxXyk7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMDAwMDAxMDYxMjA2MzI0NjE3OTI4NzExNjAwMDAwMDc0MzM5MTMwMzgzMzc3NjY1NzZfKTt9Cjwvc3R5bGU+CjxnPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNDYuNjAzIiB5MT0iOS4yMjEyIiB4Mj0iMTc0LjE1OCIgeTI9IjMwOC41NDI2IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xCgkJTDI3NC43LDkzLjl6Ii8+CgkKCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjkuMzUxNiIgeTE9Ii0xOS4xNTczIiB4Mj0iNTYuOTA2NiIgeTI9IjI4MC4xNjQxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1Xyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCWw2OS4yLTQ1LjFWMjNMMjUuMyw5My45TDQzLDE1MC4xbC0xNy43LDU2LjJMMTMzLjcsMjc3di0zOS42bC02OS40LTQ1LjFMNzIuNSwxNjYuNHoiLz4KCTxkZWZzPgoJCTxmaWx0ZXIgaWQ9IkFkb2JlX09wYWNpdHlNYXNrRmlsdGVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ij4KCQkJPGZlQ29sb3JNYXRyaXggIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDAiLz4KCQk8L2ZpbHRlcj4KCTwvZGVmcz4KCQoJCTxtYXNrIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0IiBpZD0ibWFzazBfMTY2MV8yOTVfMDAwMDAwODgxMzIyNTE1OTc0NDE1NzM0OTAwMDAwMTE2OTM2MTIwMTg1MDY2ODE0ODFfIj4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMjQ2LjYwMzgiIHkxPSI5LjIyMTQiIHgyPSIxNzQuMTU4OCIgeTI9IjMwOC41NDI4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMwQjQ2RjkiLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0JCRkJFMCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTsiIGQ9IgoJCQlNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xTDI3NC43LDkzLjl6Ii8+CgkJCgkJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxMTk4MTE3MDc2MjE0NzI4MTQyNzAwMDAwMTA4Mjk2NTkzODM4NTEyMDI0OTFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEyOS4zNTIxIiB5MT0iLTE5LjE1NzEiIHgyPSI1Ni45MDcxIiB5Mj0iMjgwLjE2NDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAzMDIpIj4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojQkJGQkUwIi8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTE5ODExNzA3NjIxNDcyODE0MjcwMDAwMDEwODI5NjU5MzgzODUxMjAyNDkxXyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCQlsNjkuMi00NS4xVjIzTDI1LjMsOTMuOUw0MywxNTAuMWwtMTcuNyw1Ni4yTDEzMy43LDI3N3YtMzkuNmwtNjkuNC00NS4xTDcyLjUsMTY2LjR6Ii8+Cgk8L21hc2s+Cgk8ZyBjbGFzcz0ic3Q0Ij4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDEwOTAxOTkxODU1Nzc3MzA1MzQyMDAwMDAxNzYwMjQwNTkwODA2NzEyMDMwMF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNDYuNDY2MiIgeTE9IjIyOC43NTU0IiB4Mj0iMTcxLjg2MzgiIHkyPSIxMzUuMTAzOSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDMwMikiPgoJCQk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiM4OTUyRkY7c3RvcC1vcGFjaXR5OjAuODciLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0RBQkRGRjtzdG9wLW9wYWNpdHk6MCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJCgkJCTxyZWN0IHg9IjI1LjQiIHk9IjIzIiBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTA5MDE5OTE4NTU3NzczMDUzNDIwMDAwMDE3NjAyNDA1OTA4MDY3MTIwMzAwXyk7IiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==";
|
|
1547
1549
|
|
|
1548
1550
|
class ExodusClient extends BaseClient {
|
|
@@ -1559,7 +1561,7 @@ class ExodusClient extends BaseClient {
|
|
|
1559
1561
|
static metadata = {
|
|
1560
1562
|
id: exports.PROVIDER_ID.EXODUS,
|
|
1561
1563
|
name: "Exodus",
|
|
1562
|
-
icon: ICON$
|
|
1564
|
+
icon: ICON$4,
|
|
1563
1565
|
isWalletConnect: false,
|
|
1564
1566
|
};
|
|
1565
1567
|
static async init({ clientOptions, algodOptions, algosdkStatic, network = DEFAULT_NETWORK$1, }) {
|
|
@@ -1582,7 +1584,8 @@ class ExodusClient extends BaseClient {
|
|
|
1582
1584
|
});
|
|
1583
1585
|
}
|
|
1584
1586
|
catch (e) {
|
|
1585
|
-
console.
|
|
1587
|
+
console.warn(e);
|
|
1588
|
+
console.warn(`Error initializing ${ExodusClient.metadata.name}.`, "Do you have the extension installed?", "https://www.exodus.com/web3-wallet");
|
|
1586
1589
|
return null;
|
|
1587
1590
|
}
|
|
1588
1591
|
}
|
|
@@ -1683,7 +1686,7 @@ class ExodusClient extends BaseClient {
|
|
|
1683
1686
|
}
|
|
1684
1687
|
}
|
|
1685
1688
|
|
|
1686
|
-
const ICON$
|
|
1689
|
+
const ICON$3 = "data:image/svg+xml;base64," +
|
|
1687
1690
|
"PHN2ZyB3aWR0aD0iMjM4IiBoZWlnaHQ9IjIzOCIgdmlld0JveD0iMCAwIDIzOCAyMzgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MS43MDUgMTQ1LjA0MkgxMTYuNzA1TDEwNy43MDUgMTU1LjA0Mkg1MS43MDVWMTQ1LjA0MloiIGZpbGw9IiNENjQ1MDAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDcuNTE5IDE5MS41NTdMMTI5LjU3NyAxNDQuMzk0TDE0Mi40MDQgMTI3LjExMkwxNjcuODc1IDE5MS41NTdIMTQ3LjUxOVpNMTEwLjkzNiA5NS4zOTMyTDEyMC42MTMgMTIwLjgzMUwxMzMuMzU5IDEwNC4yMjhMMTE3LjQ3NSA2NC4wNDIyQzExNS45MjggNjAuMTI4IDExMi4xNDYgNTcuNTU2NSAxMDcuOTM4IDU3LjU1NjVDMTAzLjcyOSA1Ny41NTY1IDk5Ljk0NzQgNjAuMTI4IDk4LjQwMDMgNjQuMDQyMkw2Ny45NjU5IDE0MS4wNDJIODcuNzgwN0M5NS40MTUzIDEyMS4wMTEgMTAyLjg5MyAxMDEuMzk5IDEwNS4xOTggOTUuMzU0MUMxMDUuNjQxIDk0LjE5MTIgMTA2Ljc0MyA5My40NTk5IDEwNy45ODcgOTMuNDU5OUgxMDguMTMyQzEwOS4zNzggOTMuNDU5OSAxMTAuNDkzIDk0LjIyOTMgMTEwLjkzNiA5NS4zOTMyWk04MC45MjEgMTU5LjA0MkM3NC45Mjg5IDE3NC43NjggNjkuODY2MSAxODguMDYzIDY4LjU0NDcgMTkxLjU1N0g0OEw2MC44NTE0IDE1OS4wNDJIODAuOTIxWiIgZmlsbD0iIzIyMkI2MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ni4wMjYgNTQuNzUwOUMxNzcuOTk3IDUyLjA4NzIgMTgxLjc1NCA1MS41MjU3IDE4NC40MTggNTMuNDk2N0MxODcuMDgyIDU1LjQ2NzggMTg3LjY0MyA1OS4yMjUxIDE4NS42NzIgNjEuODg4OEwxMzAuMDEzIDEzNy4xMDdDMTI5LjcxNCAxMzcuNTEyIDEyOS4zNDEgMTM3Ljg1NyAxMjguOTEzIDEzOC4xMjNMMTE3Ljg1NiAxNDUuMDEzQzExNy4wODcgMTQ1LjQ5MyAxMTYuMTI4IDE0NC43ODMgMTE2LjM2MSAxNDMuOTA3TDExOS43MTggMTMxLjMxOEMxMTkuODQ3IDEzMC44MzIgMTIwLjA2OCAxMzAuMzc0IDEyMC4zNjcgMTI5Ljk3TDE3MC42NyA2MS45ODlMMTY5LjkyOSA2MS40NDA1QzE2OS40ODUgNjEuMTEyIDE2OC44NTkgNjEuMjA1NiAxNjguNTMgNjEuNjQ5NkwxNTIuMzExIDgzLjU2ODhDMTUyLjU4NiA4NC4yMDIzIDE1Mi41MjQgODQuOTYxMiAxNTIuMDg0IDg1LjU1NjJMMTQ5LjExIDg5LjU3NTVDMTQ4LjQ1MyA5MC40NjM0IDE0Ny4yMDEgOTAuNjUwNiAxNDYuMzEzIDg5Ljk5MzZDMTQ1LjQyNSA4OS4zMzY2IDE0NS4yMzggODguMDg0MSAxNDUuODk1IDg3LjE5NjJMMTQ3LjY3OSA4NC43ODQ3TDE0OC44NjkgODMuMTc2OUwxNjcuMzA4IDU4LjI1NzRDMTY4LjYyMiA1Ni40ODE1IDE3MS4xMjcgNTYuMTA3MiAxNzIuOTAzIDU3LjQyMTJMMTczLjY0NCA1Ny45Njk3TDE3Ni4wMjYgNTQuNzUwOVoiIGZpbGw9IiNENjQ1MDAiLz4KPC9zdmc+Cg==";
|
|
1688
1691
|
|
|
1689
1692
|
const getNetwork = (network) => {
|
|
@@ -1709,7 +1712,7 @@ class AlgoSignerClient extends BaseClient {
|
|
|
1709
1712
|
static metadata = {
|
|
1710
1713
|
id: exports.PROVIDER_ID.ALGOSIGNER,
|
|
1711
1714
|
name: "AlgoSigner",
|
|
1712
|
-
icon: ICON$
|
|
1715
|
+
icon: ICON$3,
|
|
1713
1716
|
isWalletConnect: false,
|
|
1714
1717
|
};
|
|
1715
1718
|
static async init({ algodOptions, algosdkStatic, network = DEFAULT_NETWORK$1, }) {
|
|
@@ -1731,7 +1734,8 @@ class AlgoSignerClient extends BaseClient {
|
|
|
1731
1734
|
});
|
|
1732
1735
|
}
|
|
1733
1736
|
catch (e) {
|
|
1734
|
-
console.
|
|
1737
|
+
console.warn(e);
|
|
1738
|
+
console.warn(`Error initializing ${AlgoSignerClient.metadata.name}.`, "Do you have the extension installed?", "https://www.purestake.com/technology/algosigner");
|
|
1735
1739
|
return null;
|
|
1736
1740
|
}
|
|
1737
1741
|
}
|
|
@@ -1850,7 +1854,7 @@ class AlgoSignerClient extends BaseClient {
|
|
|
1850
1854
|
}
|
|
1851
1855
|
}
|
|
1852
1856
|
|
|
1853
|
-
const ICON$
|
|
1857
|
+
const ICON$2 = "data:image/svg+xml;base64," +
|
|
1854
1858
|
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMzMzk2RkY7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTI2LjYsMTY4YzYyLjYtNjEuMywxNjQuMi02MS4zLDIyNi44LDBsNy41LDcuNGMzLjEsMy4xLDMuMSw4LDAsMTEuMWwtMjUuOCwyNS4yYy0xLjYsMS41LTQuMSwxLjUtNS43LDAKCWwtMTAuNC0xMC4yYy00My43LTQyLjgtMTE0LjUtNDIuOC0xNTguMiwwbC0xMS4xLDEwLjljLTEuNiwxLjUtNC4xLDEuNS01LjcsMGwtMjUuOC0yNS4yYy0zLjEtMy4xLTMuMS04LDAtMTEuMUwxMjYuNiwxNjh6CgkgTTQwNi43LDIyMC4ybDIyLjksMjIuNWMzLjEsMy4xLDMuMSw4LDAsMTEuMUwzMjYuMiwzNTUuMWMtMy4xLDMuMS04LjIsMy4xLTExLjMsMGwtNzMuNC03MS45Yy0wLjgtMC44LTIuMS0wLjgtMi44LDBsLTczLjQsNzEuOQoJYy0zLjEsMy4xLTguMiwzLjEtMTEuMywwTDUwLjMsMjUzLjhjLTMuMS0zLjEtMy4xLTgsMC0xMS4xbDIyLjktMjIuNWMzLjEtMy4xLDguMi0zLjEsMTEuMywwbDczLjQsNzEuOWMwLjgsMC44LDIuMSwwLjgsMi44LDAKCWw3My40LTcxLjljMy4xLTMuMSw4LjItMy4xLDExLjMsMGw3My40LDcxLjljMC44LDAuOCwyLjEsMC44LDIuOCwwbDczLjQtNzEuOUMzOTguNSwyMTcuMSw0MDMuNiwyMTcuMSw0MDYuNywyMjAuMkw0MDYuNywyMjAuMnoiLz4KPC9zdmc+Cg==";
|
|
1855
1859
|
const DEFAULT_NETWORK = "mainnet";
|
|
1856
1860
|
|
|
@@ -1866,7 +1870,7 @@ class WalletConnectClient extends BaseClient {
|
|
|
1866
1870
|
static metadata = {
|
|
1867
1871
|
id: exports.PROVIDER_ID.WALLETCONNECT,
|
|
1868
1872
|
name: "WalletConnect",
|
|
1869
|
-
icon: ICON$
|
|
1873
|
+
icon: ICON$2,
|
|
1870
1874
|
isWalletConnect: true,
|
|
1871
1875
|
};
|
|
1872
1876
|
static async init({ clientOptions, algodOptions, clientStatic, modalStatic, algosdkStatic, network = DEFAULT_NETWORK, }) {
|
|
@@ -2051,7 +2055,7 @@ class WalletConnectClient extends BaseClient {
|
|
|
2051
2055
|
}
|
|
2052
2056
|
}
|
|
2053
2057
|
|
|
2054
|
-
const ICON = "data:image/svg+xml;base64," +
|
|
2058
|
+
const ICON$1 = "data:image/svg+xml;base64," +
|
|
2055
2059
|
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDkuODMgMjEwLjMzIj48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDE2MS4zMSkiIHN0eWxlPSJmb250LWZhbWlseTpJQk1QbGV4U2Fucy1NZWRtLCAmYXBvcztJQk0gUGxleCBTYW5zJmFwb3M7OyBmb250LXNpemU6MTkwcHg7Ij48dHNwYW4geD0iMCIgeT0iMCI+S01EPC90c3Bhbj48L3RleHQ+PC9zdmc+";
|
|
2056
2060
|
|
|
2057
2061
|
class KMDWalletClient extends BaseClient {
|
|
@@ -2074,7 +2078,7 @@ class KMDWalletClient extends BaseClient {
|
|
|
2074
2078
|
static metadata = {
|
|
2075
2079
|
id: exports.PROVIDER_ID.KMD,
|
|
2076
2080
|
name: "KMD",
|
|
2077
|
-
icon: ICON,
|
|
2081
|
+
icon: ICON$1,
|
|
2078
2082
|
isWalletConnect: false,
|
|
2079
2083
|
};
|
|
2080
2084
|
static async init({ clientOptions, algodOptions, algosdkStatic, network = DEFAULT_NETWORK$1, }) {
|
|
@@ -2114,7 +2118,7 @@ class KMDWalletClient extends BaseClient {
|
|
|
2114
2118
|
}
|
|
2115
2119
|
async requestPassword() {
|
|
2116
2120
|
// TODO: store it locally?
|
|
2117
|
-
const pw = prompt("
|
|
2121
|
+
const pw = prompt("KMD password");
|
|
2118
2122
|
return pw ? pw : "";
|
|
2119
2123
|
}
|
|
2120
2124
|
async getWalletToken(walletId, password) {
|
|
@@ -2134,12 +2138,9 @@ class KMDWalletClient extends BaseClient {
|
|
|
2134
2138
|
return walletMap;
|
|
2135
2139
|
}
|
|
2136
2140
|
async listAccounts(wallet, password) {
|
|
2137
|
-
const walletMap = await this.listWallets();
|
|
2138
|
-
if (!(wallet in walletMap))
|
|
2139
|
-
throw Error("No wallet named: " + wallet);
|
|
2140
|
-
this.walletId = walletMap[wallet];
|
|
2141
2141
|
// Get a handle token
|
|
2142
|
-
const
|
|
2142
|
+
const walletId = await this.getWalletId();
|
|
2143
|
+
const token = await this.getWalletToken(walletId, password);
|
|
2143
2144
|
// Fetch accounts and format them as lib expects
|
|
2144
2145
|
const listResponse = await this.#client.listKeys(token);
|
|
2145
2146
|
const addresses = listResponse["addresses"];
|
|
@@ -2154,14 +2155,25 @@ class KMDWalletClient extends BaseClient {
|
|
|
2154
2155
|
this.releaseToken(token);
|
|
2155
2156
|
return mappedAccounts;
|
|
2156
2157
|
}
|
|
2158
|
+
async getWalletId() {
|
|
2159
|
+
// Use cached if available
|
|
2160
|
+
if (this.walletId !== "")
|
|
2161
|
+
return this.walletId;
|
|
2162
|
+
const walletMap = await this.listWallets();
|
|
2163
|
+
if (!(this.#wallet in walletMap))
|
|
2164
|
+
throw Error("No wallet named: " + this.#wallet);
|
|
2165
|
+
this.walletId = walletMap[this.#wallet];
|
|
2166
|
+
return this.walletId;
|
|
2167
|
+
}
|
|
2157
2168
|
async signTransactions(connectedAccounts, transactions, indexesToSign, returnGroup = true) {
|
|
2158
2169
|
// Decode the transactions to access their properties.
|
|
2159
2170
|
const decodedTxns = transactions.map((txn) => {
|
|
2160
2171
|
return this.algosdk.decodeObj(txn);
|
|
2161
2172
|
});
|
|
2162
2173
|
// Get a handle token
|
|
2174
|
+
const walletId = await this.getWalletId();
|
|
2163
2175
|
const pw = await this.requestPassword();
|
|
2164
|
-
const token = await this.getWalletToken(
|
|
2176
|
+
const token = await this.getWalletToken(walletId, pw);
|
|
2165
2177
|
const signedTxns = [];
|
|
2166
2178
|
// Sign them with the client.
|
|
2167
2179
|
const signingPromises = [];
|
|
@@ -2211,6 +2223,129 @@ class KMDWalletClient extends BaseClient {
|
|
|
2211
2223
|
}
|
|
2212
2224
|
}
|
|
2213
2225
|
|
|
2226
|
+
const ICON = "data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e %3c!-- Generated by Pixelmator Pro 3.2.2 --%3e %3csvg width='409' height='210' viewBox='0 0 409 210' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctext id='MNEMONIC' xml:space='preserve' x='0' y='129' font-family='Helvetica' font-size='72' fill='black'%3eMNEMONIC%3c/text%3e%3c/svg%3e";
|
|
2227
|
+
|
|
2228
|
+
class MnemonicWalletClient extends BaseClient {
|
|
2229
|
+
#client;
|
|
2230
|
+
id;
|
|
2231
|
+
network;
|
|
2232
|
+
constructor({ metadata, id, algosdk, algodClient, network, }) {
|
|
2233
|
+
super(metadata, algosdk, algodClient);
|
|
2234
|
+
this.id = id;
|
|
2235
|
+
this.network = network;
|
|
2236
|
+
this.metadata = MnemonicWalletClient.metadata;
|
|
2237
|
+
}
|
|
2238
|
+
static metadata = {
|
|
2239
|
+
id: exports.PROVIDER_ID.MNEMONIC,
|
|
2240
|
+
name: "MNEMONIC",
|
|
2241
|
+
icon: ICON,
|
|
2242
|
+
isWalletConnect: false,
|
|
2243
|
+
};
|
|
2244
|
+
static async init({ algodOptions, algosdkStatic, network = DEFAULT_NETWORK$1, }) {
|
|
2245
|
+
try {
|
|
2246
|
+
const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk;
|
|
2247
|
+
const algodClient = await getAlgodClient(algosdk, algodOptions);
|
|
2248
|
+
console.log(network, algodClient);
|
|
2249
|
+
return new MnemonicWalletClient({
|
|
2250
|
+
metadata: MnemonicWalletClient.metadata,
|
|
2251
|
+
id: exports.PROVIDER_ID.MNEMONIC,
|
|
2252
|
+
algosdk: algosdk,
|
|
2253
|
+
algodClient: algodClient,
|
|
2254
|
+
network,
|
|
2255
|
+
});
|
|
2256
|
+
}
|
|
2257
|
+
catch (e) {
|
|
2258
|
+
console.error("Error initializing...", e);
|
|
2259
|
+
return null;
|
|
2260
|
+
}
|
|
2261
|
+
}
|
|
2262
|
+
async connect() {
|
|
2263
|
+
const password = await this.requestPassword();
|
|
2264
|
+
if (!password) {
|
|
2265
|
+
this.#client = undefined;
|
|
2266
|
+
throw new Error("Mnemonic passphrase is required");
|
|
2267
|
+
}
|
|
2268
|
+
this.#client = algosdk.mnemonicToSecretKey(password);
|
|
2269
|
+
return {
|
|
2270
|
+
...MnemonicWalletClient.metadata,
|
|
2271
|
+
accounts: [
|
|
2272
|
+
{
|
|
2273
|
+
name: `MnemonicWallet 1`,
|
|
2274
|
+
address: this.#client.addr,
|
|
2275
|
+
providerId: MnemonicWalletClient.metadata.id,
|
|
2276
|
+
},
|
|
2277
|
+
],
|
|
2278
|
+
};
|
|
2279
|
+
}
|
|
2280
|
+
async disconnect() {
|
|
2281
|
+
this.#client = undefined;
|
|
2282
|
+
return;
|
|
2283
|
+
}
|
|
2284
|
+
async reconnect() {
|
|
2285
|
+
return null;
|
|
2286
|
+
}
|
|
2287
|
+
async requestPassword() {
|
|
2288
|
+
// TODO: store it locally?
|
|
2289
|
+
const pass = prompt("enter mnemonic passphrase, 25 words");
|
|
2290
|
+
return pass ? pass : "";
|
|
2291
|
+
}
|
|
2292
|
+
signTransactions(connectedAccounts, transactions, indexesToSign, returnGroup = true) {
|
|
2293
|
+
if (!this.#client) {
|
|
2294
|
+
throw new Error("Client not connected");
|
|
2295
|
+
}
|
|
2296
|
+
// Decode the transactions to access their properties.
|
|
2297
|
+
const decodedTxns = transactions.map((txn) => {
|
|
2298
|
+
return this.algosdk.decodeObj(txn);
|
|
2299
|
+
});
|
|
2300
|
+
const signedTxns = [];
|
|
2301
|
+
// Sign them with the client.
|
|
2302
|
+
const signingResults = [];
|
|
2303
|
+
for (const idx in decodedTxns) {
|
|
2304
|
+
const dtxn = decodedTxns[idx];
|
|
2305
|
+
const isSigned = "txn" in dtxn;
|
|
2306
|
+
// push the incoming txn into signed, we'll overwrite it later
|
|
2307
|
+
signedTxns.push(transactions[idx]);
|
|
2308
|
+
// Its already signed, skip it
|
|
2309
|
+
if (isSigned) {
|
|
2310
|
+
continue;
|
|
2311
|
+
// Not specified in indexes to sign, skip it
|
|
2312
|
+
}
|
|
2313
|
+
else if (indexesToSign &&
|
|
2314
|
+
indexesToSign.length &&
|
|
2315
|
+
!indexesToSign.includes(Number(idx))) {
|
|
2316
|
+
continue;
|
|
2317
|
+
}
|
|
2318
|
+
// Not to be signed by our signer, skip it
|
|
2319
|
+
else if (!connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))) {
|
|
2320
|
+
continue;
|
|
2321
|
+
}
|
|
2322
|
+
// overwrite with an empty blob
|
|
2323
|
+
signedTxns[idx] = new Uint8Array();
|
|
2324
|
+
const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn);
|
|
2325
|
+
const signedTxn = txn.signTxn(this.#client.sk);
|
|
2326
|
+
signingResults.push(signedTxn);
|
|
2327
|
+
}
|
|
2328
|
+
// Restore the newly signed txns in the correct order
|
|
2329
|
+
let signedIdx = 0;
|
|
2330
|
+
const formattedTxns = signedTxns.reduce((acc, txn, i) => {
|
|
2331
|
+
// If its an empty array, infer that it is one of the
|
|
2332
|
+
// ones we wanted to have signed and overwrite the empty buff
|
|
2333
|
+
if (txn.length === 0) {
|
|
2334
|
+
acc.push(signingResults[signedIdx]);
|
|
2335
|
+
signedIdx += 1;
|
|
2336
|
+
}
|
|
2337
|
+
else if (returnGroup) {
|
|
2338
|
+
acc.push(txn);
|
|
2339
|
+
}
|
|
2340
|
+
return acc;
|
|
2341
|
+
}, []);
|
|
2342
|
+
return Promise.resolve(formattedTxns);
|
|
2343
|
+
}
|
|
2344
|
+
signEncodedTransactions(transactions) {
|
|
2345
|
+
throw new Error("Method not implemented.");
|
|
2346
|
+
}
|
|
2347
|
+
}
|
|
2348
|
+
|
|
2214
2349
|
var allClients = {
|
|
2215
2350
|
[PeraWalletClient.metadata.id]: PeraWalletClient,
|
|
2216
2351
|
[MyAlgoWalletClient.metadata.id]: MyAlgoWalletClient,
|
|
@@ -2219,6 +2354,7 @@ var allClients = {
|
|
|
2219
2354
|
[AlgoSignerClient.metadata.id]: AlgoSignerClient,
|
|
2220
2355
|
[WalletConnectClient.metadata.id]: WalletConnectClient,
|
|
2221
2356
|
[KMDWalletClient.metadata.id]: KMDWalletClient,
|
|
2357
|
+
[MnemonicWalletClient.metadata.id]: MnemonicWalletClient,
|
|
2222
2358
|
};
|
|
2223
2359
|
|
|
2224
2360
|
const clearActiveAccount = useWalletStore.getState().clearActiveAccount;
|
|
@@ -2441,7 +2577,7 @@ const initializeProviders = (providers, nodeConfig, algosdkStatic) => {
|
|
|
2441
2577
|
const { network = DEFAULT_NETWORK$1, nodeServer = DEFAULT_NODE_BASEURL, nodePort = DEFAULT_NODE_PORT, nodeToken = DEFAULT_NODE_TOKEN, } = nodeConfig || {};
|
|
2442
2578
|
if (!providers || providers.length === 0)
|
|
2443
2579
|
for (const [id, client] of Object.entries(allClients)) {
|
|
2444
|
-
if (id === "kmd") {
|
|
2580
|
+
if (id === "kmd" || id === "mnemonic") {
|
|
2445
2581
|
continue;
|
|
2446
2582
|
}
|
|
2447
2583
|
initializedProviders[id] = client.init({
|
|
@@ -2485,6 +2621,7 @@ exports.defly = DeflyWalletClient;
|
|
|
2485
2621
|
exports.exodus = ExodusClient;
|
|
2486
2622
|
exports.initializeProviders = initializeProviders;
|
|
2487
2623
|
exports.kmd = KMDWalletClient;
|
|
2624
|
+
exports.mnemonic = MnemonicWalletClient;
|
|
2488
2625
|
exports.myalgo = MyAlgoWalletClient;
|
|
2489
2626
|
exports.pera = PeraWalletClient;
|
|
2490
2627
|
exports.reconnectProviders = reconnectProviders;
|