@glamsystems/glam-sdk 1.1.0-alpha.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/LICENSE +201 -0
  2. package/buffer-layout.d.ts +88 -0
  3. package/index.cjs.d.ts +1 -0
  4. package/index.cjs.js +1 -92594
  5. package/index.esm.d.ts +1 -0
  6. package/index.esm.js +1 -92146
  7. package/package.json +29 -17
  8. package/src/assets.d.ts +39 -0
  9. package/src/client/access.d.ts +57 -0
  10. package/src/client/base.d.ts +234 -0
  11. package/src/client/bridge.d.ts +205 -0
  12. package/src/client/bridgeRegistry.d.ts +32 -0
  13. package/src/client/cctp.d.ts +164 -0
  14. package/src/client/epi.d.ts +228 -0
  15. package/src/client/fees.d.ts +33 -0
  16. package/src/client/invest.d.ts +37 -0
  17. package/src/client/jupiter-lend/borrow.d.ts +92 -0
  18. package/src/client/jupiter-lend/earn.d.ts +64 -0
  19. package/src/client/jupiter-lend/index.d.ts +3 -0
  20. package/src/client/jupiter-lend/shared.d.ts +129 -0
  21. package/src/client/jupiter.d.ts +53 -0
  22. package/src/client/kamino/farm.d.ts +39 -0
  23. package/src/client/kamino/index.d.ts +4 -0
  24. package/src/client/kamino/lending.d.ts +94 -0
  25. package/src/client/kamino/types.d.ts +56 -0
  26. package/src/client/kamino/vaults.d.ts +39 -0
  27. package/src/client/loopscale/borrow.d.ts +118 -0
  28. package/src/client/loopscale/core.d.ts +604 -0
  29. package/src/client/loopscale/index.d.ts +5 -0
  30. package/src/client/loopscale/lend.d.ts +123 -0
  31. package/src/client/loopscale/vault.d.ts +43 -0
  32. package/src/client/marinade.d.ts +42 -0
  33. package/src/client/mint.d.ts +143 -0
  34. package/src/client/orca.d.ts +255 -0
  35. package/src/client/phoenix.d.ts +214 -0
  36. package/src/client/price.d.ts +182 -0
  37. package/src/client/stake-pool.d.ts +39 -0
  38. package/src/client/stake.d.ts +34 -0
  39. package/src/client/state.d.ts +56 -0
  40. package/src/client/timelock.d.ts +31 -0
  41. package/src/client/vault.d.ts +98 -0
  42. package/src/client.d.ts +82 -0
  43. package/src/clientConfig.d.ts +32 -0
  44. package/src/constants.d.ts +111 -0
  45. package/src/deser/base.d.ts +18 -0
  46. package/src/deser/index.d.ts +4 -0
  47. package/src/deser/integrationPolicies.d.ts +195 -0
  48. package/src/deser/kaminoLayouts.d.ts +264 -0
  49. package/src/deser/loopscaleLayouts.d.ts +157 -0
  50. package/src/deser/tokenAclLayouts.d.ts +67 -0
  51. package/src/error.d.ts +29 -0
  52. package/src/glamExports.d.ts +6260 -0
  53. package/src/globalConfig.d.ts +27 -0
  54. package/src/index.d.ts +24 -0
  55. package/src/models/acl.d.ts +43 -0
  56. package/src/models/index.d.ts +8 -0
  57. package/src/models/mint.d.ts +57 -0
  58. package/src/models/state.d.ts +94 -0
  59. package/src/models/types.d.ts +28 -0
  60. package/src/protocols.d.ts +29 -0
  61. package/src/utils/accounts.d.ts +71 -0
  62. package/src/utils/bitmask.d.ts +53 -0
  63. package/src/utils/blockhash.d.ts +11 -0
  64. package/src/utils/common.d.ts +73 -0
  65. package/src/utils/computeBudget.d.ts +15 -0
  66. package/src/utils/evm.d.ts +10 -0
  67. package/src/utils/fraction.d.ts +29 -0
  68. package/src/utils/glamPDAs.d.ts +15 -0
  69. package/src/utils/helius.d.ts +66 -0
  70. package/src/utils/index.d.ts +17 -0
  71. package/src/utils/jupiterApi.d.ts +95 -0
  72. package/src/utils/lookupTables.d.ts +83 -0
  73. package/src/utils/phoenixApi.d.ts +146 -0
  74. package/src/utils/pkmap.d.ts +87 -0
  75. package/src/utils/pkset.d.ts +73 -0
  76. package/src/utils/positionCategorizer.d.ts +38 -0
  77. package/src/utils/rpc.d.ts +18 -0
  78. package/src/utils/timelock.d.ts +52 -0
  79. package/src/utils/transaction.d.ts +13 -0
  80. package/target/idl/ext_bridge-staging.json +2379 -0
  81. package/target/idl/ext_bridge.json +2379 -0
  82. package/target/idl/ext_drift.json +5464 -0
  83. package/target/idl/ext_epi-staging.json +2862 -0
  84. package/target/idl/ext_epi.json +2862 -0
  85. package/target/idl/ext_loopscale-staging.json +4708 -0
  86. package/target/idl/ext_loopscale.json +4708 -0
  87. package/target/idl/ext_marinade-staging.json +1587 -0
  88. package/target/idl/ext_phoenix-staging.json +3525 -0
  89. package/target/idl/ext_phoenix.json +3525 -0
  90. package/target/idl/mock_layerzero_endpoint.json +144 -0
  91. package/target/idl/mock_layerzero_oft.json +155 -0
  92. package/target/idl/mock_wormhole_verify_vaa_shim.json +58 -0
  93. package/target/types/ext_bridge-staging.d.ts +2385 -0
  94. package/target/types/ext_bridge-staging.ts +2385 -0
  95. package/target/types/ext_bridge.d.ts +2385 -0
  96. package/target/types/ext_bridge.ts +2385 -0
  97. package/target/types/ext_cctp-staging.d.ts +1268 -0
  98. package/target/types/ext_cctp.d.ts +1268 -0
  99. package/target/types/ext_drift.d.ts +5470 -0
  100. package/target/types/ext_drift.ts +5470 -0
  101. package/target/types/ext_epi-staging.d.ts +2868 -0
  102. package/target/types/ext_epi-staging.ts +2868 -0
  103. package/target/types/ext_epi.d.ts +2868 -0
  104. package/target/types/ext_epi.ts +2868 -0
  105. package/target/types/ext_jupiter-staging.d.ts +1966 -0
  106. package/target/types/ext_jupiter.d.ts +1966 -0
  107. package/target/types/ext_kamino-staging.d.ts +3433 -0
  108. package/target/types/ext_kamino.d.ts +3433 -0
  109. package/target/types/ext_loopscale-staging.d.ts +4714 -0
  110. package/target/types/ext_loopscale-staging.ts +4714 -0
  111. package/target/types/ext_loopscale.d.ts +4714 -0
  112. package/target/types/ext_loopscale.ts +4714 -0
  113. package/target/types/ext_marinade-staging.d.ts +1593 -0
  114. package/target/types/ext_marinade-staging.ts +1593 -0
  115. package/target/types/ext_marinade.d.ts +1593 -0
  116. package/target/types/ext_orca-staging.d.ts +2829 -0
  117. package/target/types/ext_orca.d.ts +2829 -0
  118. package/target/types/ext_phoenix-staging.d.ts +3531 -0
  119. package/target/types/ext_phoenix-staging.ts +3531 -0
  120. package/target/types/ext_phoenix.d.ts +3531 -0
  121. package/target/types/ext_phoenix.ts +3531 -0
  122. package/target/types/ext_spl-staging.d.ts +1274 -0
  123. package/target/types/ext_spl.d.ts +1274 -0
  124. package/target/types/ext_stake_pool-staging.d.ts +1622 -0
  125. package/target/types/ext_stake_pool.d.ts +1622 -0
  126. package/target/types/glam_config.d.ts +755 -0
  127. package/target/types/glam_mint-staging.d.ts +8802 -0
  128. package/target/types/glam_mint.d.ts +6349 -0
  129. package/target/types/glam_policies.d.ts +477 -0
  130. package/target/types/glam_protocol-staging.d.ts +3362 -0
  131. package/target/types/glam_protocol.d.ts +2783 -0
  132. package/target/types/mock_layerzero_endpoint.d.ts +150 -0
  133. package/target/types/mock_layerzero_endpoint.ts +150 -0
  134. package/target/types/mock_layerzero_oft.d.ts +161 -0
  135. package/target/types/mock_layerzero_oft.ts +161 -0
  136. package/target/types/mock_wormhole_verify_vaa_shim.d.ts +64 -0
  137. package/target/types/mock_wormhole_verify_vaa_shim.ts +64 -0
