@waiaas/core 2.0.0-rc.1

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 (173) hide show
  1. package/dist/enums/audit.d.ts +5 -0
  2. package/dist/enums/audit.d.ts.map +1 -0
  3. package/dist/enums/audit.js +31 -0
  4. package/dist/enums/audit.js.map +1 -0
  5. package/dist/enums/chain.d.ts +50 -0
  6. package/dist/enums/chain.d.ts.map +1 -0
  7. package/dist/enums/chain.js +123 -0
  8. package/dist/enums/chain.js.map +1 -0
  9. package/dist/enums/index.d.ts +10 -0
  10. package/dist/enums/index.d.ts.map +1 -0
  11. package/dist/enums/index.js +10 -0
  12. package/dist/enums/index.js.map +1 -0
  13. package/dist/enums/notification.d.ts +8 -0
  14. package/dist/enums/notification.d.ts.map +1 -0
  15. package/dist/enums/notification.js +34 -0
  16. package/dist/enums/notification.js.map +1 -0
  17. package/dist/enums/owner.d.ts +5 -0
  18. package/dist/enums/owner.d.ts.map +1 -0
  19. package/dist/enums/owner.js +5 -0
  20. package/dist/enums/owner.js.map +1 -0
  21. package/dist/enums/policy.d.ts +8 -0
  22. package/dist/enums/policy.d.ts.map +1 -0
  23. package/dist/enums/policy.js +19 -0
  24. package/dist/enums/policy.js.map +1 -0
  25. package/dist/enums/session.d.ts +5 -0
  26. package/dist/enums/session.d.ts.map +1 -0
  27. package/dist/enums/session.js +5 -0
  28. package/dist/enums/session.js.map +1 -0
  29. package/dist/enums/system.d.ts +5 -0
  30. package/dist/enums/system.d.ts.map +1 -0
  31. package/dist/enums/system.js +4 -0
  32. package/dist/enums/system.js.map +1 -0
  33. package/dist/enums/transaction.d.ts +8 -0
  34. package/dist/enums/transaction.d.ts.map +1 -0
  35. package/dist/enums/transaction.js +25 -0
  36. package/dist/enums/transaction.js.map +1 -0
  37. package/dist/enums/wallet.d.ts +5 -0
  38. package/dist/enums/wallet.d.ts.map +1 -0
  39. package/dist/enums/wallet.js +10 -0
  40. package/dist/enums/wallet.js.map +1 -0
  41. package/dist/errors/base-error.d.ts +25 -0
  42. package/dist/errors/base-error.d.ts.map +1 -0
  43. package/dist/errors/base-error.js +33 -0
  44. package/dist/errors/base-error.js.map +1 -0
  45. package/dist/errors/chain-error.d.ts +48 -0
  46. package/dist/errors/chain-error.d.ts.map +1 -0
  47. package/dist/errors/chain-error.js +83 -0
  48. package/dist/errors/chain-error.js.map +1 -0
  49. package/dist/errors/error-codes.d.ts +667 -0
  50. package/dist/errors/error-codes.d.ts.map +1 -0
  51. package/dist/errors/error-codes.js +671 -0
  52. package/dist/errors/error-codes.js.map +1 -0
  53. package/dist/errors/index.d.ts +4 -0
  54. package/dist/errors/index.d.ts.map +1 -0
  55. package/dist/errors/index.js +4 -0
  56. package/dist/errors/index.js.map +1 -0
  57. package/dist/events/event-bus.d.ts +36 -0
  58. package/dist/events/event-bus.d.ts.map +1 -0
  59. package/dist/events/event-bus.js +74 -0
  60. package/dist/events/event-bus.js.map +1 -0
  61. package/dist/events/event-types.d.ts +59 -0
  62. package/dist/events/event-types.d.ts.map +1 -0
  63. package/dist/events/event-types.js +16 -0
  64. package/dist/events/event-types.js.map +1 -0
  65. package/dist/events/index.d.ts +3 -0
  66. package/dist/events/index.d.ts.map +1 -0
  67. package/dist/events/index.js +3 -0
  68. package/dist/events/index.js.map +1 -0
  69. package/dist/i18n/en.d.ts +57 -0
  70. package/dist/i18n/en.d.ts.map +1 -0
  71. package/dist/i18n/en.js +194 -0
  72. package/dist/i18n/en.js.map +1 -0
  73. package/dist/i18n/index.d.ts +5 -0
  74. package/dist/i18n/index.d.ts.map +1 -0
  75. package/dist/i18n/index.js +7 -0
  76. package/dist/i18n/index.js.map +1 -0
  77. package/dist/i18n/ko.d.ts +3 -0
  78. package/dist/i18n/ko.d.ts.map +1 -0
  79. package/dist/i18n/ko.js +194 -0
  80. package/dist/i18n/ko.js.map +1 -0
  81. package/dist/index.d.ts +14 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +26 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/interfaces/IChainAdapter.d.ts +61 -0
  86. package/dist/interfaces/IChainAdapter.d.ts.map +1 -0
  87. package/dist/interfaces/IChainAdapter.js +2 -0
  88. package/dist/interfaces/IChainAdapter.js.map +1 -0
  89. package/dist/interfaces/ILocalKeyStore.d.ts +24 -0
  90. package/dist/interfaces/ILocalKeyStore.d.ts.map +1 -0
  91. package/dist/interfaces/ILocalKeyStore.js +2 -0
  92. package/dist/interfaces/ILocalKeyStore.js.map +1 -0
  93. package/dist/interfaces/INotificationChannel.d.ts +32 -0
  94. package/dist/interfaces/INotificationChannel.d.ts.map +1 -0
  95. package/dist/interfaces/INotificationChannel.js +2 -0
  96. package/dist/interfaces/INotificationChannel.js.map +1 -0
  97. package/dist/interfaces/IPolicyEngine.d.ts +44 -0
  98. package/dist/interfaces/IPolicyEngine.d.ts.map +1 -0
  99. package/dist/interfaces/IPolicyEngine.js +2 -0
  100. package/dist/interfaces/IPolicyEngine.js.map +1 -0
  101. package/dist/interfaces/action-provider.types.d.ts +123 -0
  102. package/dist/interfaces/action-provider.types.d.ts.map +1 -0
  103. package/dist/interfaces/action-provider.types.js +65 -0
  104. package/dist/interfaces/action-provider.types.js.map +1 -0
  105. package/dist/interfaces/chain-adapter.types.d.ts +216 -0
  106. package/dist/interfaces/chain-adapter.types.d.ts.map +1 -0
  107. package/dist/interfaces/chain-adapter.types.js +2 -0
  108. package/dist/interfaces/chain-adapter.types.js.map +1 -0
  109. package/dist/interfaces/forex-rate.types.d.ts +63 -0
  110. package/dist/interfaces/forex-rate.types.d.ts.map +1 -0
  111. package/dist/interfaces/forex-rate.types.js +41 -0
  112. package/dist/interfaces/forex-rate.types.js.map +1 -0
  113. package/dist/interfaces/index.d.ts +15 -0
  114. package/dist/interfaces/index.d.ts.map +1 -0
  115. package/dist/interfaces/index.js +5 -0
  116. package/dist/interfaces/index.js.map +1 -0
  117. package/dist/interfaces/price-oracle.types.d.ts +99 -0
  118. package/dist/interfaces/price-oracle.types.d.ts.map +1 -0
  119. package/dist/interfaces/price-oracle.types.js +48 -0
  120. package/dist/interfaces/price-oracle.types.js.map +1 -0
  121. package/dist/interfaces/x402.types.d.ts +112 -0
  122. package/dist/interfaces/x402.types.d.ts.map +1 -0
  123. package/dist/interfaces/x402.types.js +69 -0
  124. package/dist/interfaces/x402.types.js.map +1 -0
  125. package/dist/schemas/asset.schema.d.ts +32 -0
  126. package/dist/schemas/asset.schema.d.ts.map +1 -0
  127. package/dist/schemas/asset.schema.js +15 -0
  128. package/dist/schemas/asset.schema.js.map +1 -0
  129. package/dist/schemas/config.schema.d.ts +58 -0
  130. package/dist/schemas/config.schema.d.ts.map +1 -0
  131. package/dist/schemas/config.schema.js +23 -0
  132. package/dist/schemas/config.schema.js.map +1 -0
  133. package/dist/schemas/index.d.ts +7 -0
  134. package/dist/schemas/index.d.ts.map +1 -0
  135. package/dist/schemas/index.js +9 -0
  136. package/dist/schemas/index.js.map +1 -0
  137. package/dist/schemas/policy.schema.d.ts +192 -0
  138. package/dist/schemas/policy.schema.d.ts.map +1 -0
  139. package/dist/schemas/policy.schema.js +157 -0
  140. package/dist/schemas/policy.schema.js.map +1 -0
  141. package/dist/schemas/session.schema.d.ts +51 -0
  142. package/dist/schemas/session.schema.d.ts.map +1 -0
  143. package/dist/schemas/session.schema.js +19 -0
  144. package/dist/schemas/session.schema.js.map +1 -0
  145. package/dist/schemas/transaction.schema.d.ts +834 -0
  146. package/dist/schemas/transaction.schema.d.ts.map +1 -0
  147. package/dist/schemas/transaction.schema.js +112 -0
  148. package/dist/schemas/transaction.schema.js.map +1 -0
  149. package/dist/schemas/wallet.schema.d.ts +54 -0
  150. package/dist/schemas/wallet.schema.d.ts.map +1 -0
  151. package/dist/schemas/wallet.schema.js +21 -0
  152. package/dist/schemas/wallet.schema.js.map +1 -0
  153. package/dist/testing/chain-adapter-contract.d.ts +42 -0
  154. package/dist/testing/chain-adapter-contract.d.ts.map +1 -0
  155. package/dist/testing/chain-adapter-contract.js +370 -0
  156. package/dist/testing/chain-adapter-contract.js.map +1 -0
  157. package/dist/testing/index.d.ts +8 -0
  158. package/dist/testing/index.d.ts.map +1 -0
  159. package/dist/testing/index.js +7 -0
  160. package/dist/testing/index.js.map +1 -0
  161. package/dist/utils/format-amount.d.ts +41 -0
  162. package/dist/utils/format-amount.d.ts.map +1 -0
  163. package/dist/utils/format-amount.js +60 -0
  164. package/dist/utils/format-amount.js.map +1 -0
  165. package/dist/utils/format-currency.d.ts +42 -0
  166. package/dist/utils/format-currency.d.ts.map +1 -0
  167. package/dist/utils/format-currency.js +92 -0
  168. package/dist/utils/format-currency.js.map +1 -0
  169. package/dist/utils/index.d.ts +3 -0
  170. package/dist/utils/index.d.ts.map +1 -0
  171. package/dist/utils/index.js +5 -0
  172. package/dist/utils/index.js.map +1 -0
  173. package/package.json +50 -0
