@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
142 lines • 5.12 kB
TypeScript
import { Address, TransactionSigner } from '@solana/kit';
import { BorrowRateCurve, PythConfiguration, ReserveConfig, ScopeConfiguration, SwitchboardConfiguration } from '../@codegen/klend/types';
import Decimal from 'decimal.js';
import { Fraction } from '../classes';
import { LendingMarket } from '../lib';
export type ScopeOracleConfig = {
name: string;
oracleType: string;
oracleId: number;
oracleAccount: Address;
twapEnabled: boolean;
twapSourceId: number;
max_age: number;
};
export type CreateKaminoMarketParams = {
admin: TransactionSigner;
};
export type AddAssetToMarketParams = {
admin: TransactionSigner;
adminLiquiditySource: Address;
marketAddress: Address;
assetConfig: AssetConfig;
};
export interface AssetConfig {
readonly mint: Address;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: Address;
assetReserveConfigParams: AssetReserveConfigParams;
setAssetConfigParams(assetReserveConfigParams: AssetReserveConfigParams): void;
getReserveConfig(): ReserveConfig;
}
export declare class AssetReserveConfig implements AssetConfig {
readonly mint: Address;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: Address;
assetReserveConfigParams: AssetReserveConfigParams;
constructor(fields: {
mint: Address;
mintTokenProgram: Address;
tokenName: string;
mintDecimals: number;
priceFeed: PriceFeed;
loanToValuePct: number;
liquidationThresholdPct: number;
borrowRateCurve: BorrowRateCurve;
depositLimit: Decimal;
borrowLimit: Decimal;
});
setAssetConfigParams(assetReserveConfigParams: AssetReserveConfigParams): void;
getReserveConfig(): ReserveConfig;
}
export declare class AssetReserveConfigCli implements AssetConfig {
readonly mint: Address;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: Address;
private reserveConfig;
assetReserveConfigParams: AssetReserveConfigParams;
constructor(mint: Address, mintTokenProgram: Address, reserveConfig: ReserveConfig);
setAssetConfigParams(assetReserveConfigParams: AssetReserveConfigParams): void;
setReserveConfig(reserveConfig: ReserveConfig): void;
getReserveConfig(): ReserveConfig;
}
export declare class CollateralConfig implements AssetConfig {
readonly mint: Address;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: Address;
assetReserveConfigParams: AssetReserveConfigParams;
constructor(fields: {
mint: Address;
mintTokenProgram: Address;
tokenName: string;
mintDecimals: number;
priceFeed: PriceFeed;
loanToValuePct: number;
liquidationThresholdPct: number;
});
setAssetConfigParams(assetReserveConfigParams: AssetReserveConfigParams): void;
getReserveConfig(): ReserveConfig;
}
export declare class DebtConfig implements AssetConfig {
readonly mint: Address;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: Address;
assetReserveConfigParams: AssetReserveConfigParams;
borrowLimitOutsideElevationGroup?: Decimal;
debtWithdrawalCapConfigCapacity?: Decimal;
constructor(fields: {
mint: Address;
mintTokenProgram: Address;
tokenName: string;
mintDecimals: number;
priceFeed: PriceFeed;
borrowRateCurve: BorrowRateCurve;
borrowLimitOutsideElevationGroup?: Decimal;
debtWithdrawalCapConfigCapacity?: Decimal;
});
setAssetConfigParams(assetReserveConfigParams: AssetReserveConfigParams): void;
getReserveConfig(): ReserveConfig;
}
export type PriceFeed = {
scopePriceConfigAddress?: Address;
scopeChain?: number[];
scopeTwapChain?: number[];
pythPrice?: Address;
switchboardPrice?: Address;
switchboardTwapPrice?: Address;
};
export type AssetReserveConfigParams = {
loanToValuePct: number;
depositLimit: Decimal;
borrowLimit: Decimal;
maxLiquidationBonusBps: number;
minLiquidationBonusBps: number;
badDebtLiquidationBonusBps: number;
liquidationThresholdPct: number;
borrowFeeSf: Fraction;
flashLoanFeeSf: Fraction;
protocolTakeRate: number;
elevationGroups: number[];
priceFeed: PriceFeed | null;
maxAgePriceSeconds: number;
maxAgeTwapSeconds: number;
borrowRateCurve: BorrowRateCurve;
};
export declare const getDefaultConfigParams: () => AssetReserveConfigParams;
export declare const encodeTokenName: (tokenName: string) => number[];
export declare function getReserveOracleConfigs(priceFeed: PriceFeed | null): {
pythConfiguration: PythConfiguration;
switchboardConfiguration: SwitchboardConfiguration;
scopeConfiguration: ScopeConfiguration;
};
export declare function parseOracleType(type: number): string;
export type MarketWithAddress = {
address: Address;
state: LendingMarket;
};
//# sourceMappingURL=managerTypes.d.ts.map