-
Notifications
You must be signed in to change notification settings - Fork 3
feat: add SELL quote from velora to support bigger quotes #501
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
5cdf4c7
feat: add SELL quote from velora to support bigger quotes
antoncoding 4a40874
chore: comments
antoncoding 35c7623
chore: cleanup
antoncoding fe40549
fix: seed collateral-input sell quotes with price-aware bootstrap
starksama 507527d
fix: make Velora quote errors clearer
starksama 6e1322e
fix: show swap impact in quote errors
starksama b01b369
fix: clarify Velora quote error wording
starksama File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| import { VeloraApiError } from '@/features/swap/api/velora'; | ||
|
|
||
| const normalizeMessage = (error: unknown): string => { | ||
| if (error instanceof Error) return error.message; | ||
| if (typeof error === 'string') return error; | ||
| return ''; | ||
| }; | ||
|
|
||
| const extractImpactValue = (error: unknown): string | null => { | ||
| if (!(error instanceof VeloraApiError) || !error.details || typeof error.details !== 'object') { | ||
| return null; | ||
| } | ||
|
|
||
| const details = error.details as Record<string, unknown>; | ||
| return typeof details.value === 'string' ? details.value : null; | ||
| }; | ||
|
|
||
| const isPairValidationError = (message: string): boolean => | ||
| message.includes('validation failed') && (message.includes('srctoken') || message.includes('desttoken')); | ||
|
|
||
| export const toUserFacingVeloraQuoteError = ({ error, action }: { error: unknown; action: 'leverage' | 'deleverage' }): string => { | ||
| const rawMessage = normalizeMessage(error); | ||
| const message = rawMessage.toLowerCase(); | ||
|
|
||
| if (message.includes('no routes found with enough liquidity')) { | ||
| return 'No swap route is available for this size right now. Try a smaller amount or a different market.'; | ||
| } | ||
|
|
||
| if (message.includes('estimated_loss_greater_than_max_impact') || message.includes('max impact')) { | ||
| const impactValue = extractImpactValue(error); | ||
| return impactValue | ||
| ? `Could not find a quote with reasonable impact right now (~${impactValue} impact). Try a smaller amount or a different market.` | ||
| : 'Could not find a quote with reasonable impact right now. Try a smaller amount or a different market.'; | ||
| } | ||
|
|
||
| if (message.includes('failed to size velora sell route for target leverage')) { | ||
| return 'Could not find a swap route that reaches this size. Try a smaller amount or lower leverage.'; | ||
| } | ||
|
|
||
| if (isPairValidationError(message)) { | ||
| return 'This pair is not available through the swap router right now.'; | ||
| } | ||
|
|
||
| if (message.includes('failed to fetch velora api response')) { | ||
| return 'Could not reach the swap router. Please try again.'; | ||
| } | ||
|
|
||
| if (!rawMessage) { | ||
| return action === 'leverage' ? 'Failed to quote swap-backed leverage route.' : 'Failed to quote swap-backed deleverage route.'; | ||
| } | ||
|
|
||
| return rawMessage; | ||
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.