@kamino-finance/kliquidity-sdk
Version:
Typescript SDK for interacting with the Kamino Liquidity (kliquidity) protocol
101 lines (94 loc) • 4.23 kB
text/typescript
import { address, Address } from '@solana/kit';
import {
Autodrift,
Drift,
Expander,
Manual,
PeriodicRebalance,
PricePercentage,
PricePercentageWithReset,
TakeProfit,
} from '../@codegen/kliquidity/types/RebalanceType';
import Decimal from 'decimal.js';
import { Dex } from './utils';
export const FullBPS = 10_000;
export const FullBPSDecimal = new Decimal(FullBPS);
export const FullPercentage = 100;
export const DefaultLowerPercentageBPS: number = 1000;
export const DefaultLowerPercentageBPSDecimal: Decimal = new Decimal(DefaultLowerPercentageBPS);
export const DefaultUpperPercentageBPS: number = 1000;
export const DefaultUpperPercentageBPSDecimal: Decimal = new Decimal(DefaultUpperPercentageBPS);
// the default parameters for the manual rebalance, 5% above and below the current price
export const DefaultLowerPriceDifferenceBPS: number = 500;
export const DefaultUpperPriceDifferenceBPS: number = 500;
export const DefaultMintTokenA: Address = address('So11111111111111111111111111111111111111112');
export const DefaultMintTokenB: Address = address('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');
export const DefaultFeeTierOrca: Decimal = new Decimal(0.0005);
export const DefaultTickSpacing: number = 1;
export const DefaultDex: Dex = 'ORCA';
export interface RebalanceMethod {
label: String;
value: number;
enabled: boolean; // represents if the strategy should be displayed in the UI and it is currently supported or not
descriptionShort?: string;
description?: string;
}
export const ManualRebalanceMethod: RebalanceMethod = {
label: 'Fixed Range',
value: Manual.discriminator,
enabled: true,
descriptionShort: 'Market make with no rebalancing',
description:
'Liquidity is provided to a specified range width, with no rebalancing performed in any price scenario, thus no impermanent loss is realized via range adjustment. Asymmetric range widths are supported eg. 50% below price, and 500% above',
};
export const PricePercentageRebalanceMethod: RebalanceMethod = {
label: 'Tracker',
value: PricePercentage.discriminator,
enabled: true,
descriptionShort: 'Maximize trading fee capture',
description:
'Liquidity is provided to a specified range width, with rebalancing performed to the initial token ratio should the price move beyond a specified percentage in either direction. Asymmetric range widths are supported eg. 50% below price, and 500% above',
};
export const PricePercentageWithResetRangeRebalanceMethod: RebalanceMethod = {
label: 'Price Percentage With Reset Range',
value: PricePercentageWithReset.discriminator,
enabled: false,
// todo: provide a better description
description:
'Optimize your portfolio for maximum returns with Kamino’s Automated Percentage Rebalancing strategy. Automatically adjust your allocation based on predetermined percentages for a balanced and risk-minimized portfolio.',
};
export const DriftRebalanceMethod: RebalanceMethod = {
label: 'Drift',
value: Drift.discriminator,
enabled: false,
// todo: ask for a description
description: 'Optimize your portfolio for maximum returns with Kamino’s Drift strategy.',
};
export const TakeProfitMethod: RebalanceMethod = {
label: 'Take Profit',
value: TakeProfit.discriminator,
enabled: false,
// todo: ask for a description
description: 'Optimize your portfolio for maximum returns with Kamino’s Take Profit strategy.',
};
export const PeriodicRebalanceMethod: RebalanceMethod = {
label: 'Periodic Rebalance',
value: PeriodicRebalance.discriminator,
enabled: false,
// todo: ask for a description
description: 'Optimize your portfolio for maximum returns with Kamino’s Periodic Rebalance strategy.',
};
export const ExpanderMethod: RebalanceMethod = {
label: 'Expander',
value: Expander.discriminator,
enabled: false,
// todo: ask for a description
description: 'Optimize your portfolio for maximum returns with Kamino’s Expander strategy.',
};
export const AutodriftMethod: RebalanceMethod = {
label: 'Autodrift',
value: Autodrift.discriminator,
enabled: false,
// todo: ask for a description
description: 'Optimize your portfolio for maximum returns with Kamino’s Drift strategy.',
};