@authon/react-native-wallet 0.0.0-stage → 0.4.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.
Files changed (183) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +251 -2
  3. package/android/build.gradle +40 -0
  4. package/android/consumer-rules.pro +10 -0
  5. package/android/src/main/AndroidManifest.xml +8 -0
  6. package/android/src/main/java/dev/authon/reactnative/wallet/AuthonWalletModule.kt +235 -0
  7. package/android/src/vendor/GENERATED.md +4 -0
  8. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/AndroidCapabilityProbe.kt +86 -0
  9. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/AuthonWallet.kt +218 -0
  10. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Bitcoin.kt +296 -0
  11. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Bytes.kt +74 -0
  12. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Chains.kt +157 -0
  13. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/CredentialManagerPasskeys.kt +192 -0
  14. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Der.kt +17 -0
  15. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/DeviceStore.kt +170 -0
  16. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/DialogWalletApprover.kt +141 -0
  17. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Eip712.kt +176 -0
  18. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Encodings.kt +133 -0
  19. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/EvmAccount.kt +45 -0
  20. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/EvmTransaction.kt +180 -0
  21. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/GfTables.kt +44 -0
  22. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/HdWallet.kt +130 -0
  23. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Http.kt +86 -0
  24. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/JsValues.kt +83 -0
  25. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/KeystoreDeviceStore.kt +236 -0
  26. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Prf.kt +111 -0
  27. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Proof.kt +134 -0
  28. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Shamir.kt +106 -0
  29. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/SignSummary.kt +335 -0
  30. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Solana.kt +195 -0
  31. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Tron.kt +184 -0
  32. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletApi.kt +361 -0
  33. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletCapabilities.kt +91 -0
  34. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletError.kt +74 -0
  35. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletOps.kt +551 -0
  36. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletTypes.kt +78 -0
  37. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Xrp.kt +193 -0
  38. package/build/authonContext.d.ts +19 -0
  39. package/build/authonContext.d.ts.map +1 -0
  40. package/build/authonContext.js +20 -0
  41. package/build/authonContext.js.map +1 -0
  42. package/build/client.d.ts +92 -0
  43. package/build/client.d.ts.map +1 -0
  44. package/build/client.js +431 -0
  45. package/build/client.js.map +1 -0
  46. package/build/errors.d.ts +25 -0
  47. package/build/errors.d.ts.map +1 -0
  48. package/build/errors.js +15 -0
  49. package/build/errors.js.map +1 -0
  50. package/build/index.d.ts +7 -0
  51. package/build/index.d.ts.map +1 -0
  52. package/build/index.js +4 -0
  53. package/build/index.js.map +1 -0
  54. package/build/native.d.ts +43 -0
  55. package/build/native.d.ts.map +1 -0
  56. package/build/native.js +12 -0
  57. package/build/native.js.map +1 -0
  58. package/build/types.d.ts +167 -0
  59. package/build/types.d.ts.map +1 -0
  60. package/build/types.js +3 -0
  61. package/build/types.js.map +1 -0
  62. package/build/useAuthonWallet.d.ts +25 -0
  63. package/build/useAuthonWallet.d.ts.map +1 -0
  64. package/build/useAuthonWallet.js +77 -0
  65. package/build/useAuthonWallet.js.map +1 -0
  66. package/expo-module.config.json +9 -0
  67. package/ios/AuthonReactNativeWallet.podspec +41 -0
  68. package/ios/AuthonWalletModule.swift +233 -0
  69. package/ios/vendor/AuthonWallet/AuthonWallet.swift +232 -0
  70. package/ios/vendor/AuthonWallet/Capabilities.swift +149 -0
  71. package/ios/vendor/AuthonWallet/Chains/Bitcoin.swift +296 -0
  72. package/ios/vendor/AuthonWallet/Chains/Solana.swift +207 -0
  73. package/ios/vendor/AuthonWallet/Chains/Tron.swift +181 -0
  74. package/ios/vendor/AuthonWallet/Chains/XRP.swift +191 -0
  75. package/ios/vendor/AuthonWallet/Crypto/BIP39Wordlist.swift +262 -0
  76. package/ios/vendor/AuthonWallet/Crypto/Chains.swift +278 -0
  77. package/ios/vendor/AuthonWallet/Crypto/HDKey.swift +108 -0
  78. package/ios/vendor/AuthonWallet/Crypto/Secp256k1.swift +128 -0
  79. package/ios/vendor/AuthonWallet/Crypto/Shamir.swift +123 -0
  80. package/ios/vendor/AuthonWallet/EVM/Address.swift +57 -0
  81. package/ios/vendor/AuthonWallet/EVM/EvmAccount.swift +48 -0
  82. package/ios/vendor/AuthonWallet/EVM/Transaction.swift +165 -0
  83. package/ios/vendor/AuthonWallet/EVM/TypedData.swift +193 -0
  84. package/ios/vendor/AuthonWallet/Support/BigInteger.swift +220 -0
  85. package/ios/vendor/AuthonWallet/Support/Bytes.swift +89 -0
  86. package/ios/vendor/AuthonWallet/Support/JSONValue.swift +341 -0
  87. package/ios/vendor/AuthonWallet/UI/WalletApprover.swift +250 -0
  88. package/ios/vendor/AuthonWallet/Wallet/Backup.swift +69 -0
  89. package/ios/vendor/AuthonWallet/Wallet/DeviceStore.swift +351 -0
  90. package/ios/vendor/AuthonWallet/Wallet/Passkeys.swift +190 -0
  91. package/ios/vendor/AuthonWallet/Wallet/Proof.swift +143 -0
  92. package/ios/vendor/AuthonWallet/Wallet/Shares.swift +116 -0
  93. package/ios/vendor/AuthonWallet/Wallet/Summary.swift +342 -0
  94. package/ios/vendor/AuthonWallet/Wallet/WalletAPI.swift +361 -0
  95. package/ios/vendor/AuthonWallet/Wallet/WalletOps.swift +654 -0
  96. package/ios/vendor/AuthonWallet/WalletError.swift +84 -0
  97. package/ios/vendor/CKeccak/LICENSE +22 -0
  98. package/ios/vendor/CKeccak/README.md +30 -0
  99. package/ios/vendor/CKeccak/byte_order.h +59 -0
  100. package/ios/vendor/CKeccak/include/ckeccak.h +13 -0
  101. package/ios/vendor/CKeccak/memzero.c +75 -0
  102. package/ios/vendor/CKeccak/memzero.h +8 -0
  103. package/ios/vendor/CKeccak/options.h +99 -0
  104. package/ios/vendor/CKeccak/ripemd160.c +343 -0
  105. package/ios/vendor/CKeccak/ripemd160.h +22 -0
  106. package/ios/vendor/CKeccak/sha3.c +413 -0
  107. package/ios/vendor/CKeccak/sha3.h +89 -0
  108. package/ios/vendor/CMonocypher/LICENCE.md +173 -0
  109. package/ios/vendor/CMonocypher/README.md +27 -0
  110. package/ios/vendor/CMonocypher/include/monocypher-ed25519.h +140 -0
  111. package/ios/vendor/CMonocypher/include/monocypher.h +321 -0
  112. package/ios/vendor/CMonocypher/monocypher-ed25519.c +500 -0
  113. package/ios/vendor/CMonocypher/monocypher.c +2956 -0
  114. package/ios/vendor/CSecp256k1/COPYING +19 -0
  115. package/ios/vendor/CSecp256k1/README.md +35 -0
  116. package/ios/vendor/CSecp256k1/build/precomputed_ecmult.c +3 -0
  117. package/ios/vendor/CSecp256k1/build/precomputed_ecmult_gen.c +3 -0
  118. package/ios/vendor/CSecp256k1/build/secp256k1.c +3 -0
  119. package/ios/vendor/CSecp256k1/include/secp256k1.h +899 -0
  120. package/ios/vendor/CSecp256k1/include/secp256k1_preallocated.h +134 -0
  121. package/ios/vendor/CSecp256k1/include/secp256k1_recovery.h +113 -0
  122. package/ios/vendor/CSecp256k1/src/assumptions.h +87 -0
  123. package/ios/vendor/CSecp256k1/src/checkmem.h +102 -0
  124. package/ios/vendor/CSecp256k1/src/ecdsa.h +21 -0
  125. package/ios/vendor/CSecp256k1/src/ecdsa_impl.h +304 -0
  126. package/ios/vendor/CSecp256k1/src/eckey.h +25 -0
  127. package/ios/vendor/CSecp256k1/src/eckey_impl.h +92 -0
  128. package/ios/vendor/CSecp256k1/src/ecmult.h +61 -0
  129. package/ios/vendor/CSecp256k1/src/ecmult_const.h +38 -0
  130. package/ios/vendor/CSecp256k1/src/ecmult_const_impl.h +399 -0
  131. package/ios/vendor/CSecp256k1/src/ecmult_gen.h +143 -0
  132. package/ios/vendor/CSecp256k1/src/ecmult_gen_impl.h +341 -0
  133. package/ios/vendor/CSecp256k1/src/ecmult_impl.h +853 -0
  134. package/ios/vendor/CSecp256k1/src/field.h +350 -0
  135. package/ios/vendor/CSecp256k1/src/field_10x26.h +57 -0
  136. package/ios/vendor/CSecp256k1/src/field_10x26_impl.h +1232 -0
  137. package/ios/vendor/CSecp256k1/src/field_5x52.h +62 -0
  138. package/ios/vendor/CSecp256k1/src/field_5x52_impl.h +522 -0
  139. package/ios/vendor/CSecp256k1/src/field_5x52_int128_impl.h +274 -0
  140. package/ios/vendor/CSecp256k1/src/field_impl.h +457 -0
  141. package/ios/vendor/CSecp256k1/src/group.h +212 -0
  142. package/ios/vendor/CSecp256k1/src/group_impl.h +974 -0
  143. package/ios/vendor/CSecp256k1/src/hash.h +44 -0
  144. package/ios/vendor/CSecp256k1/src/hash_impl.h +299 -0
  145. package/ios/vendor/CSecp256k1/src/hsort.h +33 -0
  146. package/ios/vendor/CSecp256k1/src/hsort_impl.h +125 -0
  147. package/ios/vendor/CSecp256k1/src/int128.h +90 -0
  148. package/ios/vendor/CSecp256k1/src/int128_impl.h +18 -0
  149. package/ios/vendor/CSecp256k1/src/int128_native.h +19 -0
  150. package/ios/vendor/CSecp256k1/src/int128_native_impl.h +94 -0
  151. package/ios/vendor/CSecp256k1/src/int128_struct.h +14 -0
  152. package/ios/vendor/CSecp256k1/src/int128_struct_impl.h +205 -0
  153. package/ios/vendor/CSecp256k1/src/modinv32.h +43 -0
  154. package/ios/vendor/CSecp256k1/src/modinv32_impl.h +725 -0
  155. package/ios/vendor/CSecp256k1/src/modinv64.h +47 -0
  156. package/ios/vendor/CSecp256k1/src/modinv64_impl.h +780 -0
  157. package/ios/vendor/CSecp256k1/src/modules/recovery/main_impl.h +159 -0
  158. package/ios/vendor/CSecp256k1/src/precomputed_ecmult.c +16456 -0
  159. package/ios/vendor/CSecp256k1/src/precomputed_ecmult.h +38 -0
  160. package/ios/vendor/CSecp256k1/src/precomputed_ecmult_gen.c +1779 -0
  161. package/ios/vendor/CSecp256k1/src/precomputed_ecmult_gen.h +26 -0
  162. package/ios/vendor/CSecp256k1/src/scalar.h +105 -0
  163. package/ios/vendor/CSecp256k1/src/scalar_4x64.h +19 -0
  164. package/ios/vendor/CSecp256k1/src/scalar_4x64_impl.h +1000 -0
  165. package/ios/vendor/CSecp256k1/src/scalar_8x32.h +19 -0
  166. package/ios/vendor/CSecp256k1/src/scalar_8x32_impl.h +816 -0
  167. package/ios/vendor/CSecp256k1/src/scalar_impl.h +321 -0
  168. package/ios/vendor/CSecp256k1/src/scalar_low.h +24 -0
  169. package/ios/vendor/CSecp256k1/src/scalar_low_impl.h +206 -0
  170. package/ios/vendor/CSecp256k1/src/scratch.h +44 -0
  171. package/ios/vendor/CSecp256k1/src/scratch_impl.h +99 -0
  172. package/ios/vendor/CSecp256k1/src/secp256k1.c +831 -0
  173. package/ios/vendor/CSecp256k1/src/selftest.h +32 -0
  174. package/ios/vendor/CSecp256k1/src/util.h +451 -0
  175. package/ios/vendor/GENERATED.md +4 -0
  176. package/package.json +66 -3
  177. package/src/authonContext.ts +30 -0
  178. package/src/client.ts +459 -0
  179. package/src/errors.ts +58 -0
  180. package/src/index.ts +26 -0
  181. package/src/native.ts +52 -0
  182. package/src/types.ts +171 -0
  183. package/src/useAuthonWallet.ts +103 -0
