@reown/appkit-adapter-ton 1.8.15-viem-upgrade.0 → 1.8.15-viem-upgrade-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.
Files changed (32) hide show
  1. package/dist/esm/exports/index.js +3 -0
  2. package/dist/esm/exports/index.js.map +1 -0
  3. package/dist/esm/exports/utils.js +2 -0
  4. package/dist/esm/exports/utils.js.map +1 -0
  5. package/dist/esm/src/adapter.js +249 -0
  6. package/dist/esm/src/adapter.js.map +1 -0
  7. package/dist/esm/src/connectors/TonConnectConnector.js +177 -0
  8. package/dist/esm/src/connectors/TonConnectConnector.js.map +1 -0
  9. package/dist/esm/src/connectors/TonWalletConnectConnector.js +67 -0
  10. package/dist/esm/src/connectors/TonWalletConnectConnector.js.map +1 -0
  11. package/dist/esm/src/utils/Base64.js +47 -0
  12. package/dist/esm/src/utils/Base64.js.map +1 -0
  13. package/dist/esm/src/utils/ProviderEventEmitter.js +26 -0
  14. package/dist/esm/src/utils/ProviderEventEmitter.js.map +1 -0
  15. package/dist/esm/src/utils/TonConnectTypeUtils.js +2 -0
  16. package/dist/esm/src/utils/TonConnectTypeUtils.js.map +1 -0
  17. package/dist/esm/src/utils/TonConnectUtil.js +418 -0
  18. package/dist/esm/src/utils/TonConnectUtil.js.map +1 -0
  19. package/dist/esm/src/utils/TonWalletUtils.js +160 -0
  20. package/dist/esm/src/utils/TonWalletUtils.js.map +1 -0
  21. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  22. package/dist/types/exports/index.d.ts +2 -0
  23. package/dist/types/exports/utils.d.ts +1 -0
  24. package/dist/types/src/adapter.d.ts +29 -0
  25. package/dist/types/src/connectors/TonConnectConnector.d.ts +29 -0
  26. package/dist/types/src/connectors/TonWalletConnectConnector.d.ts +26 -0
  27. package/dist/types/src/utils/Base64.d.ts +11 -0
  28. package/dist/types/src/utils/ProviderEventEmitter.d.ts +11 -0
  29. package/dist/types/src/utils/TonConnectTypeUtils.d.ts +66 -0
  30. package/dist/types/src/utils/TonConnectUtil.d.ts +35 -0
  31. package/dist/types/src/utils/TonWalletUtils.d.ts +23 -0
  32. package/package.json +6 -6
