@spacesops/wdk-react-native-provider 1.0.0-beta.3

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.
Files changed (89) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +841 -0
  3. package/lib/module/contexts/constants.js +20 -0
  4. package/lib/module/contexts/constants.js.map +1 -0
  5. package/lib/module/contexts/reducer.js +87 -0
  6. package/lib/module/contexts/reducer.js.map +1 -0
  7. package/lib/module/contexts/types.js +4 -0
  8. package/lib/module/contexts/types.js.map +1 -0
  9. package/lib/module/contexts/wallet-context.js +409 -0
  10. package/lib/module/contexts/wallet-context.js.map +1 -0
  11. package/lib/module/index.js +15 -0
  12. package/lib/module/index.js.map +1 -0
  13. package/lib/module/package.json +1 -0
  14. package/lib/module/polyfills.js +34 -0
  15. package/lib/module/polyfills.js.map +1 -0
  16. package/lib/module/services/wdk-service/bare-api.js +69 -0
  17. package/lib/module/services/wdk-service/bare-api.js.map +1 -0
  18. package/lib/module/services/wdk-service/index.js +506 -0
  19. package/lib/module/services/wdk-service/index.js.map +1 -0
  20. package/lib/module/services/wdk-service/types.js +48 -0
  21. package/lib/module/services/wdk-service/types.js.map +1 -0
  22. package/lib/module/services/wdk-service/wdk-encryption-salt.js +29 -0
  23. package/lib/module/services/wdk-service/wdk-encryption-salt.js.map +1 -0
  24. package/lib/module/services/wdk-service/wdk-secret-manager-storage.js +64 -0
  25. package/lib/module/services/wdk-service/wdk-secret-manager-storage.js.map +1 -0
  26. package/lib/module/services/wdk-service/wdk-secret-manager-worklet.bundle.js +1 -0
  27. package/lib/module/services/wdk-service/wdk-worklet.mobile.bundle.js +1 -0
  28. package/lib/module/spec/hrpc/hrpc.json +66 -0
  29. package/lib/module/spec/hrpc/index.js +121 -0
  30. package/lib/module/spec/hrpc/index.js.map +1 -0
  31. package/lib/module/spec/hrpc/messages.js +291 -0
  32. package/lib/module/spec/hrpc/messages.js.map +1 -0
  33. package/lib/module/spec/schema/index.js +291 -0
  34. package/lib/module/spec/schema/index.js.map +1 -0
  35. package/lib/module/spec/schema/schema.json +186 -0
  36. package/lib/module/utils/get-balances-from-balance-map.js +18 -0
  37. package/lib/module/utils/get-balances-from-balance-map.js.map +1 -0
  38. package/lib/module/utils/get-transactions-from-transaction-map.js +10 -0
  39. package/lib/module/utils/get-transactions-from-transaction-map.js.map +1 -0
  40. package/lib/module/worklet/wdk-secret-manager-worklet.js +106 -0
  41. package/lib/module/worklet/wdk-secret-manager-worklet.js.map +1 -0
  42. package/lib/typescript/package.json +1 -0
  43. package/lib/typescript/src/contexts/constants.d.ts +3 -0
  44. package/lib/typescript/src/contexts/constants.d.ts.map +1 -0
  45. package/lib/typescript/src/contexts/reducer.d.ts +38 -0
  46. package/lib/typescript/src/contexts/reducer.d.ts.map +1 -0
  47. package/lib/typescript/src/contexts/types.d.ts +40 -0
  48. package/lib/typescript/src/contexts/types.d.ts.map +1 -0
  49. package/lib/typescript/src/contexts/wallet-context.d.ts +10 -0
  50. package/lib/typescript/src/contexts/wallet-context.d.ts.map +1 -0
  51. package/lib/typescript/src/index.d.ts +7 -0
  52. package/lib/typescript/src/index.d.ts.map +1 -0
  53. package/lib/typescript/src/polyfills.d.ts +7 -0
  54. package/lib/typescript/src/polyfills.d.ts.map +1 -0
  55. package/lib/typescript/src/services/wdk-service/bare-api.d.ts +32 -0
  56. package/lib/typescript/src/services/wdk-service/bare-api.d.ts.map +1 -0
  57. package/lib/typescript/src/services/wdk-service/index.d.ts +68 -0
  58. package/lib/typescript/src/services/wdk-service/index.d.ts.map +1 -0
  59. package/lib/typescript/src/services/wdk-service/types.d.ts +125 -0
  60. package/lib/typescript/src/services/wdk-service/types.d.ts.map +1 -0
  61. package/lib/typescript/src/services/wdk-service/wdk-encryption-salt.d.ts +6 -0
  62. package/lib/typescript/src/services/wdk-service/wdk-encryption-salt.d.ts.map +1 -0
  63. package/lib/typescript/src/services/wdk-service/wdk-secret-manager-storage.d.ts +13 -0
  64. package/lib/typescript/src/services/wdk-service/wdk-secret-manager-storage.d.ts.map +1 -0
  65. package/lib/typescript/src/utils/get-balances-from-balance-map.d.ts +4 -0
  66. package/lib/typescript/src/utils/get-balances-from-balance-map.d.ts.map +1 -0
  67. package/lib/typescript/src/utils/get-transactions-from-transaction-map.d.ts +4 -0
  68. package/lib/typescript/src/utils/get-transactions-from-transaction-map.d.ts.map +1 -0
  69. package/metro-polyfills.js +89 -0
  70. package/package.json +152 -0
  71. package/src/contexts/constants.ts +19 -0
  72. package/src/contexts/reducer.ts +103 -0
  73. package/src/contexts/types.ts +51 -0
  74. package/src/contexts/wallet-context.tsx +411 -0
  75. package/src/index.tsx +28 -0
  76. package/src/polyfills.ts +31 -0
  77. package/src/services/wdk-service/bare-api.ts +88 -0
  78. package/src/services/wdk-service/index.ts +765 -0
  79. package/src/services/wdk-service/types.ts +137 -0
  80. package/src/services/wdk-service/wdk-encryption-salt.ts +30 -0
  81. package/src/services/wdk-service/wdk-secret-manager-storage.ts +102 -0
  82. package/src/spec/hrpc/hrpc.json +66 -0
  83. package/src/spec/hrpc/index.js +228 -0
  84. package/src/spec/hrpc/messages.js +328 -0
  85. package/src/spec/schema/index.js +328 -0
  86. package/src/spec/schema/schema.json +186 -0
  87. package/src/utils/get-balances-from-balance-map.ts +22 -0
  88. package/src/utils/get-transactions-from-transaction-map.ts +18 -0
  89. package/src/worklet/wdk-secret-manager-worklet.js +118 -0
