@m3rcena/eco 0.0.0-stage → 14.28.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 (44) hide show
  1. package/CHANGELOG.md +119 -0
  2. package/DOCUMENTATION.md +869 -0
  3. package/LICENSE +191 -0
  4. package/README.md +182 -2
  5. package/assets/logo.png +0 -0
  6. package/dist/host-Bmld-WtZ.cjs +6163 -0
  7. package/dist/host-Bmld-WtZ.cjs.map +1 -0
  8. package/dist/host-XZmTzNyx.d.cts +1833 -0
  9. package/dist/host-XZmTzNyx.d.cts.map +1 -0
  10. package/dist/host-_xxHiG2p.d.mts +1833 -0
  11. package/dist/host-_xxHiG2p.d.mts.map +1 -0
  12. package/dist/host-qJNVzdDa.mjs +5894 -0
  13. package/dist/host-qJNVzdDa.mjs.map +1 -0
  14. package/dist/host.cjs +4 -0
  15. package/dist/host.d.cts +2 -0
  16. package/dist/host.d.mts +2 -0
  17. package/dist/host.mjs +2 -0
  18. package/dist/index.cjs +1440 -0
  19. package/dist/index.cjs.map +1 -0
  20. package/dist/index.d.cts +339 -0
  21. package/dist/index.d.cts.map +1 -0
  22. package/dist/index.d.mts +339 -0
  23. package/dist/index.d.mts.map +1 -0
  24. package/dist/index.mjs +1371 -0
  25. package/dist/index.mjs.map +1 -0
  26. package/dist/register.cjs +46 -0
  27. package/dist/register.cjs.map +1 -0
  28. package/dist/register.d.cts +6 -0
  29. package/dist/register.d.cts.map +1 -0
  30. package/dist/register.d.mts +6 -0
  31. package/dist/register.d.mts.map +1 -0
  32. package/dist/register.mjs +44 -0
  33. package/dist/register.mjs.map +1 -0
  34. package/dist/resolver.cjs +305 -0
  35. package/dist/resolver.cjs.map +1 -0
  36. package/dist/resolver.d.cts +40 -0
  37. package/dist/resolver.d.cts.map +1 -0
  38. package/dist/resolver.d.mts +40 -0
  39. package/dist/resolver.d.mts.map +1 -0
  40. package/dist/resolver.mjs +296 -0
  41. package/dist/resolver.mjs.map +1 -0
  42. package/dist/rolldown-runtime-CmQyd0Gu.cjs +27 -0
  43. package/dist/rolldown-runtime-D3PmRqjj.mjs +4 -0
  44. package/package.json +94 -4