@@ -0,0 +1,3 @@
1
+ export * from '../src/adapter.js';
2
+ export * from '@reown/appkit-utils/ton';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../exports/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from '../src/utils/TonWalletUtils.js';
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../exports/utils.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA"}
@@ -0,0 +1,249 @@
1
+ import UniversalProvider from '@walletconnect/universal-provider';
2
+ import { ConstantsUtil, NumberUtil, UserRejectedRequestError } from '@reown/appkit-common';
3
+ import { AdapterBlueprint, BlockchainApiController, ChainController, ProviderController, WcHelpersUtil } from '@reown/appkit-controllers';
4
+ import { HelpersUtil } from '@reown/appkit-utils';
5
+ import { TonConnectConnector } from './connectors/TonConnectConnector.js';
6
+ import { TonWalletConnectConnector } from './connectors/TonWalletConnectConnector.js';
7
+ import { TonConnectUtil } from './utils/TonConnectUtil.js';
8
+ export class TonAdapter extends AdapterBlueprint {
9
+ constructor(params) {
10
+ super({
11
+ namespace: ConstantsUtil.CHAIN.TON,
12
+ adapterType: ConstantsUtil.ADAPTER_TYPES.TON,
13
+ ...params
14
+ });
15
+ this.universalProvider = undefined;
16
+ }
17
+ async syncConnectors() {
18
+ const injectedNow = await TonConnectUtil.getInjectedWallets();
19
+ const chains = ChainController.getCaipNetworks();
20
+ injectedNow.forEach(wallet => this.addConnector(new TonConnectConnector({ wallet, chains })));
21
+ }
22
+ async connect(params) {
23
+ const connector = this.connectors.find(c => c.id === params.id);
24
+ if (!connector) {
25
+ throw new Error('Connector not found');
26
+ }
27
+ const chain = connector.chains.find(c => c.id === params.chainId) || connector.chains[0];
28
+ if (!chain) {
29
+ throw new Error('The connector does not support any of the requested chains');
30
+ }
31
+ const connection = this.getConnection({
32
+ address: params.address,
33
+ connectorId: connector.id,
34
+ connections: this.connections,
35
+ connectors: this.connectors
36
+ });
37
+ if (connection?.account) {
38
+ this.emit('accountChanged', {
39
+ address: connection.account.address,
40
+ chainId: connection.caipNetwork?.id,
41
+ connector
42
+ });
43
+ return {
44
+ id: connector.id,
45
+ type: connector.type,
46
+ address: connection.account.address,
47
+ chainId: chain.id,
48
+ provider: connector
49
+ };
50
+ }
51
+ const address = await connector.connect().catch(err => {
52
+ throw new UserRejectedRequestError(err);
53
+ });
54
+ this.emit('accountChanged', {
55
+ address,
56
+ chainId: chain.id,
57
+ connector
58
+ });
59
+ this.addConnection({
60
+ connectorId: connector.id,
61
+ accounts: [{ address, type: 'eoa' }],
62
+ caipNetwork: chain
63
+ });
64
+ if (connector.id !== ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT) {
65
+ this.listenProviderEvents(connector.id, connector);
66
+ }
67
+ return {
68
+ id: connector.id,
69
+ type: connector.type,
70
+ address,
71
+ chainId: chain.id,
72
+ provider: connector
73
+ };
74
+ }
75
+ getActiveConnector() {
76
+ return this.connector;
77
+ }
78
+ async getAccounts() {
79
+ return Promise.resolve({
80
+ accounts: []
81
+ });
82
+ }
83
+ async signMessage() {
84
+ return Promise.resolve({ signature: '' });
85
+ }
86
+ async sendTransaction() {
87
+ return Promise.resolve({ hash: '' });
88
+ }
89
+ async disconnect(params) {
90
+ if (params?.id) {
91
+ const connector = this.connectors.find(c => c.id === params.id);
92
+ if (!connector) {
93
+ throw new Error('TonAdapter:disconnect - connector not found');
94
+ }
95
+ const connection = this.getConnection({
96
+ connectorId: connector.id,
97
+ connections: this.connections,
98
+ connectors: this.connectors
99
+ });
100
+ try {
101
+ await connector.disconnect();
102
+ }
103
+ catch (error) {
104
+ console.error('TonAdapter:disconnect - error', error);
105
+ }
106
+ this.removeProviderListeners(connector.id);
107
+ this.deleteConnection(connector.id);
108
+ if (this.connections.length === 0) {
109
+ this.emit('disconnect');
110
+ }
111
+ else {
112
+ this.emitFirstAvailableConnection();
113
+ }
114
+ return { connections: connection ? [connection] : [] };
115
+ }
116
+ return this.disconnectAll();
117
+ }
118
+ async disconnectAll() {
119
+ const connections = await Promise.all(this.connections.map(async (connection) => {
120
+ const connector = this.connectors.find(c => HelpersUtil.isLowerCaseMatch(c.id, connection.connectorId));
121
+ if (!connector) {
122
+ throw new Error('Connector not found');
123
+ }
124
+ await this.disconnect({
125
+ id: connector.id
126
+ });
127
+ return connection;
128
+ }));
129
+ return { connections };
130
+ }
131
+ async switchNetwork(params) {
132
+ const providerType = ProviderController.getProviderId(params.caipNetwork.chainNamespace);
133
+ const provider = ProviderController.getProvider(params.caipNetwork.chainNamespace);
134
+ if (providerType === 'WALLET_CONNECT' || providerType === 'AUTH') {
135
+ return await super.switchNetwork(params);
136
+ }
137
+ if (!provider) {
138
+ throw new Error('Provider not found');
139
+ }
140
+ return await provider.switchNetwork(params.caipNetwork.caipNetworkId);
141
+ }
142
+ async setUniversalProvider(universalProvider) {
143
+ this.universalProvider = universalProvider;
144
+ const wcConnectorId = ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;
145
+ WcHelpersUtil.listenWcProvider({
146
+ universalProvider,
147
+ namespace: ConstantsUtil.CHAIN.TON,
148
+ onConnect: accounts => this.onConnect(accounts, wcConnectorId),
149
+ onDisconnect: () => this.onDisconnect(wcConnectorId),
150
+ onAccountsChanged: accounts => super.onAccountsChanged(accounts, wcConnectorId, false)
151
+ });
152
+ this.addConnector(new TonWalletConnectConnector({
153
+ provider: universalProvider,
154
+ chains: ChainController.getCaipNetworks()
155
+ }));
156
+ return Promise.resolve();
157
+ }
158
+ async getBalance(params) {
159
+ const caipNetworkId = params.caipNetwork?.caipNetworkId;
160
+ const address = params.address;
161
+ if (!address || !caipNetworkId) {
162
+ return { balance: '0', symbol: 'TON' };
163
+ }
164
+ const balance = await BlockchainApiController.getAddressBalance({
165
+ caipNetworkId,
166
+ address
167
+ });
168
+ const formattedBalance = NumberUtil.bigNumber(balance)
169
+ .div(10 ** 9)
170
+ .toString();
171
+ return { balance: formattedBalance, symbol: 'TON' };
172
+ }
173
+ parseUnits() {
174
+ return BigInt(0);
175
+ }
176
+ formatUnits() {
177
+ return '';
178
+ }
179
+ async syncConnections({ connectToFirstConnector, caipNetwork }) {
180
+ await Promise.all(this.connectors
181
+ .filter(c => {
182
+ const { hasDisconnected, hasConnected } = HelpersUtil.getConnectorStorageInfo(c.id, this.namespace);
183
+ return !hasDisconnected && hasConnected;
184
+ })
185
+ .map(async (connector) => {
186
+ if (connector.id === ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT) {
187
+ const accounts = WcHelpersUtil.getWalletConnectAccounts(this.universalProvider, this.namespace);
188
+ if (accounts.length > 0) {
189
+ this.addConnection({
190
+ connectorId: connector.id,
191
+ accounts: accounts.map(account => ({ address: account.address })),
192
+ caipNetwork
193
+ });
194
+ }
195
+ }
196
+ else {
197
+ const address = await connector.connect({});
198
+ if (address) {
199
+ this.addConnection({
200
+ connectorId: connector.id,
201
+ accounts: [{ address }],
202
+ caipNetwork
203
+ });
204
+ this.listenProviderEvents(connector.id, connector);
205
+ }
206
+ }
207
+ }));
208
+ if (connectToFirstConnector) {
209
+ this.emitFirstAvailableConnection();
210
+ }
211
+ }
212
+ async syncConnection(params) {
213
+ const connector = this.connectors.find(c => c.id === params.id);
214
+ if (!connector) {
215
+ return { id: '', address: '', chainId: '', provider: undefined, type: 'EXTERNAL' };
216
+ }
217
+ return this.connect({
218
+ id: connector.id,
219
+ chainId: params.chainId,
220
+ type: connector.type
221
+ });
222
+ }
223
+ async estimateGas(_params) {
224
+ return Promise.resolve({ gas: BigInt(0) });
225
+ }
226
+ async writeContract(_params) {
227
+ return Promise.resolve({ hash: '' });
228
+ }
229
+ async grantPermissions(_params) {
230
+ return Promise.resolve({});
231
+ }
232
+ async getCapabilities(_params) {
233
+ return Promise.resolve({});
234
+ }
235
+ async revokePermissions(_params) {
236
+ return Promise.resolve('0x0000000000000000000000000000000000000000');
237
+ }
238
+ async walletGetAssets(_params) {
239
+ return Promise.resolve({});
240
+ }
241
+ getWalletConnectProvider(params) {
242
+ const walletConnectProvider = new TonWalletConnectConnector({
243
+ provider: params.provider,
244
+ chains: params.caipNetworks
245
+ });
246
+ return walletConnectProvider;
247
+ }
248
+ }
249
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ import { CoreHelperUtil } from '@reown/appkit-controllers';
2
+ import { ProviderEventEmitter } from '../utils/ProviderEventEmitter.js';
3
+ import { TonConnectUtil } from '../utils/TonConnectUtil.js';
4
+ import { parseUserFriendlyAddress, toUserFriendlyAddress } from '../utils/TonWalletUtils.js';
5
+ export class TonConnectConnector {
6
+ constructor({ wallet, chains }) {
7
+ this.chain = 'ton';
8
+ this.type = 'INJECTED';
9
+ this.eventEmitter = new ProviderEventEmitter();
10
+ this.emit = this.eventEmitter.emit.bind(this.eventEmitter);
11
+ this.on = this.eventEmitter.on.bind(this.eventEmitter);
12
+ this.removeListener = this.eventEmitter.removeListener.bind(this.eventEmitter);
13
+ this.wallet = wallet;
14
+ this.requestedChains = chains;
15
+ }
16
+ request(args) {
17
+ return this.internalRequest(args);
18
+ }
19
+ get id() {
20
+ return this.name;
21
+ }
22
+ get name() {
23
+ return this.wallet.name;
24
+ }
25
+ get imageUrl() {
26
+ return this.wallet.imageUrl;
27
+ }
28
+ get chains() {
29
+ return this.requestedChains;
30
+ }
31
+ async connect() {
32
+ if ('jsBridgeKey' in this.wallet && this.wallet.jsBridgeKey) {
33
+ const address = await TonConnectUtil.connectInjected(this.wallet.jsBridgeKey);
34
+ if (!address) {
35
+ throw new Error('No address available');
36
+ }
37
+ this.currentAddress = toUserFriendlyAddress(address);
38
+ this.emit('accountsChanged', [this.currentAddress]);
39
+ return this.currentAddress;
40
+ }
41
+ throw new Error('TON remote connect (bridge) not implemented');
42
+ }
43
+ async disconnect() {
44
+ try {
45
+ if (!CoreHelperUtil.isClient()) {
46
+ return;
47
+ }
48
+ const jsBridgeKey = TonConnectUtil.getJSBridgeKey(this.wallet);
49
+ if (jsBridgeKey) {
50
+ await TonConnectUtil.disconnectInjected(jsBridgeKey);
51
+ }
52
+ this.clearSession();
53
+ }
54
+ catch {
55
+ }
56
+ }
57
+ async signData(params) {
58
+ if (!CoreHelperUtil.isClient()) {
59
+ return Promise.resolve('');
60
+ }
61
+ const jsBridgeKey = TonConnectUtil.getJSBridgeKey(this.wallet);
62
+ if (!jsBridgeKey) {
63
+ throw new Error('TON signData over bridge not implemented');
64
+ }
65
+ const wallet = TonConnectUtil.getTonConnect(jsBridgeKey);
66
+ if (!wallet || typeof wallet.send !== 'function') {
67
+ throw new Error('Injected wallet not available');
68
+ }
69
+ const payload = (params || {});
70
+ const { wc, hex } = parseUserFriendlyAddress(payload.from || this.currentAddress || '');
71
+ const from = `${wc}:${hex}`;
72
+ const base = { ...payload, from };
73
+ let normalized = {};
74
+ if (base?.type === 'cell') {
75
+ normalized = { ...base, cell: TonConnectUtil.normalizeBase64(base.cell) };
76
+ }
77
+ else if (base?.type === 'binary') {
78
+ normalized = { ...base, bytes: TonConnectUtil.normalizeBase64(base.bytes) };
79
+ }
80
+ else {
81
+ normalized = { ...base, network: base.network || '-239' };
82
+ }
83
+ const requestedType = String(normalized['type'] || '');
84
+ if (requestedType === 'text' || requestedType === 'binary' || requestedType === 'cell') {
85
+ try {
86
+ TonConnectUtil.assertSignDataSupported(this.wallet, [
87
+ requestedType
88
+ ]);
89
+ }
90
+ catch (e) {
91
+ const errorMessage = e instanceof Error ? e.message : `Wallet does not support SignData type: ${requestedType}`;
92
+ throw new Error(errorMessage);
93
+ }
94
+ }
95
+ const res = await wallet.send({
96
+ method: 'signData',
97
+ params: [JSON.stringify(normalized)],
98
+ id: CoreHelperUtil.getUUID()
99
+ });
100
+ return res?.signature || res?.result?.signature || '';
101
+ }
102
+ async sendMessage(params) {
103
+ if (!CoreHelperUtil.isClient()) {
104
+ return Promise.resolve('');
105
+ }
106
+ if (!('jsBridgeKey' in this.wallet) || !this.wallet.jsBridgeKey) {
107
+ throw new Error('TON sendMessage over bridge not implemented');
108
+ }
109
+ const wallet = TonConnectUtil.getTonConnect(this.wallet.jsBridgeKey);
110
+ if (!wallet || typeof wallet.send !== 'function') {
111
+ throw new Error(`TonConnectConnector.sendMessage: Injected wallet "${this.wallet.jsBridgeKey}" not available`);
112
+ }
113
+ const tx = (params || {});
114
+ const messages = (tx.messages || []).map((m, i) => {
115
+ const amountStr = String(m?.amount ?? '');
116
+ if (!/^[0-9]+$/u.test(amountStr)) {
117
+ throw new Error(`messages[${i}].amount must be a string of digits`);
118
+ }
119
+ if (!m?.address) {
120
+ throw new Error(`messages[${i}].address is required (user-friendly)`);
121
+ }
122
+ return {
123
+ address: m.address,
124
+ amount: amountStr,
125
+ payload: TonConnectUtil.normalizeBase64(m.payload),
126
+ stateInit: TonConnectUtil.normalizeBase64(m.stateInit),
127
+ extra_currency: m.extraCurrency
128
+ };
129
+ });
130
+ if (messages.length === 0) {
131
+ throw new Error('messages must contain at least 1 item');
132
+ }
133
+ const hasExtraCurrencies = (tx.messages || []).some(m => m?.extraCurrency && Object.keys(m.extraCurrency).length > 0);
134
+ try {
135
+ TonConnectUtil.assertSendTransactionSupported(this.wallet, messages.length, hasExtraCurrencies);
136
+ }
137
+ catch (e) {
138
+ const errorMessage = e instanceof Error ? e.message : 'Wallet does not support SendTransaction';
139
+ throw new Error(errorMessage);
140
+ }
141
+ const connectorInstance = this;
142
+ const fromUserFriendly = tx.from ?? connectorInstance.account?.address ?? undefined;
143
+ const network = tx.network ?? connectorInstance.account?.chain ?? undefined;
144
+ let from = undefined;
145
+ if (fromUserFriendly) {
146
+ const { wc, hex } = parseUserFriendlyAddress(fromUserFriendly);
147
+ from = `${wc}:${hex}`;
148
+ }
149
+ const prepared = {
150
+ valid_until: tx.validUntil ?? Math.floor(Date.now() / 1000) + 60,
151
+ network,
152
+ from,
153
+ messages
154
+ };
155
+ const req = {
156
+ method: 'sendTransaction',
157
+ params: [JSON.stringify(prepared)],
158
+ id: CoreHelperUtil.getUUID()
159
+ };
160
+ const res = await wallet.send(req);
161
+ if (res?.error) {
162
+ throw new Error(res.error.message || `sendTransaction failed (code ${res.error.code})`);
163
+ }
164
+ const boc = res?.result ?? res?.boc;
165
+ if (!boc) {
166
+ throw new Error('No boc in response');
167
+ }
168
+ return boc;
169
+ }
170
+ async switchNetwork() {
171
+ return Promise.resolve();
172
+ }
173
+ clearSession() {
174
+ this.currentAddress = undefined;
175
+ }
176
+ }
177
+ //# sourceMappingURL=TonConnectConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TonConnectConnector.js","sourceRoot":"","sources":["../../../../src/connectors/TonConnectConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { ConstantsUtil as CommonConstantsUtil, ConstantsUtil } from '@reown/appkit-common';
2
+ import { ChainController, WalletConnectConnector, WcHelpersUtil } from '@reown/appkit-controllers';
3
+ import { ProviderEventEmitter } from '../utils/ProviderEventEmitter.js';
4
+ export class TonWalletConnectConnector extends WalletConnectConnector {
5
+ constructor({ provider, chains }) {
6
+ super({ provider, caipNetworks: chains, namespace: ConstantsUtil.CHAIN.TON });
7
+ this.chain = CommonConstantsUtil.CHAIN.TON;
8
+ this.eventEmitter = new ProviderEventEmitter();
9
+ this.emit = this.eventEmitter.emit.bind(this.eventEmitter);
10
+ this.on = this.eventEmitter.on.bind(this.eventEmitter);
11
+ this.removeListener = this.eventEmitter.removeListener.bind(this.eventEmitter);
12
+ }
13
+ get imageUrl() {
14
+ return undefined;
15
+ }
16
+ get info() {
17
+ return undefined;
18
+ }
19
+ get chainsList() {
20
+ return this.chains;
21
+ }
22
+ get chains() {
23
+ return this.sessionChains
24
+ .map(chainId => this.caipNetworks.find(chain => chain.caipNetworkId === chainId))
25
+ .filter(Boolean);
26
+ }
27
+ async connect() {
28
+ return Promise.reject(new Error('Connection of WalletConnectProvider should be done via UniversalAdapter'));
29
+ }
30
+ async signData(params) {
31
+ const chain = ChainController.getCaipNetworkByNamespace(ConstantsUtil.CHAIN.TON);
32
+ if (!chain) {
33
+ throw new Error('Chain not found');
34
+ }
35
+ const request = {
36
+ method: 'ton_signData',
37
+ params: [params]
38
+ };
39
+ const result = await this.provider.request(request, chain.caipNetworkId);
40
+ return result?.signature || result?.result?.signature || '';
41
+ }
42
+ async sendMessage(params) {
43
+ const chain = ChainController.getCaipNetworkByNamespace(ConstantsUtil.CHAIN.TON);
44
+ if (!chain) {
45
+ throw new Error('Chain not found');
46
+ }
47
+ const request = {
48
+ method: 'ton_sendMessage',
49
+ params: [params]
50
+ };
51
+ const result = await this.provider.request(request, chain.caipNetworkId);
52
+ return result?.boc || result?.result || '';
53
+ }
54
+ async switchNetwork() {
55
+ return Promise.resolve();
56
+ }
57
+ request(args) {
58
+ return this.internalRequest(args);
59
+ }
60
+ setDefaultChain(chainId) {
61
+ this.provider.setDefaultChain(chainId);
62
+ }
63
+ get sessionChains() {
64
+ return WcHelpersUtil.getChainsFromNamespaces(this.provider.session?.namespaces);
65
+ }
66
+ }
67
+ //# sourceMappingURL=TonWalletConnectConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TonWalletConnectConnector.js","sourceRoot":"","sources":["../../../../src/connectors/TonWalletConnectConnector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import nacl from 'tweetnacl-util';
2
+ function encodeUint8Array(value, urlSafe) {
3
+ const encoded = nacl.encodeBase64(value);
4
+ if (urlSafe) {
5
+ return encodeURIComponent(encoded);
6
+ }
7
+ return encoded;
8
+ }
9
+ function decodeToUint8Array(value, urlSafe) {
10
+ const processedValue = urlSafe ? decodeURIComponent(value) : value;
11
+ return nacl.decodeBase64(processedValue);
12
+ }
13
+ function encode(value, urlSafe = false) {
14
+ let uint8Array = undefined;
15
+ if (value instanceof Uint8Array) {
16
+ uint8Array = value;
17
+ }
18
+ else {
19
+ const stringValue = typeof value === 'string' ? value : JSON.stringify(value);
20
+ uint8Array = nacl.decodeUTF8(stringValue);
21
+ }
22
+ return encodeUint8Array(uint8Array, urlSafe);
23
+ }
24
+ function decode(value, urlSafe = false) {
25
+ const decodedUint8Array = decodeToUint8Array(value, urlSafe);
26
+ return {
27
+ toString() {
28
+ return nacl.encodeUTF8(decodedUint8Array);
29
+ },
30
+ toObject() {
31
+ try {
32
+ return JSON.parse(nacl.encodeUTF8(decodedUint8Array));
33
+ }
34
+ catch (e) {
35
+ return null;
36
+ }
37
+ },
38
+ toUint8Array() {
39
+ return decodedUint8Array;
40
+ }
41
+ };
42
+ }
43
+ export const Base64 = {
44
+ encode,
45
+ decode
46
+ };
47
+ //# sourceMappingURL=Base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Base64.js","sourceRoot":"","sources":["../../../../src/utils/Base64.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,gBAAgB,CAAA;AAEjC,SAAS,gBAAgB,CAAC,KAAiB,EAAE,OAAgB;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,OAAgB;IACzD,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAElE,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,MAAM,CAAC,KAAmC,EAAE,OAAO,GAAG,KAAK;IAClE,IAAI,UAAU,GAA2B,SAAS,CAAA;IAElD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,UAAU,GAAG,KAAK,CAAA;IACpB,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAE7E,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AAC9C,CAAC;AAED,SAAS,MAAM,CACb,KAAa,EACb,OAAO,GAAG,KAAK;IAMf,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAE5D,OAAO;QACL,QAAQ;YACN,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;QAC3C,CAAC;QACD,QAAQ;YACN,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAM,CAAA;YAC5D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QACD,YAAY;YACV,OAAO,iBAAiB,CAAA;QAC1B,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM;IACN,MAAM;CACP,CAAA"}
@@ -0,0 +1,26 @@
1
+ export class ProviderEventEmitter {
2
+ constructor() {
3
+ this.listeners = {
4
+ accountsChanged: [],
5
+ chainChanged: [],
6
+ connect: [],
7
+ disconnect: [],
8
+ display_uri: [],
9
+ message: []
10
+ };
11
+ }
12
+ on(event, listener) {
13
+ this.listeners[event].push(listener);
14
+ }
15
+ removeListener(event, listener) {
16
+ if (event in this.listeners) {
17
+ this.listeners[event] = this.listeners[event].filter((l) => l !== listener);
18
+ }
19
+ }
20
+ emit(event, data) {
21
+ if (event in this.listeners) {
22
+ this.listeners[event].forEach(listener => listener(data));
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=ProviderEventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderEventEmitter.js","sourceRoot":"","sources":["../../../../src/utils/ProviderEventEmitter.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,oBAAoB;IAAjC;QACU,cAAS,GAAc;YAC7B,eAAe,EAAE,EAAE;YACnB,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,EAAE;SACZ,CAAA;IAmBH,CAAC;IAjBC,EAAE,CAAuB,KAAY,EAAE,QAAyB;QAC9D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,cAAc,CAAI,KAAa,EAAE,QAA2B;QAC1D,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAE5B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;QAC/F,CAAC;IACH,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,IAAc;QACvC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAE5B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TonConnectTypeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TonConnectTypeUtils.js","sourceRoot":"","sources":["../../../../src/utils/TonConnectTypeUtils.ts"],"names":[],"mappings":""}