@@ -0,0 +1,431 @@
1
+ import { Platform } from 'expo-modules-core';
2
+ import { AuthonWalletError } from './errors';
3
+ import { getNativeModule } from './native';
4
+ const MAX_ACCOUNT_INDEX = 0x7fffffff;
5
+ let counter = 0;
6
+ const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
7
+ const str = (v) => (typeof v === 'string' ? v : null);
8
+ /** Copies only the public fields, so nothing else the native side might add reaches the app. */
9
+ function toWallet(value) {
10
+ if (!isObject(value) || typeof value.address !== 'string')
11
+ throw new AuthonWalletError('UNKNOWN', 'Wallet returned no wallet');
12
+ const devices = Array.isArray(value.devices)
13
+ ? value.devices.filter(isObject).map((d) => ({
14
+ id: String(d.id),
15
+ label: str(d.label),
16
+ createdAt: str(d.createdAt),
17
+ lastUsedAt: str(d.lastUsedAt),
18
+ current: d.current === true,
19
+ }))
20
+ : [];
21
+ return {
22
+ address: value.address,
23
+ protected: value.protected === true,
24
+ needsRestore: value.needsRestore === true,
25
+ backupUpgradeRecommended: value.backupUpgradeRecommended === true,
26
+ devices,
27
+ };
28
+ }
29
+ const CHAINS = ['evm', 'tron', 'xrp', 'bitcoin', 'bitcoin-testnet', 'solana'];
30
+ function toAccounts(value) {
31
+ if (!Array.isArray(value))
32
+ throw new AuthonWalletError('UNKNOWN', 'Wallet returned no accounts');
33
+ return value.filter(isObject).map((a) => {
34
+ const account = { index: Number(a.index), path: String(a.path), address: String(a.address) };
35
+ if (CHAINS.includes(a.chain))
36
+ account.chain = a.chain;
37
+ if (typeof a.publicKey === 'string' && /^(0x)?[0-9a-fA-F]+$/.test(a.publicKey))
38
+ account.publicKey = a.publicKey;
39
+ return account;
40
+ });
41
+ }
42
+ function toHex(value) {
43
+ if (typeof value !== 'string' || !/^0x[0-9a-fA-F]*$/.test(value))
44
+ throw new AuthonWalletError('UNKNOWN', 'Wallet returned no signature');
45
+ return value;
46
+ }
47
+ function toAppConfig(value) {
48
+ if (!isObject(value))
49
+ throw new AuthonWalletError('UNKNOWN', 'Wallet returned no app config');
50
+ return {
51
+ projectId: str(value.projectId),
52
+ allowed: value.allowed === true,
53
+ approved: value.approved === true,
54
+ enabled: value.enabled === true,
55
+ chainIds: Array.isArray(value.chainIds) ? value.chainIds.map(Number) : [],
56
+ confirmSigning: value.confirmSigning !== false,
57
+ rpId: String(value.rpId ?? ''),
58
+ minFrameProtocol: typeof value.minFrameProtocol === 'number' ? value.minFrameProtocol : null,
59
+ };
60
+ }
61
+ const STATUSES = ['available', 'unavailable', 'unknown'];
62
+ function toCheck(value) {
63
+ const v = isObject(value) ? value : {};
64
+ const status = STATUSES.includes(v.status) ? v.status : 'unknown';
65
+ return { status, reason: status === 'available' ? null : str(v.reason) ?? 'CHECK_FAILED' };
66
+ }
67
+ function toCapabilities(value) {
68
+ if (!isObject(value))
69
+ throw new AuthonWalletError('UNKNOWN', 'Wallet returned no capabilities');
70
+ const checks = {
71
+ app: toCheck(value.app),
72
+ wallet: toCheck(value.wallet),
73
+ secureStorage: toCheck(value.secureStorage),
74
+ deviceLock: toCheck(value.deviceLock),
75
+ passkeyBackup: toCheck(value.passkeyBackup),
76
+ };
77
+ const all = Object.values(checks).map((c) => c.status);
78
+ const ready = all.includes('unavailable') ? 'unavailable' : all.includes('unknown') ? 'unknown' : 'available';
79
+ return { ready, ...checks, diagnosticId: str(value.diagnosticId) };
80
+ }
81
+ /** bigint → 0x hex (transactions, like @authon/js). */
82
+ const txReplacer = (_key, v) => (typeof v === 'bigint' ? `0x${v.toString(16)}` : v);
83
+ /** bigint → decimal string (EIP-712 integer values). */
84
+ const typedReplacer = (_key, v) => (typeof v === 'bigint' ? v.toString(10) : v);
85
+ /**
86
+ * The Authon embedded wallet in a React Native app. Signing runs in the native Swift / Kotlin
87
+ * wallet; JS only sees addresses, signatures, status and devices.
88
+ */
89
+ export class AuthonWalletClient {
90
+ id = `authon-wallet-${++counter}`;
91
+ options;
92
+ listeners = new Set();
93
+ accountAddresses = new Map();
94
+ configured = null;
95
+ ensuring = null;
96
+ /** Bumped by dispose(); results of calls started before it are dropped (DISPOSED). */
97
+ generation = 0;
98
+ constructor(options) {
99
+ if (!options?.publishableKey)
100
+ throw new AuthonWalletError('INVALID_PARAMS', 'publishableKey is required');
101
+ if (typeof options.getToken !== 'function')
102
+ throw new AuthonWalletError('INVALID_PARAMS', 'getToken is required');
103
+ this.options = options;
104
+ }
105
+ /** App registration and wallet settings (does not need a session). */
106
+ async appConfig() {
107
+ const generation = this.generation;
108
+ const native = await this.native();
109
+ return toAppConfig(this.unwrap(await native.appConfig(this.id), generation));
110
+ }
111
+ /**
112
+ * Whether this device and app can use the wallet, before sign-in (no session, creates nothing,
113
+ * opens no UI). `ready === 'unavailable'`: tell the user before signing in; `unknown`: continue
114
+ * but expect that feature to fail. Answers for release builds (test options are ignored).
115
+ */
116
+ async capabilities() {
117
+ const generation = this.generation;
118
+ const native = await this.native();
119
+ return toCapabilities(this.unwrap(await native.capabilities(this.id), generation));
120
+ }
121
+ /** The signed-in user's wallet, or null when there is none yet. */
122
+ async get() {
123
+ try {
124
+ return this.remember(toWallet(await this.call((n, id, token) => n.status(id, token))));
125
+ }
126
+ catch (error) {
127
+ if (error instanceof AuthonWalletError && error.code === 'NOT_FOUND')
128
+ return null;
129
+ throw error;
130
+ }
131
+ }
132
+ /** Same as `get()` (the frame method is `wallet.status`). */
133
+ status() {
134
+ return this.get();
135
+ }
136
+ /** Creates the wallet (two-phase on the server), or returns the existing one. */
137
+ async create() {
138
+ const wallet = this.remember(toWallet(await this.call((n, id, token) => n.create(id, token))));
139
+ this.notify(wallet);
140
+ return wallet;
141
+ }
142
+ /** Returns the wallet, creating it first when the user has none. Concurrent calls share one request. */
143
+ ensure() {
144
+ if (this.ensuring)
145
+ return this.ensuring;
146
+ const run = (async () => (await this.get()) ?? (await this.create()))();
147
+ this.ensuring = run;
148
+ const clear = () => {
149
+ if (this.ensuring === run)
150
+ this.ensuring = null;
151
+ };
152
+ run.then(clear, clear);
153
+ return run;
154
+ }
155
+ /** True when the wallet exists and has a passkey backup. */
156
+ async isProtected() {
157
+ return (await this.get())?.protected === true;
158
+ }
159
+ /**
160
+ * Addresses of accounts `start`..`start + count - 1` (public, no approval) on `chain` (default
161
+ * `evm`). Signing is EVM only for now; other chains are for receiving and display.
162
+ */
163
+ async getAccounts(options = {}) {
164
+ const start = options.start ?? 0;
165
+ const count = options.count ?? 1;
166
+ const chain = options.chain;
167
+ if (!Number.isInteger(start) || start < 0 || start > MAX_ACCOUNT_INDEX || !Number.isInteger(count) || count < 1) {
168
+ throw new AuthonWalletError('INVALID_PARAMS', 'start must be an integer 0..2147483647 and count a positive integer');
169
+ }
170
+ if (chain !== undefined && !CHAINS.includes(chain)) {
171
+ throw new AuthonWalletError('INVALID_PARAMS', `chain must be one of ${CHAINS.join(', ')}`);
172
+ }
173
+ const list = toAccounts(await this.call((n, id, token) => n.accounts(id, token, start, count, chain ?? 'evm')));
174
+ if (chain && list.some((account) => account.chain !== chain)) {
175
+ // A native wallet without multichain support would answer with EVM addresses.
176
+ throw new AuthonWalletError('UNSUPPORTED_TYPE', 'This wallet build does not support other chains yet');
177
+ }
178
+ // Only EVM addresses can name a signing account.
179
+ if (!chain || chain === 'evm')
180
+ for (const account of list)
181
+ this.accountAddresses.set(account.index, account.address);
182
+ return list;
183
+ }
184
+ /**
185
+ * EIP-191 personal_sign. The native approval sheet / dialog shows the full text first when the
186
+ * project requires confirmation (default); rejecting gives USER_CANCELLED and nothing is signed.
187
+ */
188
+ async signMessage(message, options = {}) {
189
+ let kind;
190
+ let text;
191
+ if (typeof message === 'string') {
192
+ kind = 'text';
193
+ text = message;
194
+ }
195
+ else if (isObject(message) && typeof message.raw === 'string') {
196
+ kind = 'raw';
197
+ text = message.raw;
198
+ }
199
+ else {
200
+ throw new AuthonWalletError('INVALID_PARAMS', 'message must be a string or { raw: hex }');
201
+ }
202
+ const [account, address] = await this.account(options.account);
203
+ return toHex(await this.call((n, id, token) => n.signMessage(id, token, kind, text, account, address)));
204
+ }
205
+ /** EIP-712 v4 typed data. */
206
+ async signTypedData(typedData, options = {}) {
207
+ if (!isObject(typedData))
208
+ throw new AuthonWalletError('INVALID_PARAMS', 'typedData must be an object');
209
+ const json = JSON.stringify(typedData, typedReplacer);
210
+ const [account, address] = await this.account(options.account);
211
+ return toHex(await this.call((n, id, token) => n.signTypedData(id, token, json, account, address)));
212
+ }
213
+ /** Signs a legacy, EIP-2930 or EIP-1559 transaction and returns the serialized signed transaction. */
214
+ async signTransaction(tx, options = {}) {
215
+ if (!isObject(tx))
216
+ throw new AuthonWalletError('INVALID_PARAMS', 'transaction must be an object');
217
+ const json = JSON.stringify(tx, txReplacer);
218
+ const [account, address] = await this.account(options.account);
219
+ return toHex(await this.call((n, id, token) => n.signTransaction(id, token, json, account, address)));
220
+ }
221
+ /**
222
+ * Signs an app-built transaction on another chain (NATIVE.md section 12): Solana `{ signature }`,
223
+ * TRON `{ signature, txID }`, Bitcoin `{ psbt, txHex? }`, XRP `{ signature }`. The native approval
224
+ * UI shows what the transaction does (unknown programs / contracts are shown as high risk).
225
+ */
226
+ async signChainTransaction(request) {
227
+ if (!isObject(request) || request.chain === 'evm') {
228
+ throw new AuthonWalletError('INVALID_PARAMS', 'use signTransaction for EVM');
229
+ }
230
+ if (!CHAINS.includes(request.chain))
231
+ throw new AuthonWalletError('INVALID_PARAMS', `chain must be one of ${CHAINS.filter((c) => c !== 'evm').join(', ')}`);
232
+ const account = request.account ?? 0;
233
+ if (!Number.isInteger(account) || account < 0 || account > MAX_ACCOUNT_INDEX || typeof request.address !== 'string' || !request.address) {
234
+ throw new AuthonWalletError('INVALID_PARAMS', 'account index and its address are required');
235
+ }
236
+ if (!isObject(request.payload))
237
+ throw new AuthonWalletError('INVALID_PARAMS', 'payload must be an object');
238
+ const payload = JSON.stringify(request.payload, txReplacer);
239
+ const result = await this.call((n, id, token) => n.signChainTransaction(id, token, request.chain, account, request.address, payload));
240
+ if (!isObject(result))
241
+ throw new AuthonWalletError('UNKNOWN', 'Wallet returned no signature');
242
+ // Signatures and signed transactions only; anything that is not a string is dropped.
243
+ const out = {};
244
+ for (const [k, v] of Object.entries(result))
245
+ if (typeof v === 'string')
246
+ out[k] = v;
247
+ return out;
248
+ }
249
+ /** Creates the passkey backup (iOS 18+ / Android with PRF support). Needs an approved app registration. */
250
+ async protect() {
251
+ await this.call((n, id, token) => n.protect(id, token));
252
+ await this.refresh();
253
+ }
254
+ /** Replaces a legacy backup with a verifiable one, on a device that holds the wallet. */
255
+ async upgradeBackup() {
256
+ await this.call((n, id, token) => n.upgradeBackup(id, token));
257
+ await this.refresh();
258
+ }
259
+ /**
260
+ * Restores the wallet on this install with the backup passkey. By default this install is added
261
+ * as another device; `resetOtherDevices: true` re-splits the key and revokes every other device.
262
+ */
263
+ async restore(options = {}) {
264
+ const reset = options.resetOtherDevices === true;
265
+ await this.call((n, id, token) => n.restore(id, token, reset));
266
+ await this.refresh();
267
+ }
268
+ /** Revokes a device (signed with this install's device key). */
269
+ async revokeDevice(deviceId) {
270
+ if (typeof deviceId !== 'string' || !deviceId)
271
+ throw new AuthonWalletError('INVALID_PARAMS', 'deviceId required');
272
+ await this.call((n, id, token) => n.revokeDevice(id, token, deviceId));
273
+ await this.refresh();
274
+ }
275
+ onChange(listener) {
276
+ this.listeners.add(listener);
277
+ return () => {
278
+ this.listeners.delete(listener);
279
+ };
280
+ }
281
+ /** A minimal EIP-1193 provider (same methods as @authon/js). */
282
+ provider(chainId) {
283
+ const hexChainId = `0x${chainId.toString(16)}`;
284
+ return {
285
+ request: async ({ method, params }) => {
286
+ const list = Array.isArray(params) ? params : [];
287
+ switch (method) {
288
+ case 'eth_chainId':
289
+ return hexChainId;
290
+ case 'eth_accounts': {
291
+ const wallet = await this.get();
292
+ return wallet ? [wallet.address] : [];
293
+ }
294
+ case 'eth_requestAccounts':
295
+ return [(await this.ensure()).address];
296
+ case 'personal_sign': {
297
+ const data = list[0];
298
+ if (typeof data !== 'string')
299
+ throw new AuthonWalletError('INVALID_PARAMS', 'personal_sign requires a message');
300
+ return this.signMessage({ raw: data });
301
+ }
302
+ case 'eth_signTypedData_v4': {
303
+ const raw = list[1];
304
+ const typed = typeof raw === 'string' ? JSON.parse(raw) : raw;
305
+ if (!isObject(typed))
306
+ throw new AuthonWalletError('INVALID_PARAMS', 'eth_signTypedData_v4 requires typed data');
307
+ return this.signTypedData(typed);
308
+ }
309
+ case 'eth_signTransaction': {
310
+ const tx = list[0];
311
+ if (!isObject(tx))
312
+ throw new AuthonWalletError('INVALID_PARAMS', 'eth_signTransaction requires a transaction');
313
+ return this.signTransaction({ chainId: hexChainId, ...tx });
314
+ }
315
+ default:
316
+ throw Object.assign(new AuthonWalletError('UNSUPPORTED_METHOD', `Method ${method} is not supported`), { code: 4200 });
317
+ }
318
+ },
319
+ };
320
+ }
321
+ /**
322
+ * Call on sign-out: releases the native instance, rejects calls in flight with DISPOSED and
323
+ * forgets cached account addresses. The device share stays on the device. Like @authon/js, the
324
+ * client can be used again afterwards (it reconnects on the next call).
325
+ */
326
+ dispose() {
327
+ this.generation++;
328
+ const configured = this.configured;
329
+ this.configured = null;
330
+ this.ensuring = null;
331
+ this.accountAddresses.clear();
332
+ configured?.then((n) => n.release(this.id)).catch(() => { });
333
+ this.notify(null);
334
+ }
335
+ // Internals
336
+ async native() {
337
+ if (!this.configured) {
338
+ const run = (async () => {
339
+ const native = getNativeModule();
340
+ if (!native) {
341
+ throw new AuthonWalletError('NOT_CONFIGURED', '@authon/react-native-wallet native module not found. Use a development build (not Expo Go) and rebuild the app.');
342
+ }
343
+ const appId = this.options.appId;
344
+ const platformAppId = typeof appId === 'string' ? appId : Platform.OS === 'ios' ? appId?.ios : appId?.android;
345
+ this.unwrap(await native.configure(this.id, {
346
+ publishableKey: this.options.publishableKey,
347
+ apiUrl: this.options.apiUrl ?? null,
348
+ appId: platformAppId ?? null,
349
+ requireDeviceAuthentication: this.options.requireDeviceAuthentication === true,
350
+ testing: {
351
+ allowSoftwareKeys: this.options.testing?.allowSoftwareKeys === true,
352
+ autoApprove: this.options.testing?.autoApprove === true,
353
+ },
354
+ }));
355
+ return native;
356
+ })();
357
+ this.configured = run;
358
+ run.catch(() => {
359
+ if (this.configured === run)
360
+ this.configured = null;
361
+ });
362
+ }
363
+ return this.configured;
364
+ }
365
+ async token() {
366
+ const token = await this.options.getToken();
367
+ if (typeof token !== 'string' || !token)
368
+ throw new AuthonWalletError('NOT_SIGNED_IN', 'Sign in before using the wallet');
369
+ return token;
370
+ }
371
+ async call(fn) {
372
+ const generation = this.generation;
373
+ const native = await this.native();
374
+ const token = await this.token();
375
+ return this.unwrap(await fn(native, this.id, token), generation);
376
+ }
377
+ unwrap(result, generation = this.generation) {
378
+ if (generation !== this.generation)
379
+ throw new AuthonWalletError('DISPOSED', 'Wallet was disposed');
380
+ if (!isObject(result))
381
+ throw new AuthonWalletError('UNKNOWN', 'Wallet returned no result');
382
+ if (result.ok === true)
383
+ return result.value;
384
+ const code = typeof result.code === 'string' && result.code ? result.code : 'UNKNOWN';
385
+ throw new AuthonWalletError(code, typeof result.message === 'string' && result.message ? result.message : code, {
386
+ diagnosticId: typeof result.diagnosticId === 'string' && result.diagnosticId ? result.diagnosticId : null,
387
+ retryable: result.retryable === true,
388
+ });
389
+ }
390
+ /** For accounts other than 0 the native wallet needs the expected address and refuses on mismatch. */
391
+ async account(index) {
392
+ if (index === undefined || index === 0)
393
+ return [0, null];
394
+ if (!Number.isInteger(index) || index < 0 || index > MAX_ACCOUNT_INDEX) {
395
+ throw new AuthonWalletError('INVALID_PARAMS', 'account must be an integer 0..2147483647');
396
+ }
397
+ let address = this.accountAddresses.get(index);
398
+ if (!address) {
399
+ const [account] = await this.getAccounts({ start: index, count: 1 });
400
+ if (!account || account.index !== index)
401
+ throw new AuthonWalletError('UNKNOWN', 'Wallet returned another account');
402
+ address = account.address;
403
+ }
404
+ return [index, address];
405
+ }
406
+ /** A different wallet (another user) invalidates the cached account addresses. */
407
+ remember(wallet) {
408
+ const known = this.accountAddresses.get(0);
409
+ if (known && known.toLowerCase() !== wallet.address.toLowerCase())
410
+ this.accountAddresses.clear();
411
+ this.accountAddresses.set(0, wallet.address);
412
+ return wallet;
413
+ }
414
+ async refresh() {
415
+ this.notify(await this.get());
416
+ }
417
+ notify(wallet) {
418
+ for (const listener of this.listeners) {
419
+ try {
420
+ listener(wallet);
421
+ }
422
+ catch {
423
+ // A listener error must not break the wallet call.
424
+ }
425
+ }
426
+ }
427
+ }
428
+ export function createAuthonWallet(options) {
429
+ return new AuthonWalletClient(options);
430
+ }
431
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAoD,MAAM,UAAU,CAAC;AAqB7F,MAAM,iBAAiB,GAAG,UAAU,CAAC;AACrC,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAgC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxH,MAAM,GAAG,GAAG,CAAC,CAAU,EAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE9E,gGAAgG;AAChG,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;IAC/H,MAAM,OAAO,GAA2B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAClE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YACnB,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3B,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;YAC7B,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI;SAC5B,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI;QACnC,YAAY,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI;QACzC,wBAAwB,EAAE,KAAK,CAAC,wBAAwB,KAAK,IAAI;QACjE,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAE7F,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;IACjG,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtC,MAAM,OAAO,GAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5G,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAoB,CAAC;YAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAoB,CAAC;QACpF,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAAE,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QAChH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,KAAK,CAAC,KAAc;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;IACzI,OAAO,KAAY,CAAC;AACtB,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC;IAC9F,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI;QAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI;QACjC,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI;QAC/B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACzE,cAAc,EAAE,KAAK,CAAC,cAAc,KAAK,KAAK;QAC9C,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9B,gBAAgB,EAAE,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI;KAC7F,CAAC;AACJ,CAAC;AAED,MAAM,QAAQ,GAAuB,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAE7E,SAAS,OAAO,CAAC,KAAc;IAC7B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAA0B,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,MAA2B,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;AAC7F,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG;QACb,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7B,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;QAC3C,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;QACrC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;KAC5C,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,KAAK,GAAqB,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAChI,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrG,wDAAwD;AACxD,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjG;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACZ,EAAE,GAAG,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAClC,OAAO,CAAsB;IAC7B,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC5C,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,UAAU,GAA6C,IAAI,CAAC;IAC5D,QAAQ,GAAmC,IAAI,CAAC;IACxD,sFAAsF;IAC9E,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,EAAE,cAAc;YAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,4BAA4B,CAAC,CAAC;QAC1G,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;QAClH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,SAAS;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,GAAG;QACP,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,IAAI,CAAC;YAClF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wGAAwG;IACxG,MAAM;QACJ,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxC,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAClD,CAAC,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,WAAW;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,UAAmE,EAAE;QACrF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,iBAAiB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAChH,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,qEAAqE,CAAC,CAAC;QACvH,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAChH,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC;YAC7D,8EAA8E;YAC9E,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,qDAAqD,CAAC,CAAC;QACzG,CAAC;QACD,iDAAiD;QACjD,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK;YAAE,KAAK,MAAM,OAAO,IAAI,IAAI;gBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACrH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,OAAsB,EAAE,UAA6B,EAAE;QACvE,IAAI,IAAoB,CAAC;QACzB,IAAI,IAAY,CAAC;QACjB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,GAAG,MAAM,CAAC;YACd,IAAI,GAAG,OAAO,CAAC;QACjB,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAChE,IAAI,GAAG,KAAK,CAAC;YACb,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,0CAA0C,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1G,CAAC;IAED,6BAA6B;IAC7B,KAAK,CAAC,aAAa,CAAC,SAA2B,EAAE,UAA6B,EAAE;QAC9E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;QACvG,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,sGAAsG;IACtG,KAAK,CAAC,eAAe,CAAC,EAA4B,EAAE,UAA6B,EAAE;QACjF,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;QAClG,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAA+B;QACxD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAK,OAAO,CAAC,KAAqB,KAAK,KAAK,EAAE,CAAC;YACnE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,wBAAwB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3J,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,iBAAiB,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACxI,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,4CAA4C,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;QAC3G,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACtI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;QAC9F,qFAAqF;QACrF,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnF,OAAO,GAAG,CAAC;IACb,CAAC;IAED,2GAA2G;IAC3G,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,UAA2C,EAAE;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC;QACjD,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;QAClH,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,QAA8B;QACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,QAAQ,CAAC,OAAe;QACtB,MAAM,UAAU,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/C,OAAO;YACL,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;gBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,aAAa;wBAChB,OAAO,UAAU,CAAC;oBACpB,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;wBAChC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,CAAC;oBACD,KAAK,qBAAqB;wBACxB,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;oBACzC,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBACrB,IAAI,OAAO,IAAI,KAAK,QAAQ;4BAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;wBAChH,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzC,CAAC;oBACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;wBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBACpB,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,0CAA0C,CAAC,CAAC;wBAChH,OAAO,IAAI,CAAC,aAAa,CAAC,KAAoC,CAAC,CAAC;oBAClE,CAAC;oBACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;wBAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBACnB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,4CAA4C,CAAC,CAAC;wBAC/G,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAI,EAA+B,EAAE,CAAC,CAAC;oBAC5F,CAAC;oBACD;wBACE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,oBAAoB,EAAE,UAAU,MAAM,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1H,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,YAAY;IAEJ,KAAK,CAAC,MAAM;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,iBAAiB,CACzB,gBAAgB,EAChB,iHAAiH,CAClH,CAAC;gBACJ,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;gBACjC,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC;gBAC9G,IAAI,CAAC,MAAM,CACT,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE;oBAC9B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;oBAC3C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI;oBACnC,KAAK,EAAE,aAAa,IAAI,IAAI;oBAC5B,2BAA2B,EAAE,IAAI,CAAC,OAAO,CAAC,2BAA2B,KAAK,IAAI;oBAC9E,OAAO,EAAE;wBACP,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI;wBACnE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI;qBACxD;iBACF,CAAC,CACH,CAAC;gBACF,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,EAAE,CAAC;YACL,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;gBACb,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG;oBAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACtD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,iBAAiB,CAAC,eAAe,EAAE,iCAAiC,CAAC,CAAC;QACzH,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,EAAmG;QACpH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IAEO,MAAM,CAAI,MAAuB,EAAE,UAAU,GAAG,IAAI,CAAC,UAAU;QACrE,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QACnG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;QAC3F,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,KAAU,CAAC;QACjD,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,MAAM,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;YAC9G,YAAY,EAAE,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;YACzG,SAAS,EAAE,MAAM,CAAC,SAAS,KAAK,IAAI;SACrC,CAAC,CAAC;IACL,CAAC;IAED,sGAAsG;IAC9F,KAAK,CAAC,OAAO,CAAC,KAAyB;QAC7C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;YACvE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,0CAA0C,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;gBAAE,MAAM,IAAI,iBAAiB,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC;YACnH,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,kFAAkF;IAC1E,QAAQ,CAAC,MAAsB;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACjG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAChC,CAAC;IAEO,MAAM,CAAC,MAA6B;QAC1C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,mDAAmD;YACrD,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC7D,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Error codes of the web wallet (`@authon/js` WalletErrorCode, frame `errors.ts`). The native
3
+ * Swift and Kotlin wallets report the same strings; they reach JS unchanged.
4
+ */
5
+ export type WalletErrorCode = 'NOT_FOUND' | 'NEEDS_RESTORE' | 'NOT_PROTECTED' | 'PRF_UNSUPPORTED' | 'ORIGIN_NOT_ALLOWED' | 'USER_CANCELLED' | 'NEEDS_POPUP' | 'INVALID_REQUEST' | 'UNSUPPORTED_TYPE' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'ALREADY_EXISTS' | 'RATE_LIMITED' | 'ADDRESS_MISMATCH' | 'STORAGE_UNAVAILABLE' | 'API_ERROR' | 'INTERNAL' | 'LAST_DEVICE' | 'SESSION_REQUIRED' | 'WALLET_PENDING' | 'CONFIRM_WINDOW_BLOCKED' | 'CONFIRM_WINDOW_CLOSED' | 'MESSAGE_TOO_LARGE' | 'FRAME_OUTDATED' | 'BACKUP_KEY_REQUIRED' | 'ALREADY_UPGRADED' | 'ACCOUNT_UNAVAILABLE'
6
+ /** Raised in JS: getToken() returned no token. */
7
+ | 'NOT_SIGNED_IN'
8
+ /** Raised in JS: bad arguments caught before the native call. */
9
+ | 'INVALID_PARAMS' | 'UNSUPPORTED_METHOD'
10
+ /** Raised in JS: the client was disposed. */
11
+ | 'DISPOSED'
12
+ /** Raised in JS: the native module is missing (Expo Go, or the app was not rebuilt). */
13
+ | 'NOT_CONFIGURED' | 'UNKNOWN' | (string & {});
14
+ export declare class AuthonWalletError extends Error {
15
+ readonly code: WalletErrorCode;
16
+ /** The server's request ID when the failure came from an API response; log this, never secrets. */
17
+ readonly diagnosticId: string | null;
18
+ /** Whether trying the same call again can succeed (from the native wallet's code table). */
19
+ readonly retryable: boolean;
20
+ constructor(code: WalletErrorCode, message?: string, options?: {
21
+ diagnosticId?: string | null;
22
+ retryable?: boolean;
23
+ });
24
+ }
25
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,aAAa,GACb,iBAAiB,GACjB,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,gBAAgB,GAChB,cAAc,GACd,kBAAkB,GAClB,qBAAqB,GACrB,WAAW,GACX,UAAU,GACV,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,wBAAwB,GACxB,uBAAuB,GACvB,mBAAmB,GACnB,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,GAClB,qBAAqB;AACvB,kDAAkD;GAChD,eAAe;AACjB,iEAAiE;GAC/D,gBAAgB,GAChB,oBAAoB;AACtB,6CAA6C;GAC3C,UAAU;AACZ,wFAAwF;GACtF,gBAAgB,GAChB,SAAS,GACT,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,mGAAmG;IACnG,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAChB,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO;CAOzH"}
@@ -0,0 +1,15 @@
1
+ export class AuthonWalletError extends Error {
2
+ code;
3
+ /** The server's request ID when the failure came from an API response; log this, never secrets. */
4
+ diagnosticId;
5
+ /** Whether trying the same call again can succeed (from the native wallet's code table). */
6
+ retryable;
7
+ constructor(code, message, options = {}) {
8
+ super(message ?? code);
9
+ this.name = 'AuthonWalletError';
10
+ this.code = code;
11
+ this.diagnosticId = options.diagnosticId ?? null;
12
+ this.retryable = options.retryable ?? false;
13
+ }
14
+ }
15
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AA4CA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAkB;IAC/B,mGAAmG;IAC1F,YAAY,CAAgB;IACrC,4FAA4F;IACnF,SAAS,CAAU;IAC5B,YAAY,IAAqB,EAAE,OAAgB,EAAE,UAAiE,EAAE;QACtH,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC9C,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ export { AuthonWalletClient, createAuthonWallet } from './client';
2
+ export { AuthonWalletError } from './errors';
3
+ export type { WalletErrorCode } from './errors';
4
+ export { useAuthonWallet } from './useAuthonWallet';
5
+ export type { UseAuthonWalletOptions, UseAuthonWalletResult } from './useAuthonWallet';
6
+ export type { AuthonWalletOptions, CapabilityCheck, CapabilityStatus, WalletCapabilities, WalletChain, WalletChainSignRequest, EIP1193Provider, EIP1193RequestArguments, EmbeddedWallet, EmbeddedWalletDevice, Hex, TokenGetter, TypedDataPayload, WalletAccount, WalletAppConfig, WalletChangeListener, WalletMessage, WalletSignOptions, WalletTransactionRequest, } from './types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACvF,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,oBAAoB,EACpB,GAAG,EACH,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,SAAS,CAAC"}
package/build/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { AuthonWalletClient, createAuthonWallet } from './client';
2
+ export { AuthonWalletError } from './errors';
3
+ export { useAuthonWallet } from './useAuthonWallet';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,43 @@
1
+ /** Every native function resolves an envelope instead of rejecting. */
2
+ export type NativeResult<T> = {
3
+ ok: true;
4
+ value: T;
5
+ } | {
6
+ ok: false;
7
+ code: string;
8
+ message?: string;
9
+ diagnosticId?: string | null;
10
+ retryable?: boolean;
11
+ };
12
+ export interface NativeConfig {
13
+ publishableKey: string;
14
+ apiUrl: string | null;
15
+ appId: string | null;
16
+ requireDeviceAuthentication: boolean;
17
+ testing: {
18
+ allowSoftwareKeys: boolean;
19
+ autoApprove: boolean;
20
+ };
21
+ }
22
+ /** The Swift / Kotlin module `AuthonWallet`. Tokens go in per call; nothing secret comes out. */
23
+ export interface AuthonWalletNativeModule {
24
+ configure(id: string, config: NativeConfig): Promise<NativeResult<null>>;
25
+ release(id: string): Promise<NativeResult<null>>;
26
+ appConfig(id: string): Promise<NativeResult<unknown>>;
27
+ capabilities(id: string): Promise<NativeResult<unknown>>;
28
+ status(id: string, token: string): Promise<NativeResult<unknown>>;
29
+ create(id: string, token: string): Promise<NativeResult<unknown>>;
30
+ accounts(id: string, token: string, start: number, count: number, chain: string): Promise<NativeResult<unknown>>;
31
+ signMessage(id: string, token: string, kind: 'text' | 'raw', message: string, account: number, address: string | null): Promise<NativeResult<unknown>>;
32
+ signTypedData(id: string, token: string, typedDataJson: string, account: number, address: string | null): Promise<NativeResult<unknown>>;
33
+ signTransaction(id: string, token: string, transactionJson: string, account: number, address: string | null): Promise<NativeResult<unknown>>;
34
+ signChainTransaction(id: string, token: string, chain: string, account: number, address: string, payloadJson: string): Promise<NativeResult<unknown>>;
35
+ protect(id: string, token: string): Promise<NativeResult<unknown>>;
36
+ upgradeBackup(id: string, token: string): Promise<NativeResult<unknown>>;
37
+ restore(id: string, token: string, reset: boolean): Promise<NativeResult<unknown>>;
38
+ revokeDevice(id: string, token: string, deviceId: string): Promise<NativeResult<unknown>>;
39
+ }
40
+ export declare function getNativeModule(): AuthonWalletNativeModule | null;
41
+ /** Tests only: replaces the native module (pass undefined to restore). */
42
+ export declare function setNativeModuleForTesting(module: AuthonWalletNativeModule | null | undefined): void;
43
+ //# sourceMappingURL=native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { requireOptionalNativeModule } from 'expo-modules-core';
2
+ let override;
3
+ export function getNativeModule() {
4
+ if (override !== undefined)
5
+ return override;
6
+ return requireOptionalNativeModule('AuthonWallet');
7
+ }
8
+ /** Tests only: replaces the native module (pass undefined to restore). */
9
+ export function setNativeModuleForTesting(module) {
10
+ override = module;
11
+ }
12
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAyChE,IAAI,QAAqD,CAAC;AAE1D,MAAM,UAAU,eAAe;IAC7B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,OAAO,2BAA2B,CAA2B,cAAc,CAAC,CAAC;AAC/E,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,yBAAyB,CAAC,MAAmD;IAC3F,QAAQ,GAAG,MAAM,CAAC;AACpB,CAAC"}