@cookill/wallet-adapter 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +369 -0
- package/dist/index.cjs +183 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +137 -0
- package/dist/index.d.ts +137 -0
- package/dist/index.js +170 -0
- package/dist/index.js.map +1 -0
- package/dist/react.cjs +483 -0
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.cts +133 -0
- package/dist/react.d.ts +133 -0
- package/dist/react.js +465 -0
- package/dist/react.js.map +1 -0
- package/dist/standard.cjs +175 -0
- package/dist/standard.cjs.map +1 -0
- package/dist/standard.d.cts +134 -0
- package/dist/standard.d.ts +134 -0
- package/dist/standard.js +164 -0
- package/dist/standard.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
// src/standard.ts
|
|
6
|
+
var RIALO_SIGN_TRANSACTION = "rialo:signTransaction";
|
|
7
|
+
var RIALO_SIGN_AND_SEND_TRANSACTION = "rialo:signAndSendTransaction";
|
|
8
|
+
var RIALO_SIGN_MESSAGE = "rialo:signMessage";
|
|
9
|
+
var RialoWalletStandard = class {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.version = "1.0.0";
|
|
12
|
+
this.name = "Rialo Wallet";
|
|
13
|
+
this.icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHBhdGggZD0iTTggMTBIMjRWMjJIOFYxMFoiIGZpbGw9IndoaXRlIi8+PC9zdmc+";
|
|
14
|
+
this._accounts = [];
|
|
15
|
+
this._chains = ["rialo:mainnet", "rialo:testnet", "rialo:devnet", "rialo:localnet"];
|
|
16
|
+
this._activeChain = "rialo:devnet";
|
|
17
|
+
this._eventListeners = {};
|
|
18
|
+
this._connected = false;
|
|
19
|
+
this.features = {
|
|
20
|
+
"standard:connect": {
|
|
21
|
+
connect: async () => {
|
|
22
|
+
const provider = this.provider;
|
|
23
|
+
if (!provider) throw new Error("Rialo Wallet not installed");
|
|
24
|
+
const addresses = await provider.connect();
|
|
25
|
+
this._accounts = addresses.map((addr) => this.createAccount(addr));
|
|
26
|
+
this._connected = true;
|
|
27
|
+
this.emit("change", { accounts: this._accounts });
|
|
28
|
+
return { accounts: this._accounts };
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"standard:disconnect": {
|
|
32
|
+
disconnect: async () => {
|
|
33
|
+
const provider = this.provider;
|
|
34
|
+
if (provider) await provider.disconnect();
|
|
35
|
+
this._accounts = [];
|
|
36
|
+
this._connected = false;
|
|
37
|
+
this.emit("change", { accounts: [] });
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"standard:events": {
|
|
41
|
+
on: (event, listener) => {
|
|
42
|
+
if (!this._eventListeners[event]) {
|
|
43
|
+
this._eventListeners[event] = /* @__PURE__ */ new Set();
|
|
44
|
+
}
|
|
45
|
+
const listeners = this._eventListeners[event];
|
|
46
|
+
listeners.add(listener);
|
|
47
|
+
return () => listeners.delete(listener);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
[RIALO_SIGN_TRANSACTION]: {
|
|
51
|
+
signTransaction: async (input) => {
|
|
52
|
+
if (!this._connected) throw new Error("Wallet not connected");
|
|
53
|
+
const provider = this.provider;
|
|
54
|
+
if (!provider) throw new Error("Rialo Wallet not available");
|
|
55
|
+
const transactionBase64 = btoa(String.fromCharCode(...input.transaction));
|
|
56
|
+
const result = await provider.signTransaction({
|
|
57
|
+
transaction: transactionBase64,
|
|
58
|
+
chain: input.chain || this._activeChain
|
|
59
|
+
});
|
|
60
|
+
const signedTxBytes = result.rawTransaction ? Uint8Array.from(atob(result.rawTransaction), (c) => c.charCodeAt(0)) : input.transaction;
|
|
61
|
+
return { signedTransaction: signedTxBytes };
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
[RIALO_SIGN_AND_SEND_TRANSACTION]: {
|
|
65
|
+
signAndSendTransaction: async (input) => {
|
|
66
|
+
if (!this._connected) throw new Error("Wallet not connected");
|
|
67
|
+
const provider = this.provider;
|
|
68
|
+
if (!provider) throw new Error("Rialo Wallet not available");
|
|
69
|
+
const transactionBase64 = btoa(String.fromCharCode(...input.transaction));
|
|
70
|
+
const result = await provider.signAndSendTransaction({
|
|
71
|
+
transaction: transactionBase64,
|
|
72
|
+
chain: input.chain || this._activeChain,
|
|
73
|
+
options: input.options
|
|
74
|
+
});
|
|
75
|
+
return { signature: result.hash };
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
[RIALO_SIGN_MESSAGE]: {
|
|
79
|
+
signMessage: async (input) => {
|
|
80
|
+
if (!this._connected) throw new Error("Wallet not connected");
|
|
81
|
+
const provider = this.provider;
|
|
82
|
+
if (!provider) throw new Error("Rialo Wallet not available");
|
|
83
|
+
const messageStr = new TextDecoder().decode(input.message);
|
|
84
|
+
const result = await provider.signMessage(messageStr);
|
|
85
|
+
const sigHex = result.signature.startsWith("0x") ? result.signature.slice(2) : result.signature;
|
|
86
|
+
const signatureBytes = new Uint8Array(sigHex.match(/.{1,2}/g)?.map((byte) => parseInt(byte, 16)) || []);
|
|
87
|
+
return { signature: signatureBytes, signedMessage: input.message };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
get chains() {
|
|
93
|
+
return [...this._chains];
|
|
94
|
+
}
|
|
95
|
+
get accounts() {
|
|
96
|
+
return [...this._accounts];
|
|
97
|
+
}
|
|
98
|
+
get provider() {
|
|
99
|
+
if (typeof window === "undefined") return void 0;
|
|
100
|
+
return window.rialo;
|
|
101
|
+
}
|
|
102
|
+
emit(event, data) {
|
|
103
|
+
const listeners = this._eventListeners[event];
|
|
104
|
+
if (listeners) {
|
|
105
|
+
listeners.forEach((listener) => {
|
|
106
|
+
listener(data);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
createAccount(address) {
|
|
111
|
+
const encoder = new TextEncoder();
|
|
112
|
+
const publicKey = new Uint8Array(32);
|
|
113
|
+
const addressBytes = encoder.encode(address);
|
|
114
|
+
publicKey.set(addressBytes.slice(0, 32));
|
|
115
|
+
return {
|
|
116
|
+
address,
|
|
117
|
+
publicKey,
|
|
118
|
+
chains: this._chains,
|
|
119
|
+
features: [RIALO_SIGN_TRANSACTION, RIALO_SIGN_AND_SEND_TRANSACTION, RIALO_SIGN_MESSAGE],
|
|
120
|
+
label: "Rialo Account"
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
setActiveChain(chain) {
|
|
124
|
+
this._activeChain = chain;
|
|
125
|
+
this.emit("change", { chains: [chain] });
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
var walletInstance = null;
|
|
129
|
+
function registerRialoWallet() {
|
|
130
|
+
if (walletInstance) return walletInstance;
|
|
131
|
+
walletInstance = new RialoWalletStandard();
|
|
132
|
+
if (typeof window !== "undefined") {
|
|
133
|
+
try {
|
|
134
|
+
const registerEvent = new CustomEvent("wallet-standard:register-wallet", {
|
|
135
|
+
detail: {
|
|
136
|
+
register: (callback) => {
|
|
137
|
+
callback(walletInstance);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
window.dispatchEvent(registerEvent);
|
|
142
|
+
} catch (error) {
|
|
143
|
+
console.warn("Failed to dispatch wallet registration event:", error);
|
|
144
|
+
}
|
|
145
|
+
Object.defineProperty(window, "__rialoWalletStandard", {
|
|
146
|
+
value: walletInstance,
|
|
147
|
+
writable: false,
|
|
148
|
+
configurable: false
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return walletInstance;
|
|
152
|
+
}
|
|
153
|
+
function getRialoWallet() {
|
|
154
|
+
return walletInstance;
|
|
155
|
+
}
|
|
156
|
+
function isRialoWalletRegistered() {
|
|
157
|
+
return walletInstance !== null;
|
|
158
|
+
}
|
|
159
|
+
if (typeof window !== "undefined" && document.readyState === "complete") {
|
|
160
|
+
registerRialoWallet();
|
|
161
|
+
} else if (typeof window !== "undefined") {
|
|
162
|
+
window.addEventListener("load", registerRialoWallet);
|
|
163
|
+
}
|
|
164
|
+
var standard_default = RialoWalletStandard;
|
|
165
|
+
|
|
166
|
+
exports.RIALO_SIGN_AND_SEND_TRANSACTION = RIALO_SIGN_AND_SEND_TRANSACTION;
|
|
167
|
+
exports.RIALO_SIGN_MESSAGE = RIALO_SIGN_MESSAGE;
|
|
168
|
+
exports.RIALO_SIGN_TRANSACTION = RIALO_SIGN_TRANSACTION;
|
|
169
|
+
exports.RialoWalletStandard = RialoWalletStandard;
|
|
170
|
+
exports.default = standard_default;
|
|
171
|
+
exports.getRialoWallet = getRialoWallet;
|
|
172
|
+
exports.isRialoWalletRegistered = isRialoWalletRegistered;
|
|
173
|
+
exports.registerRialoWallet = registerRialoWallet;
|
|
174
|
+
//# sourceMappingURL=standard.cjs.map
|
|
175
|
+
//# sourceMappingURL=standard.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/standard.ts"],"names":[],"mappings":"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","file":"standard.cjs","sourcesContent":["/**\n * @rialo/wallet-adapter/standard\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;\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<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 }>;\n signMessage(message: string): Promise<{ signature: string }>;\n}\n\nexport class RialoWalletStandard implements RialoWallet {\n readonly version = '1.0.0' as const;\n readonly name = 'Rialo Wallet';\n readonly icon = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHBhdGggZD0iTTggMTBIMjRWMjJIOFYxMFoiIGZpbGw9IndoaXRlIi8+PC9zdmc+';\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\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 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 addresses = await provider.connect();\n this._accounts = addresses.map((addr) => this.createAccount(addr));\n this._connected = true;\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 = btoa(String.fromCharCode(...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 ? Uint8Array.from(atob(result.rawTransaction), (c) => c.charCodeAt(0))\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 = btoa(String.fromCharCode(...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 };\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') ? result.signature.slice(2) : result.signature;\n const signatureBytes = new Uint8Array(sigHex.match(/.{1,2}/g)?.map((byte) => parseInt(byte, 16)) || []);\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: [RIALO_SIGN_TRANSACTION, RIALO_SIGN_AND_SEND_TRANSACTION, RIALO_SIGN_MESSAGE],\n label: 'Rialo Account',\n };\n }\n\n setActiveChain(chain: RialoChain): void {\n this._activeChain = chain;\n this.emit('change', { chains: [chain] });\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 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 } 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\nif (typeof window !== 'undefined' && document.readyState === 'complete') {\n registerRialoWallet();\n} else if (typeof window !== 'undefined') {\n window.addEventListener('load', registerRialoWallet);\n}\n\nexport default RialoWalletStandard;\n"]}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rialo/wallet-adapter/standard
|
|
3
|
+
* Wallet Standard implementation for advanced integrations
|
|
4
|
+
*/
|
|
5
|
+
type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';
|
|
6
|
+
interface RialoWalletAccount {
|
|
7
|
+
address: string;
|
|
8
|
+
publicKey: Uint8Array;
|
|
9
|
+
chains: RialoChain[];
|
|
10
|
+
features: string[];
|
|
11
|
+
label?: string;
|
|
12
|
+
icon?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const RIALO_SIGN_TRANSACTION: "rialo:signTransaction";
|
|
15
|
+
declare const RIALO_SIGN_AND_SEND_TRANSACTION: "rialo:signAndSendTransaction";
|
|
16
|
+
declare const RIALO_SIGN_MESSAGE: "rialo:signMessage";
|
|
17
|
+
interface SignTransactionInput {
|
|
18
|
+
account: RialoWalletAccount;
|
|
19
|
+
transaction: Uint8Array;
|
|
20
|
+
chain?: RialoChain;
|
|
21
|
+
}
|
|
22
|
+
interface SignTransactionOutput {
|
|
23
|
+
signedTransaction: Uint8Array;
|
|
24
|
+
}
|
|
25
|
+
interface SignAndSendTransactionInput {
|
|
26
|
+
account: RialoWalletAccount;
|
|
27
|
+
transaction: Uint8Array;
|
|
28
|
+
chain?: RialoChain;
|
|
29
|
+
options?: {
|
|
30
|
+
skipPreflight?: boolean;
|
|
31
|
+
preflightCommitment?: 'processed' | 'confirmed' | 'finalized';
|
|
32
|
+
maxRetries?: number;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
interface SignAndSendTransactionOutput {
|
|
36
|
+
signature: string;
|
|
37
|
+
}
|
|
38
|
+
interface SignMessageInput {
|
|
39
|
+
account: RialoWalletAccount;
|
|
40
|
+
message: Uint8Array;
|
|
41
|
+
}
|
|
42
|
+
interface SignMessageOutput {
|
|
43
|
+
signature: Uint8Array;
|
|
44
|
+
signedMessage: Uint8Array;
|
|
45
|
+
}
|
|
46
|
+
interface WalletStandardEvents {
|
|
47
|
+
change: {
|
|
48
|
+
accounts?: RialoWalletAccount[];
|
|
49
|
+
chains?: RialoChain[];
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
interface StandardConnectFeature {
|
|
53
|
+
'standard:connect': {
|
|
54
|
+
connect(): Promise<{
|
|
55
|
+
accounts: RialoWalletAccount[];
|
|
56
|
+
}>;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
interface StandardDisconnectFeature {
|
|
60
|
+
'standard:disconnect': {
|
|
61
|
+
disconnect(): Promise<void>;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
interface StandardEventsFeature {
|
|
65
|
+
'standard:events': {
|
|
66
|
+
on<E extends keyof WalletStandardEvents>(event: E, listener: (data: WalletStandardEvents[E]) => void): () => void;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
interface RialoSignTransactionFeature {
|
|
70
|
+
[RIALO_SIGN_TRANSACTION]: {
|
|
71
|
+
signTransaction(input: SignTransactionInput): Promise<SignTransactionOutput>;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
interface RialoSignAndSendTransactionFeature {
|
|
75
|
+
[RIALO_SIGN_AND_SEND_TRANSACTION]: {
|
|
76
|
+
signAndSendTransaction(input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput>;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
interface RialoSignMessageFeature {
|
|
80
|
+
[RIALO_SIGN_MESSAGE]: {
|
|
81
|
+
signMessage(input: SignMessageInput): Promise<SignMessageOutput>;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
interface RialoWallet {
|
|
85
|
+
readonly version: '1.0.0';
|
|
86
|
+
readonly name: string;
|
|
87
|
+
readonly icon: string;
|
|
88
|
+
readonly chains: RialoChain[];
|
|
89
|
+
readonly accounts: RialoWalletAccount[];
|
|
90
|
+
readonly features: StandardConnectFeature & StandardDisconnectFeature & StandardEventsFeature & RialoSignTransactionFeature & RialoSignAndSendTransactionFeature & RialoSignMessageFeature;
|
|
91
|
+
}
|
|
92
|
+
declare class RialoWalletStandard implements RialoWallet {
|
|
93
|
+
readonly version: "1.0.0";
|
|
94
|
+
readonly name = "Rialo Wallet";
|
|
95
|
+
readonly icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHBhdGggZD0iTTggMTBIMjRWMjJIOFYxMFoiIGZpbGw9IndoaXRlIi8+PC9zdmc+";
|
|
96
|
+
private _accounts;
|
|
97
|
+
private _chains;
|
|
98
|
+
private _activeChain;
|
|
99
|
+
private _eventListeners;
|
|
100
|
+
private _connected;
|
|
101
|
+
get chains(): RialoChain[];
|
|
102
|
+
get accounts(): RialoWalletAccount[];
|
|
103
|
+
private get provider();
|
|
104
|
+
readonly features: {
|
|
105
|
+
'standard:connect': {
|
|
106
|
+
connect: () => Promise<{
|
|
107
|
+
accounts: RialoWalletAccount[];
|
|
108
|
+
}>;
|
|
109
|
+
};
|
|
110
|
+
'standard:disconnect': {
|
|
111
|
+
disconnect: () => Promise<void>;
|
|
112
|
+
};
|
|
113
|
+
'standard:events': {
|
|
114
|
+
on: <E extends keyof WalletStandardEvents>(event: E, listener: (data: WalletStandardEvents[E]) => void) => (() => void);
|
|
115
|
+
};
|
|
116
|
+
"rialo:signTransaction": {
|
|
117
|
+
signTransaction: (input: SignTransactionInput) => Promise<SignTransactionOutput>;
|
|
118
|
+
};
|
|
119
|
+
"rialo:signAndSendTransaction": {
|
|
120
|
+
signAndSendTransaction: (input: SignAndSendTransactionInput) => Promise<SignAndSendTransactionOutput>;
|
|
121
|
+
};
|
|
122
|
+
"rialo:signMessage": {
|
|
123
|
+
signMessage: (input: SignMessageInput) => Promise<SignMessageOutput>;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
private emit;
|
|
127
|
+
private createAccount;
|
|
128
|
+
setActiveChain(chain: RialoChain): void;
|
|
129
|
+
}
|
|
130
|
+
declare function registerRialoWallet(): RialoWalletStandard;
|
|
131
|
+
declare function getRialoWallet(): RialoWalletStandard | null;
|
|
132
|
+
declare function isRialoWalletRegistered(): boolean;
|
|
133
|
+
|
|
134
|
+
export { 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 };
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rialo/wallet-adapter/standard
|
|
3
|
+
* Wallet Standard implementation for advanced integrations
|
|
4
|
+
*/
|
|
5
|
+
type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';
|
|
6
|
+
interface RialoWalletAccount {
|
|
7
|
+
address: string;
|
|
8
|
+
publicKey: Uint8Array;
|
|
9
|
+
chains: RialoChain[];
|
|
10
|
+
features: string[];
|
|
11
|
+
label?: string;
|
|
12
|
+
icon?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const RIALO_SIGN_TRANSACTION: "rialo:signTransaction";
|
|
15
|
+
declare const RIALO_SIGN_AND_SEND_TRANSACTION: "rialo:signAndSendTransaction";
|
|
16
|
+
declare const RIALO_SIGN_MESSAGE: "rialo:signMessage";
|
|
17
|
+
interface SignTransactionInput {
|
|
18
|
+
account: RialoWalletAccount;
|
|
19
|
+
transaction: Uint8Array;
|
|
20
|
+
chain?: RialoChain;
|
|
21
|
+
}
|
|
22
|
+
interface SignTransactionOutput {
|
|
23
|
+
signedTransaction: Uint8Array;
|
|
24
|
+
}
|
|
25
|
+
interface SignAndSendTransactionInput {
|
|
26
|
+
account: RialoWalletAccount;
|
|
27
|
+
transaction: Uint8Array;
|
|
28
|
+
chain?: RialoChain;
|
|
29
|
+
options?: {
|
|
30
|
+
skipPreflight?: boolean;
|
|
31
|
+
preflightCommitment?: 'processed' | 'confirmed' | 'finalized';
|
|
32
|
+
maxRetries?: number;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
interface SignAndSendTransactionOutput {
|
|
36
|
+
signature: string;
|
|
37
|
+
}
|
|
38
|
+
interface SignMessageInput {
|
|
39
|
+
account: RialoWalletAccount;
|
|
40
|
+
message: Uint8Array;
|
|
41
|
+
}
|
|
42
|
+
interface SignMessageOutput {
|
|
43
|
+
signature: Uint8Array;
|
|
44
|
+
signedMessage: Uint8Array;
|
|
45
|
+
}
|
|
46
|
+
interface WalletStandardEvents {
|
|
47
|
+
change: {
|
|
48
|
+
accounts?: RialoWalletAccount[];
|
|
49
|
+
chains?: RialoChain[];
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
interface StandardConnectFeature {
|
|
53
|
+
'standard:connect': {
|
|
54
|
+
connect(): Promise<{
|
|
55
|
+
accounts: RialoWalletAccount[];
|
|
56
|
+
}>;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
interface StandardDisconnectFeature {
|
|
60
|
+
'standard:disconnect': {
|
|
61
|
+
disconnect(): Promise<void>;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
interface StandardEventsFeature {
|
|
65
|
+
'standard:events': {
|
|
66
|
+
on<E extends keyof WalletStandardEvents>(event: E, listener: (data: WalletStandardEvents[E]) => void): () => void;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
interface RialoSignTransactionFeature {
|
|
70
|
+
[RIALO_SIGN_TRANSACTION]: {
|
|
71
|
+
signTransaction(input: SignTransactionInput): Promise<SignTransactionOutput>;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
interface RialoSignAndSendTransactionFeature {
|
|
75
|
+
[RIALO_SIGN_AND_SEND_TRANSACTION]: {
|
|
76
|
+
signAndSendTransaction(input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput>;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
interface RialoSignMessageFeature {
|
|
80
|
+
[RIALO_SIGN_MESSAGE]: {
|
|
81
|
+
signMessage(input: SignMessageInput): Promise<SignMessageOutput>;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
interface RialoWallet {
|
|
85
|
+
readonly version: '1.0.0';
|
|
86
|
+
readonly name: string;
|
|
87
|
+
readonly icon: string;
|
|
88
|
+
readonly chains: RialoChain[];
|
|
89
|
+
readonly accounts: RialoWalletAccount[];
|
|
90
|
+
readonly features: StandardConnectFeature & StandardDisconnectFeature & StandardEventsFeature & RialoSignTransactionFeature & RialoSignAndSendTransactionFeature & RialoSignMessageFeature;
|
|
91
|
+
}
|
|
92
|
+
declare class RialoWalletStandard implements RialoWallet {
|
|
93
|
+
readonly version: "1.0.0";
|
|
94
|
+
readonly name = "Rialo Wallet";
|
|
95
|
+
readonly icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHBhdGggZD0iTTggMTBIMjRWMjJIOFYxMFoiIGZpbGw9IndoaXRlIi8+PC9zdmc+";
|
|
96
|
+
private _accounts;
|
|
97
|
+
private _chains;
|
|
98
|
+
private _activeChain;
|
|
99
|
+
private _eventListeners;
|
|
100
|
+
private _connected;
|
|
101
|
+
get chains(): RialoChain[];
|
|
102
|
+
get accounts(): RialoWalletAccount[];
|
|
103
|
+
private get provider();
|
|
104
|
+
readonly features: {
|
|
105
|
+
'standard:connect': {
|
|
106
|
+
connect: () => Promise<{
|
|
107
|
+
accounts: RialoWalletAccount[];
|
|
108
|
+
}>;
|
|
109
|
+
};
|
|
110
|
+
'standard:disconnect': {
|
|
111
|
+
disconnect: () => Promise<void>;
|
|
112
|
+
};
|
|
113
|
+
'standard:events': {
|
|
114
|
+
on: <E extends keyof WalletStandardEvents>(event: E, listener: (data: WalletStandardEvents[E]) => void) => (() => void);
|
|
115
|
+
};
|
|
116
|
+
"rialo:signTransaction": {
|
|
117
|
+
signTransaction: (input: SignTransactionInput) => Promise<SignTransactionOutput>;
|
|
118
|
+
};
|
|
119
|
+
"rialo:signAndSendTransaction": {
|
|
120
|
+
signAndSendTransaction: (input: SignAndSendTransactionInput) => Promise<SignAndSendTransactionOutput>;
|
|
121
|
+
};
|
|
122
|
+
"rialo:signMessage": {
|
|
123
|
+
signMessage: (input: SignMessageInput) => Promise<SignMessageOutput>;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
private emit;
|
|
127
|
+
private createAccount;
|
|
128
|
+
setActiveChain(chain: RialoChain): void;
|
|
129
|
+
}
|
|
130
|
+
declare function registerRialoWallet(): RialoWalletStandard;
|
|
131
|
+
declare function getRialoWallet(): RialoWalletStandard | null;
|
|
132
|
+
declare function isRialoWalletRegistered(): boolean;
|
|
133
|
+
|
|
134
|
+
export { 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 };
|
package/dist/standard.js
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// src/standard.ts
|
|
2
|
+
var RIALO_SIGN_TRANSACTION = "rialo:signTransaction";
|
|
3
|
+
var RIALO_SIGN_AND_SEND_TRANSACTION = "rialo:signAndSendTransaction";
|
|
4
|
+
var RIALO_SIGN_MESSAGE = "rialo:signMessage";
|
|
5
|
+
var RialoWalletStandard = class {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.version = "1.0.0";
|
|
8
|
+
this.name = "Rialo Wallet";
|
|
9
|
+
this.icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHBhdGggZD0iTTggMTBIMjRWMjJIOFYxMFoiIGZpbGw9IndoaXRlIi8+PC9zdmc+";
|
|
10
|
+
this._accounts = [];
|
|
11
|
+
this._chains = ["rialo:mainnet", "rialo:testnet", "rialo:devnet", "rialo:localnet"];
|
|
12
|
+
this._activeChain = "rialo:devnet";
|
|
13
|
+
this._eventListeners = {};
|
|
14
|
+
this._connected = false;
|
|
15
|
+
this.features = {
|
|
16
|
+
"standard:connect": {
|
|
17
|
+
connect: async () => {
|
|
18
|
+
const provider = this.provider;
|
|
19
|
+
if (!provider) throw new Error("Rialo Wallet not installed");
|
|
20
|
+
const addresses = await provider.connect();
|
|
21
|
+
this._accounts = addresses.map((addr) => this.createAccount(addr));
|
|
22
|
+
this._connected = true;
|
|
23
|
+
this.emit("change", { accounts: this._accounts });
|
|
24
|
+
return { accounts: this._accounts };
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"standard:disconnect": {
|
|
28
|
+
disconnect: async () => {
|
|
29
|
+
const provider = this.provider;
|
|
30
|
+
if (provider) await provider.disconnect();
|
|
31
|
+
this._accounts = [];
|
|
32
|
+
this._connected = false;
|
|
33
|
+
this.emit("change", { accounts: [] });
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"standard:events": {
|
|
37
|
+
on: (event, listener) => {
|
|
38
|
+
if (!this._eventListeners[event]) {
|
|
39
|
+
this._eventListeners[event] = /* @__PURE__ */ new Set();
|
|
40
|
+
}
|
|
41
|
+
const listeners = this._eventListeners[event];
|
|
42
|
+
listeners.add(listener);
|
|
43
|
+
return () => listeners.delete(listener);
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
[RIALO_SIGN_TRANSACTION]: {
|
|
47
|
+
signTransaction: async (input) => {
|
|
48
|
+
if (!this._connected) throw new Error("Wallet not connected");
|
|
49
|
+
const provider = this.provider;
|
|
50
|
+
if (!provider) throw new Error("Rialo Wallet not available");
|
|
51
|
+
const transactionBase64 = btoa(String.fromCharCode(...input.transaction));
|
|
52
|
+
const result = await provider.signTransaction({
|
|
53
|
+
transaction: transactionBase64,
|
|
54
|
+
chain: input.chain || this._activeChain
|
|
55
|
+
});
|
|
56
|
+
const signedTxBytes = result.rawTransaction ? Uint8Array.from(atob(result.rawTransaction), (c) => c.charCodeAt(0)) : input.transaction;
|
|
57
|
+
return { signedTransaction: signedTxBytes };
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
[RIALO_SIGN_AND_SEND_TRANSACTION]: {
|
|
61
|
+
signAndSendTransaction: async (input) => {
|
|
62
|
+
if (!this._connected) throw new Error("Wallet not connected");
|
|
63
|
+
const provider = this.provider;
|
|
64
|
+
if (!provider) throw new Error("Rialo Wallet not available");
|
|
65
|
+
const transactionBase64 = btoa(String.fromCharCode(...input.transaction));
|
|
66
|
+
const result = await provider.signAndSendTransaction({
|
|
67
|
+
transaction: transactionBase64,
|
|
68
|
+
chain: input.chain || this._activeChain,
|
|
69
|
+
options: input.options
|
|
70
|
+
});
|
|
71
|
+
return { signature: result.hash };
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
[RIALO_SIGN_MESSAGE]: {
|
|
75
|
+
signMessage: async (input) => {
|
|
76
|
+
if (!this._connected) throw new Error("Wallet not connected");
|
|
77
|
+
const provider = this.provider;
|
|
78
|
+
if (!provider) throw new Error("Rialo Wallet not available");
|
|
79
|
+
const messageStr = new TextDecoder().decode(input.message);
|
|
80
|
+
const result = await provider.signMessage(messageStr);
|
|
81
|
+
const sigHex = result.signature.startsWith("0x") ? result.signature.slice(2) : result.signature;
|
|
82
|
+
const signatureBytes = new Uint8Array(sigHex.match(/.{1,2}/g)?.map((byte) => parseInt(byte, 16)) || []);
|
|
83
|
+
return { signature: signatureBytes, signedMessage: input.message };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
get chains() {
|
|
89
|
+
return [...this._chains];
|
|
90
|
+
}
|
|
91
|
+
get accounts() {
|
|
92
|
+
return [...this._accounts];
|
|
93
|
+
}
|
|
94
|
+
get provider() {
|
|
95
|
+
if (typeof window === "undefined") return void 0;
|
|
96
|
+
return window.rialo;
|
|
97
|
+
}
|
|
98
|
+
emit(event, data) {
|
|
99
|
+
const listeners = this._eventListeners[event];
|
|
100
|
+
if (listeners) {
|
|
101
|
+
listeners.forEach((listener) => {
|
|
102
|
+
listener(data);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
createAccount(address) {
|
|
107
|
+
const encoder = new TextEncoder();
|
|
108
|
+
const publicKey = new Uint8Array(32);
|
|
109
|
+
const addressBytes = encoder.encode(address);
|
|
110
|
+
publicKey.set(addressBytes.slice(0, 32));
|
|
111
|
+
return {
|
|
112
|
+
address,
|
|
113
|
+
publicKey,
|
|
114
|
+
chains: this._chains,
|
|
115
|
+
features: [RIALO_SIGN_TRANSACTION, RIALO_SIGN_AND_SEND_TRANSACTION, RIALO_SIGN_MESSAGE],
|
|
116
|
+
label: "Rialo Account"
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
setActiveChain(chain) {
|
|
120
|
+
this._activeChain = chain;
|
|
121
|
+
this.emit("change", { chains: [chain] });
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
var walletInstance = null;
|
|
125
|
+
function registerRialoWallet() {
|
|
126
|
+
if (walletInstance) return walletInstance;
|
|
127
|
+
walletInstance = new RialoWalletStandard();
|
|
128
|
+
if (typeof window !== "undefined") {
|
|
129
|
+
try {
|
|
130
|
+
const registerEvent = new CustomEvent("wallet-standard:register-wallet", {
|
|
131
|
+
detail: {
|
|
132
|
+
register: (callback) => {
|
|
133
|
+
callback(walletInstance);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
window.dispatchEvent(registerEvent);
|
|
138
|
+
} catch (error) {
|
|
139
|
+
console.warn("Failed to dispatch wallet registration event:", error);
|
|
140
|
+
}
|
|
141
|
+
Object.defineProperty(window, "__rialoWalletStandard", {
|
|
142
|
+
value: walletInstance,
|
|
143
|
+
writable: false,
|
|
144
|
+
configurable: false
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return walletInstance;
|
|
148
|
+
}
|
|
149
|
+
function getRialoWallet() {
|
|
150
|
+
return walletInstance;
|
|
151
|
+
}
|
|
152
|
+
function isRialoWalletRegistered() {
|
|
153
|
+
return walletInstance !== null;
|
|
154
|
+
}
|
|
155
|
+
if (typeof window !== "undefined" && document.readyState === "complete") {
|
|
156
|
+
registerRialoWallet();
|
|
157
|
+
} else if (typeof window !== "undefined") {
|
|
158
|
+
window.addEventListener("load", registerRialoWallet);
|
|
159
|
+
}
|
|
160
|
+
var standard_default = RialoWalletStandard;
|
|
161
|
+
|
|
162
|
+
export { RIALO_SIGN_AND_SEND_TRANSACTION, RIALO_SIGN_MESSAGE, RIALO_SIGN_TRANSACTION, RialoWalletStandard, standard_default as default, getRialoWallet, isRialoWalletRegistered, registerRialoWallet };
|
|
163
|
+
//# sourceMappingURL=standard.js.map
|
|
164
|
+
//# sourceMappingURL=standard.js.map
|