Skip to content

feat: implement issues #870-#873 (Drips Wave) - #984

Merged
Kingsman-99 merged 2 commits into
Stellar-split:mainfrom
ahmadrabiumustapha:feat/issues-870-871-872-873-drips-wave
Sep 28, 2026
Merged

Kingsman-99 merged 2 commits into
Stellar-split:mainfrom
ahmadrabiumustapha:feat/issues-870-871-872-873-drips-wave

Conversation

@ahmadrabiumustapha

Copy link
Copy Markdown

Issue #873 - releasePartial with basis-point validation

  • Add InvalidBpsError (code: INVALID_BPS) for bps outside 1-10000
  • Add OverReleaseError (code: OVER_RELEASE) when total would exceed 10000 bps
  • Add PartialReleaseResult type { txHash, bps, amountReleased, remaining, totalReleasedBps }
  • Implement StellarSplitClient.releasePartial(invoiceId, bps) wrapping release_partial

Issue #872 - cancelInvoice with pre-payment guard

  • Add CannotCancelFundedInvoiceError (code: CANNOT_CANCEL_FUNDED_INVOICE) with paidAmount
  • Implement StellarSplitClient.cancelInvoice(invoiceId) with funded check before any RPC write
  • Emit invoice:cancelled event on success; add event type to SplitClientEventMap

Issue #871 - bumpInvoiceTtl and getTtl

  • Add InvoiceTerminatedError (code: INVOICE_TERMINATED) for terminal-state invoices
  • Add TtlInfo type { ttlLedgers, approximateDays, health: TtlHealth }
  • Add TtlHealth union type ('healthy' | 'warning' | 'critical')
  • Implement StellarSplitClient.bumpInvoiceTtl(invoiceId) - refuses terminal invoices
  • Implement StellarSplitClient.getTtl(invoiceId) - returns health-classified TtlInfo

Issue #870 - getFundingVelocity with hourly bucket aggregation

  • Add VelocityBucket type { hour, timestamp, amount }
  • Implement StellarSplitClient.getFundingVelocity(invoiceId, opts?) - last 168h default
  • Export computeTrendingScore(buckets) standalone pure function (0-100 score)
  • Implement StellarSplitClient.isTrending(invoiceId) - score > 70 threshold

All new symbols exported from src/index.ts.
Tests added in test/drips-wave-issues.test.ts.
closes #870
closes #871
closes #872
closes #873

Issue Stellar-split#873 - releasePartial with basis-point validation
- Add InvalidBpsError (code: INVALID_BPS) for bps outside 1-10000
- Add OverReleaseError (code: OVER_RELEASE) when total would exceed 10000 bps
- Add PartialReleaseResult type { txHash, bps, amountReleased, remaining, totalReleasedBps }
- Implement StellarSplitClient.releasePartial(invoiceId, bps) wrapping release_partial

Issue Stellar-split#872 - cancelInvoice with pre-payment guard
- Add CannotCancelFundedInvoiceError (code: CANNOT_CANCEL_FUNDED_INVOICE) with paidAmount
- Implement StellarSplitClient.cancelInvoice(invoiceId) with funded check before any RPC write
- Emit invoice:cancelled event on success; add event type to SplitClientEventMap

Issue Stellar-split#871 - bumpInvoiceTtl and getTtl
- Add InvoiceTerminatedError (code: INVOICE_TERMINATED) for terminal-state invoices
- Add TtlInfo type { ttlLedgers, approximateDays, health: TtlHealth }
- Add TtlHealth union type ('healthy' | 'warning' | 'critical')
- Implement StellarSplitClient.bumpInvoiceTtl(invoiceId) - refuses terminal invoices
- Implement StellarSplitClient.getTtl(invoiceId) - returns health-classified TtlInfo

Issue Stellar-split#870 - getFundingVelocity with hourly bucket aggregation
- Add VelocityBucket type { hour, timestamp, amount }
- Implement StellarSplitClient.getFundingVelocity(invoiceId, opts?) - last 168h default
- Export computeTrendingScore(buckets) standalone pure function (0-100 score)
- Implement StellarSplitClient.isTrending(invoiceId) - score > 70 threshold

All new symbols exported from src/index.ts.
Tests added in test/drips-wave-issues.test.ts.
@drips-wave

drips-wave Bot commented Sep 28, 2026

Copy link
Copy Markdown

@ahmadrabiumustapha Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Kingsman-99
Kingsman-99 merged commit da1aa89 into Stellar-split:main Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants