@txnlab/use-wallet 1.1.6 → 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 +157 -22
- 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 +157 -23
- 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, }) {
|
|
@@ -1684,7 +1686,7 @@ class ExodusClient extends BaseClient {
|
|
|
1684
1686
|
}
|
|
1685
1687
|
}
|
|
1686
1688
|
|
|
1687
|
-
const ICON$
|
|
1689
|
+
const ICON$3 = "data:image/svg+xml;base64," +
|
|
1688
1690
|
"PHN2ZyB3aWR0aD0iMjM4IiBoZWlnaHQ9IjIzOCIgdmlld0JveD0iMCAwIDIzOCAyMzgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MS43MDUgMTQ1LjA0MkgxMTYuNzA1TDEwNy43MDUgMTU1LjA0Mkg1MS43MDVWMTQ1LjA0MloiIGZpbGw9IiNENjQ1MDAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDcuNTE5IDE5MS41NTdMMTI5LjU3NyAxNDQuMzk0TDE0Mi40MDQgMTI3LjExMkwxNjcuODc1IDE5MS41NTdIMTQ3LjUxOVpNMTEwLjkzNiA5NS4zOTMyTDEyMC42MTMgMTIwLjgzMUwxMzMuMzU5IDEwNC4yMjhMMTE3LjQ3NSA2NC4wNDIyQzExNS45MjggNjAuMTI4IDExMi4xNDYgNTcuNTU2NSAxMDcuOTM4IDU3LjU1NjVDMTAzLjcyOSA1Ny41NTY1IDk5Ljk0NzQgNjAuMTI4IDk4LjQwMDMgNjQuMDQyMkw2Ny45NjU5IDE0MS4wNDJIODcuNzgwN0M5NS40MTUzIDEyMS4wMTEgMTAyLjg5MyAxMDEuMzk5IDEwNS4xOTggOTUuMzU0MUMxMDUuNjQxIDk0LjE5MTIgMTA2Ljc0MyA5My40NTk5IDEwNy45ODcgOTMuNDU5OUgxMDguMTMyQzEwOS4zNzggOTMuNDU5OSAxMTAuNDkzIDk0LjIyOTMgMTEwLjkzNiA5NS4zOTMyWk04MC45MjEgMTU5LjA0MkM3NC45Mjg5IDE3NC43NjggNjkuODY2MSAxODguMDYzIDY4LjU0NDcgMTkxLjU1N0g0OEw2MC44NTE0IDE1OS4wNDJIODAuOTIxWiIgZmlsbD0iIzIyMkI2MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ni4wMjYgNTQuNzUwOUMxNzcuOTk3IDUyLjA4NzIgMTgxLjc1NCA1MS41MjU3IDE4NC40MTggNTMuNDk2N0MxODcuMDgyIDU1LjQ2NzggMTg3LjY0MyA1OS4yMjUxIDE4NS42NzIgNjEuODg4OEwxMzAuMDEzIDEzNy4xMDdDMTI5LjcxNCAxMzcuNTEyIDEyOS4zNDEgMTM3Ljg1NyAxMjguOTEzIDEzOC4xMjNMMTE3Ljg1NiAxNDUuMDEzQzExNy4wODcgMTQ1LjQ5MyAxMTYuMTI4IDE0NC43ODMgMTE2LjM2MSAxNDMuOTA3TDExOS43MTggMTMxLjMxOEMxMTkuODQ3IDEzMC44MzIgMTIwLjA2OCAxMzAuMzc0IDEyMC4zNjcgMTI5Ljk3TDE3MC42NyA2MS45ODlMMTY5LjkyOSA2MS40NDA1QzE2OS40ODUgNjEuMTEyIDE2OC44NTkgNjEuMjA1NiAxNjguNTMgNjEuNjQ5NkwxNTIuMzExIDgzLjU2ODhDMTUyLjU4NiA4NC4yMDIzIDE1Mi41MjQgODQuOTYxMiAxNTIuMDg0IDg1LjU1NjJMMTQ5LjExIDg5LjU3NTVDMTQ4LjQ1MyA5MC40NjM0IDE0Ny4yMDEgOTAuNjUwNiAxNDYuMzEzIDg5Ljk5MzZDMTQ1LjQyNSA4OS4zMzY2IDE0NS4yMzggODguMDg0MSAxNDUuODk1IDg3LjE5NjJMMTQ3LjY3OSA4NC43ODQ3TDE0OC44NjkgODMuMTc2OUwxNjcuMzA4IDU4LjI1NzRDMTY4LjYyMiA1Ni40ODE1IDE3MS4xMjcgNTYuMTA3MiAxNzIuOTAzIDU3LjQyMTJMMTczLjY0NCA1Ny45Njk3TDE3Ni4wMjYgNTQuNzUwOVoiIGZpbGw9IiNENjQ1MDAiLz4KPC9zdmc+Cg==";
|
|
1689
1691
|
|
|
1690
1692
|
const getNetwork = (network) => {
|
|
@@ -1710,7 +1712,7 @@ class AlgoSignerClient extends BaseClient {
|
|
|
1710
1712
|
static metadata = {
|
|
1711
1713
|
id: exports.PROVIDER_ID.ALGOSIGNER,
|
|
1712
1714
|
name: "AlgoSigner",
|
|
1713
|
-
icon: ICON$
|
|
1715
|
+
icon: ICON$3,
|
|
1714
1716
|
isWalletConnect: false,
|
|
1715
1717
|
};
|
|
1716
1718
|
static async init({ algodOptions, algosdkStatic, network = DEFAULT_NETWORK$1, }) {
|
|
@@ -1852,7 +1854,7 @@ class AlgoSignerClient extends BaseClient {
|
|
|
1852
1854
|
}
|
|
1853
1855
|
}
|
|
1854
1856
|
|
|
1855
|
-
const ICON$
|
|
1857
|
+
const ICON$2 = "data:image/svg+xml;base64," +
|
|
1856
1858
|
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMzMzk2RkY7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTI2LjYsMTY4YzYyLjYtNjEuMywxNjQuMi02MS4zLDIyNi44LDBsNy41LDcuNGMzLjEsMy4xLDMuMSw4LDAsMTEuMWwtMjUuOCwyNS4yYy0xLjYsMS41LTQuMSwxLjUtNS43LDAKCWwtMTAuNC0xMC4yYy00My43LTQyLjgtMTE0LjUtNDIuOC0xNTguMiwwbC0xMS4xLDEwLjljLTEuNiwxLjUtNC4xLDEuNS01LjcsMGwtMjUuOC0yNS4yYy0zLjEtMy4xLTMuMS04LDAtMTEuMUwxMjYuNiwxNjh6CgkgTTQwNi43LDIyMC4ybDIyLjksMjIuNWMzLjEsMy4xLDMuMSw4LDAsMTEuMUwzMjYuMiwzNTUuMWMtMy4xLDMuMS04LjIsMy4xLTExLjMsMGwtNzMuNC03MS45Yy0wLjgtMC44LTIuMS0wLjgtMi44LDBsLTczLjQsNzEuOQoJYy0zLjEsMy4xLTguMiwzLjEtMTEuMywwTDUwLjMsMjUzLjhjLTMuMS0zLjEtMy4xLTgsMC0xMS4xbDIyLjktMjIuNWMzLjEtMy4xLDguMi0zLjEsMTEuMywwbDczLjQsNzEuOWMwLjgsMC44LDIuMSwwLjgsMi44LDAKCWw3My40LTcxLjljMy4xLTMuMSw4LjItMy4xLDExLjMsMGw3My40LDcxLjljMC44LDAuOCwyLjEsMC44LDIuOCwwbDczLjQtNzEuOUMzOTguNSwyMTcuMSw0MDMuNiwyMTcuMSw0MDYuNywyMjAuMkw0MDYuNywyMjAuMnoiLz4KPC9zdmc+Cg==";
|
|
1857
1859
|
const DEFAULT_NETWORK = "mainnet";
|
|
1858
1860
|
|
|
@@ -1868,7 +1870,7 @@ class WalletConnectClient extends BaseClient {
|
|
|
1868
1870
|
static metadata = {
|
|
1869
1871
|
id: exports.PROVIDER_ID.WALLETCONNECT,
|
|
1870
1872
|
name: "WalletConnect",
|
|
1871
|
-
icon: ICON$
|
|
1873
|
+
icon: ICON$2,
|
|
1872
1874
|
isWalletConnect: true,
|
|
1873
1875
|
};
|
|
1874
1876
|
static async init({ clientOptions, algodOptions, clientStatic, modalStatic, algosdkStatic, network = DEFAULT_NETWORK, }) {
|
|
@@ -2053,7 +2055,7 @@ class WalletConnectClient extends BaseClient {
|
|
|
2053
2055
|
}
|
|
2054
2056
|
}
|
|
2055
2057
|
|
|
2056
|
-
const ICON = "data:image/svg+xml;base64," +
|
|
2058
|
+
const ICON$1 = "data:image/svg+xml;base64," +
|
|
2057
2059
|
"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDkuODMgMjEwLjMzIj48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDE2MS4zMSkiIHN0eWxlPSJmb250LWZhbWlseTpJQk1QbGV4U2Fucy1NZWRtLCAmYXBvcztJQk0gUGxleCBTYW5zJmFwb3M7OyBmb250LXNpemU6MTkwcHg7Ij48dHNwYW4geD0iMCIgeT0iMCI+S01EPC90c3Bhbj48L3RleHQ+PC9zdmc+";
|
|
2058
2060
|
|
|
2059
2061
|
class KMDWalletClient extends BaseClient {
|
|
@@ -2076,7 +2078,7 @@ class KMDWalletClient extends BaseClient {
|
|
|
2076
2078
|
static metadata = {
|
|
2077
2079
|
id: exports.PROVIDER_ID.KMD,
|
|
2078
2080
|
name: "KMD",
|
|
2079
|
-
icon: ICON,
|
|
2081
|
+
icon: ICON$1,
|
|
2080
2082
|
isWalletConnect: false,
|
|
2081
2083
|
};
|
|
2082
2084
|
static async init({ clientOptions, algodOptions, algosdkStatic, network = DEFAULT_NETWORK$1, }) {
|
|
@@ -2116,7 +2118,7 @@ class KMDWalletClient extends BaseClient {
|
|
|
2116
2118
|
}
|
|
2117
2119
|
async requestPassword() {
|
|
2118
2120
|
// TODO: store it locally?
|
|
2119
|
-
const pw = prompt("
|
|
2121
|
+
const pw = prompt("KMD password");
|
|
2120
2122
|
return pw ? pw : "";
|
|
2121
2123
|
}
|
|
2122
2124
|
async getWalletToken(walletId, password) {
|
|
@@ -2136,12 +2138,9 @@ class KMDWalletClient extends BaseClient {
|
|
|
2136
2138
|
return walletMap;
|
|
2137
2139
|
}
|
|
2138
2140
|
async listAccounts(wallet, password) {
|
|
2139
|
-
const walletMap = await this.listWallets();
|
|
2140
|
-
if (!(wallet in walletMap))
|
|
2141
|
-
throw Error("No wallet named: " + wallet);
|
|
2142
|
-
this.walletId = walletMap[wallet];
|
|
2143
2141
|
// Get a handle token
|
|
2144
|
-
const
|
|
2142
|
+
const walletId = await this.getWalletId();
|
|
2143
|
+
const token = await this.getWalletToken(walletId, password);
|
|
2145
2144
|
// Fetch accounts and format them as lib expects
|
|
2146
2145
|
const listResponse = await this.#client.listKeys(token);
|
|
2147
2146
|
const addresses = listResponse["addresses"];
|
|
@@ -2156,14 +2155,25 @@ class KMDWalletClient extends BaseClient {
|
|
|
2156
2155
|
this.releaseToken(token);
|
|
2157
2156
|
return mappedAccounts;
|
|
2158
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
|
+
}
|
|
2159
2168
|
async signTransactions(connectedAccounts, transactions, indexesToSign, returnGroup = true) {
|
|
2160
2169
|
// Decode the transactions to access their properties.
|
|
2161
2170
|
const decodedTxns = transactions.map((txn) => {
|
|
2162
2171
|
return this.algosdk.decodeObj(txn);
|
|
2163
2172
|
});
|
|
2164
2173
|
// Get a handle token
|
|
2174
|
+
const walletId = await this.getWalletId();
|
|
2165
2175
|
const pw = await this.requestPassword();
|
|
2166
|
-
const token = await this.getWalletToken(
|
|
2176
|
+
const token = await this.getWalletToken(walletId, pw);
|
|
2167
2177
|
const signedTxns = [];
|
|
2168
2178
|
// Sign them with the client.
|
|
2169
2179
|
const signingPromises = [];
|
|
@@ -2213,6 +2223,129 @@ class KMDWalletClient extends BaseClient {
|
|
|
2213
2223
|
}
|
|
2214
2224
|
}
|
|
2215
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
|
+
|
|
2216
2349
|
var allClients = {
|
|
2217
2350
|
[PeraWalletClient.metadata.id]: PeraWalletClient,
|
|
2218
2351
|
[MyAlgoWalletClient.metadata.id]: MyAlgoWalletClient,
|
|
@@ -2221,6 +2354,7 @@ var allClients = {
|
|
|
2221
2354
|
[AlgoSignerClient.metadata.id]: AlgoSignerClient,
|
|
2222
2355
|
[WalletConnectClient.metadata.id]: WalletConnectClient,
|
|
2223
2356
|
[KMDWalletClient.metadata.id]: KMDWalletClient,
|
|
2357
|
+
[MnemonicWalletClient.metadata.id]: MnemonicWalletClient,
|
|
2224
2358
|
};
|
|
2225
2359
|
|
|
2226
2360
|
const clearActiveAccount = useWalletStore.getState().clearActiveAccount;
|
|
@@ -2443,7 +2577,7 @@ const initializeProviders = (providers, nodeConfig, algosdkStatic) => {
|
|
|
2443
2577
|
const { network = DEFAULT_NETWORK$1, nodeServer = DEFAULT_NODE_BASEURL, nodePort = DEFAULT_NODE_PORT, nodeToken = DEFAULT_NODE_TOKEN, } = nodeConfig || {};
|
|
2444
2578
|
if (!providers || providers.length === 0)
|
|
2445
2579
|
for (const [id, client] of Object.entries(allClients)) {
|
|
2446
|
-
if (id === "kmd") {
|
|
2580
|
+
if (id === "kmd" || id === "mnemonic") {
|
|
2447
2581
|
continue;
|
|
2448
2582
|
}
|
|
2449
2583
|
initializedProviders[id] = client.init({
|
|
@@ -2487,6 +2621,7 @@ exports.defly = DeflyWalletClient;
|
|
|
2487
2621
|
exports.exodus = ExodusClient;
|
|
2488
2622
|
exports.initializeProviders = initializeProviders;
|
|
2489
2623
|
exports.kmd = KMDWalletClient;
|
|
2624
|
+
exports.mnemonic = MnemonicWalletClient;
|
|
2490
2625
|
exports.myalgo = MyAlgoWalletClient;
|
|
2491
2626
|
exports.pera = PeraWalletClient;
|
|
2492
2627
|
exports.reconnectProviders = reconnectProviders;
|