@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
138 lines • 4.95 kB
TypeScript
import { PublicKey } from '@solana/web3.js';
import { BorrowRateCurve, PythConfiguration, ReserveConfig, ScopeConfiguration, SwitchboardConfiguration } from '../idl_codegen/types';
import Decimal from 'decimal.js';
import { Fraction } from '../classes/fraction';
import { LendingMarket } from '../lib';
export type ScopeOracleConfig = {
scopePriceConfigAddress: PublicKey;
name: string;
oracleType: string;
oracleId: number;
oracleAccount: PublicKey;
twapEnabled: boolean;
twapSourceId: number;
max_age: number;
};
export type CreateKaminoMarketParams = {
admin: PublicKey;
};
export type AddAssetToMarketParams = {
admin: PublicKey;
marketAddress: PublicKey;
assetConfig: AssetConfig;
};
export interface AssetConfig {
readonly mint: PublicKey;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: PublicKey;
assetReserveConfigParams: AssetReserveConfigParams;
setAssetConfigParams(assetReserveConfigParams: AssetReserveConfigParams): void;
getReserveConfig(): ReserveConfig;
}
export declare class AssetReserveConfig implements AssetConfig {
readonly mint: PublicKey;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: PublicKey;
assetReserveConfigParams: AssetReserveConfigParams;
constructor(fields: {
mint: PublicKey;
mintTokenProgram: PublicKey;
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: PublicKey;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: PublicKey;
private reserveConfig;
assetReserveConfigParams: AssetReserveConfigParams;
constructor(mint: PublicKey, mintTokenProgram: PublicKey, reserveConfig: ReserveConfig);
setAssetConfigParams(assetReserveConfigParams: AssetReserveConfigParams): void;
setReserveConfig(reserveConfig: ReserveConfig): void;
getReserveConfig(): ReserveConfig;
}
export declare class CollateralConfig implements AssetConfig {
readonly mint: PublicKey;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: PublicKey;
assetReserveConfigParams: AssetReserveConfigParams;
constructor(fields: {
mint: PublicKey;
mintTokenProgram: PublicKey;
tokenName: string;
mintDecimals: number;
priceFeed: PriceFeed;
loanToValuePct: number;
liquidationThresholdPct: number;
});
setAssetConfigParams(assetReserveConfigParams: AssetReserveConfigParams): void;
getReserveConfig(): ReserveConfig;
}
export declare class DebtConfig implements AssetConfig {
readonly mint: PublicKey;
readonly tokenName: string;
readonly mintDecimals: number;
readonly mintTokenProgram: PublicKey;
assetReserveConfigParams: AssetReserveConfigParams;
constructor(fields: {
mint: PublicKey;
mintTokenProgram: PublicKey;
tokenName: string;
mintDecimals: number;
priceFeed: PriceFeed;
borrowRateCurve: BorrowRateCurve;
});
setAssetConfigParams(assetReserveConfigParams: AssetReserveConfigParams): void;
getReserveConfig(): ReserveConfig;
}
export type PriceFeed = {
scopePriceConfigAddress?: PublicKey;
scopeChain?: number[];
scopeTwapChain?: number[];
pythPrice?: PublicKey;
switchboardPrice?: PublicKey;
switchboardTwapPrice?: PublicKey;
};
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 DefaultConfigParams: 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: PublicKey;
state: LendingMarket;
};
//# sourceMappingURL=managerTypes.d.ts.map