@cookill/wallet-adapter 2.5.4 → 3.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/README.md +275 -196
- package/dist/ErrorBoundary.cjs +53 -110
- package/dist/ErrorBoundary.cjs.map +1 -1
- package/dist/ErrorBoundary.d.cts +11 -7
- package/dist/ErrorBoundary.d.ts +11 -7
- package/dist/ErrorBoundary.js +50 -85
- package/dist/ErrorBoundary.js.map +1 -1
- package/dist/LoadingStates.cjs +134 -267
- package/dist/LoadingStates.cjs.map +1 -1
- package/dist/LoadingStates.d.cts +11 -15
- package/dist/LoadingStates.d.ts +11 -15
- package/dist/LoadingStates.js +129 -239
- package/dist/LoadingStates.js.map +1 -1
- package/dist/index.cjs +483 -161
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +330 -62
- package/dist/index.d.ts +330 -62
- package/dist/index.js +463 -127
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +438 -1024
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +1 -118
- package/dist/react.d.ts +1 -118
- package/dist/react.js +430 -969
- package/dist/react.js.map +1 -1
- package/dist/standard.cjs +127 -121
- package/dist/standard.cjs.map +1 -1
- package/dist/standard.d.cts +6 -44
- package/dist/standard.d.ts +6 -44
- package/dist/standard.js +118 -91
- package/dist/standard.js.map +1 -1
- package/package.json +42 -36
package/dist/standard.cjs
CHANGED
|
@@ -1,40 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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 });
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
// src/core/provider.ts
|
|
6
|
+
function getProvider() {
|
|
7
|
+
if (typeof window === "undefined") return void 0;
|
|
8
|
+
try {
|
|
9
|
+
const provider = window.rialo;
|
|
10
|
+
if (provider?.isRialo) return provider;
|
|
11
|
+
} catch {
|
|
15
12
|
}
|
|
16
|
-
return
|
|
17
|
-
}
|
|
18
|
-
|
|
13
|
+
return void 0;
|
|
14
|
+
}
|
|
15
|
+
function withTimeout(promise, ms, errorMessage = "Operation timed out") {
|
|
16
|
+
let timeoutId;
|
|
17
|
+
const timeout = new Promise((_, reject) => {
|
|
18
|
+
timeoutId = setTimeout(() => reject(new Error(errorMessage)), ms);
|
|
19
|
+
});
|
|
20
|
+
return Promise.race([promise, timeout]).finally(() => {
|
|
21
|
+
if (timeoutId) clearTimeout(timeoutId);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// src/core/utils.ts
|
|
26
|
+
function normalizeAccounts(accounts) {
|
|
27
|
+
if (!Array.isArray(accounts)) return [];
|
|
28
|
+
return accounts.map((acc) => {
|
|
29
|
+
if (typeof acc === "string") {
|
|
30
|
+
return { address: acc, publicKey: acc };
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
address: acc.address,
|
|
34
|
+
publicKey: acc.publicKey || acc.address,
|
|
35
|
+
label: acc.label
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
}
|
|
19
39
|
|
|
20
40
|
// src/standard.ts
|
|
21
|
-
var standard_exports = {};
|
|
22
|
-
__export(standard_exports, {
|
|
23
|
-
RIALO_SIGN_ALL_TRANSACTIONS: () => RIALO_SIGN_ALL_TRANSACTIONS,
|
|
24
|
-
RIALO_SIGN_AND_SEND_TRANSACTION: () => RIALO_SIGN_AND_SEND_TRANSACTION,
|
|
25
|
-
RIALO_SIGN_MESSAGE: () => RIALO_SIGN_MESSAGE,
|
|
26
|
-
RIALO_SIGN_TRANSACTION: () => RIALO_SIGN_TRANSACTION,
|
|
27
|
-
RialoWalletStandard: () => RialoWalletStandard,
|
|
28
|
-
default: () => standard_default,
|
|
29
|
-
getRialoWallet: () => getRialoWallet,
|
|
30
|
-
isRialoWalletRegistered: () => isRialoWalletRegistered,
|
|
31
|
-
registerRialoWallet: () => registerRialoWallet
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(standard_exports);
|
|
34
41
|
var RIALO_SIGN_TRANSACTION = "rialo:signTransaction";
|
|
35
42
|
var RIALO_SIGN_AND_SEND_TRANSACTION = "rialo:signAndSendTransaction";
|
|
36
43
|
var RIALO_SIGN_MESSAGE = "rialo:signMessage";
|
|
37
|
-
var RIALO_SIGN_ALL_TRANSACTIONS = "rialo:signAllTransactions";
|
|
38
44
|
var RialoWalletStandard = class {
|
|
39
45
|
constructor() {
|
|
40
46
|
this.version = "1.0.0";
|
|
@@ -46,32 +52,41 @@ var RialoWalletStandard = class {
|
|
|
46
52
|
this._eventListeners = {};
|
|
47
53
|
this._connected = false;
|
|
48
54
|
this._cleanupFns = [];
|
|
55
|
+
// Features
|
|
49
56
|
this.features = {
|
|
50
57
|
"standard:connect": {
|
|
51
58
|
connect: async () => {
|
|
52
59
|
const provider = this.provider;
|
|
53
|
-
if (!provider) throw new Error("
|
|
54
|
-
const result = await
|
|
55
|
-
|
|
56
|
-
|
|
60
|
+
if (!provider) throw new Error("Sheep Wallet not installed");
|
|
61
|
+
const result = await withTimeout(
|
|
62
|
+
provider.connect(),
|
|
63
|
+
2e4,
|
|
64
|
+
"Connection timed out"
|
|
57
65
|
);
|
|
66
|
+
const accounts = normalizeAccounts(result);
|
|
67
|
+
this._accounts = accounts.map((acc) => this._toStandardAccount(acc));
|
|
58
68
|
this._connected = true;
|
|
59
69
|
try {
|
|
60
70
|
const network = await provider.getNetwork();
|
|
61
71
|
this._activeChain = `rialo:${network}`;
|
|
62
72
|
} catch {
|
|
63
73
|
}
|
|
64
|
-
this.
|
|
74
|
+
this._emit("change", { accounts: this._accounts });
|
|
65
75
|
return { accounts: this._accounts };
|
|
66
76
|
}
|
|
67
77
|
},
|
|
68
78
|
"standard:disconnect": {
|
|
69
79
|
disconnect: async () => {
|
|
70
80
|
const provider = this.provider;
|
|
71
|
-
if (provider)
|
|
81
|
+
if (provider) {
|
|
82
|
+
try {
|
|
83
|
+
await provider.disconnect();
|
|
84
|
+
} catch {
|
|
85
|
+
}
|
|
86
|
+
}
|
|
72
87
|
this._accounts = [];
|
|
73
88
|
this._connected = false;
|
|
74
|
-
this.
|
|
89
|
+
this._emit("change", { accounts: [] });
|
|
75
90
|
}
|
|
76
91
|
},
|
|
77
92
|
"standard:events": {
|
|
@@ -79,53 +94,56 @@ var RialoWalletStandard = class {
|
|
|
79
94
|
if (!this._eventListeners[event]) {
|
|
80
95
|
this._eventListeners[event] = /* @__PURE__ */ new Set();
|
|
81
96
|
}
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
return () =>
|
|
97
|
+
const set = this._eventListeners[event];
|
|
98
|
+
set.add(listener);
|
|
99
|
+
return () => set.delete(listener);
|
|
85
100
|
}
|
|
86
101
|
},
|
|
87
102
|
[RIALO_SIGN_TRANSACTION]: {
|
|
88
103
|
signTransaction: async (input) => {
|
|
89
104
|
if (!this._connected) throw new Error("Wallet not connected");
|
|
90
105
|
const provider = this.provider;
|
|
91
|
-
if (!provider) throw new Error("
|
|
92
|
-
const
|
|
106
|
+
if (!provider) throw new Error("Wallet not available");
|
|
107
|
+
const b64 = btoa(String.fromCharCode(...input.transaction));
|
|
93
108
|
const result = await provider.signTransaction({
|
|
94
|
-
|
|
95
|
-
|
|
109
|
+
to: "",
|
|
110
|
+
value: "0",
|
|
111
|
+
data: b64
|
|
96
112
|
});
|
|
97
|
-
const
|
|
98
|
-
return { signedTransaction:
|
|
113
|
+
const signedBytes = result.rawTransaction ? Uint8Array.from(atob(result.rawTransaction), (c) => c.charCodeAt(0)) : input.transaction;
|
|
114
|
+
return { signedTransaction: signedBytes };
|
|
99
115
|
}
|
|
100
116
|
},
|
|
101
117
|
[RIALO_SIGN_AND_SEND_TRANSACTION]: {
|
|
102
118
|
signAndSendTransaction: async (input) => {
|
|
103
119
|
if (!this._connected) throw new Error("Wallet not connected");
|
|
104
120
|
const provider = this.provider;
|
|
105
|
-
if (!provider) throw new Error("
|
|
106
|
-
const
|
|
121
|
+
if (!provider) throw new Error("Wallet not available");
|
|
122
|
+
const b64 = btoa(String.fromCharCode(...input.transaction));
|
|
107
123
|
const result = await provider.signAndSendTransaction({
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
124
|
+
to: "",
|
|
125
|
+
value: "0",
|
|
126
|
+
data: b64
|
|
111
127
|
});
|
|
112
|
-
return { signature: result.hash
|
|
128
|
+
return { signature: result.hash };
|
|
113
129
|
}
|
|
114
130
|
},
|
|
115
131
|
[RIALO_SIGN_MESSAGE]: {
|
|
116
132
|
signMessage: async (input) => {
|
|
117
133
|
if (!this._connected) throw new Error("Wallet not connected");
|
|
118
134
|
const provider = this.provider;
|
|
119
|
-
if (!provider) throw new Error("
|
|
135
|
+
if (!provider) throw new Error("Wallet not available");
|
|
120
136
|
const messageStr = new TextDecoder().decode(input.message);
|
|
121
137
|
const result = await provider.signMessage(messageStr);
|
|
122
138
|
const sigHex = result.signature.startsWith("0x") ? result.signature.slice(2) : result.signature;
|
|
123
|
-
const
|
|
124
|
-
|
|
139
|
+
const sigBytes = new Uint8Array(
|
|
140
|
+
(sigHex.match(/.{1,2}/g) || []).map((b) => parseInt(b, 16))
|
|
141
|
+
);
|
|
142
|
+
return { signature: sigBytes, signedMessage: input.message };
|
|
125
143
|
}
|
|
126
144
|
}
|
|
127
145
|
};
|
|
128
|
-
this.
|
|
146
|
+
this._setupProviderEvents();
|
|
129
147
|
}
|
|
130
148
|
get chains() {
|
|
131
149
|
return [...this._chains];
|
|
@@ -134,75 +152,68 @@ var RialoWalletStandard = class {
|
|
|
134
152
|
return [...this._accounts];
|
|
135
153
|
}
|
|
136
154
|
get provider() {
|
|
137
|
-
|
|
138
|
-
return window.rialo;
|
|
155
|
+
return getProvider();
|
|
139
156
|
}
|
|
140
|
-
|
|
157
|
+
_setupProviderEvents() {
|
|
141
158
|
const provider = this.provider;
|
|
142
159
|
if (!provider) return;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
160
|
+
this._cleanupFns.push(
|
|
161
|
+
provider.on("accountsChanged", (data) => {
|
|
162
|
+
const accounts = normalizeAccounts(data);
|
|
163
|
+
this._accounts = accounts.map((acc) => this._toStandardAccount(acc));
|
|
164
|
+
this._emit("change", { accounts: this._accounts });
|
|
165
|
+
})
|
|
166
|
+
);
|
|
167
|
+
this._cleanupFns.push(
|
|
168
|
+
provider.on("networkChanged", (data) => {
|
|
169
|
+
const { network } = data;
|
|
170
|
+
this._activeChain = `rialo:${network}`;
|
|
171
|
+
this._emit("change", { chains: [this._activeChain] });
|
|
172
|
+
})
|
|
173
|
+
);
|
|
174
|
+
this._cleanupFns.push(
|
|
175
|
+
provider.on("disconnect", () => {
|
|
176
|
+
this._connected = false;
|
|
177
|
+
this._accounts = [];
|
|
178
|
+
this._emit("change", { accounts: [] });
|
|
179
|
+
})
|
|
180
|
+
);
|
|
159
181
|
}
|
|
160
|
-
|
|
182
|
+
_emit(event, data) {
|
|
161
183
|
const listeners = this._eventListeners[event];
|
|
162
184
|
if (listeners) {
|
|
163
|
-
listeners.forEach((
|
|
164
|
-
listener(data);
|
|
165
|
-
});
|
|
185
|
+
listeners.forEach((fn) => fn(data));
|
|
166
186
|
}
|
|
167
187
|
}
|
|
168
|
-
|
|
188
|
+
_toStandardAccount(acc) {
|
|
169
189
|
const encoder = new TextEncoder();
|
|
170
190
|
const publicKey = new Uint8Array(32);
|
|
171
|
-
const
|
|
172
|
-
publicKey.set(
|
|
191
|
+
const bytes = encoder.encode(acc.address);
|
|
192
|
+
publicKey.set(bytes.slice(0, 32));
|
|
173
193
|
return {
|
|
174
|
-
address,
|
|
194
|
+
address: acc.address,
|
|
175
195
|
publicKey,
|
|
176
196
|
chains: this._chains,
|
|
177
197
|
features: [
|
|
178
198
|
RIALO_SIGN_TRANSACTION,
|
|
179
199
|
RIALO_SIGN_AND_SEND_TRANSACTION,
|
|
180
|
-
RIALO_SIGN_MESSAGE
|
|
181
|
-
RIALO_SIGN_ALL_TRANSACTIONS
|
|
200
|
+
RIALO_SIGN_MESSAGE
|
|
182
201
|
],
|
|
183
|
-
label: "Sheep Account"
|
|
202
|
+
label: acc.label || "Sheep Account"
|
|
184
203
|
};
|
|
185
204
|
}
|
|
186
|
-
bytesToBase64(bytes) {
|
|
187
|
-
return btoa(String.fromCharCode(...bytes));
|
|
188
|
-
}
|
|
189
|
-
base64ToBytes(base64) {
|
|
190
|
-
return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
|
|
191
|
-
}
|
|
192
|
-
hexToBytes(hex) {
|
|
193
|
-
const matches = hex.match(/.{1,2}/g);
|
|
194
|
-
return new Uint8Array(matches?.map((byte) => parseInt(byte, 16)) || []);
|
|
195
|
-
}
|
|
196
205
|
setActiveChain(chain) {
|
|
197
206
|
this._activeChain = chain;
|
|
198
|
-
this.
|
|
207
|
+
this._emit("change", { chains: [chain] });
|
|
199
208
|
}
|
|
200
209
|
destroy() {
|
|
201
|
-
this._cleanupFns.forEach((fn) =>
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
210
|
+
this._cleanupFns.forEach((fn) => {
|
|
211
|
+
try {
|
|
212
|
+
fn();
|
|
213
|
+
} catch {
|
|
214
|
+
}
|
|
205
215
|
});
|
|
216
|
+
this._cleanupFns = [];
|
|
206
217
|
}
|
|
207
218
|
};
|
|
208
219
|
var walletInstance = null;
|
|
@@ -211,14 +222,11 @@ function registerRialoWallet() {
|
|
|
211
222
|
walletInstance = new RialoWalletStandard();
|
|
212
223
|
if (typeof window !== "undefined") {
|
|
213
224
|
try {
|
|
214
|
-
|
|
225
|
+
window.dispatchEvent(new CustomEvent("wallet-standard:register-wallet", {
|
|
215
226
|
detail: {
|
|
216
|
-
register: (
|
|
217
|
-
callback(walletInstance);
|
|
218
|
-
}
|
|
227
|
+
register: (cb) => cb(walletInstance)
|
|
219
228
|
}
|
|
220
|
-
});
|
|
221
|
-
window.dispatchEvent(registerEvent);
|
|
229
|
+
}));
|
|
222
230
|
window.dispatchEvent(new CustomEvent("eip6963:announceProvider", {
|
|
223
231
|
detail: {
|
|
224
232
|
info: {
|
|
@@ -230,8 +238,7 @@ function registerRialoWallet() {
|
|
|
230
238
|
provider: walletInstance
|
|
231
239
|
}
|
|
232
240
|
}));
|
|
233
|
-
} catch
|
|
234
|
-
console.warn("Failed to dispatch wallet registration event:", error);
|
|
241
|
+
} catch {
|
|
235
242
|
}
|
|
236
243
|
Object.defineProperty(window, "__rialoWalletStandard", {
|
|
237
244
|
value: walletInstance,
|
|
@@ -255,15 +262,14 @@ if (typeof window !== "undefined") {
|
|
|
255
262
|
}
|
|
256
263
|
}
|
|
257
264
|
var standard_default = RialoWalletStandard;
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
});
|
|
265
|
+
|
|
266
|
+
exports.RIALO_SIGN_AND_SEND_TRANSACTION = RIALO_SIGN_AND_SEND_TRANSACTION;
|
|
267
|
+
exports.RIALO_SIGN_MESSAGE = RIALO_SIGN_MESSAGE;
|
|
268
|
+
exports.RIALO_SIGN_TRANSACTION = RIALO_SIGN_TRANSACTION;
|
|
269
|
+
exports.RialoWalletStandard = RialoWalletStandard;
|
|
270
|
+
exports.default = standard_default;
|
|
271
|
+
exports.getRialoWallet = getRialoWallet;
|
|
272
|
+
exports.isRialoWalletRegistered = isRialoWalletRegistered;
|
|
273
|
+
exports.registerRialoWallet = registerRialoWallet;
|
|
274
|
+
//# sourceMappingURL=standard.cjs.map
|
|
269
275
|
//# sourceMappingURL=standard.cjs.map
|
package/dist/standard.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/standard.ts"],"sourcesContent":["/**\n * @cookill/wallet-adapter/standard v2.5.0\n * Wallet Standard implementation for advanced integrations\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';\n\nexport interface RialoWalletAccount {\n address: string;\n publicKey: Uint8Array;\n chains: RialoChain[];\n features: string[];\n label?: string;\n icon?: string;\n}\n\n// Feature identifiers\nexport const RIALO_SIGN_TRANSACTION = 'rialo:signTransaction' as const;\nexport const RIALO_SIGN_AND_SEND_TRANSACTION = 'rialo:signAndSendTransaction' as const;\nexport const RIALO_SIGN_MESSAGE = 'rialo:signMessage' as const;\nexport const RIALO_SIGN_ALL_TRANSACTIONS = 'rialo:signAllTransactions' as const;\n\n// Transaction input/output\nexport interface SignTransactionInput {\n account: RialoWalletAccount;\n transaction: Uint8Array;\n chain?: RialoChain;\n}\n\nexport interface SignTransactionOutput {\n signedTransaction: Uint8Array;\n}\n\nexport interface SignAndSendTransactionInput {\n account: RialoWalletAccount;\n transaction: Uint8Array;\n chain?: RialoChain;\n options?: {\n skipPreflight?: boolean;\n preflightCommitment?: 'processed' | 'confirmed' | 'finalized';\n maxRetries?: number;\n };\n}\n\nexport interface SignAndSendTransactionOutput {\n signature: string;\n}\n\nexport interface SignMessageInput {\n account: RialoWalletAccount;\n message: Uint8Array;\n}\n\nexport interface SignMessageOutput {\n signature: Uint8Array;\n signedMessage: Uint8Array;\n}\n\n// Events\nexport interface WalletStandardEvents {\n change: {\n accounts?: RialoWalletAccount[];\n chains?: RialoChain[];\n };\n}\n\n// ============================================================================\n// Feature Interfaces\n// ============================================================================\n\nexport interface StandardConnectFeature {\n 'standard:connect': {\n connect(): Promise<{ accounts: RialoWalletAccount[] }>;\n };\n}\n\nexport interface StandardDisconnectFeature {\n 'standard:disconnect': {\n disconnect(): Promise<void>;\n };\n}\n\nexport interface StandardEventsFeature {\n 'standard:events': {\n on<E extends keyof WalletStandardEvents>(\n event: E,\n listener: (data: WalletStandardEvents[E]) => void\n ): () => void;\n };\n}\n\nexport interface RialoSignTransactionFeature {\n [RIALO_SIGN_TRANSACTION]: {\n signTransaction(input: SignTransactionInput): Promise<SignTransactionOutput>;\n };\n}\n\nexport interface RialoSignAndSendTransactionFeature {\n [RIALO_SIGN_AND_SEND_TRANSACTION]: {\n signAndSendTransaction(input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput>;\n };\n}\n\nexport interface RialoSignMessageFeature {\n [RIALO_SIGN_MESSAGE]: {\n signMessage(input: SignMessageInput): Promise<SignMessageOutput>;\n };\n}\n\n// ============================================================================\n// Wallet Interface\n// ============================================================================\n\nexport interface RialoWallet {\n readonly version: '1.0.0';\n readonly name: string;\n readonly icon: string;\n readonly chains: RialoChain[];\n readonly accounts: RialoWalletAccount[];\n readonly features: StandardConnectFeature &\n StandardDisconnectFeature &\n StandardEventsFeature &\n RialoSignTransactionFeature &\n RialoSignAndSendTransactionFeature &\n RialoSignMessageFeature;\n}\n\n// ============================================================================\n// Wallet Standard Implementation\n// ============================================================================\n\ntype EventListenerMap = {\n [K in keyof WalletStandardEvents]?: Set<(data: WalletStandardEvents[K]) => void>;\n};\n\ninterface RialoInpageProvider {\n isRialo: boolean;\n version: string;\n connect(): Promise<Array<string | { address: string; publicKey?: string }>>;\n disconnect(): Promise<void>;\n signTransaction(tx: Record<string, unknown>): Promise<{ signature: string; rawTransaction?: string }>;\n signAndSendTransaction(tx: Record<string, unknown>): Promise<{ hash: string; signature?: string }>;\n signMessage(message: string): Promise<{ signature: string; message?: string }>;\n getNetwork(): Promise<string>;\n switchNetwork(network: string): Promise<{ success: boolean }>;\n on(event: string, callback: (data: unknown) => void): () => void;\n}\n\nexport class RialoWalletStandard implements RialoWallet {\n readonly version = '1.0.0' as const;\n readonly name = 'Sheep Wallet';\n readonly icon = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjMDExQjI5Ii8+PHRleHQgeD0iNTAlIiB5PSI1NSUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zaXplPSIxNiIgZmlsbD0iIzZFQjlBOCI+Uzwvc2VsZj48L3N2Zz4=';\n\n private _accounts: RialoWalletAccount[] = [];\n private _chains: RialoChain[] = ['rialo:mainnet', 'rialo:testnet', 'rialo:devnet', 'rialo:localnet'];\n private _activeChain: RialoChain = 'rialo:devnet';\n private _eventListeners: EventListenerMap = {};\n private _connected = false;\n private _cleanupFns: Array<() => void> = [];\n\n get chains(): RialoChain[] {\n return [...this._chains];\n }\n\n get accounts(): RialoWalletAccount[] {\n return [...this._accounts];\n }\n\n private get provider(): RialoInpageProvider | undefined {\n if (typeof window === 'undefined') return undefined;\n return (window as unknown as { rialo?: RialoInpageProvider }).rialo;\n }\n\n constructor() {\n this.setupProviderEvents();\n }\n\n private setupProviderEvents() {\n const provider = this.provider;\n if (!provider) return;\n\n const cleanup1 = provider.on('accountsChanged', (data: unknown) => {\n const accounts = data as Array<string | { address: string }>;\n this._accounts = accounts.map(acc => this.createAccount(typeof acc === 'string' ? acc : acc.address));\n this.emit('change', { accounts: this._accounts });\n });\n\n const cleanup2 = provider.on('networkChanged', (data: unknown) => {\n const { network } = data as { network: string };\n this._activeChain = `rialo:${network}` as RialoChain;\n this.emit('change', { chains: [this._activeChain] });\n });\n\n const cleanup3 = provider.on('disconnect', () => {\n this._connected = false;\n this._accounts = [];\n this.emit('change', { accounts: [] });\n });\n\n this._cleanupFns.push(cleanup1, cleanup2, cleanup3);\n }\n\n readonly features = {\n 'standard:connect': {\n connect: async (): Promise<{ accounts: RialoWalletAccount[] }> => {\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not installed');\n\n const result = await provider.connect();\n this._accounts = result.map((acc) => \n this.createAccount(typeof acc === 'string' ? acc : acc.address)\n );\n this._connected = true;\n \n // Get current network\n try {\n const network = await provider.getNetwork();\n this._activeChain = `rialo:${network}` as RialoChain;\n } catch {}\n\n this.emit('change', { accounts: this._accounts });\n return { accounts: this._accounts };\n },\n },\n 'standard:disconnect': {\n disconnect: async (): Promise<void> => {\n const provider = this.provider;\n if (provider) await provider.disconnect();\n this._accounts = [];\n this._connected = false;\n this.emit('change', { accounts: [] });\n },\n },\n 'standard:events': {\n on: <E extends keyof WalletStandardEvents>(\n event: E,\n listener: (data: WalletStandardEvents[E]) => void\n ): (() => void) => {\n if (!this._eventListeners[event]) {\n this._eventListeners[event] = new Set();\n }\n const listeners = this._eventListeners[event] as Set<(data: WalletStandardEvents[E]) => void>;\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n },\n [RIALO_SIGN_TRANSACTION]: {\n signTransaction: async (input: SignTransactionInput): Promise<SignTransactionOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not available');\n\n const transactionBase64 = this.bytesToBase64(input.transaction);\n const result = await provider.signTransaction({\n transaction: transactionBase64,\n chain: input.chain || this._activeChain,\n });\n\n const signedTxBytes = result.rawTransaction\n ? this.base64ToBytes(result.rawTransaction)\n : input.transaction;\n\n return { signedTransaction: signedTxBytes };\n },\n },\n [RIALO_SIGN_AND_SEND_TRANSACTION]: {\n signAndSendTransaction: async (input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not available');\n\n const transactionBase64 = this.bytesToBase64(input.transaction);\n const result = await provider.signAndSendTransaction({\n transaction: transactionBase64,\n chain: input.chain || this._activeChain,\n options: input.options,\n });\n\n return { signature: result.hash || result.signature || '' };\n },\n },\n [RIALO_SIGN_MESSAGE]: {\n signMessage: async (input: SignMessageInput): Promise<SignMessageOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not available');\n\n const messageStr = new TextDecoder().decode(input.message);\n const result = await provider.signMessage(messageStr);\n\n const sigHex = result.signature.startsWith('0x') \n ? result.signature.slice(2) \n : result.signature;\n const signatureBytes = this.hexToBytes(sigHex);\n\n return { signature: signatureBytes, signedMessage: input.message };\n },\n },\n };\n\n private emit<E extends keyof WalletStandardEvents>(event: E, data: WalletStandardEvents[E]): void {\n const listeners = this._eventListeners[event];\n if (listeners) {\n listeners.forEach((listener) => {\n (listener as (data: WalletStandardEvents[E]) => void)(data);\n });\n }\n }\n\n private createAccount(address: string): RialoWalletAccount {\n const encoder = new TextEncoder();\n const publicKey = new Uint8Array(32);\n const addressBytes = encoder.encode(address);\n publicKey.set(addressBytes.slice(0, 32));\n\n return {\n address,\n publicKey,\n chains: this._chains,\n features: [\n RIALO_SIGN_TRANSACTION, \n RIALO_SIGN_AND_SEND_TRANSACTION, \n RIALO_SIGN_MESSAGE,\n RIALO_SIGN_ALL_TRANSACTIONS,\n ],\n label: 'Sheep Account',\n };\n }\n\n private bytesToBase64(bytes: Uint8Array): string {\n return btoa(String.fromCharCode(...bytes));\n }\n\n private base64ToBytes(base64: string): Uint8Array {\n return Uint8Array.from(atob(base64), c => c.charCodeAt(0));\n }\n\n private hexToBytes(hex: string): Uint8Array {\n const matches = hex.match(/.{1,2}/g);\n return new Uint8Array(matches?.map(byte => parseInt(byte, 16)) || []);\n }\n\n setActiveChain(chain: RialoChain): void {\n this._activeChain = chain;\n this.emit('change', { chains: [chain] });\n }\n\n destroy(): void {\n this._cleanupFns.forEach(fn => fn());\n this._cleanupFns = [];\n Object.keys(this._eventListeners).forEach(key => {\n delete this._eventListeners[key as keyof WalletStandardEvents];\n });\n }\n}\n\n// ============================================================================\n// Registration\n// ============================================================================\n\nlet walletInstance: RialoWalletStandard | null = null;\n\nexport function registerRialoWallet(): RialoWalletStandard {\n if (walletInstance) return walletInstance;\n\n walletInstance = new RialoWalletStandard();\n\n if (typeof window !== 'undefined') {\n try {\n // Wallet Standard registration\n const registerEvent = new CustomEvent('wallet-standard:register-wallet', {\n detail: {\n register: (callback: (wallet: RialoWalletStandard) => void) => {\n callback(walletInstance!);\n },\n },\n });\n window.dispatchEvent(registerEvent);\n\n // Also announce via EIP-6963\n window.dispatchEvent(new CustomEvent('eip6963:announceProvider', {\n detail: {\n info: {\n uuid: 'sheep-wallet-standard',\n name: 'Sheep Wallet',\n icon: walletInstance.icon,\n rdns: 'io.rialo.sheep',\n },\n provider: walletInstance,\n },\n }));\n } catch (error) {\n console.warn('Failed to dispatch wallet registration event:', error);\n }\n\n Object.defineProperty(window, '__rialoWalletStandard', {\n value: walletInstance,\n writable: false,\n configurable: false,\n });\n }\n\n return walletInstance;\n}\n\nexport function getRialoWallet(): RialoWalletStandard | null {\n return walletInstance;\n}\n\nexport function isRialoWalletRegistered(): boolean {\n return walletInstance !== null;\n}\n\n// Auto-register when DOM is ready\nif (typeof window !== 'undefined') {\n if (document.readyState === 'complete') {\n registerRialoWallet();\n } else {\n window.addEventListener('load', registerRialoWallet);\n }\n}\n\nexport default RialoWalletStandard;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/core/provider.ts","../src/core/utils.ts","../src/standard.ts"],"names":[],"mappings":";;;;;AA0BO,SAAS,WAAA,GAAyC;AACvD,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,MAAA;AAC1C,EAAA,IAAI;AACF,IAAA,MAAM,WAAW,MAAA,CAAO,KAAA;AACxB,IAAA,IAAI,QAAA,EAAU,SAAS,OAAO,QAAA;AAAA,EAChC,CAAA,CAAA,MAAQ;AAAA,EAAC;AACT,EAAA,OAAO,MAAA;AACT;AAuDO,SAAS,WAAA,CACd,OAAA,EACA,EAAA,EACA,YAAA,GAAe,qBAAA,EACH;AACZ,EAAA,IAAI,SAAA;AAEJ,EAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAe,CAAC,GAAG,MAAA,KAAW;AAChD,IAAA,SAAA,GAAY,UAAA,CAAW,MAAM,MAAA,CAAO,IAAI,MAAM,YAAY,CAAC,GAAG,EAAE,CAAA;AAAA,EAClE,CAAC,CAAA;AAED,EAAA,OAAO,OAAA,CAAQ,KAAK,CAAC,OAAA,EAAS,OAAO,CAAC,CAAA,CAAE,QAAQ,MAAM;AACpD,IAAA,IAAI,SAAA,eAAwB,SAAS,CAAA;AAAA,EACvC,CAAC,CAAA;AACH;;;AC1CO,SAAS,kBAAkB,QAAA,EAA0D;AAC1F,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,SAAU,EAAC;AAEtC,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,KAAuB;AAC1C,IAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,MAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,SAAA,EAAW,GAAA,EAAI;AAAA,IACxC;AACA,IAAA,OAAO;AAAA,MACL,SAAS,GAAA,CAAI,OAAA;AAAA,MACb,SAAA,EAAW,GAAA,CAAI,SAAA,IAAa,GAAA,CAAI,OAAA;AAAA,MAChC,OAAO,GAAA,CAAI;AAAA,KACb;AAAA,EACF,CAAC,CAAA;AACH;;;AC5CO,IAAM,sBAAA,GAAyB;AAC/B,IAAM,+BAAA,GAAkC;AACxC,IAAM,kBAAA,GAAqB;AAgE3B,IAAM,sBAAN,MAAiD;AAAA,EAwBtD,WAAA,GAAc;AAvBd,IAAA,IAAA,CAAS,OAAA,GAAU,OAAA;AACnB,IAAA,IAAA,CAAS,IAAA,GAAO,cAAA;AAChB,IAAA,IAAA,CAAS,IAAA,GAAO,obAAA;AAEhB,IAAA,IAAA,CAAQ,YAAkC,EAAC;AAC3C,IAAA,IAAA,CAAQ,OAAA,GAAwB,CAAC,eAAA,EAAiB,eAAA,EAAiB,gBAAgB,gBAAgB,CAAA;AACnG,IAAA,IAAA,CAAQ,YAAA,GAA2B,cAAA;AACnC,IAAA,IAAA,CAAQ,kBAAoC,EAAC;AAC7C,IAAA,IAAA,CAAQ,UAAA,GAAa,KAAA;AACrB,IAAA,IAAA,CAAQ,cAAiC,EAAC;AAgD1C;AAAA,IAAA,IAAA,CAAS,QAAA,GAAW;AAAA,MAClB,kBAAA,EAAoB;AAAA,QAClB,SAAS,YAAyD;AAChE,UAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,UAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAE3D,UAAA,MAAM,SAAS,MAAM,WAAA;AAAA,YACnB,SAAS,OAAA,EAAQ;AAAA,YACjB,GAAA;AAAA,YACA;AAAA,WACF;AAEA,UAAA,MAAM,QAAA,GAAW,kBAAkB,MAAM,CAAA;AACzC,UAAA,IAAA,CAAK,YAAY,QAAA,CAAS,GAAA,CAAI,SAAO,IAAA,CAAK,kBAAA,CAAmB,GAAG,CAAC,CAAA;AACjE,UAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAElB,UAAA,IAAI;AACF,YAAA,MAAM,OAAA,GAAU,MAAM,QAAA,CAAS,UAAA,EAAW;AAC1C,YAAA,IAAA,CAAK,YAAA,GAAe,SAAS,OAAO,CAAA,CAAA;AAAA,UACtC,CAAA,CAAA,MAAQ;AAAA,UAAC;AAET,UAAA,IAAA,CAAK,MAAM,QAAA,EAAU,EAAE,QAAA,EAAU,IAAA,CAAK,WAAW,CAAA;AACjD,UAAA,OAAO,EAAE,QAAA,EAAU,IAAA,CAAK,SAAA,EAAU;AAAA,QACpC;AAAA,OACF;AAAA,MAEA,qBAAA,EAAuB;AAAA,QACrB,YAAY,YAA2B;AACrC,UAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,UAAA,IAAI,QAAA,EAAU;AACZ,YAAA,IAAI;AACF,cAAA,MAAM,SAAS,UAAA,EAAW;AAAA,YAC5B,CAAA,CAAA,MAAQ;AAAA,YAAC;AAAA,UACX;AACA,UAAA,IAAA,CAAK,YAAY,EAAC;AAClB,UAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAClB,UAAA,IAAA,CAAK,MAAM,QAAA,EAAU,EAAE,QAAA,EAAU,IAAI,CAAA;AAAA,QACvC;AAAA,OACF;AAAA,MAEA,iBAAA,EAAmB;AAAA,QACjB,EAAA,EAAI,CACF,KAAA,EACA,QAAA,KACiB;AACjB,UAAA,IAAI,CAAC,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA,EAAG;AAChC,YAAA,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA,mBAAI,IAAI,GAAA,EAAI;AAAA,UACxC;AACA,UAAA,MAAM,GAAA,GAAM,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA;AACtC,UAAA,GAAA,CAAI,IAAI,QAAQ,CAAA;AAChB,UAAA,OAAO,MAAM,GAAA,CAAI,MAAA,CAAO,QAAQ,CAAA;AAAA,QAClC;AAAA,OACF;AAAA,MAEA,CAAC,sBAAsB,GAAG;AAAA,QACxB,eAAA,EAAiB,OAAO,KAAA,KAAgE;AACtF,UAAA,IAAI,CAAC,IAAA,CAAK,UAAA,EAAY,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAC5D,UAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,UAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAErD,UAAA,MAAM,MAAM,IAAA,CAAK,MAAA,CAAO,aAAa,GAAG,KAAA,CAAM,WAAW,CAAC,CAAA;AAC1D,UAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,eAAA,CAAgB;AAAA,YAC5C,EAAA,EAAI,EAAA;AAAA,YACJ,KAAA,EAAO,GAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACA,CAAA;AAER,UAAA,MAAM,WAAA,GAAc,MAAA,CAAO,cAAA,GACvB,UAAA,CAAW,KAAK,IAAA,CAAK,MAAA,CAAO,cAAc,CAAA,EAAG,OAAK,CAAA,CAAE,UAAA,CAAW,CAAC,CAAC,IACjE,KAAA,CAAM,WAAA;AAEV,UAAA,OAAO,EAAE,mBAAmB,WAAA,EAAY;AAAA,QAC1C;AAAA,OACF;AAAA,MAEA,CAAC,+BAA+B,GAAG;AAAA,QACjC,sBAAA,EAAwB,OAAO,KAAA,KAA8E;AAC3G,UAAA,IAAI,CAAC,IAAA,CAAK,UAAA,EAAY,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAC5D,UAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,UAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAErD,UAAA,MAAM,MAAM,IAAA,CAAK,MAAA,CAAO,aAAa,GAAG,KAAA,CAAM,WAAW,CAAC,CAAA;AAC1D,UAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,sBAAA,CAAuB;AAAA,YACnD,EAAA,EAAI,EAAA;AAAA,YACJ,KAAA,EAAO,GAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACA,CAAA;AAER,UAAA,OAAO,EAAE,SAAA,EAAW,MAAA,CAAO,IAAA,EAAK;AAAA,QAClC;AAAA,OACF;AAAA,MAEA,CAAC,kBAAkB,GAAG;AAAA,QACpB,WAAA,EAAa,OAAO,KAAA,KAAwD;AAC1E,UAAA,IAAI,CAAC,IAAA,CAAK,UAAA,EAAY,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAC5D,UAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,UAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,MAAM,sBAAsB,CAAA;AAErD,UAAA,MAAM,aAAa,IAAI,WAAA,EAAY,CAAE,MAAA,CAAO,MAAM,OAAO,CAAA;AACzD,UAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,WAAA,CAAY,UAAU,CAAA;AAEpD,UAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,UAAA,CAAW,IAAI,CAAA,GAC3C,MAAA,CAAO,SAAA,CAAU,KAAA,CAAM,CAAC,CAAA,GACxB,MAAA,CAAO,SAAA;AACX,UAAA,MAAM,WAAW,IAAI,UAAA;AAAA,YAAA,CAClB,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA,IAAK,EAAC,EAAG,GAAA,CAAI,CAAA,CAAA,KAAK,QAAA,CAAS,CAAA,EAAG,EAAE,CAAC;AAAA,WAC1D;AAEA,UAAA,OAAO,EAAE,SAAA,EAAW,QAAA,EAAU,aAAA,EAAe,MAAM,OAAA,EAAQ;AAAA,QAC7D;AAAA;AACF,KACF;AAhJE,IAAA,IAAA,CAAK,oBAAA,EAAqB;AAAA,EAC5B;AAAA,EAdA,IAAI,MAAA,GAAuB;AACzB,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,OAAO,CAAA;AAAA,EACzB;AAAA,EAEA,IAAI,QAAA,GAAiC;AACnC,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,SAAS,CAAA;AAAA,EAC3B;AAAA,EAEA,IAAY,QAAA,GAAsC;AAChD,IAAA,OAAO,WAAA,EAAY;AAAA,EACrB;AAAA,EAMQ,oBAAA,GAA6B;AACnC,IAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,IAAA,IAAI,CAAC,QAAA,EAAU;AAEf,IAAA,IAAA,CAAK,WAAA,CAAY,IAAA;AAAA,MACf,QAAA,CAAS,EAAA,CAAG,iBAAA,EAAmB,CAAC,IAAA,KAAS;AACvC,QAAA,MAAM,QAAA,GAAW,kBAAkB,IAAa,CAAA;AAChD,QAAA,IAAA,CAAK,YAAY,QAAA,CAAS,GAAA,CAAI,SAAO,IAAA,CAAK,kBAAA,CAAmB,GAAG,CAAC,CAAA;AACjE,QAAA,IAAA,CAAK,MAAM,QAAA,EAAU,EAAE,QAAA,EAAU,IAAA,CAAK,WAAW,CAAA;AAAA,MACnD,CAAC;AAAA,KACH;AAEA,IAAA,IAAA,CAAK,WAAA,CAAY,IAAA;AAAA,MACf,QAAA,CAAS,EAAA,CAAG,gBAAA,EAAkB,CAAC,IAAA,KAAS;AACtC,QAAA,MAAM,EAAE,SAAQ,GAAI,IAAA;AACpB,QAAA,IAAA,CAAK,YAAA,GAAe,SAAS,OAAO,CAAA,CAAA;AACpC,QAAA,IAAA,CAAK,KAAA,CAAM,UAAU,EAAE,MAAA,EAAQ,CAAC,IAAA,CAAK,YAAY,GAAG,CAAA;AAAA,MACtD,CAAC;AAAA,KACH;AAEA,IAAA,IAAA,CAAK,WAAA,CAAY,IAAA;AAAA,MACf,QAAA,CAAS,EAAA,CAAG,YAAA,EAAc,MAAM;AAC9B,QAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAClB,QAAA,IAAA,CAAK,YAAY,EAAC;AAClB,QAAA,IAAA,CAAK,MAAM,QAAA,EAAU,EAAE,QAAA,EAAU,IAAI,CAAA;AAAA,MACvC,CAAC;AAAA,KACH;AAAA,EACF;AAAA,EAoHQ,KAAA,CAA4C,OAAU,IAAA,EAAqC;AACjG,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA;AAC5C,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,SAAA,CAAU,OAAA,CAAQ,CAAA,EAAA,KAAO,EAAA,CAA4C,IAAI,CAAC,CAAA;AAAA,IAC5E;AAAA,EACF;AAAA,EAEQ,mBAAmB,GAAA,EAAwC;AACjE,IAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,IAAA,MAAM,SAAA,GAAY,IAAI,UAAA,CAAW,EAAE,CAAA;AACnC,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AACxC,IAAA,SAAA,CAAU,GAAA,CAAI,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AAEhC,IAAA,OAAO;AAAA,MACL,SAAS,GAAA,CAAI,OAAA;AAAA,MACb,SAAA;AAAA,MACA,QAAQ,IAAA,CAAK,OAAA;AAAA,MACb,QAAA,EAAU;AAAA,QACR,sBAAA;AAAA,QACA,+BAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO,IAAI,KAAA,IAAS;AAAA,KACtB;AAAA,EACF;AAAA,EAEA,eAAe,KAAA,EAAyB;AACtC,IAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AACpB,IAAA,IAAA,CAAK,MAAM,QAAA,EAAU,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAA;AAAA,EAC1C;AAAA,EAEA,OAAA,GAAgB;AACd,IAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,CAAA,EAAA,KAAM;AAAE,MAAA,IAAI;AAAE,QAAA,EAAA,EAAG;AAAA,MAAG,CAAA,CAAA,MAAQ;AAAA,MAAC;AAAA,IAAE,CAAC,CAAA;AACzD,IAAA,IAAA,CAAK,cAAc,EAAC;AAAA,EACtB;AACF;AAMA,IAAI,cAAA,GAA6C,IAAA;AAE1C,SAAS,mBAAA,GAA2C;AACzD,EAAA,IAAI,gBAAgB,OAAO,cAAA;AAE3B,EAAA,cAAA,GAAiB,IAAI,mBAAA,EAAoB;AAEzC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,IAAI;AACF,MAAA,MAAA,CAAO,aAAA,CAAc,IAAI,WAAA,CAAY,iCAAA,EAAmC;AAAA,QACtE,MAAA,EAAQ;AAAA,UACN,QAAA,EAAU,CAAC,EAAA,KAAyC,EAAA,CAAG,cAAe;AAAA;AACxE,OACD,CAAC,CAAA;AAEF,MAAA,MAAA,CAAO,aAAA,CAAc,IAAI,WAAA,CAAY,0BAAA,EAA4B;AAAA,QAC/D,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,uBAAA;AAAA,YACN,IAAA,EAAM,cAAA;AAAA,YACN,MAAM,cAAA,CAAe,IAAA;AAAA,YACrB,IAAA,EAAM;AAAA,WACR;AAAA,UACA,QAAA,EAAU;AAAA;AACZ,OACD,CAAC,CAAA;AAAA,IACJ,CAAA,CAAA,MAAQ;AAAA,IAAC;AAET,IAAA,MAAA,CAAO,cAAA,CAAe,QAAQ,uBAAA,EAAyB;AAAA,MACrD,KAAA,EAAO,cAAA;AAAA,MACP,QAAA,EAAU,KAAA;AAAA,MACV,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,cAAA;AACT;AAEO,SAAS,cAAA,GAA6C;AAC3D,EAAA,OAAO,cAAA;AACT;AAEO,SAAS,uBAAA,GAAmC;AACjD,EAAA,OAAO,cAAA,KAAmB,IAAA;AAC5B;AAGA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,EAAA,IAAI,QAAA,CAAS,eAAe,UAAA,EAAY;AACtC,IAAA,mBAAA,EAAoB;AAAA,EACtB,CAAA,MAAO;AACL,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAQ,mBAAmB,CAAA;AAAA,EACrD;AACF;AAEA,IAAO,gBAAA,GAAQ","file":"standard.cjs","sourcesContent":["/**\n * @cookill/wallet-adapter v3.0.0\n * Provider detection and access utilities\n * \n * CRITICAL: All provider access is non-blocking and defensive\n */\n\nimport type { RialoProvider } from './types';\n\n/**\n * Check if Rialo/Sheep Wallet is installed\n * This is synchronous and never blocks\n */\nexport function isInstalled(): boolean {\n if (typeof window === 'undefined') return false;\n try {\n return !!window.rialo?.isRialo;\n } catch {\n return false;\n }\n}\n\n/**\n * Get the provider reference (synchronous)\n * Returns undefined if not installed\n */\nexport function getProvider(): RialoProvider | undefined {\n if (typeof window === 'undefined') return undefined;\n try {\n const provider = window.rialo;\n if (provider?.isRialo) return provider;\n } catch {}\n return undefined;\n}\n\n/**\n * Wait for provider to become available\n * Uses polling + event listener, with guaranteed timeout\n * \n * @param timeout Maximum time to wait in ms (default 3000)\n */\nexport function waitForProvider(timeout = 3000): Promise<RialoProvider | undefined> {\n return new Promise((resolve) => {\n // Already available?\n const existing = getProvider();\n if (existing) {\n resolve(existing);\n return;\n }\n\n let resolved = false;\n let checkInterval: ReturnType<typeof setInterval> | null = null;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const cleanup = () => {\n resolved = true;\n if (checkInterval) clearInterval(checkInterval);\n if (timeoutId) clearTimeout(timeoutId);\n };\n\n const done = (provider: RialoProvider | undefined) => {\n if (resolved) return;\n cleanup();\n resolve(provider);\n };\n\n // Poll every 100ms\n checkInterval = setInterval(() => {\n const p = getProvider();\n if (p) done(p);\n }, 100);\n\n // Listen for initialization event\n const onInit = () => done(getProvider());\n window.addEventListener('rialo#initialized', onInit, { once: true });\n\n // Guaranteed timeout\n timeoutId = setTimeout(() => {\n window.removeEventListener('rialo#initialized', onInit);\n done(undefined);\n }, timeout);\n });\n}\n\n/**\n * Promise timeout wrapper\n * Ensures promises never hang indefinitely\n */\nexport function withTimeout<T>(\n promise: Promise<T>,\n ms: number,\n errorMessage = 'Operation timed out'\n): Promise<T> {\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const timeout = new Promise<never>((_, reject) => {\n timeoutId = setTimeout(() => reject(new Error(errorMessage)), ms);\n });\n\n return Promise.race([promise, timeout]).finally(() => {\n if (timeoutId) clearTimeout(timeoutId);\n }) as Promise<T>;\n}\n","/**\n * @cookill/wallet-adapter v3.0.0\n * Utility functions\n */\n\nimport type { WalletAccount, RialoNetwork, RialoChainId } from './types';\n\n/**\n * Format address for display (truncated)\n */\nexport function formatAddress(address: string, chars = 4): string {\n if (!address) return '';\n if (address.length <= chars * 2 + 3) return address;\n return `${address.slice(0, chars + 2)}...${address.slice(-chars)}`;\n}\n\n/**\n * Format balance from kelvins to RLO\n */\nexport function formatBalance(kelvins: string | bigint, decimals = 4): string {\n const value = typeof kelvins === 'string' ? BigInt(kelvins || '0') : kelvins;\n const rlo = Number(value) / 1_000_000_000;\n return rlo.toFixed(decimals);\n}\n\n/**\n * Parse RLO amount to kelvins\n */\nexport function parseBalance(rlo: string | number): bigint {\n const value = typeof rlo === 'string' ? parseFloat(rlo) : rlo;\n return BigInt(Math.floor(value * 1_000_000_000));\n}\n\n/**\n * Validate Rialo address format\n */\nexport function isValidAddress(address: string): boolean {\n if (!address || typeof address !== 'string') return false;\n if (address.length < 32 || address.length > 50) return false;\n return /^[1-9A-HJ-NP-Za-km-z]+$/.test(address);\n}\n\n/**\n * Convert network name to chain ID\n */\nexport function toChainId(network: RialoNetwork): RialoChainId {\n return `rialo:${network}`;\n}\n\n/**\n * Extract network from chain ID\n */\nexport function fromChainId(chainId: RialoChainId): RialoNetwork {\n return chainId.replace('rialo:', '') as RialoNetwork;\n}\n\n/**\n * Normalize account data (handles both string and object formats)\n * CRITICAL: Extension can return either string[] or WalletAccount[]\n */\nexport function normalizeAccounts(accounts: Array<string | WalletAccount>): WalletAccount[] {\n if (!Array.isArray(accounts)) return [];\n \n return accounts.map((acc): WalletAccount => {\n if (typeof acc === 'string') {\n return { address: acc, publicKey: acc };\n }\n return {\n address: acc.address,\n publicKey: acc.publicKey || acc.address,\n label: acc.label,\n };\n });\n}\n","/**\n * @cookill/wallet-adapter/standard v3.0.0\n * Wallet Standard implementation for advanced integrations\n */\n\nimport {\n type RialoProvider,\n type WalletAccount,\n type RialoNetwork,\n isInstalled,\n getProvider,\n normalizeAccounts,\n withTimeout,\n} from './core';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';\n\nexport interface RialoWalletAccount {\n address: string;\n publicKey: Uint8Array;\n chains: RialoChain[];\n features: string[];\n label?: string;\n}\n\nexport const RIALO_SIGN_TRANSACTION = 'rialo:signTransaction' as const;\nexport const RIALO_SIGN_AND_SEND_TRANSACTION = 'rialo:signAndSendTransaction' as const;\nexport const RIALO_SIGN_MESSAGE = 'rialo:signMessage' as const;\n\nexport interface SignTransactionInput {\n account: RialoWalletAccount;\n transaction: Uint8Array;\n chain?: RialoChain;\n}\n\nexport interface SignTransactionOutput {\n signedTransaction: Uint8Array;\n}\n\nexport interface SignAndSendTransactionInput {\n account: RialoWalletAccount;\n transaction: Uint8Array;\n chain?: RialoChain;\n options?: {\n skipPreflight?: boolean;\n preflightCommitment?: 'processed' | 'confirmed' | 'finalized';\n };\n}\n\nexport interface SignAndSendTransactionOutput {\n signature: string;\n}\n\nexport interface SignMessageInput {\n account: RialoWalletAccount;\n message: Uint8Array;\n}\n\nexport interface SignMessageOutput {\n signature: Uint8Array;\n signedMessage: Uint8Array;\n}\n\nexport interface WalletStandardEvents {\n change: {\n accounts?: RialoWalletAccount[];\n chains?: RialoChain[];\n };\n}\n\n// ============================================================================\n// Wallet Standard Interface\n// ============================================================================\n\nexport interface RialoWallet {\n readonly version: '1.0.0';\n readonly name: string;\n readonly icon: string;\n readonly chains: RialoChain[];\n readonly accounts: RialoWalletAccount[];\n readonly features: Record<string, unknown>;\n}\n\n// ============================================================================\n// Implementation\n// ============================================================================\n\ntype EventListenerMap = {\n [K in keyof WalletStandardEvents]?: Set<(data: WalletStandardEvents[K]) => void>;\n};\n\nexport class RialoWalletStandard implements RialoWallet {\n readonly version = '1.0.0' as const;\n readonly name = 'Sheep Wallet';\n readonly icon = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjMDExQjI5Ii8+PHRleHQgeD0iNTAlIiB5PSI1NSUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zaXplPSIxNiIgZmlsbD0iIzZFQjlBOCI+Uzwvc2VsZj48L3N2Zz4=';\n\n private _accounts: RialoWalletAccount[] = [];\n private _chains: RialoChain[] = ['rialo:mainnet', 'rialo:testnet', 'rialo:devnet', 'rialo:localnet'];\n private _activeChain: RialoChain = 'rialo:devnet';\n private _eventListeners: EventListenerMap = {};\n private _connected = false;\n private _cleanupFns: Array<() => void> = [];\n\n get chains(): RialoChain[] {\n return [...this._chains];\n }\n\n get accounts(): RialoWalletAccount[] {\n return [...this._accounts];\n }\n\n private get provider(): RialoProvider | undefined {\n return getProvider();\n }\n\n constructor() {\n this._setupProviderEvents();\n }\n\n private _setupProviderEvents(): void {\n const provider = this.provider;\n if (!provider) return;\n\n this._cleanupFns.push(\n provider.on('accountsChanged', (data) => {\n const accounts = normalizeAccounts(data as any[]);\n this._accounts = accounts.map(acc => this._toStandardAccount(acc));\n this._emit('change', { accounts: this._accounts });\n })\n );\n\n this._cleanupFns.push(\n provider.on('networkChanged', (data) => {\n const { network } = data as { network: RialoNetwork };\n this._activeChain = `rialo:${network}` as RialoChain;\n this._emit('change', { chains: [this._activeChain] });\n })\n );\n\n this._cleanupFns.push(\n provider.on('disconnect', () => {\n this._connected = false;\n this._accounts = [];\n this._emit('change', { accounts: [] });\n })\n );\n }\n\n // Features\n readonly features = {\n 'standard:connect': {\n connect: async (): Promise<{ accounts: RialoWalletAccount[] }> => {\n const provider = this.provider;\n if (!provider) throw new Error('Sheep Wallet not installed');\n\n const result = await withTimeout(\n provider.connect(),\n 20_000,\n 'Connection timed out'\n );\n\n const accounts = normalizeAccounts(result);\n this._accounts = accounts.map(acc => this._toStandardAccount(acc));\n this._connected = true;\n\n try {\n const network = await provider.getNetwork();\n this._activeChain = `rialo:${network}` as RialoChain;\n } catch {}\n\n this._emit('change', { accounts: this._accounts });\n return { accounts: this._accounts };\n },\n },\n\n 'standard:disconnect': {\n disconnect: async (): Promise<void> => {\n const provider = this.provider;\n if (provider) {\n try {\n await provider.disconnect();\n } catch {}\n }\n this._accounts = [];\n this._connected = false;\n this._emit('change', { accounts: [] });\n },\n },\n\n 'standard:events': {\n on: <E extends keyof WalletStandardEvents>(\n event: E,\n listener: (data: WalletStandardEvents[E]) => void\n ): (() => void) => {\n if (!this._eventListeners[event]) {\n this._eventListeners[event] = new Set();\n }\n const set = this._eventListeners[event] as Set<(data: WalletStandardEvents[E]) => void>;\n set.add(listener);\n return () => set.delete(listener);\n },\n },\n\n [RIALO_SIGN_TRANSACTION]: {\n signTransaction: async (input: SignTransactionInput): Promise<SignTransactionOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Wallet not available');\n\n const b64 = btoa(String.fromCharCode(...input.transaction));\n const result = await provider.signTransaction({\n to: '',\n value: '0',\n data: b64,\n } as any);\n\n const signedBytes = result.rawTransaction\n ? Uint8Array.from(atob(result.rawTransaction), c => c.charCodeAt(0))\n : input.transaction;\n\n return { signedTransaction: signedBytes };\n },\n },\n\n [RIALO_SIGN_AND_SEND_TRANSACTION]: {\n signAndSendTransaction: async (input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Wallet not available');\n\n const b64 = btoa(String.fromCharCode(...input.transaction));\n const result = await provider.signAndSendTransaction({\n to: '',\n value: '0',\n data: b64,\n } as any);\n\n return { signature: result.hash };\n },\n },\n\n [RIALO_SIGN_MESSAGE]: {\n signMessage: async (input: SignMessageInput): Promise<SignMessageOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Wallet not available');\n\n const messageStr = new TextDecoder().decode(input.message);\n const result = await provider.signMessage(messageStr);\n\n const sigHex = result.signature.startsWith('0x')\n ? result.signature.slice(2)\n : result.signature;\n const sigBytes = new Uint8Array(\n (sigHex.match(/.{1,2}/g) || []).map(b => parseInt(b, 16))\n );\n\n return { signature: sigBytes, signedMessage: input.message };\n },\n },\n };\n\n private _emit<E extends keyof WalletStandardEvents>(event: E, data: WalletStandardEvents[E]): void {\n const listeners = this._eventListeners[event];\n if (listeners) {\n listeners.forEach(fn => (fn as (d: WalletStandardEvents[E]) => void)(data));\n }\n }\n\n private _toStandardAccount(acc: WalletAccount): RialoWalletAccount {\n const encoder = new TextEncoder();\n const publicKey = new Uint8Array(32);\n const bytes = encoder.encode(acc.address);\n publicKey.set(bytes.slice(0, 32));\n\n return {\n address: acc.address,\n publicKey,\n chains: this._chains,\n features: [\n RIALO_SIGN_TRANSACTION,\n RIALO_SIGN_AND_SEND_TRANSACTION,\n RIALO_SIGN_MESSAGE,\n ],\n label: acc.label || 'Sheep Account',\n };\n }\n\n setActiveChain(chain: RialoChain): void {\n this._activeChain = chain;\n this._emit('change', { chains: [chain] });\n }\n\n destroy(): void {\n this._cleanupFns.forEach(fn => { try { fn(); } catch {} });\n this._cleanupFns = [];\n }\n}\n\n// ============================================================================\n// Registration\n// ============================================================================\n\nlet walletInstance: RialoWalletStandard | null = null;\n\nexport function registerRialoWallet(): RialoWalletStandard {\n if (walletInstance) return walletInstance;\n\n walletInstance = new RialoWalletStandard();\n\n if (typeof window !== 'undefined') {\n try {\n window.dispatchEvent(new CustomEvent('wallet-standard:register-wallet', {\n detail: {\n register: (cb: (w: RialoWalletStandard) => void) => cb(walletInstance!),\n },\n }));\n\n window.dispatchEvent(new CustomEvent('eip6963:announceProvider', {\n detail: {\n info: {\n uuid: 'sheep-wallet-standard',\n name: 'Sheep Wallet',\n icon: walletInstance.icon,\n rdns: 'io.rialo.sheep',\n },\n provider: walletInstance,\n },\n }));\n } catch {}\n\n Object.defineProperty(window, '__rialoWalletStandard', {\n value: walletInstance,\n writable: false,\n configurable: false,\n });\n }\n\n return walletInstance;\n}\n\nexport function getRialoWallet(): RialoWalletStandard | null {\n return walletInstance;\n}\n\nexport function isRialoWalletRegistered(): boolean {\n return walletInstance !== null;\n}\n\n// Auto-register\nif (typeof window !== 'undefined') {\n if (document.readyState === 'complete') {\n registerRialoWallet();\n } else {\n window.addEventListener('load', registerRialoWallet);\n }\n}\n\nexport default RialoWalletStandard;\n"]}
|
package/dist/standard.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @cookill/wallet-adapter/standard
|
|
2
|
+
* @cookill/wallet-adapter/standard v3.0.0
|
|
3
3
|
* Wallet Standard implementation for advanced integrations
|
|
4
4
|
*/
|
|
5
5
|
type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';
|
|
@@ -9,12 +9,10 @@ interface RialoWalletAccount {
|
|
|
9
9
|
chains: RialoChain[];
|
|
10
10
|
features: string[];
|
|
11
11
|
label?: string;
|
|
12
|
-
icon?: string;
|
|
13
12
|
}
|
|
14
13
|
declare const RIALO_SIGN_TRANSACTION: "rialo:signTransaction";
|
|
15
14
|
declare const RIALO_SIGN_AND_SEND_TRANSACTION: "rialo:signAndSendTransaction";
|
|
16
15
|
declare const RIALO_SIGN_MESSAGE: "rialo:signMessage";
|
|
17
|
-
declare const RIALO_SIGN_ALL_TRANSACTIONS: "rialo:signAllTransactions";
|
|
18
16
|
interface SignTransactionInput {
|
|
19
17
|
account: RialoWalletAccount;
|
|
20
18
|
transaction: Uint8Array;
|
|
@@ -30,7 +28,6 @@ interface SignAndSendTransactionInput {
|
|
|
30
28
|
options?: {
|
|
31
29
|
skipPreflight?: boolean;
|
|
32
30
|
preflightCommitment?: 'processed' | 'confirmed' | 'finalized';
|
|
33
|
-
maxRetries?: number;
|
|
34
31
|
};
|
|
35
32
|
}
|
|
36
33
|
interface SignAndSendTransactionOutput {
|
|
@@ -50,45 +47,13 @@ interface WalletStandardEvents {
|
|
|
50
47
|
chains?: RialoChain[];
|
|
51
48
|
};
|
|
52
49
|
}
|
|
53
|
-
interface StandardConnectFeature {
|
|
54
|
-
'standard:connect': {
|
|
55
|
-
connect(): Promise<{
|
|
56
|
-
accounts: RialoWalletAccount[];
|
|
57
|
-
}>;
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
interface StandardDisconnectFeature {
|
|
61
|
-
'standard:disconnect': {
|
|
62
|
-
disconnect(): Promise<void>;
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
interface StandardEventsFeature {
|
|
66
|
-
'standard:events': {
|
|
67
|
-
on<E extends keyof WalletStandardEvents>(event: E, listener: (data: WalletStandardEvents[E]) => void): () => void;
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
interface RialoSignTransactionFeature {
|
|
71
|
-
[RIALO_SIGN_TRANSACTION]: {
|
|
72
|
-
signTransaction(input: SignTransactionInput): Promise<SignTransactionOutput>;
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
interface RialoSignAndSendTransactionFeature {
|
|
76
|
-
[RIALO_SIGN_AND_SEND_TRANSACTION]: {
|
|
77
|
-
signAndSendTransaction(input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput>;
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
interface RialoSignMessageFeature {
|
|
81
|
-
[RIALO_SIGN_MESSAGE]: {
|
|
82
|
-
signMessage(input: SignMessageInput): Promise<SignMessageOutput>;
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
50
|
interface RialoWallet {
|
|
86
51
|
readonly version: '1.0.0';
|
|
87
52
|
readonly name: string;
|
|
88
53
|
readonly icon: string;
|
|
89
54
|
readonly chains: RialoChain[];
|
|
90
55
|
readonly accounts: RialoWalletAccount[];
|
|
91
|
-
readonly features:
|
|
56
|
+
readonly features: Record<string, unknown>;
|
|
92
57
|
}
|
|
93
58
|
declare class RialoWalletStandard implements RialoWallet {
|
|
94
59
|
readonly version: "1.0.0";
|
|
@@ -104,7 +69,7 @@ declare class RialoWalletStandard implements RialoWallet {
|
|
|
104
69
|
get accounts(): RialoWalletAccount[];
|
|
105
70
|
private get provider();
|
|
106
71
|
constructor();
|
|
107
|
-
private
|
|
72
|
+
private _setupProviderEvents;
|
|
108
73
|
readonly features: {
|
|
109
74
|
'standard:connect': {
|
|
110
75
|
connect: () => Promise<{
|
|
@@ -127,11 +92,8 @@ declare class RialoWalletStandard implements RialoWallet {
|
|
|
127
92
|
signMessage: (input: SignMessageInput) => Promise<SignMessageOutput>;
|
|
128
93
|
};
|
|
129
94
|
};
|
|
130
|
-
private
|
|
131
|
-
private
|
|
132
|
-
private bytesToBase64;
|
|
133
|
-
private base64ToBytes;
|
|
134
|
-
private hexToBytes;
|
|
95
|
+
private _emit;
|
|
96
|
+
private _toStandardAccount;
|
|
135
97
|
setActiveChain(chain: RialoChain): void;
|
|
136
98
|
destroy(): void;
|
|
137
99
|
}
|
|
@@ -139,4 +101,4 @@ declare function registerRialoWallet(): RialoWalletStandard;
|
|
|
139
101
|
declare function getRialoWallet(): RialoWalletStandard | null;
|
|
140
102
|
declare function isRialoWalletRegistered(): boolean;
|
|
141
103
|
|
|
142
|
-
export {
|
|
104
|
+
export { RIALO_SIGN_AND_SEND_TRANSACTION, RIALO_SIGN_MESSAGE, RIALO_SIGN_TRANSACTION, type RialoChain, type RialoWallet, type RialoWalletAccount, RialoWalletStandard, type SignAndSendTransactionInput, type SignAndSendTransactionOutput, type SignMessageInput, type SignMessageOutput, type SignTransactionInput, type SignTransactionOutput, type WalletStandardEvents, RialoWalletStandard as default, getRialoWallet, isRialoWalletRegistered, registerRialoWallet };
|