import type { NexusLedgerTransactionType } from "./nexus-ledger.js"; import type { PrivacyCaptureItem } from "./index.js"; export interface NexusTerminology { singularName: string; pluralName: string; symbol: string | null; symbolPosition: "before" | "after"; } export declare const defaultNexusTerminology: NexusTerminology; export declare function formatNexusAmount(amount: string | number | bigint, terminology?: NexusTerminology): string; export interface NexusCoreSettings extends NexusTerminology { guildId: string; balanceVisibility: "private" | "public"; inventoryVisibility: "private" | "public"; revision: number; updatedAt: Date | null; } export type NexusCoreSettingsDraft = Omit; export interface NexusMemberHistoryItem { transactionId: string; type: NexusLedgerTransactionType; state: "posted" | "reversed"; amount: string; sourceModuleId: string | null; createdAt: Date; } export interface NexusManagedTransaction { transactionId: string; type: NexusLedgerTransactionType; state: "posted" | "reversed"; memberId: string | null; memberAmount: string | null; actorUserId: string | null; sourceModuleId: string | null; sourceEventId: string | null; relatedTransactionId: string | null; hasPrivateReason: boolean; createdAt: Date; reversedAt: Date | null; } export interface NexusManagedTransactionPosting { position: number; accountType: "member" | "issuer" | "sink"; memberId: string | null; amount: string; } export interface NexusManagedTransactionDetail extends NexusManagedTransaction { operationKey: string; sourceDeliveryId: string | null; privateReason: string | null; postings: readonly NexusManagedTransactionPosting[]; } export interface NexusCoreService { getSettings(guildId: string): Promise; updateSettings(input: { guildId: string; actorUserId: string; expectedRevision: number; settings: NexusCoreSettingsDraft; }): Promise; listManagedTransactions(input: { guildId: string; search?: string; type?: NexusLedgerTransactionType; state?: "posted" | "reversed"; sourceModuleId?: string; limit: number; offset: number; }): Promise<{ items: readonly NexusManagedTransaction[]; total: number; }>; getManagedTransaction(input: { guildId: string; transactionId: string; }): Promise; getMemberHistory(input: { guildId: string; memberId: string; limit?: number; }): Promise; } export type NexusCoreErrorCode = "invalid_input" | "revision_conflict"; export declare class NexusCoreError extends Error { readonly code: NexusCoreErrorCode; constructor(code: NexusCoreErrorCode, message: string); } export interface NexusPrivacyService { createContinuation?(input: { requestId: string; discordUserId: string; phase: "access" | "erase"; cutoffAt: Date; collection: number; recordKey?: readonly (string | number | boolean)[]; }): Promise<{ cursor: string; }>; readContinuation?(input: { requestId: string; discordUserId: string; phase: "access" | "erase"; cutoffAt: Date; cursor: string; }): Promise<{ collection: number; recordKey?: readonly (string | number | boolean)[]; } | null>; cleanupExpiredContinuations?(input: { limit: number; }): Promise<{ deleted: number; hasMore: boolean; }>; prepareEconomyErasure(input: { requestId: string; discordUserId: string; executeThrough: Date; limit: number; }): Promise<{ settledRedemptions: number; hasMore: boolean; }>; captureAccounts(input: { discordUserId: string; cutoffAt: Date; afterAccountId?: string; limit: number; }): Promise<{ items: readonly PrivacyCaptureItem[]; nextAccountId?: string; }>; captureBulkRecipients(input: { discordUserId: string; cutoffAt: Date; afterRecipientId?: string; limit: number; }): Promise<{ items: readonly PrivacyCaptureItem[]; nextRecipientId?: string; }>; detachAccounts(input: { requestId: string; discordUserId: string; executeThrough: Date; limit: number; }): Promise<{ detachedAccounts: number; burnTransactions: number; hasMore: boolean; }>; detachBulkRecipients(input: { requestId: string; discordUserId: string; executeThrough: Date; limit: number; }): Promise<{ detachedBulkRecipients: number; hasMore: boolean; }>; }