@noir-wallet/sdk 0.1.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.
@@ -0,0 +1,40 @@
1
+ // src/chains/zcash/provider.ts
2
+ function getZcashProvider() {
3
+ if (typeof window === "undefined") return null;
4
+ return window.rheawallet?.zcash || null;
5
+ }
6
+ async function detectProvider(timeout = 3e3) {
7
+ return new Promise((resolve, reject) => {
8
+ if (typeof window === "undefined") {
9
+ return reject(new Error("window is undefined"));
10
+ }
11
+ const provider = getZcashProvider();
12
+ if (provider) {
13
+ return resolve(provider);
14
+ }
15
+ let handled = false;
16
+ const handleProvider = () => {
17
+ if (handled) return;
18
+ handled = true;
19
+ const provider2 = getZcashProvider();
20
+ if (provider2) {
21
+ resolve(provider2);
22
+ } else {
23
+ reject(new Error("RHEA Wallet is not installed"));
24
+ }
25
+ };
26
+ window.addEventListener("rheawallet#initialized", handleProvider, { once: true });
27
+ setTimeout(() => {
28
+ handleProvider();
29
+ }, timeout);
30
+ });
31
+ }
32
+ function getProvider() {
33
+ return getZcashProvider();
34
+ }
35
+
36
+ export {
37
+ getZcashProvider,
38
+ detectProvider,
39
+ getProvider
40
+ };
@@ -0,0 +1,163 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+
5
+ // src/chains/zcash/provider.ts
6
+ function getZcashProvider() {
7
+ if (typeof window === "undefined") return null;
8
+ const rheaWallet = window.rheawallet;
9
+ return rheaWallet?.zcash || null;
10
+ }
11
+ async function detectProvider(timeout = 3e3) {
12
+ return new Promise((resolve, reject) => {
13
+ if (typeof window === "undefined") {
14
+ return reject(new Error("window is undefined"));
15
+ }
16
+ const provider = getZcashProvider();
17
+ if (provider) {
18
+ return resolve(provider);
19
+ }
20
+ let handled = false;
21
+ const handleProvider = () => {
22
+ if (handled) return;
23
+ handled = true;
24
+ const provider2 = getZcashProvider();
25
+ if (provider2) {
26
+ resolve(provider2);
27
+ } else {
28
+ reject(new Error("RHEA Wallet is not installed"));
29
+ }
30
+ };
31
+ window.addEventListener("rheawallet#initialized", handleProvider, { once: true });
32
+ setTimeout(() => {
33
+ handleProvider();
34
+ }, timeout);
35
+ });
36
+ }
37
+ function getProvider() {
38
+ return getZcashProvider();
39
+ }
40
+
41
+ // src/chains/zcash/wallet.ts
42
+ var ZcashWallet = class {
43
+ constructor() {
44
+ __publicField(this, "provider", null);
45
+ __publicField(this, "_connected", false);
46
+ }
47
+ async connect() {
48
+ this.provider = await detectProvider();
49
+ if (!this.provider) {
50
+ throw new Error("RHEA Wallet provider not available");
51
+ }
52
+ const accounts = await this.provider.request({ method: "zcash_requestAccounts" });
53
+ this._connected = true;
54
+ return accounts;
55
+ }
56
+ async getAddresses() {
57
+ if (!this.provider || !this._connected) {
58
+ throw new Error("Wallet not connected");
59
+ }
60
+ return this.provider.request({ method: "zcash_getAddresses" });
61
+ }
62
+ async getBalance() {
63
+ if (!this.provider || !this._connected) {
64
+ throw new Error("Wallet not connected");
65
+ }
66
+ return this.provider.request({ method: "zcash_getBalance" });
67
+ }
68
+ async sendTransaction(params) {
69
+ if (!this.provider || !this._connected) {
70
+ throw new Error("Wallet not connected");
71
+ }
72
+ return this.provider.request({
73
+ method: "zcash_sendTransaction",
74
+ params: [params]
75
+ });
76
+ }
77
+ async signMessage(message) {
78
+ if (!this.provider || !this._connected) {
79
+ throw new Error("Wallet not connected");
80
+ }
81
+ return this.provider.request({
82
+ method: "zcash_signMessage",
83
+ params: [{ message }]
84
+ });
85
+ }
86
+ async switchNetwork(network) {
87
+ if (!this.provider || !this._connected) {
88
+ throw new Error("Wallet not connected");
89
+ }
90
+ return this.provider.request({
91
+ method: "zcash_switchNetwork",
92
+ params: [{ network }]
93
+ });
94
+ }
95
+ on(event, handler) {
96
+ if (!this.provider) {
97
+ throw new Error("Wallet not connected");
98
+ }
99
+ this.provider.on(event, handler);
100
+ }
101
+ removeListener(event, handler) {
102
+ if (!this.provider?.removeListener) {
103
+ return;
104
+ }
105
+ this.provider.removeListener(event, handler);
106
+ }
107
+ disconnect() {
108
+ this._connected = false;
109
+ this.provider = null;
110
+ }
111
+ get connected() {
112
+ return this._connected;
113
+ }
114
+ };
115
+
116
+ // src/chains/zcash/api.ts
117
+ var ZcashAPI = class {
118
+ constructor(provider) {
119
+ __publicField(this, "provider");
120
+ this.provider = provider;
121
+ }
122
+ async connect() {
123
+ return this.provider.request({ method: "zcash_requestAccounts" });
124
+ }
125
+ async getAccounts() {
126
+ return this.provider.request({ method: "zcash_getAccounts" });
127
+ }
128
+ async getBalance() {
129
+ return this.provider.request({ method: "zcash_getBalance" });
130
+ }
131
+ async sendTransaction(params) {
132
+ return this.provider.request({
133
+ method: "zcash_sendTransaction",
134
+ params: [params]
135
+ });
136
+ }
137
+ async signMessage(message) {
138
+ return this.provider.request({
139
+ method: "zcash_signMessage",
140
+ params: [message]
141
+ });
142
+ }
143
+ async switchNetwork(network) {
144
+ return this.provider.request({
145
+ method: "zcash_switchNetwork",
146
+ params: [{ network }]
147
+ });
148
+ }
149
+ on(event, handler) {
150
+ this.provider.on(event, handler);
151
+ }
152
+ removeListener(event, handler) {
153
+ this.provider.removeListener?.(event, handler);
154
+ }
155
+ };
156
+
157
+ export {
158
+ ZcashAPI,
159
+ getZcashProvider,
160
+ detectProvider,
161
+ getProvider,
162
+ ZcashWallet
163
+ };
@@ -0,0 +1,93 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+
5
+ // src/chains/zcash/provider.ts
6
+ function getZcashProvider() {
7
+ if (typeof window === "undefined") return null;
8
+ const rheaWallet = window.rheawallet;
9
+ return rheaWallet?.zcash || null;
10
+ }
11
+ async function detectProvider(timeout = 3e3) {
12
+ return new Promise((resolve, reject) => {
13
+ if (typeof window === "undefined") {
14
+ return reject(new Error("window is undefined"));
15
+ }
16
+ const provider = getZcashProvider();
17
+ if (provider) {
18
+ return resolve(provider);
19
+ }
20
+ let handled = false;
21
+ const handleProvider = () => {
22
+ if (handled) return;
23
+ handled = true;
24
+ const provider2 = getZcashProvider();
25
+ if (provider2) {
26
+ resolve(provider2);
27
+ } else {
28
+ reject(new Error("RHEA Wallet is not installed"));
29
+ }
30
+ };
31
+ window.addEventListener("rheawallet#initialized", handleProvider, { once: true });
32
+ setTimeout(() => {
33
+ handleProvider();
34
+ }, timeout);
35
+ });
36
+ }
37
+ function getProvider() {
38
+ return getZcashProvider();
39
+ }
40
+
41
+ // src/chains/zcash/api.ts
42
+ var ZcashAPI = class {
43
+ constructor(provider) {
44
+ __publicField(this, "provider");
45
+ this.provider = provider;
46
+ }
47
+ async connect() {
48
+ return this.provider.request({ method: "zcash_requestAccounts" });
49
+ }
50
+ async getAccounts() {
51
+ return this.provider.request({ method: "zcash_getAccounts" });
52
+ }
53
+ async getBalance() {
54
+ return this.provider.request({ method: "zcash_getBalance" });
55
+ }
56
+ async getPublicKey() {
57
+ return this.provider.request({ method: "zcash_getPublicKey" });
58
+ }
59
+ async sendTransaction(params) {
60
+ return this.provider.request({
61
+ method: "zcash_sendTransaction",
62
+ params: [params]
63
+ });
64
+ }
65
+ async signMessage(message) {
66
+ return this.provider.request({
67
+ method: "zcash_signMessage",
68
+ params: [message]
69
+ });
70
+ }
71
+ async switchNetwork(network) {
72
+ return this.provider.request({
73
+ method: "zcash_switchNetwork",
74
+ params: [{ network }]
75
+ });
76
+ }
77
+ async disconnect() {
78
+ await this.provider.request({ method: "zcash_disconnect" });
79
+ }
80
+ on(event, handler) {
81
+ this.provider.on(event, handler);
82
+ }
83
+ removeListener(event, handler) {
84
+ this.provider.removeListener?.(event, handler);
85
+ }
86
+ };
87
+
88
+ export {
89
+ ZcashAPI,
90
+ getZcashProvider,
91
+ detectProvider,
92
+ getProvider
93
+ };
@@ -0,0 +1,146 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+
5
+ // src/chains/zcash/provider.ts
6
+ function getZcashProvider() {
7
+ if (typeof window === "undefined") return null;
8
+ const rheaWallet = window.rheawallet;
9
+ return rheaWallet?.zcash || null;
10
+ }
11
+ async function detectProvider(timeout = 3e3) {
12
+ return new Promise((resolve, reject) => {
13
+ if (typeof window === "undefined") {
14
+ return reject(new Error("window is undefined"));
15
+ }
16
+ const provider = getZcashProvider();
17
+ if (provider) {
18
+ return resolve(provider);
19
+ }
20
+ let handled = false;
21
+ const handleProvider = () => {
22
+ if (handled) return;
23
+ handled = true;
24
+ const provider2 = getZcashProvider();
25
+ if (provider2) {
26
+ resolve(provider2);
27
+ } else {
28
+ reject(new Error("RHEA Wallet is not installed"));
29
+ }
30
+ };
31
+ window.addEventListener("rheawallet#initialized", handleProvider, { once: true });
32
+ setTimeout(() => {
33
+ handleProvider();
34
+ }, timeout);
35
+ });
36
+ }
37
+ function getProvider() {
38
+ return getZcashProvider();
39
+ }
40
+
41
+ // src/chains/zcash/api.ts
42
+ var ZcashAPI = class {
43
+ constructor(provider) {
44
+ __publicField(this, "provider");
45
+ this.provider = provider;
46
+ }
47
+ async connect() {
48
+ return this.provider.request({ method: "zcash_requestAccounts" });
49
+ }
50
+ async getAccounts() {
51
+ return this.provider.request({ method: "zcash_getAccounts" });
52
+ }
53
+ async getBalance() {
54
+ return this.provider.request({ method: "zcash_getBalance" });
55
+ }
56
+ async getPublicKey() {
57
+ return this.provider.request({ method: "zcash_getPublicKey" });
58
+ }
59
+ async sendTransaction(params) {
60
+ return this.provider.request({
61
+ method: "zcash_sendTransaction",
62
+ params: [params]
63
+ });
64
+ }
65
+ async signMessage(message) {
66
+ return this.provider.request({
67
+ method: "zcash_signMessage",
68
+ params: [message]
69
+ });
70
+ }
71
+ async switchNetwork(network) {
72
+ return this.provider.request({
73
+ method: "zcash_switchNetwork",
74
+ params: [{ network }]
75
+ });
76
+ }
77
+ async disconnect() {
78
+ await this.provider.request({ method: "zcash_disconnect" });
79
+ }
80
+ on(event, handler) {
81
+ this.provider.on(event, handler);
82
+ }
83
+ removeListener(event, handler) {
84
+ this.provider.removeListener?.(event, handler);
85
+ }
86
+ };
87
+
88
+ // src/chains/zcash/utils.ts
89
+ import bs58 from "bs58";
90
+ import * as hashjs from "hash.js";
91
+ var MAINNET_P2PKH_PREFIX = Buffer.from([28, 184]);
92
+ var TESTNET_P2PKH_PREFIX = Buffer.from([29, 37]);
93
+ function sha2562(data) {
94
+ return Buffer.from(hashjs.sha256().update(data).digest());
95
+ }
96
+ function ripemd1602(data) {
97
+ return Buffer.from(hashjs.ripemd160().update(data).digest());
98
+ }
99
+ function hash160(data) {
100
+ return ripemd1602(sha2562(data));
101
+ }
102
+ function publicKeyToAddress(pubkeyHex, network = "mainnet") {
103
+ if (!pubkeyHex || typeof pubkeyHex !== "string") {
104
+ throw new Error("Invalid public key: must be a non-empty hex string");
105
+ }
106
+ const cleanHex = pubkeyHex.toLowerCase().replace(/^0x/, "");
107
+ if (!/^[0-9a-f]+$/.test(cleanHex)) {
108
+ throw new Error("Invalid public key: must contain only hexadecimal characters");
109
+ }
110
+ const pubkeyBytes = Buffer.from(cleanHex, "hex");
111
+ if (pubkeyBytes.length !== 33 && pubkeyBytes.length !== 65) {
112
+ throw new Error(
113
+ `Invalid public key length: expected 33 (compressed) or 65 (uncompressed) bytes, got ${pubkeyBytes.length}`
114
+ );
115
+ }
116
+ if (pubkeyBytes.length === 33) {
117
+ const prefix = pubkeyBytes[0];
118
+ if (prefix !== 2 && prefix !== 3) {
119
+ throw new Error(
120
+ `Invalid compressed public key prefix: expected 0x02 or 0x03, got 0x${prefix.toString(16).padStart(2, "0")}`
121
+ );
122
+ }
123
+ } else if (pubkeyBytes.length === 65) {
124
+ const prefix = pubkeyBytes[0];
125
+ if (prefix !== 4) {
126
+ throw new Error(
127
+ `Invalid uncompressed public key prefix: expected 0x04, got 0x${prefix.toString(16).padStart(2, "0")}`
128
+ );
129
+ }
130
+ }
131
+ const pubkeyHash = hash160(pubkeyBytes);
132
+ const versionPrefix = network === "mainnet" ? MAINNET_P2PKH_PREFIX : TESTNET_P2PKH_PREFIX;
133
+ const payload = Buffer.concat([versionPrefix, pubkeyHash]);
134
+ const checksum = sha2562(sha2562(payload)).slice(0, 4);
135
+ const addressBytes = Buffer.concat([payload, checksum]);
136
+ const address = bs58.encode(addressBytes);
137
+ return address;
138
+ }
139
+
140
+ export {
141
+ ZcashAPI,
142
+ getZcashProvider,
143
+ detectProvider,
144
+ getProvider,
145
+ publicKeyToAddress
146
+ };
@@ -0,0 +1,90 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+
5
+ // src/chains/zcash/provider.ts
6
+ function getZcashProvider() {
7
+ if (typeof window === "undefined") return null;
8
+ const rheaWallet = window.rheawallet;
9
+ return rheaWallet?.zcash || null;
10
+ }
11
+ async function detectProvider(timeout = 3e3) {
12
+ return new Promise((resolve, reject) => {
13
+ if (typeof window === "undefined") {
14
+ return reject(new Error("window is undefined"));
15
+ }
16
+ const provider = getZcashProvider();
17
+ if (provider) {
18
+ return resolve(provider);
19
+ }
20
+ let handled = false;
21
+ const handleProvider = () => {
22
+ if (handled) return;
23
+ handled = true;
24
+ const provider2 = getZcashProvider();
25
+ if (provider2) {
26
+ resolve(provider2);
27
+ } else {
28
+ reject(new Error("RHEA Wallet is not installed"));
29
+ }
30
+ };
31
+ window.addEventListener("rheawallet#initialized", handleProvider, { once: true });
32
+ setTimeout(() => {
33
+ handleProvider();
34
+ }, timeout);
35
+ });
36
+ }
37
+ function getProvider() {
38
+ return getZcashProvider();
39
+ }
40
+
41
+ // src/chains/zcash/api.ts
42
+ var ZcashAPI = class {
43
+ constructor(provider) {
44
+ __publicField(this, "provider");
45
+ this.provider = provider;
46
+ }
47
+ async connect() {
48
+ return this.provider.request({ method: "zcash_requestAccounts" });
49
+ }
50
+ async getAccounts() {
51
+ return this.provider.request({ method: "zcash_getAccounts" });
52
+ }
53
+ async getBalance() {
54
+ return this.provider.request({ method: "zcash_getBalance" });
55
+ }
56
+ async sendTransaction(params) {
57
+ return this.provider.request({
58
+ method: "zcash_sendTransaction",
59
+ params: [params]
60
+ });
61
+ }
62
+ async signMessage(message) {
63
+ return this.provider.request({
64
+ method: "zcash_signMessage",
65
+ params: [message]
66
+ });
67
+ }
68
+ async switchNetwork(network) {
69
+ return this.provider.request({
70
+ method: "zcash_switchNetwork",
71
+ params: [{ network }]
72
+ });
73
+ }
74
+ async disconnect() {
75
+ await this.provider.request({ method: "zcash_disconnect" });
76
+ }
77
+ on(event, handler) {
78
+ this.provider.on(event, handler);
79
+ }
80
+ removeListener(event, handler) {
81
+ this.provider.removeListener?.(event, handler);
82
+ }
83
+ };
84
+
85
+ export {
86
+ ZcashAPI,
87
+ getZcashProvider,
88
+ detectProvider,
89
+ getProvider
90
+ };
@@ -0,0 +1,90 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+
5
+ // src/chains/zcash/provider.ts
6
+ function getZcashProvider() {
7
+ if (typeof window === "undefined") return null;
8
+ const rheaWallet = window.rheawallet;
9
+ return rheaWallet?.zcash || null;
10
+ }
11
+ async function detectProvider(timeout = 3e3) {
12
+ return new Promise((resolve, reject) => {
13
+ if (typeof window === "undefined") {
14
+ return reject(new Error("window is undefined"));
15
+ }
16
+ const provider = getZcashProvider();
17
+ if (provider) {
18
+ return resolve(provider);
19
+ }
20
+ let handled = false;
21
+ const handleProvider = () => {
22
+ if (handled) return;
23
+ handled = true;
24
+ const provider2 = getZcashProvider();
25
+ if (provider2) {
26
+ resolve(provider2);
27
+ } else {
28
+ reject(new Error("RHEA Wallet is not installed"));
29
+ }
30
+ };
31
+ window.addEventListener("rheawallet#initialized", handleProvider, { once: true });
32
+ setTimeout(() => {
33
+ handleProvider();
34
+ }, timeout);
35
+ });
36
+ }
37
+ function getProvider() {
38
+ return getZcashProvider();
39
+ }
40
+
41
+ // src/chains/zcash/api.ts
42
+ var ZcashAPI = class {
43
+ constructor(provider) {
44
+ __publicField(this, "provider");
45
+ this.provider = provider;
46
+ }
47
+ async connect() {
48
+ return this.provider.request({ method: "zcash_requestAccounts" });
49
+ }
50
+ async getAccounts() {
51
+ return this.provider.request({ method: "zcash_getAccounts" });
52
+ }
53
+ async getBalance() {
54
+ return this.provider.request({ method: "zcash_getBalance" });
55
+ }
56
+ async sendTransaction(params) {
57
+ return this.provider.request({
58
+ method: "zcash_sendTransaction",
59
+ params: [params]
60
+ });
61
+ }
62
+ async signMessage(message) {
63
+ return this.provider.request({
64
+ method: "zcash_signMessage",
65
+ params: [message]
66
+ });
67
+ }
68
+ async switchNetwork(network) {
69
+ return this.provider.request({
70
+ method: "zcash_switchNetwork",
71
+ params: [{ network }]
72
+ });
73
+ }
74
+ async disconnect() {
75
+ await this.provider.request({ method: "zcash_disconnect" });
76
+ }
77
+ on(event, handler) {
78
+ this.provider.on(event, handler);
79
+ }
80
+ removeListener(event, handler) {
81
+ this.provider.removeListener?.(event, handler);
82
+ }
83
+ };
84
+
85
+ export {
86
+ getZcashProvider,
87
+ detectProvider,
88
+ getProvider,
89
+ ZcashAPI
90
+ };
@@ -0,0 +1,23 @@
1
+ import { ZcashAPI } from './chains/zcash/index.mjs';
2
+ export { Balance, Network, RequestArguments, SendTransactionParams, SignMessageResult, TransactionReceipt, ZcashAddress, ZcashProvider, detectProvider, getProvider, getZcashProvider, publicKeyToAddress } from './chains/zcash/index.mjs';
3
+
4
+ interface RheaWalletProvider {
5
+ isRheaWallet: boolean;
6
+ zcash: ZcashAPI;
7
+ }
8
+ interface ProviderConnectInfo {
9
+ chainId: string;
10
+ }
11
+ interface ProviderMessage {
12
+ type: string;
13
+ data: unknown;
14
+ }
15
+ interface ProviderRpcError extends Error {
16
+ code: number;
17
+ data?: unknown;
18
+ }
19
+
20
+ declare function getRheaWallet(): RheaWalletProvider | null;
21
+ declare function isRheaWalletInstalled(): boolean;
22
+
23
+ export { type ProviderConnectInfo, type ProviderMessage, type ProviderRpcError, type RheaWalletProvider, ZcashAPI, getRheaWallet, isRheaWalletInstalled };
@@ -0,0 +1,23 @@
1
+ import { ZcashAPI } from './chains/zcash/index.js';
2
+ export { Balance, Network, RequestArguments, SendTransactionParams, SignMessageResult, TransactionReceipt, ZcashAddress, ZcashProvider, detectProvider, getProvider, getZcashProvider, publicKeyToAddress } from './chains/zcash/index.js';
3
+
4
+ interface RheaWalletProvider {
5
+ isRheaWallet: boolean;
6
+ zcash: ZcashAPI;
7
+ }
8
+ interface ProviderConnectInfo {
9
+ chainId: string;
10
+ }
11
+ interface ProviderMessage {
12
+ type: string;
13
+ data: unknown;
14
+ }
15
+ interface ProviderRpcError extends Error {
16
+ code: number;
17
+ data?: unknown;
18
+ }
19
+
20
+ declare function getRheaWallet(): RheaWalletProvider | null;
21
+ declare function isRheaWalletInstalled(): boolean;
22
+
23
+ export { type ProviderConnectInfo, type ProviderMessage, type ProviderRpcError, type RheaWalletProvider, ZcashAPI, getRheaWallet, isRheaWalletInstalled };