@@ -0,0 +1,4 @@
1
+ export { ERROR_CODES } from './error-codes.js';
2
+ export { WAIaaSError } from './base-error.js';
3
+ export { ChainError, CHAIN_ERROR_CATEGORIES, } from './chain-error.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyD,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,UAAU,EAGV,sBAAsB,GACvB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * EventBus: typed EventEmitter wrapper for WAIaaS event system.
3
+ *
4
+ * Provides type-safe on/emit/removeAllListeners over Node.js EventEmitter.
5
+ * Listener errors are isolated via try/catch in emit() to prevent one
6
+ * failing listener from blocking other listeners or the pipeline.
7
+ *
8
+ * @see packages/core/src/events/event-types.ts for event definitions
9
+ */
10
+ import type { WaiaasEventMap } from './event-types.js';
11
+ export declare class EventBus {
12
+ private emitter;
13
+ constructor();
14
+ /**
15
+ * Register a typed event listener.
16
+ */
17
+ on<K extends keyof WaiaasEventMap>(event: K, listener: (data: WaiaasEventMap[K]) => void): this;
18
+ /**
19
+ * Emit a typed event with error isolation.
20
+ *
21
+ * Each listener is wrapped in try/catch so that one throwing listener
22
+ * does not prevent other listeners from being called, and does not
23
+ * crash the pipeline.
24
+ */
25
+ emit<K extends keyof WaiaasEventMap>(event: K, data: WaiaasEventMap[K]): boolean;
26
+ /**
27
+ * Remove all listeners (or all listeners for a specific event).
28
+ * Used for cleanup in tests and daemon shutdown.
29
+ */
30
+ removeAllListeners(event?: keyof WaiaasEventMap): this;
31
+ /**
32
+ * Get listener count for a specific event.
33
+ */
34
+ listenerCount(event: keyof WaiaasEventMap): number;
35
+ }
36
+ //# sourceMappingURL=event-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAe;;IAU9B;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,cAAc,EAC/B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,GAC1C,IAAI;IAKP;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO;IAmBhF;;;OAGG;IACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,cAAc,GAAG,IAAI;IAStD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,cAAc,GAAG,MAAM;CAGnD"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * EventBus: typed EventEmitter wrapper for WAIaaS event system.
3
+ *
4
+ * Provides type-safe on/emit/removeAllListeners over Node.js EventEmitter.
5
+ * Listener errors are isolated via try/catch in emit() to prevent one
6
+ * failing listener from blocking other listeners or the pipeline.
7
+ *
8
+ * @see packages/core/src/events/event-types.ts for event definitions
9
+ */
10
+ import { EventEmitter } from 'node:events';
11
+ export class EventBus {
12
+ emitter;
13
+ constructor() {
14
+ this.emitter = new EventEmitter();
15
+ // Prevent unhandled 'error' event crashes
16
+ this.emitter.on('error', (err) => {
17
+ console.error('[EventBus] listener error:', err);
18
+ });
19
+ }
20
+ /**
21
+ * Register a typed event listener.
22
+ */
23
+ on(event, listener) {
24
+ this.emitter.on(event, listener);
25
+ return this;
26
+ }
27
+ /**
28
+ * Emit a typed event with error isolation.
29
+ *
30
+ * Each listener is wrapped in try/catch so that one throwing listener
31
+ * does not prevent other listeners from being called, and does not
32
+ * crash the pipeline.
33
+ */
34
+ emit(event, data) {
35
+ const listeners = this.emitter.rawListeners(event);
36
+ if (listeners.length === 0)
37
+ return false;
38
+ for (const listener of listeners) {
39
+ try {
40
+ listener(data);
41
+ }
42
+ catch (err) {
43
+ // Emit 'error' event for logging, but don't let it propagate
44
+ try {
45
+ console.error(`[EventBus] listener error on '${String(event)}':`, err);
46
+ }
47
+ catch {
48
+ // Swallow logging errors
49
+ }
50
+ }
51
+ }
52
+ return true;
53
+ }
54
+ /**
55
+ * Remove all listeners (or all listeners for a specific event).
56
+ * Used for cleanup in tests and daemon shutdown.
57
+ */
58
+ removeAllListeners(event) {
59
+ if (event) {
60
+ this.emitter.removeAllListeners(event);
61
+ }
62
+ else {
63
+ this.emitter.removeAllListeners();
64
+ }
65
+ return this;
66
+ }
67
+ /**
68
+ * Get listener count for a specific event.
69
+ */
70
+ listenerCount(event) {
71
+ return this.emitter.listenerCount(event);
72
+ }
73
+ }
74
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,OAAO,QAAQ;IACX,OAAO,CAAe;IAE9B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,0CAA0C;QAC1C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAY,EAAE,EAAE;YACxC,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,EAAE,CACA,KAAQ,EACR,QAA2C;QAE3C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAiC,KAAQ,EAAE,IAAuB;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAwC,CAAC;QAC1F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,6DAA6D;gBAC7D,IAAI,CAAC;oBACH,OAAO,CAAC,KAAK,CAAC,iCAAiC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzE,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,KAA4B;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAA2B;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;CACF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * WAIaaS Event Bus event type definitions.
3
+ *
4
+ * Typed events for the EventBus system:
5
+ * - transaction:completed -- fired after on-chain confirmation (Stage 6)
6
+ * - transaction:failed -- fired on pipeline failure (Stage 5/6 errors)
7
+ * - wallet:activity -- fired on wallet-related activities (TX_REQUESTED, TX_SUBMITTED, SESSION_CREATED, OWNER_SET)
8
+ * - kill-switch:state-changed -- fired on kill switch state transitions (ACTIVE/SUSPENDED/LOCKED)
9
+ * - approval:channel-switched -- fired when approval channel falls back (e.g. WC -> Telegram)
10
+ *
11
+ * These events are consumed by AutoStopService (Phase 141) and BalanceMonitorService (Phase 142).
12
+ *
13
+ * @see docs/35-notification-architecture.md
14
+ */
15
+ export interface TransactionCompletedEvent {
16
+ walletId: string;
17
+ txId: string;
18
+ txHash: string;
19
+ amount?: string;
20
+ network?: string;
21
+ type: string;
22
+ timestamp: number;
23
+ }
24
+ export interface TransactionFailedEvent {
25
+ walletId: string;
26
+ txId: string;
27
+ error: string;
28
+ network?: string;
29
+ type: string;
30
+ timestamp: number;
31
+ }
32
+ export interface WalletActivityEvent {
33
+ walletId: string;
34
+ activity: 'TX_REQUESTED' | 'SESSION_CREATED' | 'OWNER_SET' | 'TX_SUBMITTED';
35
+ details?: Record<string, unknown>;
36
+ timestamp: number;
37
+ }
38
+ export interface KillSwitchStateChangedEvent {
39
+ state: string;
40
+ previousState: string;
41
+ activatedBy: string;
42
+ timestamp: number;
43
+ }
44
+ export interface ApprovalChannelSwitchedEvent {
45
+ walletId: string;
46
+ txId: string;
47
+ fromChannel: string;
48
+ toChannel: string;
49
+ reason: string;
50
+ timestamp: number;
51
+ }
52
+ export interface WaiaasEventMap {
53
+ 'transaction:completed': TransactionCompletedEvent;
54
+ 'transaction:failed': TransactionFailedEvent;
55
+ 'wallet:activity': WalletActivityEvent;
56
+ 'kill-switch:state-changed': KillSwitchStateChangedEvent;
57
+ 'approval:channel-switched': ApprovalChannelSwitchedEvent;
58
+ }
59
+ //# sourceMappingURL=event-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-types.d.ts","sourceRoot":"","sources":["../../src/events/event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,GAAG,iBAAiB,GAAG,WAAW,GAAG,cAAc,CAAC;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,cAAc;IAC7B,uBAAuB,EAAE,yBAAyB,CAAC;IACnD,oBAAoB,EAAE,sBAAsB,CAAC;IAC7C,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,2BAA2B,EAAE,2BAA2B,CAAC;IACzD,2BAA2B,EAAE,4BAA4B,CAAC;CAC3D"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * WAIaaS Event Bus event type definitions.
3
+ *
4
+ * Typed events for the EventBus system:
5
+ * - transaction:completed -- fired after on-chain confirmation (Stage 6)
6
+ * - transaction:failed -- fired on pipeline failure (Stage 5/6 errors)
7
+ * - wallet:activity -- fired on wallet-related activities (TX_REQUESTED, TX_SUBMITTED, SESSION_CREATED, OWNER_SET)
8
+ * - kill-switch:state-changed -- fired on kill switch state transitions (ACTIVE/SUSPENDED/LOCKED)
9
+ * - approval:channel-switched -- fired when approval channel falls back (e.g. WC -> Telegram)
10
+ *
11
+ * These events are consumed by AutoStopService (Phase 141) and BalanceMonitorService (Phase 142).
12
+ *
13
+ * @see docs/35-notification-architecture.md
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=event-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-types.js","sourceRoot":"","sources":["../../src/events/event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,3 @@
1
+ export { EventBus } from './event-bus.js';
2
+ export type { WaiaasEventMap, TransactionCompletedEvent, TransactionFailedEvent, WalletActivityEvent, KillSwitchStateChangedEvent, ApprovalChannelSwitchedEvent, } from './event-types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EACV,cAAc,EACd,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Events module: EventBus + typed event definitions
2
+ export { EventBus } from './event-bus.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,57 @@
1
+ import type { ErrorCode } from '../errors/error-codes.js';
2
+ import type { NotificationEventType } from '../enums/notification.js';
3
+ /**
4
+ * Messages type definition. Enforces key parity across all locales.
5
+ * Keys in errors must match ERROR_CODES keys exactly (74 error codes).
6
+ * Notification templates cover all 22 event types.
7
+ */
8
+ export interface Messages {
9
+ errors: Record<ErrorCode, string>;
10
+ notifications: Record<NotificationEventType, {
11
+ title: string;
12
+ body: string;
13
+ }>;
14
+ system: {
15
+ daemon_started: string;
16
+ daemon_stopped: string;
17
+ daemon_already_running: string;
18
+ init_complete: string;
19
+ };
20
+ cli: {
21
+ prompt_master_password: string;
22
+ confirm_master_password: string;
23
+ password_mismatch: string;
24
+ status_running: string;
25
+ status_stopped: string;
26
+ };
27
+ telegram: {
28
+ bot_welcome: string;
29
+ bot_pending_approval: string;
30
+ bot_already_registered: string;
31
+ bot_help: string;
32
+ bot_status_header: string;
33
+ bot_status_body: string;
34
+ bot_unauthorized: string;
35
+ bot_admin_only: string;
36
+ bot_pending_list_header: string;
37
+ bot_pending_empty: string;
38
+ bot_approve_success: string;
39
+ bot_reject_success: string;
40
+ bot_tx_not_found: string;
41
+ bot_killswitch_confirm: string;
42
+ bot_killswitch_success: string;
43
+ bot_killswitch_cancelled: string;
44
+ bot_killswitch_already_active: string;
45
+ bot_wallets_header: string;
46
+ bot_wallets_empty: string;
47
+ bot_newsession_select: string;
48
+ bot_newsession_created: string;
49
+ bot_newsession_wallet_not_found: string;
50
+ keyboard_approve: string;
51
+ keyboard_reject: string;
52
+ keyboard_yes: string;
53
+ keyboard_no: string;
54
+ };
55
+ }
56
+ export declare const messages: Messages;
57
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC,qBAAqB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9E,MAAM,EAAE;QACN,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,GAAG,EAAE;QACH,sBAAsB,EAAE,MAAM,CAAC;QAC/B,uBAAuB,EAAE,MAAM,CAAC;QAChC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,uBAAuB,EAAE,MAAM,CAAC;QAChC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,wBAAwB,EAAE,MAAM,CAAC;QACjC,6BAA6B,EAAE,MAAM,CAAC;QACtC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,+BAA+B,EAAE,MAAM,CAAC;QACxC,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,QAAQ,EAAE,QAgMtB,CAAC"}
@@ -0,0 +1,194 @@
1
+ export const messages = {
2
+ // Error messages (74 error codes from SS10.12 unified matrix)
3
+ errors: {
4
+ // PIPELINE domain (1)
5
+ PIPELINE_HALTED: 'Pipeline halted (transaction queued for delay or approval)',
6
+ // AUTH domain (8)
7
+ INVALID_TOKEN: 'Invalid authentication token',
8
+ TOKEN_EXPIRED: 'Authentication token has expired',
9
+ SESSION_REVOKED: 'Session has been revoked',
10
+ INVALID_SIGNATURE: 'Invalid signature',
11
+ INVALID_NONCE: 'Invalid or expired nonce',
12
+ INVALID_MASTER_PASSWORD: 'Invalid master password',
13
+ MASTER_PASSWORD_LOCKED: 'Master password locked due to too many attempts',
14
+ SYSTEM_LOCKED: 'System is locked (Kill Switch active)',
15
+ // SESSION domain (8)
16
+ SESSION_NOT_FOUND: 'Session not found',
17
+ SESSION_EXPIRED: 'Session has expired',
18
+ SESSION_LIMIT_EXCEEDED: 'Session limit exceeded',
19
+ CONSTRAINT_VIOLATED: 'Session constraint violated',
20
+ RENEWAL_LIMIT_REACHED: 'Session renewal limit reached',
21
+ SESSION_ABSOLUTE_LIFETIME_EXCEEDED: 'Session absolute lifetime exceeded',
22
+ RENEWAL_TOO_EARLY: 'Session renewal too early',
23
+ SESSION_RENEWAL_MISMATCH: 'Session renewal token mismatch',
24
+ // TX domain (25)
25
+ INSUFFICIENT_BALANCE: 'Insufficient balance',
26
+ INVALID_ADDRESS: 'Invalid address format',
27
+ TX_NOT_FOUND: 'Transaction not found',
28
+ TX_EXPIRED: 'Transaction has expired',
29
+ TX_ALREADY_PROCESSED: 'Transaction already processed',
30
+ CHAIN_ERROR: 'Blockchain error',
31
+ SIMULATION_FAILED: 'Transaction simulation failed',
32
+ TOKEN_NOT_FOUND: 'Token not found',
33
+ TOKEN_NOT_ALLOWED: 'Token not allowed by policy',
34
+ INSUFFICIENT_TOKEN_BALANCE: 'Insufficient token balance',
35
+ CONTRACT_CALL_DISABLED: 'Contract calls are disabled',
36
+ CONTRACT_NOT_WHITELISTED: 'Contract not whitelisted',
37
+ METHOD_NOT_WHITELISTED: 'Method not whitelisted',
38
+ APPROVE_DISABLED: 'Approve operations are disabled',
39
+ SPENDER_NOT_APPROVED: 'Spender not approved',
40
+ APPROVE_AMOUNT_EXCEEDED: 'Approve amount exceeded',
41
+ UNLIMITED_APPROVE_BLOCKED: 'Unlimited approve is blocked',
42
+ BATCH_NOT_SUPPORTED: 'Batch transactions not supported on this chain',
43
+ BATCH_SIZE_EXCEEDED: 'Batch size exceeded',
44
+ BATCH_POLICY_VIOLATION: 'Batch policy violation',
45
+ ENVIRONMENT_NETWORK_MISMATCH: "Network is not allowed in this wallet's environment",
46
+ INVALID_TRANSACTION: 'Invalid raw transaction format',
47
+ WALLET_NOT_SIGNER: 'Wallet is not a signer in this transaction',
48
+ UNSUPPORTED_TX_TYPE: 'Unsupported transaction type',
49
+ CHAIN_ID_MISMATCH: 'Transaction chain ID does not match requested network',
50
+ ABI_ENCODING_FAILED: 'ABI encoding failed',
51
+ // POLICY domain (5)
52
+ POLICY_NOT_FOUND: 'Policy not found',
53
+ POLICY_DENIED: 'Policy denied',
54
+ SPENDING_LIMIT_EXCEEDED: 'Spending limit exceeded',
55
+ RATE_LIMIT_EXCEEDED: 'Rate limit exceeded',
56
+ WHITELIST_DENIED: 'Address not in whitelist',
57
+ // OWNER domain (5)
58
+ OWNER_ALREADY_CONNECTED: 'Owner already connected',
59
+ OWNER_NOT_CONNECTED: 'Owner not connected',
60
+ OWNER_NOT_FOUND: 'Owner not found',
61
+ APPROVAL_TIMEOUT: 'Approval request has timed out',
62
+ APPROVAL_NOT_FOUND: 'Approval request not found',
63
+ OWNER_NOT_SET: 'Owner address must be set before this operation',
64
+ OWNER_ADDRESS_MISMATCH: 'Connected wallet address does not match registered owner',
65
+ // SYSTEM domain (9)
66
+ KILL_SWITCH_ACTIVE: 'Kill switch is already active',
67
+ KILL_SWITCH_NOT_ACTIVE: 'Kill switch is not active',
68
+ KILL_SWITCH_ALREADY_ACTIVE: 'Kill switch transition conflict',
69
+ INVALID_STATE_TRANSITION: 'Invalid kill switch state transition',
70
+ KEYSTORE_LOCKED: 'Keystore is locked',
71
+ CHAIN_NOT_SUPPORTED: 'Chain not supported',
72
+ SHUTTING_DOWN: 'Server is shutting down',
73
+ ADAPTER_NOT_AVAILABLE: 'Chain adapter not available',
74
+ SKILL_NOT_FOUND: 'Skill not found',
75
+ SCHEMA_INCOMPATIBLE: 'Database schema version is incompatible with this code version',
76
+ // WALLET domain (6)
77
+ WALLET_NOT_FOUND: 'Wallet not found',
78
+ WALLET_SUSPENDED: 'Wallet is suspended',
79
+ WALLET_TERMINATED: 'Wallet has been terminated',
80
+ WC_SESSION_EXISTS: 'Wallet already has an active WC session',
81
+ WC_SESSION_NOT_FOUND: 'No active WC session for this wallet',
82
+ // SYSTEM domain (WC)
83
+ WC_NOT_CONFIGURED: 'WalletConnect is not configured',
84
+ WC_SIGNING_FAILED: 'WalletConnect signing request failed',
85
+ // WITHDRAW domain (4)
86
+ NO_OWNER: 'No owner registered for this wallet',
87
+ WITHDRAW_LOCKED_ONLY: 'Withdrawal requires LOCKED owner state',
88
+ SWEEP_TOTAL_FAILURE: 'All sweep operations failed',
89
+ INSUFFICIENT_FOR_FEE: 'Insufficient balance for transaction fee',
90
+ // ACTION domain (8)
91
+ ACTION_NOT_FOUND: 'Action not found',
92
+ API_KEY_REQUIRED: 'API key required for this action provider',
93
+ ACTION_VALIDATION_FAILED: 'Action validation failed',
94
+ ACTION_RESOLVE_FAILED: 'Action resolve failed',
95
+ ACTION_RETURN_INVALID: 'Action return value is invalid',
96
+ ACTION_PLUGIN_LOAD_FAILED: 'Action plugin failed to load',
97
+ ACTION_NAME_CONFLICT: 'Action name conflict',
98
+ ACTION_CHAIN_MISMATCH: 'Action chain mismatch',
99
+ // ADMIN domain (1)
100
+ ROTATION_TOO_RECENT: 'Secret rotation too recent',
101
+ // X402 domain (8)
102
+ X402_DISABLED: 'x402 payments are disabled',
103
+ X402_DOMAIN_NOT_ALLOWED: 'Domain not allowed for x402 payments',
104
+ X402_SSRF_BLOCKED: 'Request blocked: target resolves to private/reserved IP',
105
+ X402_UNSUPPORTED_SCHEME: 'Unsupported x402 payment scheme or network',
106
+ X402_PAYMENT_REJECTED: 'x402 payment was rejected by the resource server',
107
+ X402_DELAY_TIMEOUT: 'x402 payment exceeds request timeout (DELAY tier)',
108
+ X402_APPROVAL_REQUIRED: 'x402 payment requires owner approval (amount too high)',
109
+ X402_SERVER_ERROR: 'Resource server error after x402 payment',
110
+ },
111
+ // Notification templates (22 event types)
112
+ notifications: {
113
+ TX_REQUESTED: { title: 'Transaction Requested', body: 'Wallet {walletId} requested {amount} transfer to {to} {display_amount}' },
114
+ TX_QUEUED: { title: 'Transaction Queued', body: 'Transaction {txId} queued for processing' },
115
+ TX_SUBMITTED: { title: 'Transaction Submitted', body: 'Transaction {txId} submitted to blockchain {display_amount}' },
116
+ TX_CONFIRMED: { title: 'Transaction Confirmed', body: 'Transaction {txId} confirmed. Amount: {amount} {display_amount}' },
117
+ TX_FAILED: { title: 'Transaction Failed', body: 'Transaction {txId} failed: {error} {display_amount}' },
118
+ TX_CANCELLED: { title: 'Transaction Cancelled', body: 'Transaction {txId} cancelled' },
119
+ TX_DOWNGRADED_DELAY: { title: 'Transaction Delayed', body: 'Transaction {txId} downgraded to delay queue ({seconds}s cooldown)' },
120
+ TX_APPROVAL_REQUIRED: { title: 'Approval Required', body: 'Transaction {txId} requires owner approval. Amount: {amount} to {to} {display_amount}' },
121
+ TX_APPROVAL_EXPIRED: { title: 'Approval Expired', body: 'Approval for transaction {txId} has expired' },
122
+ POLICY_VIOLATION: { title: 'Policy Violation', body: 'Wallet {walletId} policy violation: {reason}. Policy: {policyType}. Manage: {adminLink}' },
123
+ WALLET_SUSPENDED: { title: 'Wallet Suspended', body: 'Wallet {walletId} has been suspended: {reason}' },
124
+ KILL_SWITCH_ACTIVATED: { title: 'Kill Switch Activated', body: 'Kill switch activated by {activatedBy}. All operations halted' },
125
+ KILL_SWITCH_RECOVERED: { title: 'Kill Switch Recovered', body: 'Kill switch deactivated. Normal operations resumed' },
126
+ KILL_SWITCH_ESCALATED: { title: 'Kill Switch Escalated', body: 'Kill switch escalated to LOCKED state. Immediate action required' },
127
+ AUTO_STOP_TRIGGERED: { title: 'Auto-Stop Triggered', body: 'Wallet {walletId} auto-stopped: {reason}. Rule: {rule}' },
128
+ SESSION_EXPIRING_SOON: { title: 'Session Expiring Soon', body: 'Session {sessionId} for wallet {walletId} expires in {minutes} minutes' },
129
+ SESSION_EXPIRED: { title: 'Session Expired', body: 'Session {sessionId} for wallet {walletId} has expired' },
130
+ SESSION_CREATED: { title: 'Session Created', body: 'New session created for wallet {walletId}' },
131
+ OWNER_SET: { title: 'Owner Registered', body: 'Owner registered for wallet {walletId}: {ownerAddress}' },
132
+ OWNER_REMOVED: { title: 'Owner Removed', body: 'Owner removed from wallet {walletId}' },
133
+ OWNER_VERIFIED: { title: 'Owner Verified', body: 'Owner verified for wallet {walletId}' },
134
+ DAILY_SUMMARY: { title: 'Daily Summary', body: 'Wallets: {walletCount}, Transactions: {txCount}, Sessions: {sessionCount}' },
135
+ CUMULATIVE_LIMIT_WARNING: { title: 'Cumulative Spending Warning', body: 'Wallet {walletId} {type} spending at {ratio}% of limit (${spent} / ${limit}) {display_amount}' },
136
+ LOW_BALANCE: { title: 'Low Balance Alert', body: 'Wallet {walletId} balance low: {balance} {currency}. Threshold: {threshold} {currency}. Please top up.' },
137
+ APPROVAL_CHANNEL_SWITCHED: { title: 'Approval Channel Switched', body: 'Approval for transaction {txId} switched from {from_channel} to {to_channel}. Reason: {reason}' },
138
+ },
139
+ // System messages
140
+ system: {
141
+ daemon_started: 'WAIaaS daemon started',
142
+ daemon_stopped: 'WAIaaS daemon stopped',
143
+ daemon_already_running: 'Daemon is already running',
144
+ init_complete: 'WAIaaS initialized successfully',
145
+ },
146
+ // CLI messages
147
+ cli: {
148
+ prompt_master_password: 'Enter master password:',
149
+ confirm_master_password: 'Confirm master password:',
150
+ password_mismatch: 'Passwords do not match',
151
+ status_running: 'Status: running',
152
+ status_stopped: 'Status: stopped',
153
+ },
154
+ // Telegram Bot messages (MarkdownV2 pre-escaped where needed)
155
+ telegram: {
156
+ bot_welcome: 'Welcome to WAIaaS Bot\\! Your chat has been registered\\.',
157
+ bot_pending_approval: 'Your registration is pending admin approval\\.',
158
+ bot_already_registered: 'You are already registered\\.',
159
+ bot_help: [
160
+ '*Available Commands*',
161
+ '',
162
+ '/start \\- Register this chat',
163
+ '/help \\- Show this help message',
164
+ '/status \\- Show daemon status',
165
+ '/wallets \\- List wallets',
166
+ '/newsession \\- Create a new session',
167
+ '/killswitch \\- Activate kill switch',
168
+ '/pending \\- List pending registrations \\(admin\\)',
169
+ ].join('\n'),
170
+ bot_status_header: 'Daemon Status',
171
+ bot_status_body: 'Uptime: {uptime}\nKill Switch: {killSwitch}\nWallets: {walletCount} \\({activeCount} active\\)\nSessions: {sessionCount} active',
172
+ bot_unauthorized: 'You are not authorized\\. Please contact admin\\.',
173
+ bot_admin_only: 'This command requires admin privileges\\.',
174
+ bot_pending_list_header: 'Pending Approvals',
175
+ bot_pending_empty: 'No pending transactions\\.',
176
+ bot_approve_success: 'Transaction approved\\.',
177
+ bot_reject_success: 'Transaction rejected\\.',
178
+ bot_tx_not_found: 'Transaction not found\\.',
179
+ bot_killswitch_confirm: 'Are you sure you want to activate the kill switch\\?',
180
+ bot_killswitch_success: 'Kill switch activated\\. All operations halted\\.',
181
+ bot_killswitch_cancelled: 'Kill switch activation cancelled\\.',
182
+ bot_killswitch_already_active: 'Kill switch is already active \\(state: {state}\\)\\.',
183
+ bot_wallets_header: 'Wallets',
184
+ bot_wallets_empty: 'No wallets found\\.',
185
+ bot_newsession_select: 'Select a wallet to create a session for:',
186
+ bot_newsession_created: 'Session created\\. Token: `{token}`',
187
+ bot_newsession_wallet_not_found: 'Wallet not found or inactive\\.',
188
+ keyboard_approve: 'Approve',
189
+ keyboard_reject: 'Reject',
190
+ keyboard_yes: 'Yes',
191
+ keyboard_no: 'No',
192
+ },
193
+ };
194
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Messages } from './en.js';
2
+ export type SupportedLocale = 'en' | 'ko';
3
+ export declare function getMessages(locale?: SupportedLocale): Messages;
4
+ export type { Messages };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAI1C,wBAAgB,WAAW,CAAC,MAAM,GAAE,eAAsB,GAAG,QAAQ,CAEpE;AAED,YAAY,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { messages as en } from './en.js';
2
+ import { messages as ko } from './ko.js';
3
+ const localeMap = { en, ko };
4
+ export function getMessages(locale = 'en') {
5
+ return localeMap[locale] ?? en;
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAIzC,MAAM,SAAS,GAAsC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAEhE,MAAM,UAAU,WAAW,CAAC,SAA0B,IAAI;IACxD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Messages } from './en.js';
2
+ export declare const messages: Messages;
3
+ //# sourceMappingURL=ko.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ko.d.ts","sourceRoot":"","sources":["../../src/i18n/ko.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,eAAO,MAAM,QAAQ,EAAE,QAgMtB,CAAC"}