/** * In-app / push copy for DSL lifecycle notifications. * * In-app text carries lightweight display markup the front-end renders: * - `` bold span * - `${x}` a P&L value the FE colors green/red by sign * - `
` a literal line break (the FE renders it as a newline) * The push body is ALWAYS plain text (no markup) and carries no strategy label: * there is no push title here at all — the notification service sets it to the * strategy/skill name it resolves from `strategyWalletAddress`, so repeating the * name in the body would double it. */ import type { DslCreatedEvent, DslTierAdvancedEvent, DslSlUpdatedEvent } from "../../types/dsl/index.js"; import type { NotificationCopy } from "../../types/notification.js"; /** * DSL-activated notification — Part 2 of the position-opened pair: the runtime * attaches a trailing DSL when it starts tracking a freshly-opened position. (Part 1, * "position opened", is emitted by whoever opened the position.) Every value comes * from the event. */ export declare function formatDslCreated(e: DslCreatedEvent): NotificationCopy; /** * Profit-lock notification — a tier advance locked in profit. The * A-vs-B selection lives in the subscriber (`index.ts`): this fires only when the * tier locked profit (`lockedProfitPct > 0`). The push body carries no label. */ export declare function formatDslTierAdvanced(e: DslTierAdvancedEvent): NotificationCopy; /** * Stop-raised notification — the DSL raised the stop but locked no * profit yet. Both emit sites (local monitor and the backend-mapped path) carry * leverage and the high-water price today; each is optional on the event, so the * copy omits the `N×` / `new high` fragment cleanly rather than fabricating a * value when a legacy emitter leaves it out. The push body carries no label. */ export declare function formatDslSlUpdated(e: DslSlUpdatedEvent): NotificationCopy; //# sourceMappingURL=formatter.d.ts.map