@kaspacom/swap-sdk 1.0.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/LICENSE +21 -0
- package/README.md +246 -0
- package/dist/controllers/swap-sdk.controller.d.ts +23 -0
- package/dist/controllers/swap-sdk.controller.d.ts.map +1 -0
- package/dist/controllers/swap-sdk.controller.js +166 -0
- package/dist/controllers/swap-sdk.controller.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/services/swap.service.d.ts +103 -0
- package/dist/services/swap.service.d.ts.map +1 -0
- package/dist/services/swap.service.js +550 -0
- package/dist/services/swap.service.js.map +1 -0
- package/dist/services/wallet.service.d.ts +27 -0
- package/dist/services/wallet.service.d.ts.map +1 -0
- package/dist/services/wallet.service.js +169 -0
- package/dist/services/wallet.service.js.map +1 -0
- package/dist/swap-sdk.js +33120 -0
- package/dist/types/index.d.ts +70 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/networks.d.ts +14 -0
- package/dist/types/networks.d.ts.map +1 -0
- package/dist/types/networks.js +20 -0
- package/dist/types/networks.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { BrowserProvider, JsonRpcProvider } from 'ethers';
|
|
2
|
+
export class WalletService {
|
|
3
|
+
constructor(config, injectedProvider) {
|
|
4
|
+
this.signer = null;
|
|
5
|
+
this.address = null;
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.networkProvider = new JsonRpcProvider(config.rpcUrl, {
|
|
8
|
+
name: config.name,
|
|
9
|
+
chainId: config.chainId,
|
|
10
|
+
}, config.additionalJsonRpcApiProviderOptionsOptions);
|
|
11
|
+
this.injectedProvider = injectedProvider;
|
|
12
|
+
this.walletProvider = new BrowserProvider(this.injectedProvider);
|
|
13
|
+
// Auto-connect if wallet provider is provided
|
|
14
|
+
if (this.injectedProvider) {
|
|
15
|
+
this.connect(this.injectedProvider);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async connect(injectedProvider) {
|
|
19
|
+
if (injectedProvider) {
|
|
20
|
+
this.injectedProvider = injectedProvider;
|
|
21
|
+
this.walletProvider = new BrowserProvider(this.injectedProvider);
|
|
22
|
+
}
|
|
23
|
+
if (!this.injectedProvider) {
|
|
24
|
+
throw new Error('No Ethereum wallet detected. Please install MetaMask or another Ethereum wallet.');
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
// Request account access
|
|
28
|
+
const accounts = await this.injectedProvider.request({
|
|
29
|
+
method: 'eth_requestAccounts'
|
|
30
|
+
});
|
|
31
|
+
if (accounts.length === 0) {
|
|
32
|
+
throw new Error('No accounts found');
|
|
33
|
+
}
|
|
34
|
+
this.address = accounts[0];
|
|
35
|
+
// Check if we're on the correct network
|
|
36
|
+
const chainId = await this.injectedProvider.request({
|
|
37
|
+
method: 'eth_chainId'
|
|
38
|
+
});
|
|
39
|
+
const currentChainId = parseInt(chainId, 16);
|
|
40
|
+
if (currentChainId !== this.config.chainId) {
|
|
41
|
+
// Try to switch to the correct network
|
|
42
|
+
try {
|
|
43
|
+
await this.injectedProvider.request({
|
|
44
|
+
method: 'wallet_switchEthereumChain',
|
|
45
|
+
params: [{ chainId: `0x${this.config.chainId.toString(16)}` }]
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (switchError) {
|
|
49
|
+
// If the network doesn't exist, try to add it
|
|
50
|
+
if (switchError.code === 4902) {
|
|
51
|
+
await this.injectedProvider.request({
|
|
52
|
+
method: 'wallet_addEthereumChain',
|
|
53
|
+
params: [{
|
|
54
|
+
chainId: `0x${this.config.chainId.toString(16)}`,
|
|
55
|
+
chainName: this.config.name,
|
|
56
|
+
nativeCurrency: {
|
|
57
|
+
name: 'ETH',
|
|
58
|
+
symbol: 'ETH',
|
|
59
|
+
decimals: 18
|
|
60
|
+
},
|
|
61
|
+
rpcUrls: [this.config.rpcUrl],
|
|
62
|
+
blockExplorerUrls: this.config.blockExplorerUrl ? [this.config.blockExplorerUrl] : []
|
|
63
|
+
}]
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
throw new Error(`Please switch to ${this.config.name} network`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Update injectedProvider and signer
|
|
72
|
+
this.signer = await this.walletProvider.getSigner();
|
|
73
|
+
// Emit the wallet address if callback is provided
|
|
74
|
+
if (this.onConnectWalletCallback) {
|
|
75
|
+
this.onConnectWalletCallback(this.address);
|
|
76
|
+
}
|
|
77
|
+
return this.address;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (error.code === 4001) {
|
|
81
|
+
throw new Error('User rejected wallet connection');
|
|
82
|
+
}
|
|
83
|
+
throw new Error(`Failed to connect wallet: ${error.message}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
disconnect() {
|
|
87
|
+
this.address = null;
|
|
88
|
+
this.signer = null;
|
|
89
|
+
// networkProvider remains for read-only operations
|
|
90
|
+
if (this.onDisconnectWalletCallback) {
|
|
91
|
+
this.onDisconnectWalletCallback();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
isConnected() {
|
|
95
|
+
return !!this.address && !!this.signer;
|
|
96
|
+
}
|
|
97
|
+
getAddress() {
|
|
98
|
+
return this.address;
|
|
99
|
+
}
|
|
100
|
+
getProvider() {
|
|
101
|
+
return this.walletProvider || this.networkProvider;
|
|
102
|
+
}
|
|
103
|
+
getSigner() {
|
|
104
|
+
return this.signer;
|
|
105
|
+
}
|
|
106
|
+
// Helper method to get current chain ID
|
|
107
|
+
async getCurrentChainId() {
|
|
108
|
+
if (!this.injectedProvider) {
|
|
109
|
+
throw new Error('No Ethereum wallet detected');
|
|
110
|
+
}
|
|
111
|
+
const chainId = await this.injectedProvider.request({
|
|
112
|
+
method: 'eth_chainId'
|
|
113
|
+
});
|
|
114
|
+
return parseInt(chainId, 16);
|
|
115
|
+
}
|
|
116
|
+
// Register a callback for wallet connected
|
|
117
|
+
onConnectWallet(cb) {
|
|
118
|
+
this.onConnectWalletCallback = cb;
|
|
119
|
+
}
|
|
120
|
+
// Register a callback for wallet disconnected
|
|
121
|
+
onDisconnectWallet(cb) {
|
|
122
|
+
this.onDisconnectWalletCallback = cb;
|
|
123
|
+
}
|
|
124
|
+
// Call the connect callback
|
|
125
|
+
emitConnectWallet(address) {
|
|
126
|
+
if (this.onConnectWalletCallback) {
|
|
127
|
+
this.onConnectWalletCallback(address);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Call the disconnect callback
|
|
131
|
+
emitDisconnectWallet() {
|
|
132
|
+
if (this.onDisconnectWalletCallback) {
|
|
133
|
+
this.onDisconnectWalletCallback();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Connect wallet and emit event with address
|
|
137
|
+
async connectWallet() {
|
|
138
|
+
if (this.injectedProvider) {
|
|
139
|
+
try {
|
|
140
|
+
const accounts = await this.injectedProvider.request({
|
|
141
|
+
method: 'eth_requestAccounts'
|
|
142
|
+
});
|
|
143
|
+
if (accounts.length > 0 && typeof accounts[0] === 'string') {
|
|
144
|
+
const address = accounts[0];
|
|
145
|
+
this.address = address;
|
|
146
|
+
this.emitConnectWallet(address);
|
|
147
|
+
return address;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
throw new Error('No accounts found');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
console.error('Failed to connect wallet:', error);
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
throw new Error('No Ethereum wallet detected. Please connect a wallet provider.');
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Disconnect wallet and emit event
|
|
163
|
+
disconnectWallet() {
|
|
164
|
+
this.address = null;
|
|
165
|
+
this.signer = null;
|
|
166
|
+
this.emitDisconnectWallet();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=wallet.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.service.js","sourceRoot":"","sources":["../../src/services/wallet.service.ts"],"names":[],"mappings":"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"}
|