@@ -0,0 +1,137 @@
1
+ export enum AssetTicker {
2
+ BTC = 'btc',
3
+ USDT = 'usdt',
4
+ XAUT = 'xaut',
5
+ }
6
+
7
+ export enum NetworkType {
8
+ SEGWIT = 'bitcoin',
9
+ LIGHTNING = 'lightning',
10
+ ETHEREUM = 'ethereum',
11
+ SOLANA = 'solana',
12
+ TRON = 'tron',
13
+ TON = 'ton',
14
+ POLYGON = 'polygon',
15
+ ARBITRUM = 'arbitrum',
16
+ }
17
+
18
+ export const AssetAddressMap = {
19
+ [AssetTicker.BTC]: {
20
+ [NetworkType.SEGWIT]: 'bitcoin',
21
+ },
22
+ [AssetTicker.USDT]: {
23
+ [NetworkType.ETHEREUM]: 'ethereum',
24
+ [NetworkType.POLYGON]: 'polygon',
25
+ [NetworkType.ARBITRUM]: 'arbitrum',
26
+ [NetworkType.TON]: 'ton',
27
+ },
28
+ [AssetTicker.XAUT]: {
29
+ [NetworkType.ETHEREUM]: 'ethereum',
30
+ },
31
+ };
32
+
33
+ export const AssetBalanceMap = {
34
+ [AssetTicker.BTC]: {
35
+ [NetworkType.SEGWIT]: 'bitcoin',
36
+ },
37
+ [AssetTicker.USDT]: {
38
+ [NetworkType.ETHEREUM]: 'ethereum',
39
+ [NetworkType.POLYGON]: 'polygon',
40
+ [NetworkType.ARBITRUM]: 'arbitrum',
41
+ [NetworkType.TON]: 'ton',
42
+ },
43
+ [AssetTicker.XAUT]: {
44
+ [NetworkType.ETHEREUM]: 'ethereum',
45
+ },
46
+ };
47
+
48
+ export interface Amount {
49
+ denomination: AssetTicker;
50
+ value: string;
51
+ networkType: NetworkType;
52
+ }
53
+
54
+ export interface Wallet {
55
+ id: string;
56
+ name: string;
57
+ enabledAssets: AssetTicker[];
58
+ }
59
+
60
+ export type AddressMap = Partial<Record<NetworkType, string>>;
61
+ export type BalanceMap = Record<
62
+ string,
63
+ { balance: number; asset: AssetTicker }
64
+ >;
65
+ export type TransactionMap = Partial<Record<NetworkType, Transaction[]>>;
66
+
67
+ export interface Transaction {
68
+ blockchain: string;
69
+ blockNumber: number;
70
+ transactionHash: string;
71
+ transferIndex: number;
72
+ token: string;
73
+ amount: string;
74
+ timestamp: number;
75
+ transactionIndex: number;
76
+ logIndex: number;
77
+ from: string;
78
+ to: string;
79
+ }
80
+
81
+ export interface PaymasterToken {
82
+ address: string;
83
+ }
84
+
85
+ export interface EVMChainConfig {
86
+ chainId: number;
87
+ blockchain: string;
88
+ provider: string;
89
+ bundlerUrl: string;
90
+ paymasterUrl: string;
91
+ paymasterAddress: string;
92
+ entrypointAddress: string;
93
+ transferMaxFee: number;
94
+ swapMaxFee: number;
95
+ bridgeMaxFee: number;
96
+ paymasterToken: PaymasterToken;
97
+ safeModulesVersion?: string;
98
+ }
99
+
100
+ export interface TONChainConfig {
101
+ tonApiClient: {
102
+ url: string;
103
+ };
104
+ tonClient: {
105
+ url: string;
106
+ };
107
+ paymasterToken: PaymasterToken;
108
+ transferMaxFee: number;
109
+ }
110
+
111
+ export interface BitcoinChainConfig {
112
+ host: string;
113
+ port: number;
114
+ }
115
+
116
+ export interface TronChainConfig {
117
+ chainId: number;
118
+ provider: string;
119
+ gasFreeProvider: string;
120
+ apiKey: string;
121
+ apiSecret: string;
122
+ serviceProvider: string;
123
+ verifyingContract: string;
124
+ transferMaxFee: number;
125
+ swapMaxFee: number;
126
+ bridgeMaxFee: number;
127
+ paymasterToken: PaymasterToken;
128
+ }
129
+
130
+ export interface ChainsConfig {
131
+ ethereum?: EVMChainConfig;
132
+ arbitrum?: EVMChainConfig;
133
+ polygon?: EVMChainConfig;
134
+ ton?: TONChainConfig;
135
+ bitcoin?: BitcoinChainConfig;
136
+ tron?: TronChainConfig;
137
+ }
@@ -0,0 +1,30 @@
1
+ const MAX_BYTES = 16;
2
+
3
+ function generateWdkSalt(email: any): Buffer {
4
+ const localPart = email.split('@')[0];
5
+
6
+ // Encode the local part using TextEncoder
7
+ const encoder = new TextEncoder();
8
+ const encoded = encoder.encode(localPart);
9
+
10
+ // Prepare a MAX_BYTES-byte buffer
11
+ const bf = new Uint8Array(MAX_BYTES);
12
+
13
+ if (encoded.length > MAX_BYTES) {
14
+ // If more than MAX_BYTES bytes, take the last MAX_BYTES bytes
15
+ const sliced = encoded.slice(0, MAX_BYTES);
16
+ bf.set(sliced);
17
+ } else {
18
+ // Copy encoded bytes to beginning
19
+ bf.set(encoded, 0);
20
+
21
+ // Fill the remaining bytes with 7
22
+ bf.fill(7, encoded.length);
23
+ }
24
+
25
+ return bf as Buffer;
26
+ }
27
+
28
+ export const wdkEncryptionSalt = {
29
+ generateWdkSalt,
30
+ };
@@ -0,0 +1,102 @@
1
+ import b4a from 'b4a';
2
+ import * as Keychain from 'react-native-keychain';
3
+
4
+ export const WDK_STORAGE_SEED = 'seed' as const;
5
+ export const WDK_STORAGE_ENTROPY = 'entropy' as const;
6
+ export const WDK_STORAGE_SALT = 'salt' as const;
7
+
8
+ export class WdkSecretManagerStorage {
9
+ static BASE_SERVICE_NAME = 'wdk.secretManager';
10
+
11
+ static async saveData(
12
+ key:
13
+ | typeof WDK_STORAGE_SEED
14
+ | typeof WDK_STORAGE_ENTROPY
15
+ | typeof WDK_STORAGE_SALT,
16
+ value: Buffer | string
17
+ ) {
18
+ const itemService = WdkSecretManagerStorage.getServiceForItem(key);
19
+ await Keychain.setGenericPassword(
20
+ key,
21
+ b4a.isBuffer(value) ? b4a.toString(value, 'hex') : value,
22
+ {
23
+ service: itemService,
24
+ accessControl:
25
+ key === 'seed' ? Keychain.ACCESS_CONTROL.BIOMETRY_ANY : undefined,
26
+ }
27
+ );
28
+ }
29
+
30
+ static async retrieveData(
31
+ key:
32
+ | typeof WDK_STORAGE_SEED
33
+ | typeof WDK_STORAGE_ENTROPY
34
+ | typeof WDK_STORAGE_SALT
35
+ ) {
36
+ const itemService = WdkSecretManagerStorage.getServiceForItem(key);
37
+
38
+ try {
39
+ const credentials = await Keychain.getGenericPassword({
40
+ service: itemService,
41
+ accessControl:
42
+ key === 'seed' ? Keychain.ACCESS_CONTROL.BIOMETRY_ANY : undefined,
43
+ });
44
+ if (credentials) {
45
+ return b4a.from(credentials.password, 'hex');
46
+ }
47
+ console.info(
48
+ `For key ${itemService} in secure storage data do not exist.`
49
+ );
50
+ return false;
51
+ } catch (error) {
52
+ console.error(error);
53
+ return false;
54
+ }
55
+ }
56
+
57
+ static async hasKey(
58
+ key:
59
+ | typeof WDK_STORAGE_SEED
60
+ | typeof WDK_STORAGE_ENTROPY
61
+ | typeof WDK_STORAGE_SALT
62
+ ) {
63
+ const itemService = WdkSecretManagerStorage.getServiceForItem(key);
64
+ return await Keychain.hasGenericPassword({ service: itemService });
65
+ }
66
+
67
+ static async resetData(
68
+ key:
69
+ | typeof WDK_STORAGE_SEED
70
+ | typeof WDK_STORAGE_ENTROPY
71
+ | typeof WDK_STORAGE_SALT
72
+ ) {
73
+ const itemService = WdkSecretManagerStorage.getServiceForItem(key);
74
+ try {
75
+ const success = await Keychain.resetGenericPassword({
76
+ service: itemService,
77
+ });
78
+ if (success) {
79
+ console.info(`Item for key '${key}' was reset successfully.`);
80
+ }
81
+ return true;
82
+ } catch (error) {
83
+ console.error(`Failed to reset item for key '${key}':`, error);
84
+ return false;
85
+ }
86
+ }
87
+
88
+ static async resetAllData() {
89
+ await WdkSecretManagerStorage.resetData(WDK_STORAGE_ENTROPY);
90
+ await WdkSecretManagerStorage.resetData(WDK_STORAGE_SEED);
91
+ await WdkSecretManagerStorage.resetData(WDK_STORAGE_SALT);
92
+ }
93
+
94
+ static getServiceForItem(
95
+ key:
96
+ | typeof WDK_STORAGE_SEED
97
+ | typeof WDK_STORAGE_ENTROPY
98
+ | typeof WDK_STORAGE_SALT
99
+ ) {
100
+ return `${WdkSecretManagerStorage.BASE_SERVICE_NAME}.${key}`;
101
+ }
102
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "version": 1,
3
+ "schema": [
4
+ {
5
+ "id": 0,
6
+ "name": "@tetherto/wdk-secret-manager/command-workletStart",
7
+ "request": {
8
+ "name": "@tetherto/wdk-secret-manager/command-workletStart-request",
9
+ "stream": false
10
+ },
11
+ "response": {
12
+ "name": "@tetherto/wdk-secret-manager/command-workletStart-response",
13
+ "stream": false
14
+ },
15
+ "version": 1
16
+ },
17
+ {
18
+ "id": 1,
19
+ "name": "@tetherto/wdk-secret-manager/command-workletStop",
20
+ "request": {
21
+ "name": "@tetherto/wdk-secret-manager/command-workletStop-request",
22
+ "stream": false
23
+ },
24
+ "response": {
25
+ "name": "@tetherto/wdk-secret-manager/command-workletStop-response",
26
+ "stream": false
27
+ },
28
+ "version": 1
29
+ },
30
+ {
31
+ "id": 2,
32
+ "name": "@tetherto/wdk-secret-manager/command-generateAndEncrypt",
33
+ "request": {
34
+ "name": "@tetherto/wdk-secret-manager/command-generateAndEncrypt-request",
35
+ "stream": false
36
+ },
37
+ "response": {
38
+ "name": "@tetherto/wdk-secret-manager/command-generateAndEncrypt-response",
39
+ "stream": false
40
+ },
41
+ "version": 1
42
+ },
43
+ {
44
+ "id": 3,
45
+ "name": "@tetherto/wdk-secret-manager/command-decrypt",
46
+ "request": {
47
+ "name": "@tetherto/wdk-secret-manager/command-decrypt-request",
48
+ "stream": false
49
+ },
50
+ "response": {
51
+ "name": "@tetherto/wdk-secret-manager/command-decrypt-response",
52
+ "stream": false
53
+ },
54
+ "version": 1
55
+ },
56
+ {
57
+ "id": 4,
58
+ "name": "@tetherto/wdk-secret-manager/command-log",
59
+ "request": {
60
+ "name": "@tetherto/wdk-secret-manager/command-log-request",
61
+ "send": true
62
+ },
63
+ "version": 1
64
+ }
65
+ ]
66
+ }
@@ -0,0 +1,228 @@
1
+ // This file is autogenerated by the hrpc compiler
2
+
3
+ const { c, RPC, RPCStream, RPCRequestStream } = require('hrpc/runtime');
4
+ const { getEncoding } = require('./messages.js');
5
+
6
+ const methods = new Map([
7
+ ['@tetherto/wdk-secret-manager/command-workletStart', 0],
8
+ [0, '@tetherto/wdk-secret-manager/command-workletStart'],
9
+ ['@tetherto/wdk-secret-manager/command-workletStop', 1],
10
+ [1, '@tetherto/wdk-secret-manager/command-workletStop'],
11
+ ['@tetherto/wdk-secret-manager/command-generateAndEncrypt', 2],
12
+ [2, '@tetherto/wdk-secret-manager/command-generateAndEncrypt'],
13
+ ['@tetherto/wdk-secret-manager/command-decrypt', 3],
14
+ [3, '@tetherto/wdk-secret-manager/command-decrypt'],
15
+ ['@tetherto/wdk-secret-manager/command-log', 4],
16
+ [4, '@tetherto/wdk-secret-manager/command-log'],
17
+ ]);
18
+
19
+ class HRPC {
20
+ constructor(stream) {
21
+ this._stream = stream;
22
+ this._handlers = [];
23
+ this._requestEncodings = new Map([
24
+ [
25
+ '@tetherto/wdk-secret-manager/command-workletStart',
26
+ getEncoding(
27
+ '@tetherto/wdk-secret-manager/command-workletStart-request'
28
+ ),
29
+ ],
30
+ [
31
+ '@tetherto/wdk-secret-manager/command-workletStop',
32
+ getEncoding('@tetherto/wdk-secret-manager/command-workletStop-request'),
33
+ ],
34
+ [
35
+ '@tetherto/wdk-secret-manager/command-generateAndEncrypt',
36
+ getEncoding(
37
+ '@tetherto/wdk-secret-manager/command-generateAndEncrypt-request'
38
+ ),
39
+ ],
40
+ [
41
+ '@tetherto/wdk-secret-manager/command-decrypt',
42
+ getEncoding('@tetherto/wdk-secret-manager/command-decrypt-request'),
43
+ ],
44
+ [
45
+ '@tetherto/wdk-secret-manager/command-log',
46
+ getEncoding('@tetherto/wdk-secret-manager/command-log-request'),
47
+ ],
48
+ ]);
49
+ this._responseEncodings = new Map([
50
+ [
51
+ '@tetherto/wdk-secret-manager/command-workletStart',
52
+ getEncoding(
53
+ '@tetherto/wdk-secret-manager/command-workletStart-response'
54
+ ),
55
+ ],
56
+ [
57
+ '@tetherto/wdk-secret-manager/command-workletStop',
58
+ getEncoding(
59
+ '@tetherto/wdk-secret-manager/command-workletStop-response'
60
+ ),
61
+ ],
62
+ [
63
+ '@tetherto/wdk-secret-manager/command-generateAndEncrypt',
64
+ getEncoding(
65
+ '@tetherto/wdk-secret-manager/command-generateAndEncrypt-response'
66
+ ),
67
+ ],
68
+ [
69
+ '@tetherto/wdk-secret-manager/command-decrypt',
70
+ getEncoding('@tetherto/wdk-secret-manager/command-decrypt-response'),
71
+ ],
72
+ ]);
73
+ this._rpc = new RPC(stream, async (req) => {
74
+ const command = methods.get(req.command);
75
+ const responseEncoding = this._responseEncodings.get(command);
76
+ const requestEncoding = this._requestEncodings.get(command);
77
+ if (this._requestIsSend(command)) {
78
+ const request = req.data ? c.decode(requestEncoding, req.data) : null;
79
+ await this._handlers[command](request);
80
+ return;
81
+ }
82
+ if (!this._requestIsStream(command) && !this._responseIsStream(command)) {
83
+ const request = req.data ? c.decode(requestEncoding, req.data) : null;
84
+ const response = await this._handlers[command](request);
85
+ req.reply(c.encode(responseEncoding, response));
86
+ }
87
+ if (!this._requestIsStream(command) && this._responseIsStream(command)) {
88
+ const request = req.data ? c.decode(requestEncoding, req.data) : null;
89
+ const responseStream = new RPCStream(
90
+ null,
91
+ null,
92
+ req.createResponseStream(),
93
+ responseEncoding
94
+ );
95
+ responseStream.data = request;
96
+ await this._handlers[command](responseStream);
97
+ }
98
+ if (this._requestIsStream(command) && !this._responseIsStream(command)) {
99
+ const requestStream = new RPCRequestStream(
100
+ req,
101
+ responseEncoding,
102
+ req.createRequestStream(),
103
+ requestEncoding
104
+ );
105
+ const response = await this._handlers[command](requestStream);
106
+ req.reply(c.encode(responseEncoding, response));
107
+ }
108
+ if (this._requestIsStream(command) && this._responseIsStream(command)) {
109
+ const requestStream = new RPCRequestStream(
110
+ req,
111
+ responseEncoding,
112
+ req.createRequestStream(),
113
+ requestEncoding,
114
+ req.createResponseStream(),
115
+ responseEncoding
116
+ );
117
+ await this._handlers[command](requestStream);
118
+ }
119
+ });
120
+ }
121
+
122
+ async _call(name, args) {
123
+ const requestEncoding = this._requestEncodings.get(name);
124
+ const responseEncoding = this._responseEncodings.get(name);
125
+ const request = this._rpc.request(methods.get(name));
126
+ const encoded = c.encode(requestEncoding, args);
127
+ request.send(encoded);
128
+ return c.decode(responseEncoding, await request.reply());
129
+ }
130
+
131
+ _callSync(name, args) {
132
+ const requestEncoding = this._requestEncodings.get(name);
133
+ const responseEncoding = this._responseEncodings.get(name);
134
+ const request = this._rpc.request(methods.get(name));
135
+ if (this._requestIsSend(name)) {
136
+ const encoded = c.encode(requestEncoding, args);
137
+ request.send(encoded);
138
+ }
139
+ if (!this._requestIsStream(name) && this._responseIsStream(name)) {
140
+ const encoded = c.encode(requestEncoding, args);
141
+ request.send(encoded);
142
+ return new RPCStream(request.createResponseStream(), responseEncoding);
143
+ }
144
+ if (this._requestIsStream(name) && !this._responseIsStream(name)) {
145
+ return new RPCRequestStream(
146
+ request,
147
+ responseEncoding,
148
+ null,
149
+ null,
150
+ request.createRequestStream(),
151
+ requestEncoding
152
+ );
153
+ }
154
+ if (this._requestIsStream(name) && this._responseIsStream(name)) {
155
+ return new RPCRequestStream(
156
+ request,
157
+ responseEncoding,
158
+ request.createResponseStream(),
159
+ responseEncoding,
160
+ request.createRequestStream(),
161
+ requestEncoding
162
+ );
163
+ }
164
+ }
165
+
166
+ async commandWorkletStart(args) {
167
+ return this._call(
168
+ '@tetherto/wdk-secret-manager/command-workletStart',
169
+ args
170
+ );
171
+ }
172
+
173
+ async commandWorkletStop(args) {
174
+ return this._call('@tetherto/wdk-secret-manager/command-workletStop', args);
175
+ }
176
+
177
+ async commandGenerateAndEncrypt(args) {
178
+ return this._call(
179
+ '@tetherto/wdk-secret-manager/command-generateAndEncrypt',
180
+ args
181
+ );
182
+ }
183
+
184
+ async commandDecrypt(args) {
185
+ return this._call('@tetherto/wdk-secret-manager/command-decrypt', args);
186
+ }
187
+
188
+ commandLog(args) {
189
+ return this._callSync('@tetherto/wdk-secret-manager/command-log', args);
190
+ }
191
+
192
+ onCommandWorkletStart(responseFn) {
193
+ this._handlers['@tetherto/wdk-secret-manager/command-workletStart'] =
194
+ responseFn;
195
+ }
196
+
197
+ onCommandWorkletStop(responseFn) {
198
+ this._handlers['@tetherto/wdk-secret-manager/command-workletStop'] =
199
+ responseFn;
200
+ }
201
+
202
+ onCommandGenerateAndEncrypt(responseFn) {
203
+ this._handlers['@tetherto/wdk-secret-manager/command-generateAndEncrypt'] =
204
+ responseFn;
205
+ }
206
+
207
+ onCommandDecrypt(responseFn) {
208
+ this._handlers['@tetherto/wdk-secret-manager/command-decrypt'] = responseFn;
209
+ }
210
+
211
+ onCommandLog(responseFn) {
212
+ this._handlers['@tetherto/wdk-secret-manager/command-log'] = responseFn;
213
+ }
214
+
215
+ _requestIsStream(command) {
216
+ return [].includes(command);
217
+ }
218
+
219
+ _responseIsStream(command) {
220
+ return [].includes(command);
221
+ }
222
+
223
+ _requestIsSend(command) {
224
+ return ['@tetherto/wdk-secret-manager/command-log'].includes(command);
225
+ }
226
+ }
227
+
228
+ module.exports = HRPC;