@@ -0,0 +1,129 @@
1
+ import { AccountMeta, AddressLookupTableAccount, Connection, PublicKey } from "@solana/web3.js";
2
+ import { U64_MAX_BN as U64_MAX } from "../../utils/common";
3
+ export { JUPITER_BORROW_PROTOCOL, JUPITER_EARN_PROTOCOL, } from "../../protocols";
4
+ export type JupiterTransferType = {
5
+ skip: Record<string, never>;
6
+ } | {
7
+ direct: Record<string, never>;
8
+ } | {
9
+ claim: Record<string, never>;
10
+ };
11
+ export declare const PUBKEY_BYTES = 32;
12
+ export { U64_MAX };
13
+ export declare const LENDING_DISCRIMINATOR: Buffer<ArrayBuffer>;
14
+ export declare const TOKEN_RESERVE_DISCRIMINATOR: Buffer<ArrayBuffer>;
15
+ export declare const VAULT_STATE_DISCRIMINATOR: Buffer<ArrayBuffer>;
16
+ export declare const VAULT_CONFIG_DISCRIMINATOR: Buffer<ArrayBuffer>;
17
+ export declare const VAULT_METADATA_DISCRIMINATOR: Buffer<ArrayBuffer>;
18
+ export declare const POSITION_DISCRIMINATOR: Buffer<ArrayBuffer>;
19
+ export declare const ORACLE_DISCRIMINATOR: Buffer<ArrayBuffer>;
20
+ export declare const TICK_DISCRIMINATOR: Buffer<ArrayBuffer>;
21
+ export declare const TICK_ID_LIQUIDATION_DISCRIMINATOR: Buffer<ArrayBuffer>;
22
+ export declare const LIQUIDITY_SUPPLY_POSITION_DISCRIMINATOR: Buffer<ArrayBuffer>;
23
+ export declare const LIQUIDITY_BORROW_POSITION_DISCRIMINATOR: Buffer<ArrayBuffer>;
24
+ export declare const LENDING_REWARDS_RATE_MODEL_OFFSET: number;
25
+ export declare const LENDING_TOKEN_RESERVES_LIQUIDITY_OFFSET: number;
26
+ export declare const LENDING_SUPPLY_POSITION_OFFSET: number;
27
+ export declare const TOKEN_RESERVE_VAULT_OFFSET: number;
28
+ export declare const VAULT_CONFIG_ORACLE_OFFSET: number;
29
+ export declare const VAULT_CONFIG_SUPPLY_TOKEN_OFFSET: number;
30
+ export declare const VAULT_CONFIG_BORROW_TOKEN_OFFSET: number;
31
+ export declare const VAULT_METADATA_LOOKUP_TABLE_OFFSET: number;
32
+ export declare const VAULT_STATE_VAULT_ID_OFFSET = 8;
33
+ export declare const VAULT_STATE_CURRENT_BRANCH_ID_OFFSET: number;
34
+ export declare const VAULT_STATE_NEXT_POSITION_ID_OFFSET: number;
35
+ export declare const POSITION_VAULT_ID_OFFSET = 8;
36
+ export declare const POSITION_MINT_OFFSET: number;
37
+ export declare const POSITION_IS_SUPPLY_ONLY_OFFSET: number;
38
+ export declare const POSITION_TICK_OFFSET: number;
39
+ export declare const POSITION_TICK_ID_OFFSET: number;
40
+ export declare const ORACLE_SOURCE_BYTES: number;
41
+ export declare const TICK_VALUE_OFFSET: number;
42
+ export declare const TICK_TOTAL_IDS_OFFSET: number;
43
+ export declare const TICK_ID_VALUE_OFFSET: number;
44
+ export declare const TICK_ID_MAP_OFFSET: number;
45
+ export declare const MIN_TICK = -16383;
46
+ export declare const TICKS_PER_TICK_HAS_DEBT_ARRAY = 2048;
47
+ export declare const LIQUIDITY_POSITION_VAULT_CONFIG_OFFSET = 8;
48
+ export declare const LIQUIDITY_POSITION_MINT_OFFSET: number;
49
+ export declare const LIQUIDITY_SUPPLY_POSITION_SIZE = 124;
50
+ export declare const LIQUIDITY_BORROW_POSITION_SIZE = 120;
51
+ export declare const BORROW_OPERATE_EXPECTED_TICK_RE: RegExp;
52
+ export type JupiterPosition = {
53
+ pubkey: PublicKey;
54
+ vaultId: number;
55
+ positionMint: PublicKey;
56
+ isSupplyOnlyPosition: boolean;
57
+ tick: number;
58
+ tickId: number;
59
+ };
60
+ export type JupiterVault = {
61
+ vaultId: number;
62
+ vaultConfig: PublicKey;
63
+ vaultState: PublicKey;
64
+ oracle: PublicKey;
65
+ supplyToken: PublicKey;
66
+ borrowToken: PublicKey;
67
+ };
68
+ export type VaultStateInfo = {
69
+ vaultId: number;
70
+ currentBranchId: number;
71
+ nextPositionId: number;
72
+ };
73
+ export type TickInfo = {
74
+ pubkey: PublicKey;
75
+ tick: number;
76
+ totalIds: number;
77
+ };
78
+ export type BorrowOperateRemainingAccounts = {
79
+ indices: Buffer;
80
+ accounts: AccountMeta[];
81
+ };
82
+ export declare function decodePositionInfo(pubkey: PublicKey, data: Buffer): JupiterPosition;
83
+ export declare function u16LeBytes(value: number): Buffer;
84
+ export declare function u32LeBytes(value: number): Buffer;
85
+ export declare function i32LeBytes(value: number): Buffer;
86
+ export declare function memcmpFilter(offset: number, data: Buffer): {
87
+ memcmp: {
88
+ offset: number;
89
+ bytes: string;
90
+ encoding: "base64";
91
+ };
92
+ };
93
+ export declare function toU8Buffer(value: Buffer | Uint8Array | number[]): Buffer;
94
+ export declare function getTokenMetadataPda(mint: PublicKey): PublicKey;
95
+ export declare function getLendingAdminPda(): PublicKey;
96
+ export declare function getFTokenMintPda(mint: PublicKey): PublicKey;
97
+ export declare function getLendingPda(mint: PublicKey, fTokenMint: PublicKey): PublicKey;
98
+ export declare function getClaimAccountPda(mint: PublicKey, lendingAdmin: PublicKey): PublicKey;
99
+ export declare function getRateModelPda(mint: PublicKey): PublicKey;
100
+ export declare function getLiquidityPda(): PublicKey;
101
+ export declare function getVaultAdminPda(): PublicKey;
102
+ export declare function getVaultConfigPda(vaultId: number): PublicKey;
103
+ export declare function getVaultMetadataPda(vaultId: number): PublicKey;
104
+ export declare function getVaultStatePda(vaultId: number): PublicKey;
105
+ export declare function getPositionPda(vaultId: number, positionId: number): PublicKey;
106
+ export declare function getPositionMintPda(vaultId: number, positionId: number): PublicKey;
107
+ export declare function getBranchPda(vaultId: number, branchId: number): PublicKey;
108
+ export declare function getTickHasDebtPda(vaultId: number, index: number): PublicKey;
109
+ export declare function getTickHasDebtIndex(tick: number): number;
110
+ export declare function fetchAndValidate(connection: Connection, pubkey: PublicKey, expectedOwner: PublicKey, expectedDiscriminator: Buffer, label: string): Promise<Buffer>;
111
+ export declare function resolveLookupTableAccounts(connection: Connection, statePda: PublicKey, vaultPda: PublicKey, lookupTable?: PublicKey): Promise<AddressLookupTableAccount[]>;
112
+ export declare function fetchPositionInfo(connection: Connection, position: PublicKey): Promise<JupiterPosition>;
113
+ export declare function fetchVaultStateInfo(connection: Connection, vaultState: PublicKey): Promise<VaultStateInfo>;
114
+ export declare function fetchVaultConfigInfo(connection: Connection, vaultConfig: PublicKey): Promise<{
115
+ oracle: PublicKey;
116
+ supplyToken: PublicKey;
117
+ borrowToken: PublicKey;
118
+ }>;
119
+ export declare function fetchVaultMetadataLookupTable(connection: Connection, vaultMetadata: PublicKey): Promise<PublicKey | null>;
120
+ export declare function fetchReserveVault(connection: Connection, reserve: PublicKey, expectedMint: PublicKey): Promise<PublicKey>;
121
+ export declare function fetchLendingReserveAndVault(connection: Connection, mint: PublicKey): Promise<{
122
+ reserve: PublicKey;
123
+ vault: PublicKey;
124
+ }>;
125
+ export declare function fetchLiquidityPosition(connection: Connection, discriminator: Buffer, dataSize: number, vaultConfig: PublicKey, mint: PublicKey, label: string): Promise<PublicKey>;
126
+ export declare function fetchTickByValue(connection: Connection, vaultId: number, tick: number): Promise<TickInfo>;
127
+ export declare function fetchTickIdLiquidationByTick(connection: Connection, vaultId: number, tick: number, tickMap: number): Promise<PublicKey>;
128
+ export declare function resolveOracleRemainingAccounts(connection: Connection, oracle: PublicKey): Promise<AccountMeta[]>;
129
+ export declare function buildBorrowOperateRemainingAccounts(vaultId: number, oracleAccounts: AccountMeta[], currentTickValue: number, finalTickValue: number): BorrowOperateRemainingAccounts;
@@ -0,0 +1,53 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { PublicKey, TransactionInstruction, TransactionSignature, VersionedTransaction } from "@solana/web3.js";
3
+ import { BaseClient, BaseTxBuilder, type ProtocolPolicyClient, type ProtocolPolicyTxBuilder, type TxOptions } from "./base";
4
+ import { JupiterSwapPolicy } from "../deser/integrationPolicies";
5
+ import { VaultClient } from "./vault";
6
+ import { JupiterApiClient, JupiterInstruction, QuoteParams, QuoteResponse, SwapInstructions } from "../utils/jupiterApi";
7
+ import { KaminoLendingClient } from "./kamino";
8
+ export type JupiterSwapOptions = {
9
+ quoteParams?: QuoteParams;
10
+ quoteResponse?: QuoteResponse;
11
+ swapInstructions?: SwapInstructions;
12
+ trackingAccount?: PublicKey;
13
+ };
14
+ export type JupiterSwapV2OracleAccounts = {
15
+ solUsdOracle?: PublicKey;
16
+ inputTokenOracle?: PublicKey;
17
+ outputTokenOracle?: PublicKey;
18
+ kaminoReservesToRefresh: PublicKey[];
19
+ };
20
+ export type JupiterSwapV2Options = JupiterSwapOptions & {
21
+ skipQuotePriceCheck?: boolean;
22
+ };
23
+ declare class TxBuilder extends BaseTxBuilder<JupiterSwapClient> implements ProtocolPolicyTxBuilder<JupiterSwapPolicy> {
24
+ private resolveSwapInstructionContext;
25
+ getSwapV2OracleAccounts(inputMint: PublicKey, outputMint: PublicKey, skipQuotePriceCheck: boolean): Promise<JupiterSwapV2OracleAccounts>;
26
+ /**
27
+ * Returns the instructions for a Jupiter swap and the lookup tables
28
+ */
29
+ swapIxs(options: JupiterSwapOptions, glamSigner: PublicKey): Promise<[TransactionInstruction[], PublicKey[]]>;
30
+ swapV2Ixs(options: JupiterSwapV2Options, glamSigner: PublicKey): Promise<[TransactionInstruction[], PublicKey[]]>;
31
+ swapTx(options: JupiterSwapOptions, txOptions?: TxOptions): Promise<VersionedTransaction>;
32
+ swapV2Tx(options: JupiterSwapV2Options, txOptions?: TxOptions): Promise<VersionedTransaction>;
33
+ setPolicyIx(policy: JupiterSwapPolicy, signer?: PublicKey): Promise<TransactionInstruction>;
34
+ setPolicyTx(policy: JupiterSwapPolicy, txOptions?: TxOptions): Promise<VersionedTransaction>;
35
+ clearPolicyIx(signer?: PublicKey): Promise<TransactionInstruction>;
36
+ clearPolicyTx(txOptions?: TxOptions): Promise<VersionedTransaction>;
37
+ getPreInstructions(signer: PublicKey, inputMint: PublicKey, outputMint: PublicKey, amount: BN, outputTokenProgram?: PublicKey): Promise<TransactionInstruction[]>;
38
+ toTransactionInstruction: (ix: JupiterInstruction) => TransactionInstruction;
39
+ }
40
+ export declare class JupiterSwapClient implements ProtocolPolicyClient<JupiterSwapPolicy> {
41
+ readonly base: BaseClient;
42
+ readonly vault: VaultClient;
43
+ readonly klend: KaminoLendingClient;
44
+ readonly txBuilder: TxBuilder;
45
+ readonly jupApi: JupiterApiClient;
46
+ constructor(base: BaseClient, vault: VaultClient, klend: KaminoLendingClient);
47
+ swap(options: JupiterSwapOptions, txOptions?: TxOptions): Promise<TransactionSignature>;
48
+ swapV2(options: JupiterSwapV2Options, txOptions?: TxOptions): Promise<TransactionSignature>;
49
+ fetchPolicy(): Promise<JupiterSwapPolicy | null>;
50
+ setPolicy(policy: JupiterSwapPolicy, txOptions?: TxOptions): Promise<TransactionSignature>;
51
+ clearPolicy(txOptions?: TxOptions): Promise<TransactionSignature>;
52
+ }
53
+ export {};
@@ -0,0 +1,39 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { PublicKey, VersionedTransaction, TransactionSignature } from "@solana/web3.js";
3
+ import { BaseClient, BaseTxBuilder, TxOptions } from "../base";
4
+ import { PkMap } from "../../utils";
5
+ import { KaminoLendingClient } from "./lending";
6
+ import { ParsedFarmState, ParsedFarmUser } from "./types";
7
+ declare class TxBuilder extends BaseTxBuilder<KaminoFarmClient> {
8
+ stakeTx(amount: BN, farmState: PublicKey, txOptions?: TxOptions): Promise<VersionedTransaction>;
9
+ unstakeTx(amount: BN, farmState: PublicKey, txOptions?: TxOptions): Promise<VersionedTransaction>;
10
+ harvestTx(farmUserStates: PublicKey[], txOptions?: TxOptions): Promise<VersionedTransaction>;
11
+ }
12
+ export declare class KaminoFarmClient {
13
+ readonly base: BaseClient;
14
+ readonly kaminoLending: KaminoLendingClient;
15
+ txBuilder: TxBuilder;
16
+ constructor(base: BaseClient, kaminoLending: KaminoLendingClient);
17
+ /**
18
+ * Finds and parses farm states for the given owner
19
+ */
20
+ findAndParseFarmUserStates(owner: PublicKey): Promise<ParsedFarmUser[]>;
21
+ parseFarmState(data: Buffer): Promise<ParsedFarmState>;
22
+ fetchAndParseFarmStates(farms: PublicKey[]): Promise<PkMap<ParsedFarmState>>;
23
+ farmVaultTokenAccount: (farm: PublicKey, mint: PublicKey) => PublicKey;
24
+ farmVaultsAuthority: (farm: PublicKey) => PublicKey;
25
+ rewardsTreasuryVault: (globalConfig: PublicKey, mint: PublicKey) => PublicKey;
26
+ /**
27
+ * Harvest rewards from Kamino farms
28
+ */
29
+ harvest(vaultFarmStates: PublicKey[], txOptions?: TxOptions): Promise<TransactionSignature>;
30
+ /**
31
+ * Stake tokens to a farm
32
+ */
33
+ stake(amount: BN, farmState: PublicKey, txOptions?: TxOptions): Promise<TransactionSignature>;
34
+ /**
35
+ * Unstake tokens from a farm
36
+ */
37
+ unstake(amount: BN, farmState: PublicKey, txOptions?: TxOptions): Promise<TransactionSignature>;
38
+ }
39
+ export {};
@@ -0,0 +1,4 @@
1
+ export * from "./types";
2
+ export * from "./lending";
3
+ export * from "./farm";
4
+ export * from "./vaults";
@@ -0,0 +1,94 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { PublicKey, VersionedTransaction, TransactionSignature, TransactionInstruction } from "@solana/web3.js";
3
+ import { BaseClient, BaseTxBuilder, type ProtocolPolicyClient, type ProtocolPolicyTxBuilder, type TxOptions } from "../base";
4
+ import { KaminoLendingPolicy } from "../../deser/integrationPolicies";
5
+ import { Reserve, Obligation } from "../../deser/kaminoLayouts";
6
+ import { VaultClient } from "../vault";
7
+ import { RefreshObligationAccounts, RefreshReserveAccounts, RefreshObligationFarmsForReserveArgs, RefreshObligationFarmsForReserveAccounts } from "./types";
8
+ declare class TxBuilder extends BaseTxBuilder<KaminoLendingClient> implements ProtocolPolicyTxBuilder<KaminoLendingPolicy> {
9
+ refreshObligationIx(accounts: RefreshObligationAccounts): TransactionInstruction;
10
+ refreshReserveIx(accounts: RefreshReserveAccounts): TransactionInstruction;
11
+ refreshObligationFarmsForReserveIx(args: RefreshObligationFarmsForReserveArgs, accounts: RefreshObligationFarmsForReserveAccounts): TransactionInstruction;
12
+ refreshReservesBatchIx(reserves: Reserve[], skipPriceUpdates: boolean): TransactionInstruction;
13
+ refreshReservesIxs(reserves: Reserve[]): TransactionInstruction[];
14
+ refreshObligationCollateralFarmsForReservesIxs(obligation: PublicKey, reserves: Reserve[]): TransactionInstruction[];
15
+ refreshObligationDebtFarmsForReservesIxs(obligation: PublicKey, reserves: Reserve[]): TransactionInstruction[];
16
+ /**
17
+ * Returns two instructions that refresh reserves in batch and refresh obligation
18
+ */
19
+ refreshReservesAndObligationIxs(obligation: PublicKey, targetReserve: Reserve): Promise<TransactionInstruction[]>;
20
+ /**
21
+ * Returns an instruction to initialize obligation farm user if it doesn't exist
22
+ *
23
+ * @param mode 0 collateral farm, 1 debt farm
24
+ */
25
+ initObligationFarmUserForReserveIx(obligation: PublicKey, reserve: Reserve, mode: 0 | 1, signer?: PublicKey): Promise<{
26
+ farmUser: null;
27
+ initIx: null;
28
+ } | {
29
+ farmUser: PublicKey;
30
+ initIx: TransactionInstruction | null;
31
+ }>;
32
+ initUserMetadataTx(txOptions?: TxOptions): Promise<VersionedTransaction>;
33
+ depositIxs(market: PublicKey, asset: PublicKey, amount: BN, glamSigner: PublicKey): Promise<TransactionInstruction[]>;
34
+ depositTx(market: PublicKey, asset: PublicKey, amount: BN, txOptions?: TxOptions): Promise<VersionedTransaction>;
35
+ withdrawIxs(market: PublicKey, asset: PublicKey, amount: BN, glamSigner: PublicKey): Promise<TransactionInstruction[]>;
36
+ withdrawTx(market: PublicKey, asset: PublicKey, amount: BN, txOptions?: TxOptions): Promise<VersionedTransaction>;
37
+ borrowIxs(market: PublicKey, asset: PublicKey, amount: BN, glamSigner: PublicKey): Promise<TransactionInstruction[]>;
38
+ borrowTx(market: PublicKey, asset: PublicKey, amount: BN, txOptions?: TxOptions): Promise<VersionedTransaction>;
39
+ requestElevationGroupIxs(lendingMarket: PublicKey, elevationGroup: number, glamSigner: PublicKey): Promise<TransactionInstruction[]>;
40
+ requestElevationGroupTx(lendingMarket: PublicKey, elevationGroup: number, txOptions?: TxOptions): Promise<VersionedTransaction>;
41
+ repayIxs(market: PublicKey, asset: PublicKey, amount: BN, glamSigner: PublicKey): Promise<TransactionInstruction[]>;
42
+ repayTx(market: PublicKey, asset: PublicKey, amount: BN, txOptions?: TxOptions): Promise<VersionedTransaction>;
43
+ setPolicyIx(policy: KaminoLendingPolicy, signer?: PublicKey): Promise<TransactionInstruction>;
44
+ setPolicyTx(policy: KaminoLendingPolicy, txOptions?: TxOptions): Promise<VersionedTransaction>;
45
+ clearPolicyIx(signer?: PublicKey): Promise<TransactionInstruction>;
46
+ clearPolicyTx(txOptions?: TxOptions): Promise<VersionedTransaction>;
47
+ }
48
+ export declare class KaminoLendingClient implements ProtocolPolicyClient<KaminoLendingPolicy> {
49
+ readonly base: BaseClient;
50
+ readonly vault: VaultClient;
51
+ private reserves;
52
+ private obligations;
53
+ txBuilder: TxBuilder;
54
+ constructor(base: BaseClient, vault: VaultClient);
55
+ /**
56
+ * Initializes Kamino user metadata
57
+ */
58
+ initUserMetadata(txOptions?: TxOptions): Promise<TransactionSignature>;
59
+ /**
60
+ * Deposits asset to the lending market.
61
+ */
62
+ deposit(market: PublicKey | string, asset: PublicKey | string, amount: BN | number, txOptions?: TxOptions): Promise<TransactionSignature>;
63
+ /**
64
+ * Withdraws asset from the lending market.
65
+ */
66
+ withdraw(market: PublicKey | string, asset: PublicKey | string, amount: BN | number, txOptions?: TxOptions): Promise<TransactionSignature>;
67
+ /**
68
+ * Borrows asset from the lending market.
69
+ */
70
+ borrow(market: PublicKey | string, asset: PublicKey | string, amount: BN | number, txOptions?: TxOptions): Promise<TransactionSignature>;
71
+ /**
72
+ * Requests an elevation group for an obligation.
73
+ */
74
+ requestElevationGroup(market: PublicKey | string, elevationGroup: number, txOptions?: TxOptions): Promise<TransactionSignature>;
75
+ /**
76
+ * Repays asset to the lending market.
77
+ */
78
+ repay(market: PublicKey | string, asset: PublicKey | string, amount: BN | number, txOptions?: TxOptions): Promise<TransactionSignature>;
79
+ fetchPolicy(): Promise<KaminoLendingPolicy | null>;
80
+ setPolicy(policy: KaminoLendingPolicy, txOptions?: TxOptions): Promise<TransactionSignature>;
81
+ clearPolicy(txOptions?: TxOptions): Promise<TransactionSignature>;
82
+ getUserMetadataPda(owner: PublicKey): PublicKey;
83
+ getObligationPda(owner: PublicKey, market: PublicKey, args?: {
84
+ tag: number;
85
+ id: number;
86
+ }): PublicKey;
87
+ getFarmUserState(farmUser: PublicKey, farm: PublicKey): PublicKey;
88
+ getMarketAuthority(market: PublicKey): PublicKey;
89
+ fetchAndParseObligation(obligation: PublicKey): Promise<Obligation>;
90
+ fetchAndParseReserves(reserves: PublicKey[]): Promise<Reserve[]>;
91
+ findAndParseReserve(market: PublicKey, asset: PublicKey): Promise<Reserve>;
92
+ findAndParseObligations(owner: PublicKey, market?: PublicKey): Promise<Obligation[]>;
93
+ }
94
+ export {};
@@ -0,0 +1,56 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ export declare const DEFAULT_OBLIGATION_ARGS: {
4
+ tag: number;
5
+ id: number;
6
+ };
7
+ export declare const KAMINO_VAULTS_EVENT_AUTHORITY: PublicKey;
8
+ export interface RefreshObligationAccounts {
9
+ lendingMarket: PublicKey;
10
+ obligation: PublicKey;
11
+ reserves: PublicKey[];
12
+ }
13
+ export interface RefreshReserveAccounts {
14
+ reserve: PublicKey;
15
+ lendingMarket: PublicKey;
16
+ pythOracle: PublicKey;
17
+ switchboardPriceOracle: PublicKey;
18
+ switchboardTwapOracle: PublicKey;
19
+ scopePrices: PublicKey;
20
+ }
21
+ export interface RefreshObligationFarmsForReserveArgs {
22
+ mode: number;
23
+ }
24
+ export interface RefreshObligationFarmsForReserveAccounts {
25
+ crank: PublicKey;
26
+ baseAccounts: {
27
+ obligation: PublicKey;
28
+ lendingMarketAuthority: PublicKey;
29
+ reserve: PublicKey;
30
+ reserveFarmState: PublicKey;
31
+ obligationFarmUserState: PublicKey;
32
+ lendingMarket: PublicKey;
33
+ };
34
+ farmsProgram: PublicKey;
35
+ rent: PublicKey;
36
+ systemProgram: PublicKey;
37
+ }
38
+ export interface ParsedFarmState {
39
+ globalConfig: PublicKey;
40
+ farmTokenMint: PublicKey;
41
+ farmTokenDecimals: BN;
42
+ farmTokenProgram: PublicKey;
43
+ farmVault: PublicKey;
44
+ rewards: {
45
+ index: number;
46
+ mint: PublicKey;
47
+ minClaimDurationSeconds: BN;
48
+ tokenProgram: PublicKey;
49
+ rewardsVault: PublicKey;
50
+ }[];
51
+ }
52
+ export interface ParsedFarmUser {
53
+ pubkey: PublicKey;
54
+ farmState: PublicKey;
55
+ unclaimedRewards: BN[];
56
+ }
@@ -0,0 +1,39 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { PublicKey, TransactionInstruction, VersionedTransaction, TransactionSignature, AccountMeta, Commitment } from "@solana/web3.js";
3
+ import { BaseClient, BaseTxBuilder, type ProtocolPolicyClient, type ProtocolPolicyTxBuilder, type TxOptions } from "../base";
4
+ import { KVaultAllocation, KVaultState } from "../../deser/kaminoLayouts";
5
+ import { KaminoVaultsPolicy } from "../../deser/integrationPolicies";
6
+ import { KaminoLendingClient } from "./lending";
7
+ declare class TxBuilder extends BaseTxBuilder<KaminoVaultsClient> implements ProtocolPolicyTxBuilder<KaminoVaultsPolicy> {
8
+ depositTx(vault: PublicKey, amount: BN, txOptions?: TxOptions): Promise<VersionedTransaction>;
9
+ withdrawTx(vault: PublicKey, amount: BN, txOptions?: TxOptions): Promise<VersionedTransaction>;
10
+ setPolicyIx(policy: KaminoVaultsPolicy, signer?: PublicKey): Promise<TransactionInstruction>;
11
+ setPolicyTx(policy: KaminoVaultsPolicy, txOptions?: TxOptions): Promise<VersionedTransaction>;
12
+ clearPolicyIx(signer?: PublicKey): Promise<TransactionInstruction>;
13
+ clearPolicyTx(txOptions?: TxOptions): Promise<VersionedTransaction>;
14
+ }
15
+ export declare class KaminoVaultsClient implements ProtocolPolicyClient<KaminoVaultsPolicy> {
16
+ readonly base: BaseClient;
17
+ readonly kaminoLending: KaminoLendingClient;
18
+ private vaultStates;
19
+ private shareMintToVaultPdaMap;
20
+ txBuilder: TxBuilder;
21
+ constructor(base: BaseClient, kaminoLending: KaminoLendingClient);
22
+ /**
23
+ * Deposit to a Kamino vault
24
+ */
25
+ deposit(vault: PublicKey, amount: BN | number, txOptions?: TxOptions): Promise<TransactionSignature>;
26
+ /**
27
+ * Withdraw from a Kamino vault
28
+ */
29
+ withdraw(vault: PublicKey, amount: BN | number, txOptions?: TxOptions): Promise<TransactionSignature>;
30
+ fetchPolicy(): Promise<KaminoVaultsPolicy | null>;
31
+ setPolicy(policy: KaminoVaultsPolicy, txOptions?: TxOptions): Promise<TransactionSignature>;
32
+ clearPolicy(txOptions?: TxOptions): Promise<TransactionSignature>;
33
+ findAndParseKaminoVaults(commitment?: Commitment): Promise<KVaultState[]>;
34
+ get globalConfigPda(): PublicKey;
35
+ getVaultPdasByShareMints(mints: PublicKey[]): Promise<PublicKey[]>;
36
+ fetchAndParseVaultState(vault: PublicKey): Promise<KVaultState>;
37
+ composeRemainingAccounts(allocations: KVaultAllocation[], pricingMode?: boolean): Promise<AccountMeta[]>;
38
+ }
39
+ export {};
@@ -0,0 +1,118 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { Commitment, PublicKey, TransactionInstruction, TransactionSignature, VersionedTransaction } from "@solana/web3.js";
3
+ import { BaseClient, type ProtocolPolicyClient, type TxOptions } from "../base";
4
+ import { LoopscaleBorrowPolicy } from "../../deser/integrationPolicies";
5
+ import { LoopscaleLoan, LoopscaleMarketInformation, LoopscaleStrategy } from "../../deser";
6
+ import { BorrowMarketAccounts, BorrowPrincipalAccounts, BorrowPrincipalParams, CreateLoanParams, DepositCollateralAccounts, DepositCollateralParams, LoopscaleBorrowPrincipalTerms, LoopscaleBorrowQuoteTerms, LoopscaleBorrowTxBuilder, LoopscaleCoreClient, LoopscaleMaxQuoteParams, LoopscaleQuote, PriceLoansAccounts, RepayPrincipalAccounts, RepayPrincipalParams, UpdateWeightMatrixAccounts, UpdateWeightMatrixParams, WithdrawCollateralAccounts, WithdrawCollateralParams } from "./core";
7
+ export type Tuple5 = [number, number, number, number, number];
8
+ export declare class LoopscaleBorrowClient implements ProtocolPolicyClient<LoopscaleBorrowPolicy> {
9
+ private readonly core;
10
+ readonly txBuilder: LoopscaleBorrowTxBuilder;
11
+ constructor(core: LoopscaleCoreClient);
12
+ get base(): BaseClient;
13
+ get programId(): PublicKey;
14
+ get integrationAuthorityPda(): PublicKey;
15
+ getEventAuthorityPda(): PublicKey;
16
+ getLoanPda: (nonce: BN, borrower?: PublicKey) => PublicKey;
17
+ getLoanTokenAta(loan: PublicKey, mint: PublicKey, tokenProgram?: PublicKey): PublicKey;
18
+ fetchPolicy(): Promise<LoopscaleBorrowPolicy | null>;
19
+ setPolicy(policy: LoopscaleBorrowPolicy, txOptions?: TxOptions): Promise<TransactionSignature>;
20
+ clearPolicy(txOptions?: TxOptions): Promise<TransactionSignature>;
21
+ fetchLoan(loan: PublicKey): Promise<LoopscaleLoan>;
22
+ fetchOwnedLoan(loan: PublicKey, borrower?: PublicKey): Promise<LoopscaleLoan>;
23
+ fetchRegisteredLoans(commitment?: Commitment): Promise<LoopscaleLoan[]>;
24
+ fetchMarketInformation(marketInformation: PublicKey): Promise<LoopscaleMarketInformation>;
25
+ fetchStrategy(strategy: PublicKey): Promise<LoopscaleStrategy>;
26
+ fetchMaxQuotes(params: LoopscaleMaxQuoteParams): Promise<LoopscaleQuote[]>;
27
+ selectBestQuote(quotes: LoopscaleQuote[], externalYieldSource?: number, borrowAmount?: BN): Promise<LoopscaleQuote>;
28
+ fetchBestQuote(params: LoopscaleMaxQuoteParams): Promise<LoopscaleQuote>;
29
+ resolveBorrowMarketAccounts(params: {
30
+ strategy: PublicKey | LoopscaleStrategy;
31
+ collateralMint: PublicKey;
32
+ expectedApy: BN;
33
+ }): Promise<BorrowMarketAccounts>;
34
+ resolveBorrowTermsFromStrategy(params: {
35
+ strategy: PublicKey | LoopscaleStrategy;
36
+ principalMint: PublicKey;
37
+ assetIdentifier: PublicKey;
38
+ expectedApy: BN;
39
+ expectedLqt: Tuple5;
40
+ }): Promise<LoopscaleBorrowPrincipalTerms>;
41
+ resolveBorrowTermsFromTargetStrategy(params: {
42
+ strategy: PublicKey | LoopscaleStrategy;
43
+ principalMint: PublicKey;
44
+ assetIdentifier: PublicKey;
45
+ requestedDurationIndex?: number;
46
+ }): Promise<LoopscaleBorrowPrincipalTerms>;
47
+ resolveBorrowTermsFromQuote(params: {
48
+ principalMint: PublicKey;
49
+ collateralMint: PublicKey;
50
+ assetIdentifier: PublicKey;
51
+ collateralAmount: BN;
52
+ borrowAmount: BN;
53
+ durationType: number;
54
+ duration: number;
55
+ externalYieldSource?: number;
56
+ }): Promise<LoopscaleBorrowQuoteTerms>;
57
+ buildApiCreateLoanIxs(params: CreateLoanParams): Promise<{
58
+ loan: PublicKey;
59
+ ixs: TransactionInstruction[];
60
+ }>;
61
+ buildApiDepositCollateralIxs(params: {
62
+ loan: PublicKey;
63
+ depositMint: PublicKey;
64
+ amount: BN;
65
+ assetType: number;
66
+ assetIdentifier: PublicKey;
67
+ assetIndexGuidance: number[];
68
+ }): Promise<TransactionInstruction[]>;
69
+ buildApiBorrowPrincipalIxs(params: {
70
+ loan: PublicKey;
71
+ strategy: PublicKey;
72
+ amount: BN;
73
+ assetIndexGuidance: number[];
74
+ duration: number;
75
+ expectedLoanValues: {
76
+ expectedApy: BN;
77
+ expectedLqt: Tuple5;
78
+ };
79
+ skipSolUnwrap: boolean;
80
+ }): Promise<TransactionInstruction[]>;
81
+ buildApiWithdrawCollateralIxs(params: {
82
+ loan: PublicKey;
83
+ collateralMint: PublicKey;
84
+ amount: BN;
85
+ collateralIndex: number;
86
+ assetIndexGuidance: number[];
87
+ expectedLoanValues: {
88
+ expectedApy: BN;
89
+ expectedLqt: Tuple5;
90
+ };
91
+ }): Promise<TransactionInstruction[]>;
92
+ buildApiRepayPrincipalIxs(params: {
93
+ loan: PublicKey;
94
+ strategy: PublicKey;
95
+ amount: BN;
96
+ ledgerIndex: number;
97
+ repayAll: boolean;
98
+ }): Promise<TransactionInstruction[]>;
99
+ cosignTransaction(params: {
100
+ tx: VersionedTransaction;
101
+ identifier: string;
102
+ }): Promise<VersionedTransaction>;
103
+ createLoan(params: CreateLoanParams, txOptions?: TxOptions): Promise<TransactionSignature>;
104
+ closeLoan(loan: PublicKey, txOptions?: TxOptions): Promise<TransactionSignature>;
105
+ depositCollateral(params: DepositCollateralParams, accounts: DepositCollateralAccounts, txOptions?: TxOptions): Promise<TransactionSignature>;
106
+ /** @deprecated */
107
+ updateWeightMatrix(params: UpdateWeightMatrixParams, accounts: UpdateWeightMatrixAccounts, txOptions?: TxOptions): Promise<TransactionSignature>;
108
+ borrowPrincipal(params: BorrowPrincipalParams, accounts: BorrowPrincipalAccounts, txOptions?: TxOptions): Promise<TransactionSignature>;
109
+ withdrawCollateral(params: WithdrawCollateralParams, accounts: WithdrawCollateralAccounts, txOptions?: TxOptions): Promise<TransactionSignature>;
110
+ repayPrincipal(params: RepayPrincipalParams, accounts: RepayPrincipalAccounts, txOptions?: TxOptions): Promise<TransactionSignature>;
111
+ /** @deprecated */
112
+ resolveLedgerStrategyAccounts(strategy: PublicKey): Promise<{
113
+ strategy: PublicKey;
114
+ marketInformation: PublicKey;
115
+ principalMint: PublicKey;
116
+ }>;
117
+ getPriceLoansAccounts(commitment?: Commitment): Promise<PriceLoansAccounts | null>;
118
+ }