@haneullabs/walletconnect-wallet 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.
- package/CHANGELOG.md +107 -0
- package/README.md +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/package.json +5 -0
- package/dist/cjs/wallet/index.d.ts +41 -0
- package/dist/cjs/wallet/index.js +354 -0
- package/dist/cjs/wallet/index.js.map +7 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/package.json +5 -0
- package/dist/esm/wallet/index.d.ts +41 -0
- package/dist/esm/wallet/index.js +334 -0
- package/dist/esm/wallet/index.js.map +7 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +54 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# @haneullabs/walletconnect-wallet
|
|
2
|
+
|
|
3
|
+
## 0.1.12
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [29e8b92]
|
|
8
|
+
- @haneullabs/haneul@1.45.2
|
|
9
|
+
- @haneullabs/wallet-standard@0.19.9
|
|
10
|
+
|
|
11
|
+
## 0.1.11
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- e3811f1: update valibot
|
|
16
|
+
- Updated dependencies [e3811f1]
|
|
17
|
+
- @haneullabs/haneul@1.45.1
|
|
18
|
+
- @haneullabs/wallet-standard@0.19.8
|
|
19
|
+
|
|
20
|
+
## 0.1.10
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies [88bdbac]
|
|
25
|
+
- @haneullabs/haneul@1.45.0
|
|
26
|
+
- @haneullabs/wallet-standard@0.19.7
|
|
27
|
+
|
|
28
|
+
## 0.1.9
|
|
29
|
+
|
|
30
|
+
### Patch Changes
|
|
31
|
+
|
|
32
|
+
- Updated dependencies [44d9b4f]
|
|
33
|
+
- @haneullabs/haneul@1.44.0
|
|
34
|
+
- @haneullabs/wallet-standard@0.19.6
|
|
35
|
+
|
|
36
|
+
## 0.1.8
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- @haneullabs/haneul@1.43.2
|
|
41
|
+
- @haneullabs/wallet-standard@0.19.5
|
|
42
|
+
|
|
43
|
+
## 0.1.7
|
|
44
|
+
|
|
45
|
+
### Patch Changes
|
|
46
|
+
|
|
47
|
+
- @haneullabs/haneul@1.43.1
|
|
48
|
+
- @haneullabs/wallet-standard@0.19.4
|
|
49
|
+
|
|
50
|
+
## 0.1.6
|
|
51
|
+
|
|
52
|
+
### Patch Changes
|
|
53
|
+
|
|
54
|
+
- Updated dependencies [f3b19a7]
|
|
55
|
+
- Updated dependencies [bf9f85c]
|
|
56
|
+
- @haneullabs/haneul@1.43.0
|
|
57
|
+
- @haneullabs/wallet-standard@0.19.3
|
|
58
|
+
|
|
59
|
+
## 0.1.5
|
|
60
|
+
|
|
61
|
+
### Patch Changes
|
|
62
|
+
|
|
63
|
+
- Updated dependencies [98c8a27]
|
|
64
|
+
- @haneullabs/haneul@1.42.0
|
|
65
|
+
- @haneullabs/wallet-standard@0.19.2
|
|
66
|
+
|
|
67
|
+
## 0.1.4
|
|
68
|
+
|
|
69
|
+
### Patch Changes
|
|
70
|
+
|
|
71
|
+
- Updated dependencies [d554cd2]
|
|
72
|
+
- Updated dependencies [04fcfbc]
|
|
73
|
+
- @haneullabs/haneul@1.41.0
|
|
74
|
+
- @haneullabs/wallet-standard@0.19.1
|
|
75
|
+
|
|
76
|
+
## 0.1.3
|
|
77
|
+
|
|
78
|
+
### Patch Changes
|
|
79
|
+
|
|
80
|
+
- Updated dependencies [f5fc0c0]
|
|
81
|
+
- Updated dependencies [f5fc0c0]
|
|
82
|
+
- @haneullabs/wallet-standard@0.19.0
|
|
83
|
+
- @haneullabs/haneul@1.40.0
|
|
84
|
+
|
|
85
|
+
## 0.1.2
|
|
86
|
+
|
|
87
|
+
### Patch Changes
|
|
88
|
+
|
|
89
|
+
- Updated dependencies [a9f9035]
|
|
90
|
+
- @haneullabs/haneul@1.39.1
|
|
91
|
+
- @haneullabs/wallet-standard@0.18.1
|
|
92
|
+
|
|
93
|
+
## 0.1.1
|
|
94
|
+
|
|
95
|
+
### Patch Changes
|
|
96
|
+
|
|
97
|
+
- Updated dependencies [566b9ae]
|
|
98
|
+
- Updated dependencies [ca92487]
|
|
99
|
+
- Updated dependencies [5ab3c0a]
|
|
100
|
+
- @haneullabs/wallet-standard@0.18.0
|
|
101
|
+
- @haneullabs/haneul@1.39.0
|
|
102
|
+
|
|
103
|
+
## 0.1.0
|
|
104
|
+
|
|
105
|
+
### Minor Changes
|
|
106
|
+
|
|
107
|
+
- bda17bf: Initial Release
|
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# `@haneullabs/walletconnect-wallet`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { registerWalletConnectWallet, WalletConnectWallet, WALLETCONNECT_WALLET_NAME, type GetClient, } from './wallet/index.js';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var index_exports = {};
|
|
20
|
+
__export(index_exports, {
|
|
21
|
+
WALLETCONNECT_WALLET_NAME: () => import_wallet.WALLETCONNECT_WALLET_NAME,
|
|
22
|
+
WalletConnectWallet: () => import_wallet.WalletConnectWallet,
|
|
23
|
+
registerWalletConnectWallet: () => import_wallet.registerWalletConnectWallet
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(index_exports);
|
|
26
|
+
var import_wallet = require("./wallet/index.js");
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n\tregisterWalletConnectWallet,\n\tWalletConnectWallet,\n\tWALLETCONNECT_WALLET_NAME,\n\ttype GetClient,\n} from './wallet/index.js';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAKO;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { StandardConnectFeature, StandardDisconnectFeature, StandardEventsFeature, HaneulSignAndExecuteTransactionFeature, HaneulSignPersonalMessageFeature, HaneulSignTransactionFeature, Wallet } from '@haneullabs/wallet-standard';
|
|
2
|
+
import { ReadonlyWalletAccount } from '@haneullabs/wallet-standard';
|
|
3
|
+
import type { InferOutput } from 'valibot';
|
|
4
|
+
import type { Experimental_BaseClient } from '@haneullabs/haneul/experimental';
|
|
5
|
+
type SupportedNetwork = 'mainnet' | 'testnet' | 'devnet' | 'localnet';
|
|
6
|
+
export type GetClient = (network: SupportedNetwork) => Experimental_BaseClient;
|
|
7
|
+
type WalletMetadata = InferOutput<typeof WalletMetadataSchema>;
|
|
8
|
+
export declare const WALLETCONNECT_WALLET_NAME: "WalletConnect";
|
|
9
|
+
declare const WalletMetadataSchema: import("valibot").ObjectSchema<{
|
|
10
|
+
readonly id: import("valibot").StringSchema<"Wallet ID is required">;
|
|
11
|
+
readonly walletName: import("valibot").StringSchema<"Wallet name is required">;
|
|
12
|
+
readonly icon: import("valibot").StringSchema<"Icon must be a valid wallet icon format">;
|
|
13
|
+
readonly enabled: import("valibot").BooleanSchema<"Enabled is required">;
|
|
14
|
+
}, undefined>;
|
|
15
|
+
export declare class WalletConnectWallet implements Wallet {
|
|
16
|
+
#private;
|
|
17
|
+
get name(): string;
|
|
18
|
+
get id(): string;
|
|
19
|
+
get icon(): `data:image/svg+xml;base64,${string}` | `data:image/webp;base64,${string}` | `data:image/png;base64,${string}` | `data:image/gif;base64,${string}`;
|
|
20
|
+
get version(): "1.0.0";
|
|
21
|
+
get chains(): readonly ["haneul:devnet", "haneul:testnet", "haneul:localnet", "haneul:mainnet"];
|
|
22
|
+
get accounts(): ReadonlyWalletAccount[];
|
|
23
|
+
get features(): StandardConnectFeature & StandardDisconnectFeature & StandardEventsFeature & HaneulSignTransactionFeature & HaneulSignPersonalMessageFeature & HaneulSignAndExecuteTransactionFeature;
|
|
24
|
+
constructor({ metadata, projectId, getClient, }: {
|
|
25
|
+
metadata: WalletMetadata;
|
|
26
|
+
projectId: string;
|
|
27
|
+
getClient: GetClient;
|
|
28
|
+
});
|
|
29
|
+
init(): Promise<void>;
|
|
30
|
+
updateMetadata(metadata: WalletMetadata): void;
|
|
31
|
+
}
|
|
32
|
+
type RegisterWalletConnectWallet = {
|
|
33
|
+
projectId: string;
|
|
34
|
+
getClient: GetClient;
|
|
35
|
+
metadata?: WalletMetadata;
|
|
36
|
+
};
|
|
37
|
+
export declare function registerWalletConnectWallet({ projectId, getClient, metadata, }: RegisterWalletConnectWallet): {
|
|
38
|
+
wallet: WalletConnectWallet;
|
|
39
|
+
unregister: () => void;
|
|
40
|
+
} | undefined;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __typeError = (msg) => {
|
|
9
|
+
throw TypeError(msg);
|
|
10
|
+
};
|
|
11
|
+
var __export = (target, all) => {
|
|
12
|
+
for (var name in all)
|
|
13
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from))
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
24
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
25
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
26
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
27
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
28
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
29
|
+
mod
|
|
30
|
+
));
|
|
31
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
32
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
33
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
34
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
35
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
36
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
37
|
+
var wallet_exports = {};
|
|
38
|
+
__export(wallet_exports, {
|
|
39
|
+
WALLETCONNECT_WALLET_NAME: () => WALLETCONNECT_WALLET_NAME,
|
|
40
|
+
WalletConnectWallet: () => WalletConnectWallet,
|
|
41
|
+
registerWalletConnectWallet: () => registerWalletConnectWallet
|
|
42
|
+
});
|
|
43
|
+
module.exports = __toCommonJS(wallet_exports);
|
|
44
|
+
var import_utils = require("@haneullabs/haneul/utils");
|
|
45
|
+
var import_wallet_standard = require("@haneullabs/wallet-standard");
|
|
46
|
+
var import_mitt = __toESM(require("mitt"));
|
|
47
|
+
var import_valibot = require("valibot");
|
|
48
|
+
var import_appkit_universal_connector = require("@reown/appkit-universal-connector");
|
|
49
|
+
var import_transactions = require("@haneullabs/haneul/transactions");
|
|
50
|
+
var _id, _events, _accounts, _walletName, _icon, _connector, _projectId, _getClient, _signTransaction, _signAndExecuteTransaction, _signPersonalMessage, _on, _WalletConnectWallet_instances, setAccounts_fn, _getAccounts, _connect, _getPreviouslyAuthorizedAccounts, _disconnect;
|
|
51
|
+
const icon = "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZD0ibTAgMGg0MDB2NDAwaC00MDB6Ii8+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCgjYSkiPjxjaXJjbGUgY3g9IjIwMCIgY3k9IjIwMCIgZmlsbD0iIzE0MTQxNCIgcj0iMTk5LjUiIHN0cm9rZT0iIzNiNDA0MCIvPjxwYXRoIGQ9Im0xMjIuNTE5IDE0OC45NjVjNDIuNzkxLTQxLjcyOSAxMTIuMTcxLTQxLjcyOSAxNTQuOTYyIDBsNS4xNSA1LjAyMmMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtMTcuNjE3IDE3LjE4Yy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTcuMDg3LTYuOTExYy0yOS44NTMtMjkuMTExLTc4LjI1My0yOS4xMTEtMTA4LjEwNiAwbC03LjU5IDcuNDAxYy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTE3LjYxNy0xNy4xOGMtMi4xNC0yLjA4Ni0yLjE0LTUuNDY5IDAtNy41NTV6bTE5MS4zOTcgMzUuNTI5IDE1LjY3OSAxNS4yOWMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtNzAuNyA2OC45NDRjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTUwLjE3OC00OC45MzFjLS41MzUtLjUyMi0xLjQwMi0uNTIyLTEuOTM3IDBsLTUwLjE3OCA0OC45MzFjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTcwLjcwMTUtNjguOTQ1Yy0yLjEzOTYtMi4wODYtMi4xMzk2LTUuNDY5IDAtNy41NTVsMTUuNjc5NS0xNS4yOWMyLjEzOTYtMi4wODcgNS42MDg1LTIuMDg3IDcuNzQ4MSAwbDUwLjE3ODkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3Ny00OC45MzJjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMGw1MC4xNzkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3OS00OC45MzFjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMHoiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+";
|
|
52
|
+
const WALLETCONNECT_WALLET_NAME = "WalletConnect";
|
|
53
|
+
const walletAccountFeatures = [
|
|
54
|
+
"sui:signTransaction",
|
|
55
|
+
"sui:signAndExecuteTransaction",
|
|
56
|
+
"sui:signPersonalMessage"
|
|
57
|
+
];
|
|
58
|
+
const SUI_CAIP_CHAIN_IDS = ["sui:devnet", "sui:testnet", "sui:localnet", "sui:mainnet"];
|
|
59
|
+
const SUICaipNetworks = SUI_CAIP_CHAIN_IDS.map((chain) => {
|
|
60
|
+
const [_, chainId] = chain.split(":");
|
|
61
|
+
return {
|
|
62
|
+
id: chainId,
|
|
63
|
+
chainNamespace: "sui",
|
|
64
|
+
caipNetworkId: chain,
|
|
65
|
+
name: `Haneul ${chainId}`,
|
|
66
|
+
nativeCurrency: { name: "HANEUL", symbol: "HANEUL", decimals: 9 },
|
|
67
|
+
rpcUrls: { default: { http: [`https://haneul-${chainId}.gateway.tatum.io`] } }
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
const WalletMetadataSchema = (0, import_valibot.object)({
|
|
71
|
+
id: (0, import_valibot.string)("Wallet ID is required"),
|
|
72
|
+
walletName: (0, import_valibot.string)("Wallet name is required"),
|
|
73
|
+
icon: (0, import_valibot.string)("Icon must be a valid wallet icon format"),
|
|
74
|
+
enabled: (0, import_valibot.boolean)("Enabled is required")
|
|
75
|
+
});
|
|
76
|
+
const toStandardAccounts = (accounts, chains) => {
|
|
77
|
+
return accounts.map((account) => {
|
|
78
|
+
return new import_wallet_standard.ReadonlyWalletAccount({
|
|
79
|
+
address: account.address,
|
|
80
|
+
chains,
|
|
81
|
+
features: walletAccountFeatures,
|
|
82
|
+
publicKey: (0, import_utils.fromBase64)(account.pubkey)
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
class WalletConnectWallet {
|
|
87
|
+
constructor({
|
|
88
|
+
metadata,
|
|
89
|
+
projectId,
|
|
90
|
+
getClient
|
|
91
|
+
}) {
|
|
92
|
+
__privateAdd(this, _WalletConnectWallet_instances);
|
|
93
|
+
__privateAdd(this, _id);
|
|
94
|
+
__privateAdd(this, _events);
|
|
95
|
+
__privateAdd(this, _accounts);
|
|
96
|
+
__privateAdd(this, _walletName);
|
|
97
|
+
__privateAdd(this, _icon);
|
|
98
|
+
__privateAdd(this, _connector);
|
|
99
|
+
__privateAdd(this, _projectId);
|
|
100
|
+
__privateAdd(this, _getClient);
|
|
101
|
+
__privateAdd(this, _signTransaction, async ({ transaction, account, chain }) => {
|
|
102
|
+
const tx = await transaction.toJSON();
|
|
103
|
+
const response = await __privateGet(this, _connector)?.request(
|
|
104
|
+
{
|
|
105
|
+
method: "sui_signTransaction",
|
|
106
|
+
params: {
|
|
107
|
+
transaction: tx,
|
|
108
|
+
address: account.address
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
chain
|
|
112
|
+
);
|
|
113
|
+
return {
|
|
114
|
+
bytes: response.transactionBytes,
|
|
115
|
+
signature: response.signature
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
__privateAdd(this, _signAndExecuteTransaction, async ({
|
|
119
|
+
transaction,
|
|
120
|
+
account,
|
|
121
|
+
chain
|
|
122
|
+
}) => {
|
|
123
|
+
const [, network] = chain.split(":");
|
|
124
|
+
const client = __privateGet(this, _getClient).call(this, network);
|
|
125
|
+
const data = await transaction.toJSON();
|
|
126
|
+
const parsedTransaction = import_transactions.Transaction.from(data);
|
|
127
|
+
const bytes = await parsedTransaction.build({ client });
|
|
128
|
+
const response = await __privateGet(this, _connector)?.request(
|
|
129
|
+
{
|
|
130
|
+
method: "sui_signAndExecuteTransaction",
|
|
131
|
+
params: {
|
|
132
|
+
transaction: data,
|
|
133
|
+
address: account.address
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
chain
|
|
137
|
+
);
|
|
138
|
+
const tx = await client.core.waitForTransaction({
|
|
139
|
+
digest: response.digest
|
|
140
|
+
});
|
|
141
|
+
return {
|
|
142
|
+
digest: response.digest,
|
|
143
|
+
signature: tx.transaction.signatures[0] ?? "",
|
|
144
|
+
bytes: (0, import_utils.toBase64)(bytes),
|
|
145
|
+
effects: tx.transaction.effects.bcs ? (0, import_utils.toBase64)(tx.transaction.effects.bcs) : ""
|
|
146
|
+
};
|
|
147
|
+
});
|
|
148
|
+
__privateAdd(this, _signPersonalMessage, async ({ message, account, chain }) => {
|
|
149
|
+
const messageString = new TextDecoder().decode(message);
|
|
150
|
+
const response = await __privateGet(this, _connector)?.request(
|
|
151
|
+
{
|
|
152
|
+
method: "sui_signPersonalMessage",
|
|
153
|
+
params: {
|
|
154
|
+
message: messageString,
|
|
155
|
+
address: account.address
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
chain ?? "haneul:mainnet"
|
|
159
|
+
);
|
|
160
|
+
return {
|
|
161
|
+
signature: response.signature,
|
|
162
|
+
bytes: (0, import_utils.toBase64)(message)
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
__privateAdd(this, _on, (event, listener) => {
|
|
166
|
+
__privateGet(this, _events).on(event, listener);
|
|
167
|
+
return () => __privateGet(this, _events).off(event, listener);
|
|
168
|
+
});
|
|
169
|
+
__privateAdd(this, _getAccounts, async () => {
|
|
170
|
+
let accounts = JSON.parse(
|
|
171
|
+
__privateGet(this, _connector)?.provider?.session?.sessionProperties?.["sui_getAccounts"] ?? "[]"
|
|
172
|
+
);
|
|
173
|
+
if (!accounts?.length) {
|
|
174
|
+
accounts = await __privateGet(this, _connector)?.request({ method: "sui_getAccounts" }, "haneul:mainnet");
|
|
175
|
+
}
|
|
176
|
+
return toStandardAccounts(accounts, this.chains);
|
|
177
|
+
});
|
|
178
|
+
__privateAdd(this, _connect, async (input) => {
|
|
179
|
+
if (input?.silent) {
|
|
180
|
+
const accounts2 = await __privateGet(this, _getPreviouslyAuthorizedAccounts).call(this);
|
|
181
|
+
if (accounts2.length > 0) {
|
|
182
|
+
__privateMethod(this, _WalletConnectWallet_instances, setAccounts_fn).call(this, accounts2);
|
|
183
|
+
return { accounts: accounts2 };
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (!__privateGet(this, _connector)?.provider?.session?.namespaces?.sui) {
|
|
187
|
+
await __privateGet(this, _connector)?.connect();
|
|
188
|
+
}
|
|
189
|
+
const accounts = await __privateGet(this, _getAccounts).call(this);
|
|
190
|
+
__privateMethod(this, _WalletConnectWallet_instances, setAccounts_fn).call(this, accounts);
|
|
191
|
+
return { accounts: this.accounts };
|
|
192
|
+
});
|
|
193
|
+
__privateAdd(this, _getPreviouslyAuthorizedAccounts, async () => {
|
|
194
|
+
const session = __privateGet(this, _connector)?.provider?.session;
|
|
195
|
+
if (!session?.namespaces?.sui) {
|
|
196
|
+
return [];
|
|
197
|
+
}
|
|
198
|
+
const accounts = JSON.parse(session.sessionProperties?.["sui_getAccounts"] ?? "[]");
|
|
199
|
+
return toStandardAccounts(accounts, import_wallet_standard.HANEUL_CHAINS);
|
|
200
|
+
});
|
|
201
|
+
__privateAdd(this, _disconnect, async () => {
|
|
202
|
+
__privateGet(this, _connector)?.disconnect();
|
|
203
|
+
__privateMethod(this, _WalletConnectWallet_instances, setAccounts_fn).call(this, []);
|
|
204
|
+
});
|
|
205
|
+
__privateSet(this, _id, metadata.id);
|
|
206
|
+
__privateSet(this, _accounts, []);
|
|
207
|
+
__privateSet(this, _events, (0, import_mitt.default)());
|
|
208
|
+
__privateSet(this, _walletName, metadata.walletName);
|
|
209
|
+
__privateSet(this, _icon, icon);
|
|
210
|
+
__privateSet(this, _projectId, projectId);
|
|
211
|
+
__privateSet(this, _getClient, getClient);
|
|
212
|
+
this.init();
|
|
213
|
+
}
|
|
214
|
+
get name() {
|
|
215
|
+
return __privateGet(this, _walletName);
|
|
216
|
+
}
|
|
217
|
+
get id() {
|
|
218
|
+
return __privateGet(this, _id);
|
|
219
|
+
}
|
|
220
|
+
get icon() {
|
|
221
|
+
return __privateGet(this, _icon);
|
|
222
|
+
}
|
|
223
|
+
get version() {
|
|
224
|
+
return "1.0.0";
|
|
225
|
+
}
|
|
226
|
+
get chains() {
|
|
227
|
+
return import_wallet_standard.HANEUL_CHAINS;
|
|
228
|
+
}
|
|
229
|
+
get accounts() {
|
|
230
|
+
return __privateGet(this, _accounts);
|
|
231
|
+
}
|
|
232
|
+
get features() {
|
|
233
|
+
return {
|
|
234
|
+
[import_wallet_standard.StandardConnect]: {
|
|
235
|
+
version: "1.0.0",
|
|
236
|
+
connect: __privateGet(this, _connect)
|
|
237
|
+
},
|
|
238
|
+
[import_wallet_standard.StandardDisconnect]: {
|
|
239
|
+
version: "1.0.0",
|
|
240
|
+
disconnect: __privateGet(this, _disconnect)
|
|
241
|
+
},
|
|
242
|
+
[import_wallet_standard.StandardEvents]: {
|
|
243
|
+
version: "1.0.0",
|
|
244
|
+
on: __privateGet(this, _on)
|
|
245
|
+
},
|
|
246
|
+
[import_wallet_standard.HaneulSignTransaction]: {
|
|
247
|
+
version: "2.0.0",
|
|
248
|
+
signTransaction: __privateGet(this, _signTransaction)
|
|
249
|
+
},
|
|
250
|
+
[import_wallet_standard.HaneulSignPersonalMessage]: {
|
|
251
|
+
version: "1.1.0",
|
|
252
|
+
signPersonalMessage: __privateGet(this, _signPersonalMessage)
|
|
253
|
+
},
|
|
254
|
+
[import_wallet_standard.HaneulSignAndExecuteTransaction]: {
|
|
255
|
+
version: "2.0.0",
|
|
256
|
+
signAndExecuteTransaction: __privateGet(this, _signAndExecuteTransaction)
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
async init() {
|
|
261
|
+
__privateSet(this, _connector, await import_appkit_universal_connector.UniversalConnector.init({
|
|
262
|
+
projectId: __privateGet(this, _projectId),
|
|
263
|
+
// TODO: Use dapp metadata
|
|
264
|
+
metadata: {
|
|
265
|
+
name: __privateGet(this, _walletName),
|
|
266
|
+
description: "WalletConnect",
|
|
267
|
+
icon: __privateGet(this, _icon)
|
|
268
|
+
},
|
|
269
|
+
networks: [
|
|
270
|
+
{
|
|
271
|
+
namespace: "sui",
|
|
272
|
+
methods: [
|
|
273
|
+
"sui_signTransaction",
|
|
274
|
+
"sui_signPersonalMessage",
|
|
275
|
+
"sui_signAndExecuteTransaction",
|
|
276
|
+
"sui_getAccounts"
|
|
277
|
+
],
|
|
278
|
+
events: ["chainChanged", "accountsChanged"],
|
|
279
|
+
chains: SUICaipNetworks
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
modalConfig: {
|
|
283
|
+
themeVariables: {
|
|
284
|
+
"--w3m-z-index": 2147483647
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}));
|
|
288
|
+
__privateSet(this, _accounts, await __privateGet(this, _getPreviouslyAuthorizedAccounts).call(this));
|
|
289
|
+
}
|
|
290
|
+
updateMetadata(metadata) {
|
|
291
|
+
__privateSet(this, _id, metadata.id);
|
|
292
|
+
__privateSet(this, _walletName, metadata.walletName);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
_id = new WeakMap();
|
|
296
|
+
_events = new WeakMap();
|
|
297
|
+
_accounts = new WeakMap();
|
|
298
|
+
_walletName = new WeakMap();
|
|
299
|
+
_icon = new WeakMap();
|
|
300
|
+
_connector = new WeakMap();
|
|
301
|
+
_projectId = new WeakMap();
|
|
302
|
+
_getClient = new WeakMap();
|
|
303
|
+
_signTransaction = new WeakMap();
|
|
304
|
+
_signAndExecuteTransaction = new WeakMap();
|
|
305
|
+
_signPersonalMessage = new WeakMap();
|
|
306
|
+
_on = new WeakMap();
|
|
307
|
+
_WalletConnectWallet_instances = new WeakSet();
|
|
308
|
+
setAccounts_fn = function(accounts) {
|
|
309
|
+
__privateSet(this, _accounts, accounts);
|
|
310
|
+
__privateGet(this, _events).emit("change", { accounts: this.accounts });
|
|
311
|
+
};
|
|
312
|
+
_getAccounts = new WeakMap();
|
|
313
|
+
_connect = new WeakMap();
|
|
314
|
+
_getPreviouslyAuthorizedAccounts = new WeakMap();
|
|
315
|
+
_disconnect = new WeakMap();
|
|
316
|
+
function registerWalletConnectWallet({
|
|
317
|
+
projectId,
|
|
318
|
+
getClient,
|
|
319
|
+
metadata
|
|
320
|
+
}) {
|
|
321
|
+
const wallets = (0, import_wallet_standard.getWallets)();
|
|
322
|
+
let unregister = null;
|
|
323
|
+
wallets.on("register", (wallet) => {
|
|
324
|
+
if (wallet.id === "walletconnect") {
|
|
325
|
+
unregister?.();
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
const extension = wallets.get().find((wallet) => wallet.id === "walletconnect");
|
|
329
|
+
if (extension) {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
const fullMetadata = {
|
|
333
|
+
id: "walletconnect",
|
|
334
|
+
walletName: "Wallet Connect",
|
|
335
|
+
icon,
|
|
336
|
+
enabled: true,
|
|
337
|
+
...metadata
|
|
338
|
+
};
|
|
339
|
+
const walletConnectWalletInstance = new WalletConnectWallet({
|
|
340
|
+
metadata: fullMetadata,
|
|
341
|
+
projectId,
|
|
342
|
+
getClient
|
|
343
|
+
});
|
|
344
|
+
unregister = wallets.register(walletConnectWalletInstance);
|
|
345
|
+
walletConnectWalletInstance.updateMetadata({
|
|
346
|
+
...fullMetadata,
|
|
347
|
+
enabled: true
|
|
348
|
+
});
|
|
349
|
+
return {
|
|
350
|
+
wallet: walletConnectWalletInstance,
|
|
351
|
+
unregister
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/wallet/index.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64, toBase64 } from '@haneullabs/haneul/utils';\nimport type {\n\tIdentifierArray,\n\tStandardConnectFeature,\n\tStandardConnectMethod,\n\tStandardDisconnectFeature,\n\tStandardDisconnectMethod,\n\tStandardEventsFeature,\n\tStandardEventsListeners,\n\tStandardEventsOnMethod,\n\tHaneulSignAndExecuteTransactionFeature,\n\tHaneulSignAndExecuteTransactionMethod,\n\tHaneulSignPersonalMessageFeature,\n\tHaneulSignPersonalMessageMethod,\n\tHaneulSignTransactionFeature,\n\tHaneulSignTransactionMethod,\n\tWallet,\n\tWalletIcon,\n} from '@haneullabs/wallet-standard';\nimport {\n\tgetWallets,\n\tReadonlyWalletAccount,\n\tStandardConnect,\n\tStandardDisconnect,\n\tStandardEvents,\n\tHANEUL_CHAINS,\n\tHaneulSignAndExecuteTransaction,\n\tHaneulSignPersonalMessage,\n\tHaneulSignTransaction,\n} from '@haneullabs/wallet-standard';\nimport type { Emitter } from 'mitt';\nimport mitt from 'mitt';\nimport type { InferOutput } from 'valibot';\nimport { boolean, object, string } from 'valibot';\nimport type { CustomCaipNetwork } from '@reown/appkit-universal-connector';\nimport { UniversalConnector } from '@reown/appkit-universal-connector';\nimport type { Experimental_BaseClient } from '@haneullabs/haneul/experimental';\nimport { Transaction } from '@haneullabs/haneul/transactions';\n\n// -- Types --\ntype WalletEventsMap = {\n\t[E in keyof StandardEventsListeners]: Parameters<StandardEventsListeners[E]>[0];\n};\n\ntype SupportedNetwork = 'mainnet' | 'testnet' | 'devnet' | 'localnet';\n\nexport type GetClient = (network: SupportedNetwork) => Experimental_BaseClient;\ntype WalletMetadata = InferOutput<typeof WalletMetadataSchema>;\n\n// -- Constants --\nconst icon =\n\t'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZD0ibTAgMGg0MDB2NDAwaC00MDB6Ii8+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCgjYSkiPjxjaXJjbGUgY3g9IjIwMCIgY3k9IjIwMCIgZmlsbD0iIzE0MTQxNCIgcj0iMTk5LjUiIHN0cm9rZT0iIzNiNDA0MCIvPjxwYXRoIGQ9Im0xMjIuNTE5IDE0OC45NjVjNDIuNzkxLTQxLjcyOSAxMTIuMTcxLTQxLjcyOSAxNTQuOTYyIDBsNS4xNSA1LjAyMmMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtMTcuNjE3IDE3LjE4Yy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTcuMDg3LTYuOTExYy0yOS44NTMtMjkuMTExLTc4LjI1My0yOS4xMTEtMTA4LjEwNiAwbC03LjU5IDcuNDAxYy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTE3LjYxNy0xNy4xOGMtMi4xNC0yLjA4Ni0yLjE0LTUuNDY5IDAtNy41NTV6bTE5MS4zOTcgMzUuNTI5IDE1LjY3OSAxNS4yOWMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtNzAuNyA2OC45NDRjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTUwLjE3OC00OC45MzFjLS41MzUtLjUyMi0xLjQwMi0uNTIyLTEuOTM3IDBsLTUwLjE3OCA0OC45MzFjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTcwLjcwMTUtNjguOTQ1Yy0yLjEzOTYtMi4wODYtMi4xMzk2LTUuNDY5IDAtNy41NTVsMTUuNjc5NS0xNS4yOWMyLjEzOTYtMi4wODcgNS42MDg1LTIuMDg3IDcuNzQ4MSAwbDUwLjE3ODkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3Ny00OC45MzJjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMGw1MC4xNzkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3OS00OC45MzFjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMHoiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+';\nexport const WALLETCONNECT_WALLET_NAME = 'WalletConnect' as const;\nconst walletAccountFeatures = [\n\t'sui:signTransaction',\n\t'sui:signAndExecuteTransaction',\n\t'sui:signPersonalMessage',\n] as const;\n\n// WalletConnect uses CAIP-2 standard which requires 'sui:' namespace for external protocol compatibility\n// TODO: Register 'haneul' namespace with CASA (Chain Agnostic Standards Alliance) before mainnet launch\nconst SUI_CAIP_CHAIN_IDS = ['sui:devnet', 'sui:testnet', 'sui:localnet', 'sui:mainnet'] as const;\n\nconst SUICaipNetworks: CustomCaipNetwork<'sui'>[] = SUI_CAIP_CHAIN_IDS.map((chain) => {\n\tconst [_, chainId] = chain.split(':');\n\treturn {\n\t\tid: chainId,\n\t\tchainNamespace: 'sui',\n\t\tcaipNetworkId: chain,\n\t\tname: `Haneul ${chainId}`,\n\t\tnativeCurrency: { name: 'HANEUL', symbol: 'HANEUL', decimals: 9 },\n\t\trpcUrls: { default: { http: [`https://haneul-${chainId}.gateway.tatum.io`] } },\n\t};\n});\n\nconst WalletMetadataSchema = object({\n\tid: string('Wallet ID is required'),\n\twalletName: string('Wallet name is required'),\n\ticon: string('Icon must be a valid wallet icon format'),\n\tenabled: boolean('Enabled is required'),\n});\n\nconst toStandardAccounts = (\n\taccounts: { address: string; pubkey: string }[],\n\tchains: IdentifierArray,\n) => {\n\treturn accounts.map((account) => {\n\t\treturn new ReadonlyWalletAccount({\n\t\t\taddress: account.address,\n\t\t\tchains,\n\t\t\tfeatures: walletAccountFeatures,\n\t\t\tpublicKey: fromBase64(account.pubkey),\n\t\t});\n\t});\n};\n\n// -- Wallet --\nexport class WalletConnectWallet implements Wallet {\n\t#id: string;\n\t#events: Emitter<WalletEventsMap>;\n\t#accounts: ReadonlyWalletAccount[];\n\t#walletName: string;\n\t#icon: WalletIcon;\n\t#connector?: UniversalConnector;\n\t#projectId: string;\n\t#getClient: GetClient;\n\n\tget name() {\n\t\treturn this.#walletName;\n\t}\n\n\tget id() {\n\t\treturn this.#id;\n\t}\n\n\tget icon() {\n\t\treturn this.#icon;\n\t}\n\n\tget version() {\n\t\treturn '1.0.0' as const;\n\t}\n\n\tget chains() {\n\t\treturn HANEUL_CHAINS;\n\t}\n\n\tget accounts() {\n\t\treturn this.#accounts;\n\t}\n\n\tget features(): StandardConnectFeature &\n\t\tStandardDisconnectFeature &\n\t\tStandardEventsFeature &\n\t\tHaneulSignTransactionFeature &\n\t\tHaneulSignPersonalMessageFeature &\n\t\tHaneulSignAndExecuteTransactionFeature {\n\t\treturn {\n\t\t\t[StandardConnect]: {\n\t\t\t\tversion: '1.0.0',\n\t\t\t\tconnect: this.#connect,\n\t\t\t},\n\t\t\t[StandardDisconnect]: {\n\t\t\t\tversion: '1.0.0',\n\t\t\t\tdisconnect: this.#disconnect,\n\t\t\t},\n\t\t\t[StandardEvents]: {\n\t\t\t\tversion: '1.0.0',\n\t\t\t\ton: this.#on,\n\t\t\t},\n\t\t\t[HaneulSignTransaction]: {\n\t\t\t\tversion: '2.0.0',\n\t\t\t\tsignTransaction: this.#signTransaction,\n\t\t\t},\n\t\t\t[HaneulSignPersonalMessage]: {\n\t\t\t\tversion: '1.1.0',\n\t\t\t\tsignPersonalMessage: this.#signPersonalMessage,\n\t\t\t},\n\t\t\t[HaneulSignAndExecuteTransaction]: {\n\t\t\t\tversion: '2.0.0',\n\t\t\t\tsignAndExecuteTransaction: this.#signAndExecuteTransaction,\n\t\t\t},\n\t\t};\n\t}\n\n\tconstructor({\n\t\tmetadata,\n\t\tprojectId,\n\t\tgetClient,\n\t}: {\n\t\tmetadata: WalletMetadata;\n\t\tprojectId: string;\n\t\tgetClient: GetClient;\n\t}) {\n\t\tthis.#id = metadata.id;\n\t\tthis.#accounts = [];\n\t\tthis.#events = mitt();\n\t\tthis.#walletName = metadata.walletName;\n\t\tthis.#icon = icon;\n\t\tthis.#projectId = projectId;\n\t\tthis.#getClient = getClient;\n\t\tthis.init();\n\t}\n\n\tasync init() {\n\t\tthis.#connector = await UniversalConnector.init({\n\t\t\tprojectId: this.#projectId,\n\n\t\t\t// TODO: Use dapp metadata\n\t\t\tmetadata: {\n\t\t\t\tname: this.#walletName,\n\t\t\t\tdescription: 'WalletConnect',\n\t\t\t\ticon: this.#icon,\n\t\t\t},\n\t\t\tnetworks: [\n\t\t\t\t{\n\t\t\t\t\tnamespace: 'sui',\n\t\t\t\t\tmethods: [\n\t\t\t\t\t\t'sui_signTransaction',\n\t\t\t\t\t\t'sui_signPersonalMessage',\n\t\t\t\t\t\t'sui_signAndExecuteTransaction',\n\t\t\t\t\t\t'sui_getAccounts',\n\t\t\t\t\t],\n\t\t\t\t\tevents: ['chainChanged', 'accountsChanged'],\n\t\t\t\t\tchains: SUICaipNetworks,\n\t\t\t\t},\n\t\t\t],\n\t\t\tmodalConfig: {\n\t\t\t\tthemeVariables: {\n\t\t\t\t\t'--w3m-z-index': 2147483647,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t\tthis.#accounts = await this.#getPreviouslyAuthorizedAccounts();\n\t}\n\n\t#signTransaction: HaneulSignTransactionMethod = async ({ transaction, account, chain }) => {\n\t\tconst tx = await transaction.toJSON();\n\n\t\tconst response = (await this.#connector?.request(\n\t\t\t{\n\t\t\t\tmethod: 'sui_signTransaction',\n\t\t\t\tparams: {\n\t\t\t\t\ttransaction: tx,\n\t\t\t\t\taddress: account.address,\n\t\t\t\t},\n\t\t\t},\n\t\t\tchain,\n\t\t)) as { transactionBytes: string; signature: string };\n\n\t\treturn {\n\t\t\tbytes: response.transactionBytes,\n\t\t\tsignature: response.signature,\n\t\t};\n\t};\n\n\t#signAndExecuteTransaction: HaneulSignAndExecuteTransactionMethod = async ({\n\t\ttransaction,\n\t\taccount,\n\t\tchain,\n\t}) => {\n\t\tconst [, network] = chain.split(':');\n\t\tconst client = this.#getClient(network as SupportedNetwork);\n\t\tconst data = await transaction.toJSON();\n\t\tconst parsedTransaction = Transaction.from(data);\n\t\tconst bytes = await parsedTransaction.build({ client });\n\t\tconst response = (await this.#connector?.request(\n\t\t\t{\n\t\t\t\tmethod: 'sui_signAndExecuteTransaction',\n\t\t\t\tparams: {\n\t\t\t\t\ttransaction: data,\n\t\t\t\t\taddress: account.address,\n\t\t\t\t},\n\t\t\t},\n\t\t\tchain,\n\t\t)) as { digest: string };\n\n\t\tconst tx = await client.core.waitForTransaction({\n\t\t\tdigest: response.digest,\n\t\t});\n\n\t\treturn {\n\t\t\tdigest: response.digest,\n\t\t\tsignature: tx.transaction.signatures[0] ?? '',\n\t\t\tbytes: toBase64(bytes),\n\t\t\teffects: tx.transaction.effects.bcs ? toBase64(tx.transaction.effects.bcs) : '',\n\t\t};\n\t};\n\n\t#signPersonalMessage: HaneulSignPersonalMessageMethod = async ({ message, account, chain }) => {\n\t\tconst messageString = new TextDecoder().decode(message);\n\t\tconst response = (await this.#connector?.request(\n\t\t\t{\n\t\t\t\tmethod: 'sui_signPersonalMessage',\n\t\t\t\tparams: {\n\t\t\t\t\tmessage: messageString,\n\t\t\t\t\taddress: account.address,\n\t\t\t\t},\n\t\t\t},\n\t\t\tchain ?? 'haneul:mainnet',\n\t\t)) as { signature: string };\n\n\t\treturn {\n\t\t\tsignature: response.signature,\n\t\t\tbytes: toBase64(message),\n\t\t};\n\t};\n\n\t#on: StandardEventsOnMethod = (event, listener) => {\n\t\tthis.#events.on(event, listener);\n\t\treturn () => this.#events.off(event, listener);\n\t};\n\n\t#setAccounts(accounts: ReadonlyWalletAccount[]) {\n\t\tthis.#accounts = accounts;\n\t\tthis.#events.emit('change', { accounts: this.accounts });\n\t}\n\n\t#getAccounts = async () => {\n\t\tlet accounts: { address: string; pubkey: string }[] | undefined = JSON.parse(\n\t\t\tthis.#connector?.provider?.session?.sessionProperties?.['sui_getAccounts'] ?? '[]',\n\t\t);\n\n\t\tif (!accounts?.length) {\n\t\t\taccounts = (await this.#connector?.request({ method: 'sui_getAccounts' }, 'haneul:mainnet')) as {\n\t\t\t\taddress: string;\n\t\t\t\tpubkey: string;\n\t\t\t}[];\n\t\t}\n\n\t\treturn toStandardAccounts(accounts, this.chains);\n\t};\n\n\t#connect: StandardConnectMethod = async (input) => {\n\t\tif (input?.silent) {\n\t\t\tconst accounts = await this.#getPreviouslyAuthorizedAccounts();\n\t\t\tif (accounts.length > 0) {\n\t\t\t\tthis.#setAccounts(accounts);\n\t\t\t\treturn { accounts };\n\t\t\t}\n\t\t}\n\n\t\tif (!this.#connector?.provider?.session?.namespaces?.sui) {\n\t\t\tawait this.#connector?.connect();\n\t\t}\n\n\t\tconst accounts = await this.#getAccounts();\n\t\tthis.#setAccounts(accounts);\n\n\t\treturn { accounts: this.accounts };\n\t};\n\n\t#getPreviouslyAuthorizedAccounts = async () => {\n\t\tconst session = this.#connector?.provider?.session;\n\t\tif (!session?.namespaces?.sui) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst accounts = JSON.parse(session.sessionProperties?.['sui_getAccounts'] ?? '[]') as {\n\t\t\taddress: string;\n\t\t\tpubkey: string;\n\t\t}[];\n\n\t\treturn toStandardAccounts(accounts, HANEUL_CHAINS);\n\t};\n\n\t#disconnect: StandardDisconnectMethod = async () => {\n\t\tthis.#connector?.disconnect();\n\t\tthis.#setAccounts([]);\n\t};\n\n\tupdateMetadata(metadata: WalletMetadata) {\n\t\tthis.#id = metadata.id;\n\t\tthis.#walletName = metadata.walletName;\n\t}\n}\ntype RegisterWalletConnectWallet = {\n\tprojectId: string;\n\tgetClient: GetClient;\n\tmetadata?: WalletMetadata;\n};\n\nexport function registerWalletConnectWallet({\n\tprojectId,\n\tgetClient,\n\tmetadata,\n}: RegisterWalletConnectWallet) {\n\tconst wallets = getWallets();\n\n\tlet unregister: (() => void) | null = null;\n\n\t// listen for wallet registration\n\twallets.on('register', (wallet: Wallet) => {\n\t\tif (wallet.id === 'walletconnect') {\n\t\t\tunregister?.();\n\t\t}\n\t});\n\n\tconst extension = wallets.get().find((wallet: Wallet) => wallet.id === 'walletconnect');\n\tif (extension) {\n\t\treturn;\n\t}\n\n\tconst fullMetadata = {\n\t\tid: 'walletconnect',\n\t\twalletName: 'Wallet Connect',\n\t\ticon,\n\t\tenabled: true,\n\t\t...metadata,\n\t};\n\n\tconst walletConnectWalletInstance = new WalletConnectWallet({\n\t\tmetadata: fullMetadata,\n\t\tprojectId,\n\t\tgetClient,\n\t});\n\tunregister = wallets.register(walletConnectWalletInstance);\n\n\twalletConnectWalletInstance.updateMetadata({\n\t\t...fullMetadata,\n\t\tenabled: true,\n\t});\n\n\treturn {\n\t\twallet: walletConnectWalletInstance,\n\t\tunregister,\n\t};\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["accounts", "mitt"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { registerWalletConnectWallet, WalletConnectWallet, WALLETCONNECT_WALLET_NAME, type GetClient, } from './wallet/index.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n\tregisterWalletConnectWallet,\n\tWalletConnectWallet,\n\tWALLETCONNECT_WALLET_NAME,\n\ttype GetClient,\n} from './wallet/index.js';\n"],
|
|
5
|
+
"mappings": "AAGA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OAEM;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|