@@ -0,0 +1,1833 @@
1
+ import http from "node:http";
2
+ import { ColorResolvable } from "discord.js";
3
+ import { EventEmitter } from "node:events";
4
+ import { BridgeAction, BridgePackageRouter, BridgeRequest, BridgeResponse } from "@m3rcena/bridge";
5
+ interface InventoryItem {
6
+ id: string;
7
+ itemId: string;
8
+ name: string;
9
+ description?: string;
10
+ quantity: number;
11
+ category: string;
12
+ acquiredAt: number;
13
+ metadata?: Record<string, any>;
14
+ }
15
+ interface ShopItem {
16
+ id: string;
17
+ name: string;
18
+ description: string;
19
+ price: number;
20
+ category: "consumable" | "upgrade" | "collectible" | "tool" | "crate" | "role" | string;
21
+ rarity?: "common" | "uncommon" | "rare" | "epic" | "legendary" | "mythic";
22
+ stock?: number;
23
+ maxPurchases?: number;
24
+ consumable?: boolean;
25
+ resaleValue?: number;
26
+ roleRewardId?: string;
27
+ usableEffect?: "shield" | "cooldown_reset" | "gamble_luck" | "xp_boost" | "crate_key" | string;
28
+ effectDurationMs?: number;
29
+ effectMagnitude?: number;
30
+ }
31
+ interface CareerJob {
32
+ id: string;
33
+ title: string;
34
+ category: string;
35
+ baseSalary: number;
36
+ minLevel: number;
37
+ requiredShiftsForPromotion: number;
38
+ description: string;
39
+ perk?: string;
40
+ }
41
+ interface UserCareer {
42
+ jobId: string;
43
+ jobTitle: string;
44
+ level: number;
45
+ shiftsCompleted: number;
46
+ lastPromoted?: number;
47
+ }
48
+ interface BusinessConfig {
49
+ id: string;
50
+ name: string;
51
+ category: string;
52
+ baseCost: number;
53
+ baseHourlyRevenue: number;
54
+ upgradeCostMultiplier: number;
55
+ revenueMultiplier: number;
56
+ maxLevel: number;
57
+ description: string;
58
+ }
59
+ interface UserBusiness {
60
+ id: string;
61
+ businessId: string;
62
+ name: string;
63
+ level: number;
64
+ employees: number;
65
+ lastCollected: number;
66
+ totalCollected: number;
67
+ }
68
+ interface ActiveEffect {
69
+ id: string;
70
+ name: string;
71
+ type: "shield" | "cooldown_reset" | "gamble_luck" | "xp_boost" | string;
72
+ magnitude: number;
73
+ expiresAt: number;
74
+ }
75
+ interface UserStats {
76
+ totalEarned: number;
77
+ totalSpent: number;
78
+ totalGambled: number;
79
+ totalGambleWon: number;
80
+ totalRobbed: number;
81
+ timesRobbed: number;
82
+ jobsCompleted: number;
83
+ itemsBought: number;
84
+ heistsCompleted?: number;
85
+ stockTrades?: number;
86
+ }
87
+ type StockMarketTrend = "BULL" | "BEAR" | "STABLE" | "VOLATILE" | "CRASH" | "MOON";
88
+ interface StockConfig {
89
+ symbol: string;
90
+ name: string;
91
+ category: "TECH" | "CRYPTO" | "FINANCE" | "MINING" | "ENERGY" | string;
92
+ basePrice: number;
93
+ currentPrice: number;
94
+ high24h: number;
95
+ low24h: number;
96
+ change24h: number;
97
+ history: number[];
98
+ volatility: number;
99
+ dividendYield?: number;
100
+ description: string;
101
+ }
102
+ interface UserStockPosition {
103
+ symbol: string;
104
+ shares: number;
105
+ totalInvested: number;
106
+ averageBuyPrice: number;
107
+ lastTradeTimestamp: number;
108
+ }
109
+ interface StockTradeResult {
110
+ success: boolean;
111
+ action: "BUY" | "SELL";
112
+ symbol: string;
113
+ shares: number;
114
+ pricePerShare: number;
115
+ totalAmount: number;
116
+ userWallet: number;
117
+ sharesRemaining: number;
118
+ profitOrLoss?: number;
119
+ error?: string;
120
+ }
121
+ type HeistRole = "HACKER" | "DRIVER" | "DEMOLITIONIST" | "MUSCLE";
122
+ interface HeistTarget {
123
+ id: string;
124
+ name: string;
125
+ difficulty: "EASY" | "MEDIUM" | "HARD" | "IMPOSSIBLE";
126
+ minLevel: number;
127
+ minCrew: number;
128
+ maxCrew: number;
129
+ baseBountyMin: number;
130
+ baseBountyMax: number;
131
+ failureBail: number;
132
+ description: string;
133
+ successRate: number;
134
+ }
135
+ interface HeistCrewMember {
136
+ userId: string;
137
+ username: string;
138
+ role: HeistRole;
139
+ ready: boolean;
140
+ }
141
+ interface HeistSession {
142
+ id: string;
143
+ guildId?: string;
144
+ initiatorId: string;
145
+ target: HeistTarget;
146
+ crew: HeistCrewMember[];
147
+ phase: "LOBBY" | "PLANNING" | "EXECUTION" | "ESCAPE" | "CONCLUDED";
148
+ createdAt: number;
149
+ success?: boolean;
150
+ totalLoot?: number;
151
+ lootSplit?: Record<string, number>;
152
+ log: string[];
153
+ }
154
+ interface HeistResult {
155
+ success: boolean;
156
+ targetName: string;
157
+ totalLoot: number;
158
+ crewCount: number;
159
+ sharePerPlayer: number;
160
+ finePerPlayer?: number;
161
+ log: string[];
162
+ }
163
+ interface PetConfig {
164
+ id: string;
165
+ name: string;
166
+ species: string;
167
+ rarity: "common" | "rare" | "epic" | "legendary" | "mythic";
168
+ buyCost: number;
169
+ description: string;
170
+ emoji: string;
171
+ workMultiplierBonus: number;
172
+ crimeProtectionBonus: number;
173
+ luckBonus: number;
174
+ }
175
+ interface UserPet {
176
+ id: string;
177
+ petId: string;
178
+ name: string;
179
+ species: string;
180
+ level: number;
181
+ xp: number;
182
+ hunger: number;
183
+ happiness: number;
184
+ acquiredAt: number;
185
+ isExpeditionActive: boolean;
186
+ expeditionReturnsAt?: number;
187
+ expeditionReward?: {
188
+ coins: number;
189
+ xp: number;
190
+ foundItem?: string;
191
+ };
192
+ }
193
+ interface PetExpeditionResult {
194
+ coins: number;
195
+ xp: number;
196
+ petLevel: number;
197
+ }
198
+ interface SkillTree {
199
+ hustler: number;
200
+ mastermind: number;
201
+ highRoller: number;
202
+ fortune: number;
203
+ tycoon: number;
204
+ availablePoints: number;
205
+ }
206
+ interface Prestige {
207
+ rank: number;
208
+ starEmoji: string;
209
+ globalMultiplier: number;
210
+ totalResets: number;
211
+ lastPrestigeAt?: number;
212
+ }
213
+ type CrateTier = "common" | "rare" | "epic" | "legendary" | "mythic";
214
+ interface CrateReward {
215
+ tier: CrateTier;
216
+ coins: number;
217
+ xp: number;
218
+ item?: ShopItem;
219
+ shares?: {
220
+ symbol: string;
221
+ count: number;
222
+ };
223
+ announcement: string;
224
+ }
225
+ interface BankVaultTier {
226
+ tier: number;
227
+ name: string;
228
+ capacity: number;
229
+ upgradeCost: number;
230
+ interestRate: number;
231
+ robberyDefense: number;
232
+ perks: string[];
233
+ }
234
+ type CreditRating = "POOR" | "FAIR" | "GOOD" | "VERY_GOOD" | "EXCELLENT";
235
+ interface CreditScoreData {
236
+ score: number;
237
+ rating: CreditRating;
238
+ loansRepaid: number;
239
+ defaultsCount: number;
240
+ taxesPaid: number;
241
+ lastScoreUpdate?: number;
242
+ }
243
+ type LoanTier = "starter" | "business" | "commercial" | "whale";
244
+ interface LoanOffer {
245
+ tier: LoanTier;
246
+ name: string;
247
+ principal: number;
248
+ interestRate: number;
249
+ totalDue: number;
250
+ minCreditScore: number;
251
+ durationHours: number;
252
+ description: string;
253
+ }
254
+ interface UserLoan {
255
+ id: string;
256
+ tier: LoanTier;
257
+ name: string;
258
+ principal: number;
259
+ totalDue: number;
260
+ remainingDue: number;
261
+ takenAt: number;
262
+ dueAt: number;
263
+ status: "active" | "paid" | "defaulted";
264
+ }
265
+ type BillType = "utility" | "rent" | "vault_maintenance" | "syndicate_tribute" | "wealth_tax";
266
+ interface MunicipalBill {
267
+ id: string;
268
+ type: BillType;
269
+ title: string;
270
+ amount: number;
271
+ issuedAt: number;
272
+ dueAt: number;
273
+ isPaid: boolean;
274
+ }
275
+ interface UserAccount {
276
+ userId: string;
277
+ guildId?: string;
278
+ wallet: number;
279
+ bank: number;
280
+ bankCapacity: number;
281
+ xp: number;
282
+ level: number;
283
+ streak: {
284
+ daily: number;
285
+ lastDaily?: number;
286
+ lastWeekly?: number;
287
+ lastMonthly?: number;
288
+ lastHourly?: number;
289
+ lastWork?: number;
290
+ lastBeg?: number;
291
+ lastCrime?: number;
292
+ lastRob?: number;
293
+ };
294
+ career?: UserCareer;
295
+ inventory: InventoryItem[];
296
+ businesses: UserBusiness[];
297
+ activeEffects: ActiveEffect[];
298
+ stocks?: UserStockPosition[];
299
+ pets?: UserPet[];
300
+ skills?: SkillTree;
301
+ prestige?: Prestige;
302
+ bankTier?: number;
303
+ creditScore?: CreditScoreData;
304
+ loans?: UserLoan[];
305
+ bills?: MunicipalBill[];
306
+ lastInterestClaimedAt?: number;
307
+ stats: UserStats;
308
+ createdAt: number;
309
+ updatedAt: number;
310
+ }
311
+ interface CasinoBetResult {
312
+ game: "blackjack" | "coinflip" | "roulette" | "slots" | "dice" | "crash" | string;
313
+ betAmount: number;
314
+ outcome: "win" | "lose" | "push";
315
+ payout: number;
316
+ profit: number;
317
+ multiplier: number;
318
+ details: string;
319
+ finalWallet: number;
320
+ }
321
+ interface TransferResult {
322
+ success: boolean;
323
+ fromUserId: string;
324
+ toUserId: string;
325
+ amount: number;
326
+ fee: number;
327
+ fromWallet: number;
328
+ toWallet: number;
329
+ error?: string;
330
+ }
331
+ interface RobResult {
332
+ success: boolean;
333
+ robberId: string;
334
+ victimId: string;
335
+ amountStolen: number;
336
+ finePaid?: number;
337
+ blockedByShield?: boolean;
338
+ robberWallet: number;
339
+ victimWallet: number;
340
+ message: string;
341
+ }
342
+ interface EcoCustomMessages {
343
+ workSuccess?: string;
344
+ dailyClaimed?: string;
345
+ weeklyClaimed?: string;
346
+ monthlyClaimed?: string;
347
+ hourlyClaimed?: string;
348
+ begSuccess?: string;
349
+ begFailed?: string;
350
+ crimeSuccess?: string;
351
+ crimeFailed?: string;
352
+ robSuccess?: string;
353
+ robFailed?: string;
354
+ robShieldBlocked?: string;
355
+ depositSuccess?: string;
356
+ withdrawSuccess?: string;
357
+ levelUp?: string;
358
+ prestigeAchieved?: string;
359
+ heistSuccess?: string;
360
+ heistFailed?: string;
361
+ stockBuySuccess?: string;
362
+ stockSellSuccess?: string;
363
+ crateOpen?: string;
364
+ }
365
+ interface EcoCustomEmojis {
366
+ wallet?: string;
367
+ bank?: string;
368
+ netWorth?: string;
369
+ gems?: string;
370
+ streak?: string;
371
+ level?: string;
372
+ shield?: string;
373
+ stockBull?: string;
374
+ stockBear?: string;
375
+ pet?: string;
376
+ crate?: string;
377
+ heist?: string;
378
+ }
379
+ interface EcoManagerOptions {
380
+ currencySymbol?: string;
381
+ currencyName?: string;
382
+ secondaryCurrencySymbol?: string;
383
+ secondaryCurrencyName?: string;
384
+ embedColor?: ColorResolvable | number | string;
385
+ mode?: "guild" | "global";
386
+ defaultBankCapacity?: number;
387
+ defaultWalletBalance?: number;
388
+ bankInterestRate?: number;
389
+ transactionFeePercentage?: number;
390
+ storage?: any;
391
+ /** Database configuration for SQLite or Prisma ("sqlite" | "prisma" | "json" | "memory") */
392
+ database?: EcoDatabaseConfig;
393
+ bridge?: any;
394
+ /** Whether to log an update notification box in terminal if newer version is available. Default: true */
395
+ notifyUpdates?: boolean;
396
+ customMessages?: Partial<EcoCustomMessages>;
397
+ emojis?: Partial<EcoCustomEmojis>;
398
+ stockMarketTickIntervalMs?: number;
399
+ initialStocks?: StockConfig[];
400
+ initialHeistTargets?: HeistTarget[];
401
+ initialPets?: PetConfig[];
402
+ cooldowns?: {
403
+ daily?: number;
404
+ weekly?: number;
405
+ monthly?: number;
406
+ hourly?: number;
407
+ work?: number;
408
+ beg?: number;
409
+ crime?: number;
410
+ rob?: number;
411
+ };
412
+ }
413
+ type EcoDatabaseConfig = "sqlite" | "memory" | "json" | {
414
+ type: "sqlite";
415
+ path?: string;
416
+ } | {
417
+ type: "prisma";
418
+ client: any;
419
+ model?: string;
420
+ autoMigrate?: boolean;
421
+ } | {
422
+ type: "json";
423
+ path?: string;
424
+ } | {
425
+ type: "memory";
426
+ };
427
+ /**
428
+ * Strongly-typed events emitted by EcoManager.
429
+ */
430
+ interface EcoEvents {
431
+ walletAdd: [event: {
432
+ userId: string;
433
+ amount: number;
434
+ newWallet: number;
435
+ guildId?: string;
436
+ }];
437
+ walletRemove: [event: {
438
+ userId: string;
439
+ amount: number;
440
+ newWallet: number;
441
+ guildId?: string;
442
+ }];
443
+ deposit: [event: {
444
+ userId: string;
445
+ deposited: number;
446
+ wallet: number;
447
+ bank: number;
448
+ guildId?: string;
449
+ }];
450
+ withdraw: [event: {
451
+ userId: string;
452
+ withdrawn: number;
453
+ wallet: number;
454
+ bank: number;
455
+ guildId?: string;
456
+ }];
457
+ transfer: [event: TransferResult & {
458
+ guildId?: string;
459
+ }];
460
+ dailyClaim: [event: {
461
+ userId: string;
462
+ amount: number;
463
+ streak: number;
464
+ isMilestone: boolean;
465
+ guildId?: string;
466
+ }];
467
+ work: [event: {
468
+ userId: string;
469
+ earned: number;
470
+ xp: number;
471
+ job?: CareerJob;
472
+ promoted: boolean;
473
+ guildId?: string;
474
+ }];
475
+ crime: [event: {
476
+ userId: string;
477
+ success: boolean;
478
+ earned?: number;
479
+ fine?: number;
480
+ crimeType?: string;
481
+ guildId?: string;
482
+ }];
483
+ robbery: [event: RobResult & {
484
+ guildId?: string;
485
+ }];
486
+ gamble: [event: CasinoBetResult & {
487
+ userId: string;
488
+ game: string;
489
+ betAmount: number;
490
+ guildId?: string;
491
+ }];
492
+ heist: [result: HeistResult & {
493
+ targetId?: string;
494
+ guildId?: string;
495
+ }];
496
+ shopPurchase: [event: {
497
+ userId: string;
498
+ item: ShopItem;
499
+ quantity: number;
500
+ totalCost: number;
501
+ newWallet: number;
502
+ guildId?: string;
503
+ }];
504
+ shopSell: [event: {
505
+ userId: string;
506
+ item: ShopItem;
507
+ quantity: number;
508
+ revenue: number;
509
+ newWallet: number;
510
+ guildId?: string;
511
+ }];
512
+ businessCollect: [event: {
513
+ userId: string;
514
+ businessId: string;
515
+ amount: number;
516
+ newWallet: number;
517
+ guildId?: string;
518
+ }];
519
+ loanDisbursed: [event: {
520
+ userId: string;
521
+ loan: UserLoan;
522
+ guildId?: string;
523
+ }];
524
+ loanRepaid: [event: {
525
+ userId: string;
526
+ amountPaid: number;
527
+ remainingDue: number;
528
+ isFullyPaid: boolean;
529
+ newCreditScore: number;
530
+ guildId?: string;
531
+ }];
532
+ billsPaid: [event: {
533
+ userId: string;
534
+ totalAmountPaid: number;
535
+ paidCount: number;
536
+ newCreditScore: number;
537
+ guildId?: string;
538
+ }];
539
+ vaultUpgraded: [event: {
540
+ userId: string;
541
+ newTier: BankVaultTier;
542
+ cost: number;
543
+ guildId?: string;
544
+ }];
545
+ crateOpened: [event: {
546
+ userId: string;
547
+ tier: CrateTier;
548
+ rewards: CrateReward[];
549
+ guildId?: string;
550
+ }];
551
+ petAdopted: [event: {
552
+ userId: string;
553
+ pet: UserPet;
554
+ cost: number;
555
+ guildId?: string;
556
+ }];
557
+ stockTrade: [result: StockTradeResult & {
558
+ userId: string;
559
+ guildId?: string;
560
+ }];
561
+ bridgeAction: [action: {
562
+ module: string;
563
+ action: string;
564
+ playerId: string;
565
+ payload: any;
566
+ }];
567
+ }
568
+ interface EcoStorageAdapter {
569
+ getAccount(userId: string, guildId?: string): Promise<UserAccount | null>;
570
+ saveAccount(account: UserAccount): Promise<void>;
571
+ getTopAccounts(sortBy: "netWorth" | "wallet" | "bank" | "level", limit?: number, guildId?: string): Promise<UserAccount[]>;
572
+ getAllAccounts(guildId?: string): Promise<UserAccount[]>;
573
+ }
574
+ declare function createDefaultAccount(userId: string, guildId?: string, defaultWallet?: number, defaultBankCap?: number): UserAccount;
575
+ declare class MemoryEcoStorage implements EcoStorageAdapter {
576
+ private accounts;
577
+ private makeKey;
578
+ getAccount(userId: string, guildId?: string): Promise<UserAccount | null>;
579
+ saveAccount(account: UserAccount): Promise<void>;
580
+ getTopAccounts(sortBy?: "netWorth" | "wallet" | "bank" | "level", limit?: number, guildId?: string): Promise<UserAccount[]>;
581
+ getAllAccounts(guildId?: string): Promise<UserAccount[]>;
582
+ }
583
+ declare class JsonEcoStorage implements EcoStorageAdapter {
584
+ private filePath;
585
+ private cache;
586
+ private loaded;
587
+ constructor(filePath?: string);
588
+ private makeKey;
589
+ private ensureLoaded;
590
+ private persist;
591
+ getAccount(userId: string, guildId?: string): Promise<UserAccount | null>;
592
+ saveAccount(account: UserAccount): Promise<void>;
593
+ getTopAccounts(sortBy?: "netWorth" | "wallet" | "bank" | "level", limit?: number, guildId?: string): Promise<UserAccount[]>;
594
+ getAllAccounts(guildId?: string): Promise<UserAccount[]>;
595
+ }
596
+ declare class BankManager {
597
+ private storage;
598
+ private defaultWallet;
599
+ private defaultBankCap;
600
+ private transactionFee;
601
+ constructor(storage: EcoStorageAdapter, options?: {
602
+ defaultWallet?: number;
603
+ defaultBankCap?: number;
604
+ transactionFee?: number;
605
+ });
606
+ getAccount(userId: string, guildId?: string): Promise<UserAccount>;
607
+ saveAccount(account: UserAccount): Promise<void>;
608
+ /**
609
+ * Deposits cash from wallet into the bank up to bank capacity.
610
+ */
611
+ deposit(userId: string, amount: number | "all", guildId?: string): Promise<{
612
+ success: boolean;
613
+ deposited: number;
614
+ wallet: number;
615
+ bank: number;
616
+ error?: string;
617
+ }>;
618
+ /**
619
+ * Withdraws cash from bank to wallet.
620
+ */
621
+ withdraw(userId: string, amount: number | "all", guildId?: string): Promise<{
622
+ success: boolean;
623
+ withdrawn: number;
624
+ wallet: number;
625
+ bank: number;
626
+ error?: string;
627
+ }>;
628
+ /**
629
+ * Transfers funds from one user's wallet to another.
630
+ */
631
+ transfer(fromUserId: string, toUserId: string, amount: number, guildId?: string): Promise<TransferResult>;
632
+ /**
633
+ * Upgrades bank capacity for a fee.
634
+ */
635
+ upgradeCapacity(userId: string, additionalCapacity: number, cost: number, guildId?: string): Promise<{
636
+ success: boolean;
637
+ newCapacity: number;
638
+ wallet: number;
639
+ error?: string;
640
+ }>;
641
+ /**
642
+ * Adds cash to wallet.
643
+ */
644
+ addWallet(userId: string, amount: number, guildId?: string): Promise<number>;
645
+ /**
646
+ * Removes cash from wallet.
647
+ */
648
+ removeWallet(userId: string, amount: number, guildId?: string): Promise<number>;
649
+ /**
650
+ * Adds or subtracts wallet balance directly (admin/reward action).
651
+ */
652
+ modifyWallet(userId: string, delta: number, guildId?: string): Promise<{
653
+ newBalance: number;
654
+ }>;
655
+ }
656
+ declare class RewardManager {
657
+ private bank;
658
+ private cooldowns;
659
+ constructor(bank: BankManager, customCooldowns?: Record<string, number>);
660
+ private checkCooldown;
661
+ /**
662
+ * Claims the daily reward with streak multipliers.
663
+ */
664
+ claimDaily(userId: string, guildId?: string): Promise<{
665
+ success: boolean;
666
+ amount: number;
667
+ rewardAmount: number;
668
+ streak: number;
669
+ isMilestone: boolean;
670
+ jackpotMilestone?: boolean;
671
+ remainingMs?: number;
672
+ cooldownRemainingMs?: number;
673
+ }>;
674
+ /**
675
+ * Claims weekly reward bonus.
676
+ */
677
+ claimWeekly(userId: string, guildId?: string): Promise<{
678
+ success: boolean;
679
+ amount: number;
680
+ rewardAmount: number;
681
+ remainingMs?: number;
682
+ cooldownRemainingMs?: number;
683
+ }>;
684
+ /**
685
+ * Claims monthly reward bonus.
686
+ */
687
+ claimMonthly(userId: string, guildId?: string): Promise<{
688
+ success: boolean;
689
+ amount: number;
690
+ rewardAmount: number;
691
+ remainingMs?: number;
692
+ cooldownRemainingMs?: number;
693
+ }>;
694
+ /**
695
+ * Claims hourly allowance.
696
+ */
697
+ claimHourly(userId: string, guildId?: string): Promise<{
698
+ success: boolean;
699
+ amount: number;
700
+ rewardAmount: number;
701
+ remainingMs?: number;
702
+ cooldownRemainingMs?: number;
703
+ }>;
704
+ /**
705
+ * Completes a work shift.
706
+ */
707
+ work(userId: string, guildId?: string, bonusSalary?: number): Promise<{
708
+ success: boolean;
709
+ earned: number;
710
+ earnedAmount: number;
711
+ xp: number;
712
+ xpEarned: number;
713
+ jobTitle: string;
714
+ remainingMs?: number;
715
+ cooldownRemainingMs?: number;
716
+ }>;
717
+ /**
718
+ * Begs for coins from random NPCs.
719
+ */
720
+ beg(userId: string, guildId?: string): Promise<{
721
+ success: boolean;
722
+ earned: number;
723
+ npc: string;
724
+ donor: string;
725
+ quote: string;
726
+ remainingMs?: number;
727
+ cooldownRemainingMs?: number;
728
+ }>;
729
+ /**
730
+ * Attempts an illicit crime for high stakes.
731
+ */
732
+ commitCrime(userId: string, guildId?: string): Promise<{
733
+ success: boolean;
734
+ payout: number;
735
+ earned?: number;
736
+ fine: number;
737
+ message: string;
738
+ remainingMs?: number;
739
+ cooldownRemainingMs?: number;
740
+ }>;
741
+ /**
742
+ * Alias for commitCrime.
743
+ */
744
+ crime(userId: string, guildId?: string): Promise<{
745
+ success: boolean;
746
+ payout: number;
747
+ earned?: number;
748
+ fine: number;
749
+ message: string;
750
+ remainingMs?: number;
751
+ cooldownRemainingMs?: number;
752
+ }>;
753
+ /**
754
+ * Attempts to rob another player's wallet.
755
+ */
756
+ rob(robberId: string, victimId: string, guildId?: string): Promise<RobResult>;
757
+ private checkLevelUp;
758
+ }
759
+ declare const DEFAULT_JOBS: CareerJob[];
760
+ declare class CareerManager {
761
+ private bank;
762
+ private jobs;
763
+ constructor(bank: BankManager, initialJobs?: CareerJob[]);
764
+ /**
765
+ * Returns all available jobs.
766
+ */
767
+ getJobs(): CareerJob[];
768
+ /**
769
+ * Retrieves a job by ID.
770
+ */
771
+ getJob(jobId: string): CareerJob | undefined;
772
+ /**
773
+ * Registers a new custom job.
774
+ */
775
+ registerJob(job: CareerJob): void;
776
+ /**
777
+ * Returns a user's current career.
778
+ */
779
+ getCareer(userId: string, guildId?: string): Promise<UserCareer | null>;
780
+ /**
781
+ * Applies for a job. User must meet the minimum level requirement.
782
+ */
783
+ apply(userId: string, jobId: string, guildId?: string): Promise<{
784
+ success: boolean;
785
+ job?: CareerJob;
786
+ error?: string;
787
+ }>;
788
+ /**
789
+ * Resigns from the current career.
790
+ */
791
+ resign(userId: string, guildId?: string): Promise<{
792
+ success: boolean;
793
+ previousJob?: string;
794
+ error?: string;
795
+ }>;
796
+ /**
797
+ * Records a shift worked and checks for a promotion.
798
+ */
799
+ recordShift(userId: string, guildId?: string): Promise<{
800
+ hasCareer: boolean;
801
+ promoted: boolean;
802
+ newCareerLevel?: number;
803
+ promotionBonus?: number;
804
+ shiftsCompleted?: number;
805
+ job?: CareerJob;
806
+ }>;
807
+ /**
808
+ * Computes salary for a user based on their career and career level.
809
+ */
810
+ calculateSalary(career?: UserCareer): number;
811
+ }
812
+ declare const DEFAULT_SHOP_ITEMS: ShopItem[];
813
+ declare class ShopManager {
814
+ private bank;
815
+ private items;
816
+ constructor(bank: BankManager, initialItems?: ShopItem[]);
817
+ /**
818
+ * Returns all items currently in the shop.
819
+ */
820
+ getItems(): ShopItem[];
821
+ /**
822
+ * Retrieves an item by ID.
823
+ */
824
+ getItem(itemId: string): ShopItem | undefined;
825
+ /**
826
+ * Registers a new item or updates an existing one in the shop catalog.
827
+ */
828
+ registerItem(item: ShopItem): void;
829
+ /**
830
+ * Cleans expired effects from an account.
831
+ */
832
+ private cleanExpiredEffects;
833
+ /**
834
+ * Purchases one or more units of an item.
835
+ */
836
+ buy(userId: string, itemId: string, quantity?: number, guildId?: string): Promise<{
837
+ success: boolean;
838
+ item?: ShopItem;
839
+ quantity: number;
840
+ totalCost: number;
841
+ newWallet: number;
842
+ error?: string;
843
+ }>;
844
+ /**
845
+ * Sells an item from inventory back to the store.
846
+ */
847
+ sell(userId: string, itemId: string, quantity?: number, guildId?: string): Promise<{
848
+ success: boolean;
849
+ item?: ShopItem;
850
+ quantity: number;
851
+ earned: number;
852
+ newWallet: number;
853
+ error?: string;
854
+ }>;
855
+ /**
856
+ * Uses/consumes an item from the user's inventory.
857
+ */
858
+ use(userId: string, itemId: string, guildId?: string): Promise<{
859
+ success: boolean;
860
+ message: string;
861
+ item?: ShopItem;
862
+ effect?: ActiveEffect;
863
+ lotteryWon?: number;
864
+ error?: string;
865
+ }>;
866
+ /**
867
+ * Retrieves active, unexpired effects for a user.
868
+ */
869
+ getActiveEffects(userId: string, guildId?: string): Promise<ActiveEffect[]>;
870
+ /**
871
+ * Checks if a user has a specific effect active.
872
+ */
873
+ hasActiveEffect(userId: string, effectType: string, guildId?: string): Promise<boolean>;
874
+ /**
875
+ * Consumes an active effect (e.g. shield is spent when blocking robbery).
876
+ */
877
+ consumeActiveEffect(userId: string, effectType: string, guildId?: string): Promise<boolean>;
878
+ /**
879
+ * Returns a user's inventory.
880
+ */
881
+ getInventory(userId: string, guildId?: string): Promise<InventoryItem[]>;
882
+ }
883
+ declare const DEFAULT_BUSINESS_CATALOG: BusinessConfig[];
884
+ declare class BusinessManager {
885
+ private bank;
886
+ private catalog;
887
+ private maxAccumulationHours;
888
+ constructor(bank: BankManager, initialCatalog?: BusinessConfig[], maxAccumulationHours?: number);
889
+ /**
890
+ * Returns all available businesses in the catalog.
891
+ */
892
+ getCatalog(): BusinessConfig[];
893
+ /**
894
+ * Retrieves business configuration by ID.
895
+ */
896
+ getBusinessConfig(id: string): BusinessConfig | undefined;
897
+ /**
898
+ * Registers a new custom business.
899
+ */
900
+ registerBusiness(config: BusinessConfig): void;
901
+ /**
902
+ * Calculates the upgrade cost for a business from its current level.
903
+ */
904
+ calculateUpgradeCost(business: UserBusiness): number;
905
+ /**
906
+ * Calculates employee hiring cost for a business.
907
+ */
908
+ calculateEmployeeHiringCost(business: UserBusiness, count: number): number;
909
+ /**
910
+ * Calculates the hourly revenue generated by a business.
911
+ */
912
+ calculateHourlyRevenue(business: UserBusiness): number;
913
+ /**
914
+ * Computes pending unclaimed revenue for a business based on time elapsed.
915
+ */
916
+ calculatePendingRevenue(business: UserBusiness): number;
917
+ /**
918
+ * Retrieves all businesses owned by a user, enriched with pending revenue and stats.
919
+ */
920
+ getUserBusinesses(userId: string, guildId?: string): Promise<Array<{
921
+ business: UserBusiness;
922
+ config: BusinessConfig;
923
+ pendingRevenue: number;
924
+ hourlyRevenue: number;
925
+ upgradeCost: number;
926
+ }>>;
927
+ /**
928
+ * Purchases a new business enterprise.
929
+ */
930
+ buyBusiness(userId: string, businessId: string, guildId?: string): Promise<{
931
+ success: boolean;
932
+ business?: UserBusiness;
933
+ cost: number;
934
+ newWallet: number;
935
+ error?: string;
936
+ }>;
937
+ /**
938
+ * Upgrades an existing business level.
939
+ */
940
+ upgradeBusiness(userId: string, businessId: string, guildId?: string): Promise<{
941
+ success: boolean;
942
+ business?: UserBusiness;
943
+ newLevel: number;
944
+ upgradeCost: number;
945
+ newWallet: number;
946
+ error?: string;
947
+ }>;
948
+ /**
949
+ * Hires additional staff members to boost output.
950
+ */
951
+ hireEmployees(userId: string, businessId: string, count?: number, guildId?: string): Promise<{
952
+ success: boolean;
953
+ business?: UserBusiness;
954
+ totalEmployees: number;
955
+ cost: number;
956
+ newWallet: number;
957
+ error?: string;
958
+ }>;
959
+ /**
960
+ * Collects accumulated passive profits from all owned businesses or a specific business.
961
+ */
962
+ collectRevenue(userId: string, businessId?: string, guildId?: string): Promise<{
963
+ success: boolean;
964
+ collected: number;
965
+ newWallet: number;
966
+ summary: Array<{
967
+ businessId: string;
968
+ name: string;
969
+ amount: number;
970
+ }>;
971
+ error?: string;
972
+ }>;
973
+ }
974
+ interface Card {
975
+ suit: "♠" | "♥" | "♦" | "♣";
976
+ rank: string;
977
+ value: number;
978
+ }
979
+ interface BlackjackState {
980
+ gameId: string;
981
+ userId: string;
982
+ guildId?: string;
983
+ betAmount: number;
984
+ deck: Card[];
985
+ playerHand: Card[];
986
+ dealerHand: Card[];
987
+ status: "playing" | "player_bust" | "dealer_bust" | "player_win" | "dealer_win" | "push" | "blackjack";
988
+ payout: number;
989
+ finished: boolean;
990
+ }
991
+ declare class CasinoManager {
992
+ private bank;
993
+ private shop?;
994
+ private activeBlackjackGames;
995
+ constructor(bank: BankManager, shop?: ShopManager);
996
+ setShopManager(shop: ShopManager): void;
997
+ /**
998
+ * Helper to check for active luck boost effect.
999
+ */
1000
+ private getLuckBoost;
1001
+ /**
1002
+ * Pre-bet validation & deduction.
1003
+ */
1004
+ private prepareBet;
1005
+ /**
1006
+ * Post-bet payout & stats recording.
1007
+ */
1008
+ private finishBet;
1009
+ coinflip(userId: string, betAmount: number, choice: "heads" | "tails", guildId?: string): Promise<CasinoBetResult>;
1010
+ dice(userId: string, betAmount: number, prediction: "high" | "low" | number, guildId?: string): Promise<CasinoBetResult>;
1011
+ slots(userId: string, betAmount: number, guildId?: string): Promise<CasinoBetResult>;
1012
+ roulette(userId: string, betAmount: number, betType: "red" | "black" | "green" | "even" | "odd" | number, guildId?: string): Promise<CasinoBetResult>;
1013
+ crash(userId: string, betAmount: number, targetMultiplier: number, guildId?: string): Promise<CasinoBetResult>;
1014
+ private buildDeck;
1015
+ calculateHand(hand: Card[]): {
1016
+ total: number;
1017
+ isSoft: boolean;
1018
+ isBust: boolean;
1019
+ isBlackjack: boolean;
1020
+ };
1021
+ /**
1022
+ * Starts an interactive Blackjack game session.
1023
+ */
1024
+ startBlackjackGame(userId: string, betAmount: number, guildId?: string): Promise<BlackjackState>;
1025
+ /**
1026
+ * Player draws a card ("hit").
1027
+ */
1028
+ blackjackHit(gameId: string): Promise<BlackjackState>;
1029
+ /**
1030
+ * Player stands. Dealer resolves their hand according to standard casino rules (dealer hits until >= 17).
1031
+ */
1032
+ blackjackStand(gameId: string): Promise<BlackjackState>;
1033
+ /**
1034
+ * Double down: doubles bet, receives exactly one card, and automatically stands.
1035
+ */
1036
+ blackjackDouble(gameId: string): Promise<BlackjackState>;
1037
+ getActiveBlackjackGame(gameId: string): BlackjackState | undefined;
1038
+ }
1039
+ type LeaderboardMetric = "net_worth" | "wallet" | "bank" | "level" | "streak";
1040
+ interface LeaderboardEntry {
1041
+ rank: number;
1042
+ userId: string;
1043
+ guildId?: string;
1044
+ value: number;
1045
+ wallet: number;
1046
+ bank: number;
1047
+ netWorth: number;
1048
+ level: number;
1049
+ streak: number;
1050
+ }
1051
+ declare class LeaderboardManager {
1052
+ private storage;
1053
+ private shop?;
1054
+ private business?;
1055
+ constructor(storage: EcoStorageAdapter, shop?: ShopManager, business?: BusinessManager);
1056
+ /**
1057
+ * Computes a user's total Net Worth across liquid cash, bank savings, business assets, and inventory collectibles.
1058
+ */
1059
+ calculateNetWorth(account: UserAccount): number;
1060
+ /**
1061
+ * Generates a ranked leaderboard for the specified metric.
1062
+ */
1063
+ getLeaderboard(metric?: LeaderboardMetric, limit?: number, guildId?: string): Promise<LeaderboardEntry[]>;
1064
+ /**
1065
+ * Formats the leaderboard entries into a clean Discord markdown string.
1066
+ */
1067
+ formatLeaderboard(entries: LeaderboardEntry[], metric?: LeaderboardMetric, currencySymbol?: string): string;
1068
+ }
1069
+ declare const DEFAULT_STOCKS: StockConfig[];
1070
+ declare class StockMarketManager {
1071
+ private bank;
1072
+ private stocks;
1073
+ private marketTrend;
1074
+ private lastTick;
1075
+ constructor(bank: BankManager, initialStocks?: StockConfig[]);
1076
+ getStocks(): StockConfig[];
1077
+ getStock(symbol: string): StockConfig | undefined;
1078
+ getMarketTrend(): StockMarketTrend;
1079
+ /**
1080
+ * Ticks the market forward, simulating realistic price fluctuations.
1081
+ */
1082
+ tickMarket(): void;
1083
+ /**
1084
+ * Purchases shares of a stock or cryptocurrency.
1085
+ */
1086
+ buyStock(userId: string, symbol: string, shares: number, guildId?: string): Promise<StockTradeResult>;
1087
+ /**
1088
+ * Sells shares of an owned stock or cryptocurrency.
1089
+ */
1090
+ sellStock(userId: string, symbol: string, sharesToSell: number | "all", guildId?: string): Promise<StockTradeResult>;
1091
+ /**
1092
+ * Retrieves user portfolio valuation and positions.
1093
+ */
1094
+ getUserPortfolio(userId: string, guildId?: string): Promise<{
1095
+ userId: string;
1096
+ positions: {
1097
+ symbol: string;
1098
+ name: string;
1099
+ shares: number;
1100
+ averageBuyPrice: number;
1101
+ currentPrice: number;
1102
+ currentValue: number;
1103
+ profitOrLoss: number;
1104
+ profitOrLossPercentage: number;
1105
+ }[];
1106
+ totalPortfolioValue: number;
1107
+ }>;
1108
+ }
1109
+ declare const DEFAULT_HEIST_TARGETS: HeistTarget[];
1110
+ declare class HeistManager {
1111
+ private bank;
1112
+ private targets;
1113
+ private activeHeists;
1114
+ constructor(bank: BankManager, targets?: HeistTarget[]);
1115
+ getTargets(): HeistTarget[];
1116
+ getTarget(id: string): HeistTarget | undefined;
1117
+ getHeist(heistId: string): HeistSession | undefined;
1118
+ /**
1119
+ * Creates a new Heist lobby.
1120
+ */
1121
+ createLobby(initiatorId: string, initiatorName: string, targetId: string, guildId?: string): Promise<{
1122
+ success: boolean;
1123
+ session?: HeistSession;
1124
+ error?: string;
1125
+ }>;
1126
+ /**
1127
+ * Joins an existing heist lobby with a specific role.
1128
+ */
1129
+ joinLobby(heistId: string, userId: string, username: string, role: HeistRole): {
1130
+ success: boolean;
1131
+ session?: HeistSession;
1132
+ error?: string;
1133
+ };
1134
+ /**
1135
+ * Executes the heist.
1136
+ */
1137
+ executeHeist(heistId: string): Promise<HeistResult>;
1138
+ }
1139
+ declare const DEFAULT_PETS: PetConfig[];
1140
+ declare class PetManager {
1141
+ private bank;
1142
+ private catalog;
1143
+ constructor(bank: BankManager, initialPets?: PetConfig[]);
1144
+ getCatalog(): PetConfig[];
1145
+ getPetConfig(id: string): PetConfig | undefined;
1146
+ /**
1147
+ * Adopts/purchases a companion pet.
1148
+ */
1149
+ adoptPet(userId: string, petId: string, customName?: string, guildId?: string): Promise<{
1150
+ success: boolean;
1151
+ pet?: UserPet;
1152
+ error?: string;
1153
+ }>;
1154
+ /**
1155
+ * Feeds a pet to restore hunger and happiness.
1156
+ */
1157
+ feedPet(userId: string, petId: string, guildId?: string): Promise<{
1158
+ success: boolean;
1159
+ pet?: UserPet;
1160
+ error?: string;
1161
+ }>;
1162
+ /**
1163
+ * Dispatches pet on a timed foraging expedition.
1164
+ */
1165
+ sendExpedition(userId: string, petId: string, durationHours?: number, guildId?: string): Promise<{
1166
+ success: boolean;
1167
+ returnsAt?: number;
1168
+ error?: string;
1169
+ }>;
1170
+ /**
1171
+ * Claims rewards when a pet returns from an expedition.
1172
+ */
1173
+ claimExpedition(userId: string, petId: string, guildId?: string): Promise<{
1174
+ success: boolean;
1175
+ reward?: any;
1176
+ error?: string;
1177
+ }>;
1178
+ }
1179
+ declare const CRATE_PRICES: Record<CrateTier, number>;
1180
+ declare class CrateManager {
1181
+ private bank;
1182
+ constructor(bank: BankManager);
1183
+ getCratePrice(tier: CrateTier): number;
1184
+ /**
1185
+ * Opens a mystery crate of the given tier and awards randomized rewards.
1186
+ */
1187
+ openCrate(userId: string, tier: CrateTier, guildId?: string): Promise<CrateReward>;
1188
+ }
1189
+ declare const DEFAULT_VAULT_TIERS: BankVaultTier[];
1190
+ declare class VaultManager {
1191
+ private bank;
1192
+ private tiers;
1193
+ constructor(bank: BankManager, customTiers?: BankVaultTier[]);
1194
+ getVaultTiers(): BankVaultTier[];
1195
+ getVaultTier(tierNumber: number): BankVaultTier;
1196
+ getUserVault(userId: string, guildId?: string): Promise<{
1197
+ currentTier: BankVaultTier;
1198
+ nextTier?: BankVaultTier;
1199
+ bank: number;
1200
+ capacity: number;
1201
+ dailyInterestAccrual: number;
1202
+ canClaimInterest: boolean;
1203
+ }>;
1204
+ /**
1205
+ * Upgrades the user's bank vault to the next tier.
1206
+ */
1207
+ upgradeVault(userId: string, guildId?: string): Promise<{
1208
+ success: boolean;
1209
+ previousTier: BankVaultTier;
1210
+ newTier: BankVaultTier;
1211
+ cost: number;
1212
+ newCapacity: number;
1213
+ error?: string;
1214
+ }>;
1215
+ /**
1216
+ * Claims accumulated 24h compound interest on savings.
1217
+ */
1218
+ claimDailyInterest(userId: string, guildId?: string): Promise<{
1219
+ success: boolean;
1220
+ interestEarned: number;
1221
+ newBankBalance: number;
1222
+ rate: number;
1223
+ cooldownRemainingMs?: number;
1224
+ error?: string;
1225
+ }>;
1226
+ }
1227
+ declare const LOAN_CATALOG: LoanOffer[];
1228
+ declare class LoanManager {
1229
+ private bank;
1230
+ private offers;
1231
+ constructor(bank: BankManager, customOffers?: LoanOffer[]);
1232
+ getOffers(): LoanOffer[];
1233
+ getRatingForScore(score: number): CreditRating;
1234
+ getCreditScore(userId: string, guildId?: string): Promise<CreditScoreData>;
1235
+ getUserLoans(userId: string, guildId?: string): Promise<UserLoan[]>;
1236
+ /**
1237
+ * Applies for a new bank loan.
1238
+ */
1239
+ applyLoan(userId: string, tier: LoanTier, guildId?: string): Promise<{
1240
+ success: boolean;
1241
+ loan?: UserLoan;
1242
+ creditScore: number;
1243
+ error?: string;
1244
+ }>;
1245
+ /**
1246
+ * Repays active debt.
1247
+ */
1248
+ repayLoan(userId: string, loanId: string, amount: number | "all", guildId?: string): Promise<{
1249
+ success: boolean;
1250
+ amountPaid: number;
1251
+ remainingDue: number;
1252
+ isFullyPaid: boolean;
1253
+ newCreditScore: number;
1254
+ error?: string;
1255
+ }>;
1256
+ /**
1257
+ * Audits active debts and executes repo / collections on defaulted loans.
1258
+ */
1259
+ processCollections(userId: string, guildId?: string): Promise<{
1260
+ defaultedLoans: UserLoan[];
1261
+ garnishedCash: number;
1262
+ scorePenalty: number;
1263
+ newScore: number;
1264
+ }>;
1265
+ }
1266
+ declare class TaxManager {
1267
+ private bank;
1268
+ constructor(bank: BankManager);
1269
+ getPendingBills(userId: string, guildId?: string): Promise<MunicipalBill[]>;
1270
+ getAllBills(userId: string, guildId?: string): Promise<MunicipalBill[]>;
1271
+ /**
1272
+ * Generates municipal bills & progressive wealth taxes if due.
1273
+ */
1274
+ generateBillsIfDue(userId: string, guildId?: string): Promise<{
1275
+ generated: boolean;
1276
+ newBills: MunicipalBill[];
1277
+ totalBilled: number;
1278
+ }>;
1279
+ /**
1280
+ * Pays a specific municipal bill.
1281
+ */
1282
+ payBill(userId: string, billId: string, guildId?: string): Promise<{
1283
+ success: boolean;
1284
+ bill?: MunicipalBill;
1285
+ amountPaid: number;
1286
+ newCreditScore: number;
1287
+ error?: string;
1288
+ }>;
1289
+ /**
1290
+ * Settles all pending municipal bills at once.
1291
+ */
1292
+ payAllBills(userId: string, guildId?: string): Promise<{
1293
+ success: boolean;
1294
+ paidCount: number;
1295
+ totalAmountPaid: number;
1296
+ newCreditScore: number;
1297
+ error?: string;
1298
+ }>;
1299
+ /**
1300
+ * Attempts high-risk offshore tax evasion to wipe pending wealth taxes.
1301
+ */
1302
+ attemptTaxEvasion(userId: string, guildId?: string): Promise<{
1303
+ success: boolean;
1304
+ taxesEvaded: number;
1305
+ penaltyFined: number;
1306
+ creditScoreChange: number;
1307
+ newCreditScore: number;
1308
+ auditDetails: string;
1309
+ }>;
1310
+ }
1311
+ declare class EcoBridgeRouter implements BridgePackageRouter {
1312
+ name: string;
1313
+ basePath: string;
1314
+ description: string;
1315
+ version: string;
1316
+ private eco;
1317
+ constructor(eco: EcoManager);
1318
+ handleRequest(req: BridgeRequest): Promise<BridgeResponse | null>;
1319
+ handleAction(action: BridgeAction): Promise<any>;
1320
+ }
1321
+ interface EcoGameRewardRule {
1322
+ /** Flat coins awarded on victory */
1323
+ winReward?: number;
1324
+ /** Flat coins deducted on defeat */
1325
+ lossPenalty?: number;
1326
+ /** Flat coins awarded on draw / tie */
1327
+ drawReward?: number;
1328
+ /** Multiplier for solo points/score (e.g. 0.05 means 1000 score = 50 coins) */
1329
+ scoreMultiplier?: number;
1330
+ /** Maximum coins allowed from score multiplier */
1331
+ maxScoreReward?: number;
1332
+ /** Bonus coins awarded per win streak count */
1333
+ streakBonus?: number;
1334
+ }
1335
+ interface EcoWagerRecord {
1336
+ id: string;
1337
+ player1Id: string;
1338
+ player2Id: string;
1339
+ amount: number;
1340
+ totalPot: number;
1341
+ guildId?: string;
1342
+ game?: string;
1343
+ createdAt: number;
1344
+ status: "active" | "resolved" | "refunded";
1345
+ winnerId?: string;
1346
+ }
1347
+ interface EcoWagerCreateResult {
1348
+ success: boolean;
1349
+ wager?: EcoWagerRecord;
1350
+ reason?: string;
1351
+ failedUserId?: string;
1352
+ }
1353
+ interface EcoWekyConnectorOptions {
1354
+ /** Default flat coins awarded on victory (default: 50) */
1355
+ defaultWinReward?: number;
1356
+ /** Default flat coins deducted on defeat (default: 0) */
1357
+ defaultLossPenalty?: number;
1358
+ /** Default flat coins awarded on tie/draw (default: 10) */
1359
+ defaultDrawReward?: number;
1360
+ /** Default multiplier applied to solo score (default: 0.05) */
1361
+ defaultScoreMultiplier?: number;
1362
+ /** Maximum coins awarded from score in a single game (default: 500) */
1363
+ maxScoreReward?: number;
1364
+ /** Bonus coins awarded per active win streak count (default: 5) */
1365
+ streakBonus?: number;
1366
+ /** Tournament champion cash prize (default: 500) */
1367
+ tournamentChampionPrize?: number;
1368
+ /** Tournament runner-up cash prize (default: 200) */
1369
+ tournamentRunnerUpPrize?: number;
1370
+ /** House fee percentage taken from PvP wager pots (0 - 100, default: 0) */
1371
+ wagerHouseFee?: number;
1372
+ /** Specific per-game rule overrides */
1373
+ games?: Record<string, EcoGameRewardRule>;
1374
+ /** Whether automatic rewards on gameOver are enabled (default: true) */
1375
+ autoReward?: boolean;
1376
+ }
1377
+ interface EcoRewardDistributionResult {
1378
+ userId: string;
1379
+ game: string;
1380
+ outcome: "WIN" | "LOSE" | "DRAW" | "SCORE" | "TOURNAMENT";
1381
+ amount: number;
1382
+ newBalance: number;
1383
+ reason: string;
1384
+ streakBonus?: number;
1385
+ scoreBonus?: number;
1386
+ wagerWon?: number;
1387
+ }
1388
+ interface EcoWagerResolvedEvent {
1389
+ wager: EcoWagerRecord;
1390
+ winnerId: string;
1391
+ loserId: string;
1392
+ payout: number;
1393
+ houseFee: number;
1394
+ }
1395
+ interface EcoWagerRefundedEvent {
1396
+ wager: EcoWagerRecord;
1397
+ reason: string;
1398
+ }
1399
+ /**
1400
+ * Type-safe map of events emitted by EcoWekyConnector.
1401
+ */
1402
+ interface EcoWekyConnectorEvents {
1403
+ wagerCreated: [wager: EcoWagerRecord];
1404
+ wagerResolved: [event: EcoWagerResolvedEvent];
1405
+ wagerRefunded: [event: EcoWagerRefundedEvent];
1406
+ reward: [result: EcoRewardDistributionResult];
1407
+ penalty: [result: EcoRewardDistributionResult];
1408
+ tournamentReward: [result: EcoRewardDistributionResult];
1409
+ error: [error: any];
1410
+ }
1411
+ declare class EcoWekyConnector extends EventEmitter {
1412
+ readonly eco: EcoManager;
1413
+ readonly weky: any;
1414
+ options: EcoWekyConnectorOptions;
1415
+ private activeWagers;
1416
+ private userToWagerMap;
1417
+ constructor(eco: EcoManager, weky: any, options?: EcoWekyConnectorOptions);
1418
+ on<K extends keyof EcoWekyConnectorEvents>(event: K, listener: (...args: EcoWekyConnectorEvents[K]) => void): this;
1419
+ on(event: string | symbol, listener: (...args: any[]) => void): this;
1420
+ once<K extends keyof EcoWekyConnectorEvents>(event: K, listener: (...args: EcoWekyConnectorEvents[K]) => void): this;
1421
+ once(event: string | symbol, listener: (...args: any[]) => void): this;
1422
+ emit<K extends keyof EcoWekyConnectorEvents>(event: K, ...args: EcoWekyConnectorEvents[K]): boolean;
1423
+ emit(event: string | symbol, ...args: any[]): boolean;
1424
+ off<K extends keyof EcoWekyConnectorEvents>(event: K, listener: (...args: EcoWekyConnectorEvents[K]) => void): this;
1425
+ off(event: string | symbol, listener: (...args: any[]) => void): this;
1426
+ addListener<K extends keyof EcoWekyConnectorEvents>(event: K, listener: (...args: EcoWekyConnectorEvents[K]) => void): this;
1427
+ addListener(event: string | symbol, listener: (...args: any[]) => void): this;
1428
+ removeListener<K extends keyof EcoWekyConnectorEvents>(event: K, listener: (...args: EcoWekyConnectorEvents[K]) => void): this;
1429
+ removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
1430
+ prependListener<K extends keyof EcoWekyConnectorEvents>(event: K, listener: (...args: EcoWekyConnectorEvents[K]) => void): this;
1431
+ prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
1432
+ prependOnceListener<K extends keyof EcoWekyConnectorEvents>(event: K, listener: (...args: EcoWekyConnectorEvents[K]) => void): this;
1433
+ prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
1434
+ private initListeners;
1435
+ /**
1436
+ * Creates and escrows a PvP wager match between two players.
1437
+ * Both players must have sufficient wallet balances.
1438
+ */
1439
+ createWager(params: {
1440
+ wagerId: string;
1441
+ player1Id: string;
1442
+ player2Id: string;
1443
+ amount: number;
1444
+ guildId?: string;
1445
+ game?: string;
1446
+ }): Promise<EcoWagerCreateResult>;
1447
+ /**
1448
+ * Resolves an active wager, awarding the escrowed pot (minus optional house fee) to the winner.
1449
+ */
1450
+ resolveWager(wagerId: string, winnerId: string): Promise<EcoRewardDistributionResult | null>;
1451
+ /**
1452
+ * Cancels and refunds an active wager back to both participants.
1453
+ */
1454
+ refundWager(wagerId: string, reason?: string): Promise<boolean>;
1455
+ /**
1456
+ * Internal handler for Weky gameOver events.
1457
+ */
1458
+ private handleGameOver;
1459
+ /**
1460
+ * Internal handler for Weky tournamentEnd events.
1461
+ */
1462
+ private handleTournamentEnd;
1463
+ getUserWallet(userId: string, guildId?: string): Promise<number>;
1464
+ creditWallet(userId: string, amount: number, reason?: string, guildId?: string): Promise<number>;
1465
+ deductWallet(userId: string, amount: number, reason?: string, guildId?: string): Promise<number>;
1466
+ getActiveWagers(): EcoWagerRecord[];
1467
+ getWager(wagerId: string): EcoWagerRecord | undefined;
1468
+ }
1469
+ declare class EcoManager extends EventEmitter {
1470
+ storage: EcoStorageAdapter;
1471
+ bank: BankManager;
1472
+ rewards: RewardManager;
1473
+ careers: CareerManager;
1474
+ shop: ShopManager;
1475
+ businesses: BusinessManager;
1476
+ casino: CasinoManager;
1477
+ leaderboards: LeaderboardManager;
1478
+ stocks: StockMarketManager;
1479
+ heist: HeistManager;
1480
+ pets: PetManager;
1481
+ crates: CrateManager;
1482
+ vault: VaultManager;
1483
+ loans: LoanManager;
1484
+ taxes: TaxManager;
1485
+ router: EcoBridgeRouter;
1486
+ currencySymbol: string;
1487
+ currencyName: string;
1488
+ embedColor?: any;
1489
+ customMessages?: Partial<EcoCustomMessages>;
1490
+ emojis?: Partial<EcoCustomEmojis>;
1491
+ notifyUpdates: boolean;
1492
+ private bridge?;
1493
+ constructor(options?: EcoManagerOptions);
1494
+ /**
1495
+ * Universal router getter for @m3rcena/bridge mounting.
1496
+ */
1497
+ toBridgeRouter(): EcoBridgeRouter;
1498
+ /**
1499
+ * Connects this economy instance with an M3rcenaBridge controller.
1500
+ * Enables: eco.connectBridge(bridge) or bridge.use(eco).
1501
+ */
1502
+ connectBridge(bridge: any): this;
1503
+ /**
1504
+ * Connects this economy instance with @m3rcena/weky minigames engine.
1505
+ * Enables automated coin payouts, streak bonuses, solo score multipliers, PvP wager bets, and tournament prize pools.
1506
+ */
1507
+ connectWeky(weky: any, options?: EcoWekyConnectorOptions): EcoWekyConnector;
1508
+ /**
1509
+ * Connects this economy instance with @m3rcena/bridge for live web dashboard streaming.
1510
+ */
1511
+ setBridge(bridge: any): this;
1512
+ emit<K extends keyof EcoEvents>(event: K, ...args: EcoEvents[K]): boolean;
1513
+ emit(event: string | symbol, ...args: any[]): boolean;
1514
+ on<K extends keyof EcoEvents>(event: K, listener: (...args: EcoEvents[K]) => void): this;
1515
+ on(event: string | symbol, listener: (...args: any[]) => void): this;
1516
+ once<K extends keyof EcoEvents>(event: K, listener: (...args: EcoEvents[K]) => void): this;
1517
+ once(event: string | symbol, listener: (...args: any[]) => void): this;
1518
+ off<K extends keyof EcoEvents>(event: K, listener: (...args: EcoEvents[K]) => void): this;
1519
+ off(event: string | symbol, listener: (...args: any[]) => void): this;
1520
+ addListener<K extends keyof EcoEvents>(event: K, listener: (...args: EcoEvents[K]) => void): this;
1521
+ addListener(event: string | symbol, listener: (...args: any[]) => void): this;
1522
+ removeListener<K extends keyof EcoEvents>(event: K, listener: (...args: EcoEvents[K]) => void): this;
1523
+ removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
1524
+ prependListener<K extends keyof EcoEvents>(event: K, listener: (...args: EcoEvents[K]) => void): this;
1525
+ prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
1526
+ prependOnceListener<K extends keyof EcoEvents>(event: K, listener: (...args: EcoEvents[K]) => void): this;
1527
+ prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
1528
+ /**
1529
+ * Dispatches an event to the bridge if connected.
1530
+ */
1531
+ private dispatchBridgeAction;
1532
+ getAccount(userId: string, guildId?: string): Promise<UserAccount>;
1533
+ getBalance(userId: string, guildId?: string): Promise<{
1534
+ wallet: number;
1535
+ bank: number;
1536
+ bankCapacity: number;
1537
+ netWorth: number;
1538
+ }>;
1539
+ addWallet(userId: string, amount: number, guildId?: string): Promise<number>;
1540
+ removeWallet(userId: string, amount: number, guildId?: string): Promise<number>;
1541
+ deposit(userId: string, amount: number | "all", guildId?: string): Promise<{
1542
+ success: boolean;
1543
+ deposited: number;
1544
+ wallet: number;
1545
+ bank: number;
1546
+ error?: string;
1547
+ }>;
1548
+ withdraw(userId: string, amount: number | "all", guildId?: string): Promise<{
1549
+ success: boolean;
1550
+ withdrawn: number;
1551
+ wallet: number;
1552
+ bank: number;
1553
+ error?: string;
1554
+ }>;
1555
+ transfer(fromUserId: string, toUserId: string, amount: number, guildId?: string): Promise<TransferResult>;
1556
+ daily(userId: string, guildId?: string): Promise<{
1557
+ success: boolean;
1558
+ amount: number;
1559
+ rewardAmount: number;
1560
+ streak: number;
1561
+ isMilestone: boolean;
1562
+ jackpotMilestone?: boolean;
1563
+ remainingMs?: number;
1564
+ cooldownRemainingMs?: number;
1565
+ }>;
1566
+ weekly(userId: string, guildId?: string): Promise<{
1567
+ success: boolean;
1568
+ amount: number;
1569
+ rewardAmount: number;
1570
+ remainingMs?: number;
1571
+ cooldownRemainingMs?: number;
1572
+ }>;
1573
+ monthly(userId: string, guildId?: string): Promise<{
1574
+ success: boolean;
1575
+ amount: number;
1576
+ rewardAmount: number;
1577
+ remainingMs?: number;
1578
+ cooldownRemainingMs?: number;
1579
+ }>;
1580
+ hourly(userId: string, guildId?: string): Promise<{
1581
+ success: boolean;
1582
+ amount: number;
1583
+ rewardAmount: number;
1584
+ remainingMs?: number;
1585
+ cooldownRemainingMs?: number;
1586
+ }>;
1587
+ work(userId: string, guildId?: string): Promise<{
1588
+ success: boolean;
1589
+ earned: number;
1590
+ earnedAmount: number;
1591
+ xp: number;
1592
+ xpEarned: number;
1593
+ jobTitle: string;
1594
+ remainingMs?: number;
1595
+ cooldownRemainingMs?: number;
1596
+ } | {
1597
+ success: boolean;
1598
+ earned: number;
1599
+ earnedAmount: number;
1600
+ xp: number;
1601
+ xpEarned: number;
1602
+ jobTitle: string;
1603
+ remainingMs?: number;
1604
+ cooldownRemainingMs?: number;
1605
+ careerShift: {
1606
+ hasCareer: boolean;
1607
+ promoted: boolean;
1608
+ newCareerLevel?: number;
1609
+ promotionBonus?: number;
1610
+ shiftsCompleted?: number;
1611
+ job?: CareerJob;
1612
+ };
1613
+ }>;
1614
+ beg(userId: string, guildId?: string): Promise<{
1615
+ success: boolean;
1616
+ earned: number;
1617
+ npc: string;
1618
+ donor: string;
1619
+ quote: string;
1620
+ remainingMs?: number;
1621
+ cooldownRemainingMs?: number;
1622
+ }>;
1623
+ crime(userId: string, guildId?: string): Promise<{
1624
+ success: boolean;
1625
+ payout: number;
1626
+ earned?: number;
1627
+ fine: number;
1628
+ message: string;
1629
+ remainingMs?: number;
1630
+ cooldownRemainingMs?: number;
1631
+ }>;
1632
+ rob(robberId: string, victimId: string, guildId?: string): Promise<RobResult>;
1633
+ buyItem(userId: string, itemId: string, quantity?: number, guildId?: string): Promise<{
1634
+ success: boolean;
1635
+ item?: ShopItem;
1636
+ quantity: number;
1637
+ totalCost: number;
1638
+ newWallet: number;
1639
+ error?: string;
1640
+ }>;
1641
+ sellItem(userId: string, itemId: string, quantity?: number, guildId?: string): Promise<{
1642
+ success: boolean;
1643
+ item?: ShopItem;
1644
+ quantity: number;
1645
+ earned: number;
1646
+ newWallet: number;
1647
+ error?: string;
1648
+ }>;
1649
+ useItem(userId: string, itemId: string, guildId?: string): Promise<{
1650
+ success: boolean;
1651
+ message: string;
1652
+ item?: ShopItem;
1653
+ effect?: ActiveEffect;
1654
+ lotteryWon?: number;
1655
+ error?: string;
1656
+ }>;
1657
+ getInventory(userId: string, guildId?: string): Promise<InventoryItem[]>;
1658
+ buyBusiness(userId: string, businessId: string, guildId?: string): Promise<{
1659
+ success: boolean;
1660
+ business?: UserBusiness;
1661
+ cost: number;
1662
+ newWallet: number;
1663
+ error?: string;
1664
+ }>;
1665
+ upgradeBusiness(userId: string, businessId: string, guildId?: string): Promise<{
1666
+ success: boolean;
1667
+ business?: UserBusiness;
1668
+ newLevel: number;
1669
+ upgradeCost: number;
1670
+ newWallet: number;
1671
+ error?: string;
1672
+ }>;
1673
+ hireEmployees(userId: string, businessId: string, count?: number, guildId?: string): Promise<{
1674
+ success: boolean;
1675
+ business?: UserBusiness;
1676
+ totalEmployees: number;
1677
+ cost: number;
1678
+ newWallet: number;
1679
+ error?: string;
1680
+ }>;
1681
+ collectBusinessRevenue(userId: string, businessId?: string, guildId?: string): Promise<{
1682
+ success: boolean;
1683
+ collected: number;
1684
+ newWallet: number;
1685
+ summary: Array<{
1686
+ businessId: string;
1687
+ name: string;
1688
+ amount: number;
1689
+ }>;
1690
+ error?: string;
1691
+ }>;
1692
+ coinflip(userId: string, betAmount: number, choice: "heads" | "tails", guildId?: string): Promise<CasinoBetResult>;
1693
+ dice(userId: string, betAmount: number, prediction: "high" | "low" | number, guildId?: string): Promise<CasinoBetResult>;
1694
+ slots(userId: string, betAmount: number, guildId?: string): Promise<CasinoBetResult>;
1695
+ roulette(userId: string, betAmount: number, betType: "red" | "black" | "green" | "even" | "odd" | number, guildId?: string): Promise<CasinoBetResult>;
1696
+ crash(userId: string, betAmount: number, targetMultiplier: number, guildId?: string): Promise<CasinoBetResult>;
1697
+ startBlackjack(userId: string, betAmount: number, guildId?: string): Promise<BlackjackState>;
1698
+ blackjackHit(gameId: string): Promise<BlackjackState>;
1699
+ blackjackStand(gameId: string): Promise<BlackjackState>;
1700
+ blackjackDouble(gameId: string): Promise<BlackjackState>;
1701
+ getLeaderboard(metric?: LeaderboardMetric, limit?: number, guildId?: string): Promise<LeaderboardEntry[]>;
1702
+ formatLeaderboard(metric?: LeaderboardMetric, limit?: number, guildId?: string): Promise<string>;
1703
+ getStocks(): StockConfig[];
1704
+ getStock(symbol: string): StockConfig | undefined;
1705
+ tickStockMarket(): void;
1706
+ buyStock(userId: string, symbol: string, shares: number, guildId?: string): Promise<StockTradeResult>;
1707
+ sellStock(userId: string, symbol: string, shares: number, guildId?: string): Promise<StockTradeResult>;
1708
+ getStockPortfolio(userId: string, guildId?: string): Promise<{
1709
+ userId: string;
1710
+ positions: {
1711
+ symbol: string;
1712
+ name: string;
1713
+ shares: number;
1714
+ averageBuyPrice: number;
1715
+ currentPrice: number;
1716
+ currentValue: number;
1717
+ profitOrLoss: number;
1718
+ profitOrLossPercentage: number;
1719
+ }[];
1720
+ totalPortfolioValue: number;
1721
+ }>;
1722
+ getHeistTargets(): HeistTarget[];
1723
+ createHeist(leaderId: string, targetId: string, guildId?: string): Promise<HeistSession>;
1724
+ joinHeist(heistId: string, userId: string, role: HeistRole, username?: string): Promise<{
1725
+ success: boolean;
1726
+ session: HeistSession;
1727
+ message?: string;
1728
+ }>;
1729
+ executeHeist(heistId: string): Promise<HeistResult>;
1730
+ getAvailablePets(): PetConfig[];
1731
+ getUserPets(userId: string, guildId?: string): Promise<UserPet[]>;
1732
+ adoptPet(userId: string, petId: string, customName?: string, guildId?: string): Promise<UserPet>;
1733
+ feedPet(userId: string, petId: string, guildId?: string): Promise<{
1734
+ success: boolean;
1735
+ pet: UserPet;
1736
+ cost: number;
1737
+ }>;
1738
+ sendPetExpedition(userId: string, petId: string, guildId?: string): Promise<{
1739
+ success: boolean;
1740
+ finishesAt: number;
1741
+ }>;
1742
+ claimPetExpedition(userId: string, petId: string, guildId?: string): Promise<PetExpeditionResult>;
1743
+ getCratePrice(tier: CrateTier): number;
1744
+ openCrate(userId: string, tier: CrateTier, guildId?: string): Promise<CrateReward>;
1745
+ getUserVault(userId: string, guildId?: string): Promise<{
1746
+ currentTier: BankVaultTier;
1747
+ nextTier?: BankVaultTier;
1748
+ bank: number;
1749
+ capacity: number;
1750
+ dailyInterestAccrual: number;
1751
+ canClaimInterest: boolean;
1752
+ }>;
1753
+ upgradeVault(userId: string, guildId?: string): Promise<{
1754
+ success: boolean;
1755
+ previousTier: BankVaultTier;
1756
+ newTier: BankVaultTier;
1757
+ cost: number;
1758
+ newCapacity: number;
1759
+ error?: string;
1760
+ }>;
1761
+ claimDailyInterest(userId: string, guildId?: string): Promise<{
1762
+ success: boolean;
1763
+ interestEarned: number;
1764
+ newBankBalance: number;
1765
+ rate: number;
1766
+ cooldownRemainingMs?: number;
1767
+ error?: string;
1768
+ }>;
1769
+ getCreditScore(userId: string, guildId?: string): Promise<CreditScoreData>;
1770
+ getUserLoans(userId: string, guildId?: string): Promise<UserLoan[]>;
1771
+ applyLoan(userId: string, tier: LoanTier, guildId?: string): Promise<{
1772
+ success: boolean;
1773
+ loan?: UserLoan;
1774
+ creditScore: number;
1775
+ error?: string;
1776
+ }>;
1777
+ repayLoan(userId: string, loanId: string, amount: number | "all", guildId?: string): Promise<{
1778
+ success: boolean;
1779
+ amountPaid: number;
1780
+ remainingDue: number;
1781
+ isFullyPaid: boolean;
1782
+ newCreditScore: number;
1783
+ error?: string;
1784
+ }>;
1785
+ processLoanCollections(userId: string, guildId?: string): Promise<{
1786
+ defaultedLoans: UserLoan[];
1787
+ garnishedCash: number;
1788
+ scorePenalty: number;
1789
+ newScore: number;
1790
+ }>;
1791
+ getPendingBills(userId: string, guildId?: string): Promise<MunicipalBill[]>;
1792
+ getAllBills(userId: string, guildId?: string): Promise<MunicipalBill[]>;
1793
+ generateBillsIfDue(userId: string, guildId?: string): Promise<{
1794
+ generated: boolean;
1795
+ newBills: MunicipalBill[];
1796
+ totalBilled: number;
1797
+ }>;
1798
+ payBill(userId: string, billId: string, guildId?: string): Promise<{
1799
+ success: boolean;
1800
+ bill?: MunicipalBill;
1801
+ amountPaid: number;
1802
+ newCreditScore: number;
1803
+ error?: string;
1804
+ }>;
1805
+ payAllBills(userId: string, guildId?: string): Promise<{
1806
+ success: boolean;
1807
+ paidCount: number;
1808
+ totalAmountPaid: number;
1809
+ newCreditScore: number;
1810
+ error?: string;
1811
+ }>;
1812
+ attemptTaxEvasion(userId: string, guildId?: string): Promise<{
1813
+ success: boolean;
1814
+ taxesEvaded: number;
1815
+ penaltyFined: number;
1816
+ creditScoreChange: number;
1817
+ newCreditScore: number;
1818
+ auditDetails: string;
1819
+ }>;
1820
+ }
1821
+ interface HostEcoOptions {
1822
+ port?: number;
1823
+ dbPath?: string;
1824
+ bridgeUrl?: string;
1825
+ }
1826
+ declare function hostEco(options?: HostEcoOptions): Promise<{
1827
+ eco: EcoManager;
1828
+ router: EcoBridgeRouter;
1829
+ server: http.Server;
1830
+ port: number;
1831
+ }>;
1832
+ export { CreditRating as $, BlackjackState as A, UserStats as At, BankManager as B, DEFAULT_HEIST_TARGETS as C, StockTradeResult as Ct, LeaderboardEntry as D, UserCareer as Dt, StockMarketManager as E, UserBusiness as Et, DEFAULT_SHOP_ITEMS as F, ActiveEffect as G, JsonEcoStorage as H, ShopManager as I, BusinessConfig as J, BankVaultTier as K, CareerManager as L, CasinoManager as M, BusinessManager as N, LeaderboardManager as O, UserLoan as Ot, DEFAULT_BUSINESS_CATALOG as P, CrateTier as Q, DEFAULT_JOBS as R, PetManager as S, StockMarketTrend as St, DEFAULT_STOCKS as T, UserAccount as Tt, MemoryEcoStorage as U, EcoStorageAdapter as V, createDefaultAccount as W, CasinoBetResult as X, CareerJob as Y, CrateReward as Z, DEFAULT_VAULT_TIERS as _, Prestige as _t, EcoRewardDistributionResult as a, EcoManagerOptions as at, CrateManager as b, SkillTree as bt, EcoWagerRefundedEvent as c, HeistRole as ct, EcoWekyConnectorEvents as d, InventoryItem as dt, CreditScoreData as et, EcoWekyConnectorOptions as f, LoanOffer as ft, LoanManager as g, PetExpeditionResult as gt, LOAN_CATALOG as h, PetConfig as ht, EcoGameRewardRule as i, EcoEvents as it, Card as j, UserStockPosition as jt, LeaderboardMetric as k, UserPet as kt, EcoWagerResolvedEvent as l, HeistSession as lt, TaxManager as m, MunicipalBill as mt, hostEco as n, EcoCustomMessages as nt, EcoWagerCreateResult as o, HeistCrewMember as ot, EcoBridgeRouter as p, LoanTier as pt, BillType as q, EcoManager as r, EcoDatabaseConfig as rt, EcoWagerRecord as s, HeistResult as st, HostEcoOptions as t, EcoCustomEmojis as tt, EcoWekyConnector as u, HeistTarget as ut, VaultManager as v, RobResult as vt, HeistManager as w, TransferResult as wt, DEFAULT_PETS as x, StockConfig as xt, CRATE_PRICES as y, ShopItem as yt, RewardManager as z };
1833
+ //# sourceMappingURL=host-XZmTzNyx.d.cts.map