@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/dist/standard.cjs CHANGED
@@ -1,40 +1,46 @@
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 });
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 to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
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("Rialo Wallet not installed");
54
- const result = await provider.connect();
55
- this._accounts = result.map(
56
- (acc) => this.createAccount(typeof acc === "string" ? acc : acc.address)
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.emit("change", { accounts: this._accounts });
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) await provider.disconnect();
81
+ if (provider) {
82
+ try {
83
+ await provider.disconnect();
84
+ } catch {
85
+ }
86
+ }
72
87
  this._accounts = [];
73
88
  this._connected = false;
74
- this.emit("change", { accounts: [] });
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 listeners = this._eventListeners[event];
83
- listeners.add(listener);
84
- return () => listeners.delete(listener);
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("Rialo Wallet not available");
92
- const transactionBase64 = this.bytesToBase64(input.transaction);
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
- transaction: transactionBase64,
95
- chain: input.chain || this._activeChain
109
+ to: "",
110
+ value: "0",
111
+ data: b64
96
112
  });
97
- const signedTxBytes = result.rawTransaction ? this.base64ToBytes(result.rawTransaction) : input.transaction;
98
- return { signedTransaction: signedTxBytes };
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("Rialo Wallet not available");
106
- const transactionBase64 = this.bytesToBase64(input.transaction);
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
- transaction: transactionBase64,
109
- chain: input.chain || this._activeChain,
110
- options: input.options
124
+ to: "",
125
+ value: "0",
126
+ data: b64
111
127
  });
112
- return { signature: result.hash || result.signature || "" };
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("Rialo Wallet not available");
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 signatureBytes = this.hexToBytes(sigHex);
124
- return { signature: signatureBytes, signedMessage: input.message };
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.setupProviderEvents();
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
- if (typeof window === "undefined") return void 0;
138
- return window.rialo;
155
+ return getProvider();
139
156
  }
140
- setupProviderEvents() {
157
+ _setupProviderEvents() {
141
158
  const provider = this.provider;
142
159
  if (!provider) return;
143
- const cleanup1 = provider.on("accountsChanged", (data) => {
144
- const accounts = data;
145
- this._accounts = accounts.map((acc) => this.createAccount(typeof acc === "string" ? acc : acc.address));
146
- this.emit("change", { accounts: this._accounts });
147
- });
148
- const cleanup2 = provider.on("networkChanged", (data) => {
149
- const { network } = data;
150
- this._activeChain = `rialo:${network}`;
151
- this.emit("change", { chains: [this._activeChain] });
152
- });
153
- const cleanup3 = provider.on("disconnect", () => {
154
- this._connected = false;
155
- this._accounts = [];
156
- this.emit("change", { accounts: [] });
157
- });
158
- this._cleanupFns.push(cleanup1, cleanup2, cleanup3);
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
- emit(event, data) {
182
+ _emit(event, data) {
161
183
  const listeners = this._eventListeners[event];
162
184
  if (listeners) {
163
- listeners.forEach((listener) => {
164
- listener(data);
165
- });
185
+ listeners.forEach((fn) => fn(data));
166
186
  }
167
187
  }
168
- createAccount(address) {
188
+ _toStandardAccount(acc) {
169
189
  const encoder = new TextEncoder();
170
190
  const publicKey = new Uint8Array(32);
171
- const addressBytes = encoder.encode(address);
172
- publicKey.set(addressBytes.slice(0, 32));
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.emit("change", { chains: [chain] });
207
+ this._emit("change", { chains: [chain] });
199
208
  }
200
209
  destroy() {
201
- this._cleanupFns.forEach((fn) => fn());
202
- this._cleanupFns = [];
203
- Object.keys(this._eventListeners).forEach((key) => {
204
- delete this._eventListeners[key];
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
- const registerEvent = new CustomEvent("wallet-standard:register-wallet", {
225
+ window.dispatchEvent(new CustomEvent("wallet-standard:register-wallet", {
215
226
  detail: {
216
- register: (callback) => {
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 (error) {
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
- // Annotate the CommonJS export names for ESM import in node:
259
- 0 && (module.exports = {
260
- RIALO_SIGN_ALL_TRANSACTIONS,
261
- RIALO_SIGN_AND_SEND_TRANSACTION,
262
- RIALO_SIGN_MESSAGE,
263
- RIALO_SIGN_TRANSACTION,
264
- RialoWalletStandard,
265
- getRialoWallet,
266
- isRialoWalletRegistered,
267
- registerRialoWallet
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
@@ -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":"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","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"]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @cookill/wallet-adapter/standard v2.5.0
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: StandardConnectFeature & StandardDisconnectFeature & StandardEventsFeature & RialoSignTransactionFeature & RialoSignAndSendTransactionFeature & RialoSignMessageFeature;
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 setupProviderEvents;
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 emit;
131
- private createAccount;
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 { RIALO_SIGN_ALL_TRANSACTIONS, RIALO_SIGN_AND_SEND_TRANSACTION, RIALO_SIGN_MESSAGE, RIALO_SIGN_TRANSACTION, type RialoChain, type RialoSignAndSendTransactionFeature, type RialoSignMessageFeature, type RialoSignTransactionFeature, type RialoWallet, type RialoWalletAccount, RialoWalletStandard, type SignAndSendTransactionInput, type SignAndSendTransactionOutput, type SignMessageInput, type SignMessageOutput, type SignTransactionInput, type SignTransactionOutput, type StandardConnectFeature, type StandardDisconnectFeature, type StandardEventsFeature, type WalletStandardEvents, RialoWalletStandard as default, getRialoWallet, isRialoWalletRegistered, registerRialoWallet };
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 };