@pyron-finance/pyron-client 1.0.8 → 1.0.9-pre.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.
@@ -1,4 +1,4 @@
1
- const require_common = require('../common-70fo5HbS.cjs');
1
+ const require_common = require('../common-B23MHZHG.cjs');
2
2
 
3
3
  exports.CustomNumberFormat = require_common.CustomNumberFormat;
4
4
  exports.NodeWallet = require_common.NodeWallet;
@@ -1,2 +1,2 @@
1
- import { Amount, BankExtendedMetadata, BankExtendedMetadataMap, BankExtendedMetadataOverride, BankMetadata, BankMetadataMap, BanksExtendedMetadataOverrideMap, CustomNumberFormat, ExtendedTransaction, ExtendedTransactionProperties, ExtendedV0Transaction, InstructionsWrapper, MaxCapType, NodeWallet, PriotitizationFeeLevels, Program, ProgramReadonly, SolanaTransaction, TransactionArenaKeyMap, TransactionBroadcastType, TransactionConfigMap, TransactionOptions, TransactionPriorityType, TransactionSettings, TransactionType, Wallet, WalletToken, WrappedI80F48, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber } from "../index-CMK6wLry.cjs";
1
+ import { Amount, BankExtendedMetadata, BankExtendedMetadataMap, BankExtendedMetadataOverride, BankMetadata, BankMetadataMap, BanksExtendedMetadataOverrideMap, CustomNumberFormat, ExtendedTransaction, ExtendedTransactionProperties, ExtendedV0Transaction, InstructionsWrapper, MaxCapType, NodeWallet, PriotitizationFeeLevels, Program, ProgramReadonly, SolanaTransaction, TransactionArenaKeyMap, TransactionBroadcastType, TransactionConfigMap, TransactionOptions, TransactionPriorityType, TransactionSettings, TransactionType, Wallet, WalletToken, WrappedI80F48, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber } from "../index-Bi6sw5qC.cjs";
2
2
  export { Amount, BankExtendedMetadata, BankExtendedMetadataMap, BankExtendedMetadataOverride, BankMetadata, BankMetadataMap, BanksExtendedMetadataOverrideMap, CustomNumberFormat, ExtendedTransaction, ExtendedTransactionProperties, ExtendedV0Transaction, InstructionsWrapper, MaxCapType, NodeWallet, PriotitizationFeeLevels, Program, ProgramReadonly, SolanaTransaction, TransactionArenaKeyMap, TransactionBroadcastType, TransactionConfigMap, TransactionOptions, TransactionPriorityType, TransactionSettings, TransactionType, Wallet, WalletToken, WrappedI80F48, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber };
@@ -1,2 +1,2 @@
1
- import { Amount, BankExtendedMetadata, BankExtendedMetadataMap, BankExtendedMetadataOverride, BankMetadata, BankMetadataMap, BanksExtendedMetadataOverrideMap, CustomNumberFormat, ExtendedTransaction, ExtendedTransactionProperties, ExtendedV0Transaction, InstructionsWrapper, MaxCapType, NodeWallet, PriotitizationFeeLevels, Program, ProgramReadonly, SolanaTransaction, TransactionArenaKeyMap, TransactionBroadcastType, TransactionConfigMap, TransactionOptions, TransactionPriorityType, TransactionSettings, TransactionType, Wallet, WalletToken, WrappedI80F48, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber } from "../index-AiXygYKy.js";
1
+ import { Amount, BankExtendedMetadata, BankExtendedMetadataMap, BankExtendedMetadataOverride, BankMetadata, BankMetadataMap, BanksExtendedMetadataOverrideMap, CustomNumberFormat, ExtendedTransaction, ExtendedTransactionProperties, ExtendedV0Transaction, InstructionsWrapper, MaxCapType, NodeWallet, PriotitizationFeeLevels, Program, ProgramReadonly, SolanaTransaction, TransactionArenaKeyMap, TransactionBroadcastType, TransactionConfigMap, TransactionOptions, TransactionPriorityType, TransactionSettings, TransactionType, Wallet, WalletToken, WrappedI80F48, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber } from "../index-DcGyKuPI.js";
2
2
  export { Amount, BankExtendedMetadata, BankExtendedMetadataMap, BankExtendedMetadataOverride, BankMetadata, BankMetadataMap, BanksExtendedMetadataOverrideMap, CustomNumberFormat, ExtendedTransaction, ExtendedTransactionProperties, ExtendedV0Transaction, InstructionsWrapper, MaxCapType, NodeWallet, PriotitizationFeeLevels, Program, ProgramReadonly, SolanaTransaction, TransactionArenaKeyMap, TransactionBroadcastType, TransactionConfigMap, TransactionOptions, TransactionPriorityType, TransactionSettings, TransactionType, Wallet, WalletToken, WrappedI80F48, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber };
@@ -1,3 +1,3 @@
1
- import { CustomNumberFormat, NodeWallet, PriotitizationFeeLevels, TransactionArenaKeyMap, TransactionConfigMap, TransactionType, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber } from "../common-DSb1joUt.js";
1
+ import { CustomNumberFormat, NodeWallet, PriotitizationFeeLevels, TransactionArenaKeyMap, TransactionConfigMap, TransactionType, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber } from "../common-CsZ-YSuW.js";
2
2
 
3
3
  export { CustomNumberFormat, NodeWallet, PriotitizationFeeLevels, TransactionArenaKeyMap, TransactionConfigMap, TransactionType, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber };
@@ -78,14 +78,14 @@ const fetchBanksExtendedMetadata = async ({ mintsWithOwner, metadataService, log
78
78
  }, "override metadata exists but is missing required fields: name, symbol, mint");
79
79
  return null;
80
80
  }
81
- const { name, symbol, image } = tokenMeta;
81
+ const { name, symbol, image, uri } = tokenMeta;
82
82
  const overrideMetadata = overrideBanksMetadata?.[symbol];
83
83
  return {
84
84
  mint: mintAddress,
85
85
  name: overrideMetadata?.name ?? name,
86
86
  symbol: overrideMetadata?.symbol ?? symbol,
87
87
  logoURI: overrideMetadata?.logoURI ?? image,
88
- uri: `https://www.fogo.io/tokens/${symbol.toLowerCase()}`,
88
+ uri: uri ?? "",
89
89
  additionalMetadata: []
90
90
  };
91
91
  }));
@@ -49,14 +49,14 @@ const fetchBanksExtendedMetadata = async ({ mintsWithOwner, metadataService, log
49
49
  }, "override metadata exists but is missing required fields: name, symbol, mint");
50
50
  return null;
51
51
  }
52
- const { name, symbol, image } = tokenMeta;
52
+ const { name, symbol, image, uri } = tokenMeta;
53
53
  const overrideMetadata = overrideBanksMetadata?.[symbol];
54
54
  return {
55
55
  mint: mintAddress,
56
56
  name: overrideMetadata?.name ?? name,
57
57
  symbol: overrideMetadata?.symbol ?? symbol,
58
58
  logoURI: overrideMetadata?.logoURI ?? image,
59
- uri: `https://www.fogo.io/tokens/${symbol.toLowerCase()}`,
59
+ uri: uri ?? "",
60
60
  additionalMetadata: []
61
61
  };
62
62
  }));
@@ -1190,4 +1190,4 @@ const tokenPriceFormatter = (price, style = "currency") => {
1190
1190
 
1191
1191
  //#endregion
1192
1192
  export { BUNDLE_TX_SIZE, CustomNumberFormat, DEFAULT_CLUSTER, DEFAULT_COMMITMENT, DEFAULT_CONFIRM_OPTS, DEFAULT_ORACLE_MAX_AGE, DEFAULT_SEND_OPTS, DISABLED_FLAG, DUMMY_USDC_MINT, FLASHLOAN_ENABLED_FLAG, GROUP_PK, HOURS_PER_YEAR, JUPITER_V6_PROGRAM, LENDR_PROGRAM, LST_MINT, LUT_PROGRAM_AUTHORITY_INDEX, MAX_ACCOUNT_KEYS, MAX_CONFIDENCE_INTERVAL_RATIO, MAX_TX_SIZE, MAX_U64, MPL_METADATA_PROGRAM_ID, NodeWallet, PDA_BANK_FEE_VAULT_AUTH_SEED, PDA_BANK_FEE_VAULT_SEED, PDA_BANK_INSURANCE_VAULT_AUTH_SEED, PDA_BANK_INSURANCE_VAULT_SEED, PDA_BANK_LIQUIDITY_VAULT_AUTH_SEED, PDA_BANK_LIQUIDITY_VAULT_SEED, PRIORITY_TX_SIZE, PROGRAM_ID, PYTH_PRICE_CONF_INTERVALS, PYTH_PUSH_ORACLE_ID, PriotitizationFeeLevels, SINGLE_POOL_PROGRAM_ID, SKIP_SIMULATION, STAKE_CONFIG_ID$1 as STAKE_CONFIG_ID, STAKE_PROGRAM_ID, SWB_PRICE_CONF_INTERVALS, SYSTEM_PROGRAM_ID, SYSVAR_CLOCK_ID, SYSVAR_RENT_ID, SYSVAR_STAKE_HISTORY_ID, TRANSFER_ACCOUNT_AUTHORITY_FLAG, TransactionArenaKeyMap, TransactionConfigMap, TransactionType, USDC_DECIMALS, USDC_MINT, WSOL_EXTENDED_METADATA, WSOL_MINT, addTransactionMetadata, aprToApy, apyToApr, bankExtendedMetadataOverrideSchema, bigNumberToWrappedI80F48, bpsToPercentile, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dynamicNumeralFormatter, fetchBanksExtendedMetadata, floor, getAccountKeys, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getRecentPrioritizationFeesByPercentile, getTxSize, getValueInsensitive, groupedNumberFormatter, groupedNumberFormatterDyn, isV0Tx, legacyTxToV0Tx, median, microLamportsToUi, nativeToUi, numeralFormatter, parseBanksMetadataOverride, percentFormatter, percentFormatterDyn, percentFormatterMod, replaceV0TxBlockhash, replaceV0TxInstructions, setTimeoutPromise, shortenAddress, sleep, splitInstructionsToFitTransactions, toBigNumber, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, wrappedI80F48toBigNumber };
1193
- //# sourceMappingURL=common-DSb1joUt.js.map
1193
+ //# sourceMappingURL=common-CsZ-YSuW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-CsZ-YSuW.js","names":["data: unknown","overrideMetadata","name","symbol","metadataMap: BankExtendedMetadataMap","payer: Keypair","tx: T","txs: T[]","value: number","decimals: number","values: number[]","map: Record<string, T>","key: string","key","ms: number","array: T[]","size: number","duration: number","message: string","connection: Connection","pks: string[]","batchChunkSize: number","maxAccountsChunkSize: number","accountInfos: Array<AccountInfo<string[]> | null>","batchResults: Result[]","allAccountInfos: Array<AccountInfo<Buffer> | null>","allAccountInfos: Array<AccountInfo<Buffer>>","chunkSize: number","chunks: T[][]","chunks","TransactionConfigMap: Record<TransactionType, TransactionConfig>","TransactionArenaKeyMap: Partial<Record<TransactionType, PublicKey>>","DISABLED_FLAG: number","FLASHLOAN_ENABLED_FLAG: number","TRANSFER_ACCOUNT_AUTHORITY_FLAG: number","WSOL_EXTENDED_METADATA: BankExtendedMetadata","DEFAULT_COMMITMENT: Commitment","DEFAULT_SEND_OPTS: SendOptions","DEFAULT_CONFIRM_OPTS: ConfirmOptions","STAKE_CONFIG_ID","tx: Transaction | VersionedTransaction","tx: VersionedTransaction | Transaction","lookupTableAccounts: AddressLookupTableAccount[]","idl: Idl","encoded: Buffer","tx: VersionedTransaction","transaction: Transaction","opts?: UpdateTxOptions","transaction: VersionedTransaction","instructions: TransactionInstruction[]","ix1: TransactionInstruction","ix2: TransactionInstruction","additionalInstructions: TransactionInstruction[]","replaceOnly?: boolean","updatedAdditionalIxs: TransactionInstruction[]","blockhash: string","transaction: T","options: ExtendedTransactionProperties","data: Buffer","instruction: TransactionInstruction","tx: SolanaTransaction","ui: number","limitCU: number","microLamports: number","mandatoryIxs: TransactionInstruction[]","ixs: TransactionInstruction[]","opts: {\n blockhash: string;\n payerKey: PublicKey;\n luts: AddressLookupTableAccount[];\n }","result: VersionedTransaction[]","buffer: TransactionInstruction[]","extraIxs: TransactionInstruction[]","opts: {\n blockhash: string;\n payerKey: PublicKey;\n luts: AddressLookupTableAccount[];\n }","opts","mandatoryIxs","connection: Connection","config: GetRecentPrioritizationFeesByPercentileConfig","slotsToReturn?: number","median","config: any","rpcRequest: any","key: { toBase58: () => any }","promises: Array<Promise<void>>","tritonRpcResponse: RpcResponse | undefined","fallbackRpcResponse: RpcResponse | undefined","recentPrioritizationFees: RecentPrioritizationFees[]","apy: number","compoundingFrequency: number","apr: number","apyCap: number","principal: number","durationInYears: number","interest: number","wrapped: WrappedI80F48","value: Amount","BN","amount: Amount","amt: number","amount: Amount | BN","amt: BigNumber","decimals: number","pubkey: Address","bps: number","banksAndOracles: PublicKey[][]","locale: string | string[] | undefined","options: Intl.NumberFormatOptions | undefined","value: number | bigint","value: number","options: dynamicNumeralFormatterOptions","opts: { minFractionDigits: number; maxFractionDigits: number }","percentFormatter","price: number","style: \"currency\" | \"decimal\""],"sources":["../src/common/bank-metadata.ts","../src/common/nodeWallet.ts","../src/common/math.ts","../src/common/misc.ts","../src/common/modules/transactions/transaction.types.ts","../src/constants/bank.ts","../src/constants/misc.ts","../src/constants/flags.ts","../src/constants/tokens.ts","../src/constants/defaults.ts","../src/constants/programs.ts","../src/common/modules/transactions/transaction.utils.ts","../src/common/priority.ts","../src/common/utils/accounting.utils.ts","../src/common/utils/conversion.utils.ts","../src/common/utils/formatters.utils.ts"],"sourcesContent":["import type { PublicKey } from \"@solana/web3.js\";\nimport { z } from \"zod\";\nimport type { MetadataService } from \"@/services\";\nimport type { TLogger } from \"@/types\";\n\nexport const bankExtendedMetadataOverrideSchema = z.object({\n name: z.string().optional(),\n symbol: z.string().optional(),\n logoURI: z.string().url().optional(),\n\n // TODO)) [later] remove these if not used anywhere\n address: z.string().optional(),\n mint: z.string().optional(),\n\n // TODO)) added in new IDL version\n validatorVoteAccount: z.string().optional(),\n});\nexport type BankExtendedMetadataOverride = z.infer<typeof bankExtendedMetadataOverrideSchema>;\n\nexport type BanksExtendedMetadataOverrideMap = {\n [symbol: string]: BankExtendedMetadataOverride;\n};\n\n/* example data:\n{\n\t\"USDC\": { \"logoURI\": \"https://example.com/usdc.png\" },\n\t\"WSOL\": { \"symbol\": \"SOL\", }\n}\n*/\nexport const parseBanksMetadataOverride = (data: unknown): BanksExtendedMetadataOverrideMap => {\n return z.record(z.string(), bankExtendedMetadataOverrideSchema).parse(data);\n};\n\nexport interface BankExtendedMetadata {\n // on chain metadata\n name: string;\n symbol: string;\n uri: string;\n additionalMetadata: Array<readonly [string, string]>;\n\n // TODO)) [later] get logoURI from uri or image server\n logoURI?: string;\n address?: string;\n mint: string;\n\n // TODO)) added in new IDL version\n validatorVoteAccount?: string;\n}\n\n/**\n * NOTE: map key is base58 of mint public key\n */\nexport type BankExtendedMetadataMap = Map<string, BankExtendedMetadata>;\n\nexport const fetchBanksExtendedMetadata = async ({\n mintsWithOwner,\n metadataService,\n logger,\n overrideBanksMetadata,\n}: {\n mintsWithOwner: Array<{ mint: PublicKey; owner: PublicKey }>;\n metadataService: MetadataService;\n logger: TLogger;\n overrideBanksMetadata?: BanksExtendedMetadataOverrideMap;\n}): Promise<BankExtendedMetadataMap> => {\n const metas = await metadataService.forMints(mintsWithOwner.map(({ mint }) => mint));\n const results = await Promise.all(\n mintsWithOwner.map(async ({ mint }): Promise<BankExtendedMetadata | null> => {\n const mintAddress = mint.toBase58();\n const tokenMeta = metas[mintAddress];\n if (!tokenMeta) {\n logger.warn({ mintStr: mintAddress }, \"fetched metadata was null\");\n\n if (!overrideBanksMetadata) {\n return null;\n }\n\n // Try to get metadata from provided override if possible\n const overrideMetadata = Object.values(overrideBanksMetadata).find((m) => m?.mint === mintAddress);\n if (!overrideMetadata) {\n return null;\n }\n\n const { name, symbol, logoURI } = overrideMetadata;\n if (name && symbol) {\n return {\n mint: mintAddress,\n name,\n symbol,\n logoURI,\n uri: \"\",\n additionalMetadata: [],\n };\n }\n\n logger.warn(\n {\n overrideMetadata,\n mint: mintAddress,\n },\n \"override metadata exists but is missing required fields: name, symbol, mint\",\n );\n return null;\n }\n\n const { name, symbol, image, uri } = tokenMeta;\n const overrideMetadata = overrideBanksMetadata?.[symbol];\n return {\n mint: mintAddress,\n name: overrideMetadata?.name ?? name,\n symbol: overrideMetadata?.symbol ?? symbol,\n logoURI: overrideMetadata?.logoURI ?? image,\n uri: uri ?? \"\",\n additionalMetadata: [],\n } satisfies BankExtendedMetadata;\n }),\n );\n\n const metadataMap: BankExtendedMetadataMap = new Map();\n for (const result of results) {\n if (!result) continue;\n metadataMap.set(result.mint, result);\n }\n\n return metadataMap;\n};\n\nexport interface BankMetadata {\n validatorVoteAccount?: string;\n tokenAddress: string;\n tokenName: string;\n tokenSymbol: string;\n}\n\nexport type BankMetadataMap = { [address: string]: BankMetadata };\n","import type { Keypair, PublicKey, Transaction, VersionedTransaction } from \"@solana/web3.js\";\nimport type { Wallet } from \"./types\";\n\n/**\n * NodeWallet\n *\n * Anchor-compliant wallet implementation.\n */\nexport class NodeWallet implements Wallet {\n /**\n * @param payer Keypair of the associated payer\n */\n constructor(readonly payer: Keypair) {}\n\n async signTransaction<T extends Transaction | VersionedTransaction>(tx: T): Promise<T> {\n if (\"version\" in tx) {\n tx.sign([this.payer]);\n } else {\n tx.partialSign(this.payer);\n }\n return tx;\n }\n\n async signAllTransactions<T extends Transaction | VersionedTransaction>(txs: T[]): Promise<T[]> {\n return txs.map((tx) => {\n if (\"version\" in tx) {\n tx.sign([this.payer]);\n return tx;\n } else {\n tx.partialSign(this.payer);\n return tx;\n }\n });\n }\n\n get publicKey(): PublicKey {\n return this.payer.publicKey;\n }\n}\n","function floor(value: number, decimals: number): number {\n return Math.floor(value * 10 ** decimals) / 10 ** decimals;\n}\n\nfunction ceil(value: number, decimals: number): number {\n return Math.ceil(value * 10 ** decimals) / 10 ** decimals;\n}\n\nfunction median(values: number[]): number {\n if (values.length === 0) {\n throw new Error(\"Input array is empty\");\n }\n\n // Sorting values, preventing original array\n // from being mutated.\n values = [...values].sort((a, b) => a - b);\n\n const half = Math.floor(values.length / 2);\n\n return values.length % 2 ? values[half] : (values[half - 1] + values[half]) / 2;\n}\n\nexport { ceil, floor, median };\n","import { type AccountInfo, type Connection, PublicKey } from \"@solana/web3.js\";\n\nexport function getValueInsensitive<T>(map: Record<string, T>, key: string): T {\n const lowerCaseLabel = key.toLowerCase();\n for (const key in map) {\n if (key.toLowerCase() === lowerCaseLabel) {\n return map[key];\n }\n }\n throw new Error(`Token metadata not found for ${key}`);\n}\n\n/**\n * @internal\n */\nexport function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function chunks<T>(array: T[], size: number): T[][] {\n return Array.apply(0, new Array(Math.ceil(array.length / size))).map((_, index) =>\n array.slice(index * size, (index + 1) * size),\n );\n}\n\nexport function setTimeoutPromise(duration: number, message: string): Promise<Error> {\n return new Promise((_, reject) => setTimeout(() => reject(new Error(message)), duration));\n}\n\ninterface Result {\n jsonrpc: string;\n result: {\n context: { slot: number };\n value: Array<AccountInfo<string[]> | null>;\n };\n}\n\nexport async function chunkedGetRawMultipleAccountInfos(\n connection: Connection,\n pks: string[],\n batchChunkSize: number = 1000,\n maxAccountsChunkSize: number = 100,\n): Promise<[number, Map<string, AccountInfo<Buffer>>]> {\n const accountInfoMap = new Map<string, AccountInfo<Buffer>>();\n let contextSlot = 0;\n\n const batches = chunkArray(pks, batchChunkSize);\n\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n\n const batchRequest = chunkArray(batch, maxAccountsChunkSize).map((pubkeys) => ({\n methodName: \"getMultipleAccounts\",\n args: connection._buildArgs([pubkeys], \"confirmed\", \"base64\"),\n }));\n\n let accountInfos: Array<AccountInfo<string[]> | null> = [];\n let retries = 0;\n const maxRetries = 3;\n\n while (retries < maxRetries && accountInfos.length === 0) {\n try {\n accountInfos = await connection\n // @ts-ignore\n ._rpcBatchRequest(batchRequest)\n .then((batchResults: Result[]) => {\n contextSlot = Math.max(...batchResults.map((res) => res.result.context.slot));\n\n const accounts = batchResults.reduce(\n (acc, res) => {\n acc.push(...res.result.value);\n return acc;\n },\n [] as Result[\"result\"][\"value\"],\n );\n\n return accounts;\n });\n } catch (error) {\n retries++;\n }\n }\n\n if (accountInfos.length === 0) {\n throw new Error(`Failed to fetch account infos after ${maxRetries} retries`);\n }\n\n accountInfos.forEach((item, index) => {\n const publicKey = batch[index];\n if (item) {\n accountInfoMap.set(publicKey, {\n ...item,\n owner: new PublicKey(item.owner),\n data: Buffer.from(item.data[0], \"base64\"),\n });\n }\n });\n }\n\n return [contextSlot, accountInfoMap];\n}\n\nexport async function chunkedGetRawMultipleAccountInfoOrderedWithNulls(\n connection: Connection,\n pks: string[],\n batchChunkSize: number = 1000,\n maxAccountsChunkSize: number = 100,\n): Promise<Array<AccountInfo<Buffer> | null>> {\n const allAccountInfos: Array<AccountInfo<Buffer> | null> = [];\n\n const batches = chunkArray(pks, batchChunkSize);\n\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n\n const batchRequest = chunkArray(batch, maxAccountsChunkSize).map((pubkeys) => ({\n methodName: \"getMultipleAccounts\",\n args: connection._buildArgs([pubkeys], \"confirmed\", \"base64\"),\n }));\n\n let accountInfos: Array<AccountInfo<string[]> | null> = [];\n let retries = 0;\n const maxRetries = 3;\n\n while (retries < maxRetries && accountInfos.length === 0) {\n try {\n accountInfos = await connection\n // @ts-ignore\n ._rpcBatchRequest(batchRequest)\n .then((batchResults: Result[]) => {\n const accounts = batchResults.reduce(\n (acc, res) => {\n acc.push(...res.result.value);\n return acc;\n },\n [] as Result[\"result\"][\"value\"],\n );\n\n return accounts;\n });\n } catch (error) {\n retries++;\n }\n }\n\n if (accountInfos.length === 0) {\n throw new Error(`Failed to fetch account infos after ${maxRetries} retries`);\n }\n\n accountInfos.forEach((item) => {\n if (item) {\n allAccountInfos.push({\n ...item,\n owner: new PublicKey(item.owner),\n data: Buffer.from(item.data[0], \"base64\"),\n });\n } else {\n allAccountInfos.push(null);\n }\n });\n }\n\n return allAccountInfos;\n}\n\nexport async function chunkedGetRawMultipleAccountInfoOrdered(\n connection: Connection,\n pks: string[],\n batchChunkSize: number = 1000,\n maxAccountsChunkSize: number = 100,\n): Promise<Array<AccountInfo<Buffer>>> {\n const allAccountInfos: Array<AccountInfo<Buffer>> = [];\n\n const batches = chunkArray(pks, batchChunkSize);\n\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n\n const batchRequest = chunkArray(batch, maxAccountsChunkSize).map((pubkeys) => ({\n methodName: \"getMultipleAccounts\",\n args: connection._buildArgs([pubkeys], \"confirmed\", \"base64\"),\n }));\n\n let accountInfos: Array<AccountInfo<string[]> | null> = [];\n let retries = 0;\n const maxRetries = 3;\n\n while (retries < maxRetries && accountInfos.length === 0) {\n try {\n accountInfos = await connection\n // @ts-ignore\n ._rpcBatchRequest(batchRequest)\n .then((batchResults: Result[]) => {\n const accounts = batchResults.reduce(\n (acc, res) => {\n acc.push(...res.result.value);\n return acc;\n },\n [] as Result[\"result\"][\"value\"],\n );\n\n return accounts;\n });\n } catch (error) {\n retries++;\n }\n }\n\n if (accountInfos.length === 0) {\n throw new Error(`Failed to fetch account infos after ${maxRetries} retries`);\n }\n\n accountInfos.forEach((item) => {\n if (item) {\n allAccountInfos.push({\n ...item,\n owner: new PublicKey(item.owner),\n data: Buffer.from(item.data[0], \"base64\"),\n });\n }\n });\n }\n\n return allAccountInfos;\n}\n\nfunction chunkArray<T>(array: T[], chunkSize: number): T[][] {\n const chunks: T[][] = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n chunks.push(array.slice(i, i + chunkSize));\n }\n return chunks;\n}\n","import {\n type AddressLookupTableAccount,\n PublicKey,\n type Signer,\n type Transaction,\n type VersionedTransaction,\n} from \"@solana/web3.js\";\n\nexport enum TransactionType {\n // BASE LENDING ACTIONS\n DEPOSIT = \"DEPOSIT\",\n WITHDRAW = \"WITHDRAW\",\n REPAY = \"REPAY\",\n BORROW = \"BORROW\",\n\n // FLASHLOANS\n FLASHLOAN = \"FLASHLOAN\",\n LOOP = \"LOOP\",\n REPAY_COLLAT = \"REPAY_COLLAT\",\n LONG = \"LONG\",\n SHORT = \"SHORT\",\n\n // SETUP\n CREATE_ACCOUNT = \"CREATE_ACCOUNT\",\n CREATE_ATA = \"CREATE_ATA\",\n\n // ACCOUNT MANAGEMENT\n CLOSE_ACCOUNT = \"CLOSE_ACCOUNT\",\n CLOSE_POSITION = \"CLOSE_POSITION\",\n MOVE_POSITION_WITHDRAW = \"MOVE_POSITION_WITHDRAW\",\n MOVE_POSITION_DEPOSIT = \"MOVE_POSITION_DEPOSIT\",\n WITHDRAW_ALL = \"WITHDRAW_ALL\",\n TRANSFER_AUTH = \"TRANSFER_AUTH\",\n\n // SWB\n CRANK = \"CRANK\",\n\n // NATIVE STAKE ACTIONS\n DEPOSIT_STAKE = \"DEPOSIT_STAKE\",\n WITHDRAW_STAKE = \"WITHDRAW_STAKE\",\n INITIALIZE_STAKED_POOL = \"INITIALIZE_STAKED_POOL\",\n ADD_STAKED_BANK = \"ADD_STAKED_BANK\",\n\n MERGE_STAKE_ACCOUNTS = \"MERGE_STAKE_ACCOUNTS\",\n\n // LST\n STAKE_TO_STAKE = \"STAKE_TO_STAKE\",\n MINT_LST_NATIVE = \"MINT_LST_NATIVE\",\n SWAP_TO_SOL = \"SWAP_TO_SOL\",\n SOL_TO_LST = \"SOL_TO_LST\",\n UNSTAKE_LST = \"UNSTAKE_LST\",\n\n // EMISSIONS\n WITHDRAW_EMISSIONS = \"WITHDRAW_EMISSIONS\",\n\n // LIQUIDATE\n LIQUIDATE_ACCOUNT = \"LIQUIDATE_ACCOUNT\",\n\n // BANK and GROUPS\n CREATE_PERM_BANK = \"CREATE_PERM_BANK\",\n CREATE_GROUP = \"CREATE_GROUP\",\n JUPITER_SWAP = \"JUPITER_SWAP\",\n}\ninterface TransactionConfig {\n label: (infoProps?: Record<string, any>) => string; // Always a function\n fallback?: string; // Only for dynamic messages\n}\n\nexport const TransactionConfigMap: Record<TransactionType, TransactionConfig> = {\n // BASE LENDING ACTIONS\n [TransactionType.DEPOSIT]: {\n label: ({ amount, token } = {}) => (amount && token ? `Deposit ${amount} ${token}` : \"Deposit\"),\n },\n [TransactionType.WITHDRAW]: {\n label: ({ amount, token } = {}) => (amount && token ? `Withdraw ${amount} ${token}` : \"Withdraw\"),\n },\n [TransactionType.REPAY]: {\n label: ({ amount, token } = {}) => (amount && token ? `Repay ${amount} ${token}` : \"Repay\"),\n },\n [TransactionType.BORROW]: {\n label: ({ amount, token } = {}) => (amount && token ? `Borrow ${amount} ${token}` : \"Borrow\"),\n },\n\n // FLASHLOANS\n [TransactionType.FLASHLOAN]: { label: () => \"Executing Flashloan\" },\n [TransactionType.LOOP]: {\n label: ({ depositAmount, depositToken, borrowAmount, borrowToken } = {}) =>\n depositAmount && depositToken && borrowAmount && borrowToken\n ? `Loop ${depositAmount} ${depositToken} with ${borrowAmount} ${borrowToken}`\n : \"Loop\",\n },\n [TransactionType.REPAY_COLLAT]: {\n label: ({ repayAmount, repayToken, amount, token } = {}) =>\n repayAmount && repayToken && amount && token\n ? `Repay ${repayAmount} ${token} with ${amount} ${repayToken}`\n : \"Repay with collateral\",\n },\n [TransactionType.LONG]: {\n label: ({ depositToken, depositAmount, borrowToken } = {}) =>\n depositToken && depositAmount && borrowToken\n ? `Long ${depositToken} with ${depositAmount} ${borrowToken}`\n : \"Open long position\",\n },\n [TransactionType.SHORT]: {\n label: ({ borrowToken, depositAmount, depositToken } = {}) =>\n borrowToken && depositAmount && depositToken\n ? `Short ${borrowToken} with ${depositAmount} ${depositToken}`\n : \"Open short position\",\n },\n\n // SWB\n [TransactionType.CRANK]: { label: () => \"Updating latest prices\" },\n [TransactionType.JUPITER_SWAP]: {\n label: ({ originAmount, originToken, destinationAmount, destinationToken } = {}) =>\n originAmount && originToken && destinationAmount && destinationToken\n ? `Swap ${originAmount} ${originToken} for ${destinationAmount} ${destinationToken}`\n : \"Swap tokens\",\n },\n\n // SETUP\n [TransactionType.CREATE_ACCOUNT]: { label: () => \"Create lendr account\" },\n [TransactionType.CREATE_ATA]: { label: () => \"Configure token account\" },\n\n // ACCOUNT MANAGEMENT\n [TransactionType.CLOSE_ACCOUNT]: { label: () => \"Close lendr account\" },\n [TransactionType.CLOSE_POSITION]: { label: () => \"Close position\" },\n [TransactionType.MOVE_POSITION_WITHDRAW]: {\n label: ({ originAccountAddress } = {}) => `Move position from ${originAccountAddress}`,\n },\n [TransactionType.MOVE_POSITION_DEPOSIT]: {\n label: ({ destinationAccountAddress } = {}) => `Move position to ${destinationAccountAddress}`,\n },\n [TransactionType.TRANSFER_AUTH]: { label: () => \"Authorize account transfer\" },\n\n // NATIVE STAKE ACTIONS\n [TransactionType.DEPOSIT_STAKE]: {\n label: ({ amount, token } = {}) =>\n amount && token ? `Authorize stake account and deposit ${amount} ${token}` : \"Authorize stake and deposit\",\n },\n [TransactionType.WITHDRAW_STAKE]: {\n label: ({ amount, token } = {}) => \"Authorize stake account\",\n },\n [TransactionType.INITIALIZE_STAKED_POOL]: { label: () => \"Initialize stake pool\" },\n [TransactionType.ADD_STAKED_BANK]: { label: () => \"Create staked asset bank\" },\n [TransactionType.MERGE_STAKE_ACCOUNTS]: { label: () => \"Merge stake accounts\" },\n\n // LST (Liquid Staking Tokens)\n [TransactionType.STAKE_TO_STAKE]: { label: () => \"Convert stake\" },\n [TransactionType.MINT_LST_NATIVE]: { label: () => \"Mint LST\" },\n [TransactionType.SWAP_TO_SOL]: {\n label: ({ swapAmount, token } = {}) => (swapAmount && token ? `Swap ${swapAmount} ${token} to SOL` : \"Swap to SOL\"),\n },\n [TransactionType.SOL_TO_LST]: {\n label: ({ amount } = {}) => (amount ? `Mint LST with ${amount} SOL` : \"Mint LST with SOL\"),\n },\n [TransactionType.UNSTAKE_LST]: { label: ({ amount } = {}) => (amount ? `Unstake ${amount} LST` : \"Unstake LST\") },\n // EMISSIONS\n [TransactionType.WITHDRAW_EMISSIONS]: { label: () => \"Withdraw emissions\" },\n\n // LIQUIDATE\n [TransactionType.LIQUIDATE_ACCOUNT]: { label: () => \"Liquidate account\" },\n\n // BANK and GROUPS\n [TransactionType.CREATE_PERM_BANK]: { label: () => \"Create permissionless bank\" },\n [TransactionType.CREATE_GROUP]: { label: () => \"Create lendr group\" },\n [TransactionType.WITHDRAW_ALL]: {\n label: ({ amount, token } = {}) => (amount && token ? `Withdraw ${amount} ${token}` : \"Withdraw all\"),\n },\n};\n\nexport const TransactionArenaKeyMap: Partial<Record<TransactionType, PublicKey>> = {\n [TransactionType.DEPOSIT]: new PublicKey(\"ArenaDeposit1111111111111111111111111111111\"),\n [TransactionType.WITHDRAW]: new PublicKey(\"ArenaWithdraw111111111111111111111111111111\"),\n [TransactionType.BORROW]: new PublicKey(\"ArenaBorrow11111111111111111111111111111111\"),\n [TransactionType.REPAY]: new PublicKey(\"ArenaRepay111111111111111111111111111111111\"),\n [TransactionType.REPAY_COLLAT]: new PublicKey(\"ArenaRepayCo11at111111111111111111111111111\"),\n [TransactionType.LONG]: new PublicKey(\"ArenaLong1111111111111111111111111111111111\"),\n [TransactionType.SHORT]: new PublicKey(\"ArenaShort111111111111111111111111111111111\"),\n [TransactionType.CLOSE_POSITION]: new PublicKey(\"ArenaC1ose111111111111111111111111111111111\"),\n // Add more mappings if needed\n};\n\nexport type ExtendedTransactionProperties = {\n type: TransactionType;\n signers?: Array<Signer>;\n addressLookupTables?: AddressLookupTableAccount[];\n unitsConsumed?: number;\n};\n\nexport type ExtendedTransaction = Transaction & ExtendedTransactionProperties;\n\nexport type ExtendedV0Transaction = VersionedTransaction & ExtendedTransactionProperties;\n\nexport type SolanaTransaction = ExtendedTransaction | ExtendedV0Transaction;\n","export const PDA_BANK_LIQUIDITY_VAULT_AUTH_SEED = Buffer.from(\n\t\"liquidity_vault_auth\",\n);\nexport const PDA_BANK_INSURANCE_VAULT_AUTH_SEED = Buffer.from(\n\t\"insurance_vault_auth\",\n);\nexport const PDA_BANK_FEE_VAULT_AUTH_SEED = Buffer.from(\"fee_vault_auth\");\n\nexport const PDA_BANK_LIQUIDITY_VAULT_SEED = Buffer.from(\"liquidity_vault\");\nexport const PDA_BANK_INSURANCE_VAULT_SEED = Buffer.from(\"insurance_vault\");\nexport const PDA_BANK_FEE_VAULT_SEED = Buffer.from(\"fee_vault\");\n","import { PublicKey } from \"@solana/web3.js\";\nimport BigNumber from \"bignumber.js\";\n\nexport const HOURS_PER_YEAR = 365.25 * 24;\nexport const MAX_U64 = BigInt(\"18446744073709551615\").toString();\n\nexport const PYTH_PRICE_CONF_INTERVALS = new BigNumber(2.12);\nexport const SWB_PRICE_CONF_INTERVALS = new BigNumber(1.96);\nexport const MAX_CONFIDENCE_INTERVAL_RATIO = new BigNumber(0.05);\nexport const PYTH_PUSH_ORACLE_ID = new PublicKey(\"pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT\");\n\nexport const GROUP_PK = new PublicKey(process.env.LENDR_GROUP_PK ?? \"4vDRNkXaeAcwJULZCQFFdNBM295sD8hSKQt3RaMwsRFc\");\n\n// TODO)) change default program address to IDL\nexport const PROGRAM_ID = new PublicKey(process.env.LENDR_PROGRAM_ID ?? \"89ZQeCPwkzSPJyTpktCKWNY6hBWMKuYt47R85Jo36yyh\");\nexport const DEFAULT_CLUSTER = process.env.LENDR_CLUSTER_OVERRIDE ?? \"mainnet\";\n","export const DISABLED_FLAG: number = 1 << 0;\nexport const FLASHLOAN_ENABLED_FLAG: number = 1 << 2;\nexport const TRANSFER_ACCOUNT_AUTHORITY_FLAG: number = 1 << 3;\n","import { PublicKey } from \"@solana/web3.js\";\nimport type { BankExtendedMetadata } from \"@/common/bank-metadata\";\n\n//TODO_Change\nexport const WSOL_MINT = new PublicKey(\"So11111111111111111111111111111111111111112\");\n\nexport const WSOL_EXTENDED_METADATA: BankExtendedMetadata = {\n symbol: \"wSOL\",\n name: \"Wrapped SOL\",\n address: \"D7zkaUgFUDkhQHExySRxokL3Fa1GFnnuiVDTs9yMrFHY\",\n logoURI:\n \"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png\",\n additionalMetadata: [],\n uri: \"\",\n mint: WSOL_MINT.toBase58(),\n};\n\nexport const LST_MINT = new PublicKey(\"LSTxxxnJzKDFSLr4dUkPcmCf5VyryEqzPLz5j4bpxFp\");\n\nexport const USDC_MINT = new PublicKey(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\");\nexport const DUMMY_USDC_MINT = new PublicKey(\"JAiSLhTCvAhGM4SojCYGoTPuqjw7KaCsopvRuNryzbML\");\nexport const USDC_DECIMALS = 6;\n","import type { Commitment, ConfirmOptions, SendOptions } from \"@solana/web3.js\";\n\nexport const DEFAULT_COMMITMENT: Commitment = \"processed\";\n\nexport const DEFAULT_SEND_OPTS: SendOptions = {\n\tskipPreflight: false,\n\tpreflightCommitment: DEFAULT_COMMITMENT,\n};\n\nexport const DEFAULT_CONFIRM_OPTS: ConfirmOptions = {\n\tcommitment: DEFAULT_COMMITMENT,\n\t...DEFAULT_SEND_OPTS,\n};\n\nexport const MAX_TX_SIZE = 1232;\nexport const MAX_ACCOUNT_KEYS = 64;\nexport const BUNDLE_TX_SIZE = 81;\nexport const PRIORITY_TX_SIZE = 44;\n\nexport const SKIP_SIMULATION = false;\n\nexport const DEFAULT_ORACLE_MAX_AGE = 60; // seconds\n","import { PublicKey } from \"@solana/web3.js\";\n\nexport const LUT_PROGRAM_AUTHORITY_INDEX = 5;\nexport const JUPITER_V6_PROGRAM = new PublicKey(\"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4\");\nexport const LENDR_PROGRAM = new PublicKey(\"89ZQeCPwkzSPJyTpktCKWNY6hBWMKuYt47R85Jo36yyh\");\nexport const SINGLE_POOL_PROGRAM_ID = new PublicKey(\"SVSPxpvHdN29nkVg9rPapPNDddN5DipNLRUFhyjFThE\");\nexport const STAKE_PROGRAM_ID = new PublicKey(\"Stake11111111111111111111111111111111111111\");\nexport const MPL_METADATA_PROGRAM_ID = new PublicKey(\"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\");\nexport const SYSTEM_PROGRAM_ID = new PublicKey(\"11111111111111111111111111111111\");\nexport const SYSVAR_RENT_ID = new PublicKey(\"SysvarRent111111111111111111111111111111111\");\nexport const SYSVAR_CLOCK_ID = new PublicKey(\"SysvarC1ock11111111111111111111111111111111\");\nexport const SYSVAR_STAKE_HISTORY_ID = new PublicKey(\"SysvarStakeHistory1111111111111111111111111\");\nexport const STAKE_CONFIG_ID = new PublicKey(\"StakeConfig11111111111111111111111111111111\");\n","import { BorshInstructionCoder, type Idl, type Instruction } from \"@coral-xyz/anchor\";\nimport {\n type AddressLookupTableAccount,\n ComputeBudgetProgram,\n LAMPORTS_PER_SOL,\n type PublicKey,\n type Transaction,\n type TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n} from \"@solana/web3.js\";\nimport type { ExtendedTransactionProperties, SolanaTransaction } from \"./transaction.types\";\nimport {MAX_TX_SIZE} from \"@/constants\";\n\n/**\n * Determines if a given transaction is a VersionedTransaction.\n * This function checks for the presence of a 'message' property to identify\n * if the transaction is of type VersionedTransaction.\n *\n * @param tx - The transaction object, which can be either a VersionedTransaction or a Transaction.\n * @returns A boolean indicating whether the transaction is a VersionedTransaction.\n */\nexport function isV0Tx(tx: Transaction | VersionedTransaction): tx is VersionedTransaction {\n return \"message\" in tx;\n}\n\n/**\n * Calculates the size of a Solana transaction in bytes.\n * This function considers the number of required signatures and other transaction components.\n *\n * @param tx - The transaction object, which can be either a VersionedTransaction or a Transaction.\n * @returns The size of the transaction in bytes.\n */\nexport function getTxSize(tx: VersionedTransaction | Transaction): number {\n const isVersioned = isV0Tx(tx);\n const numSigners = tx.signatures.length;\n const numRequiredSignatures = isVersioned ? tx.message.header.numRequiredSignatures : 0;\n const feePayerSize = isVersioned || tx.feePayer ? 0 : 32;\n const signaturesSize = (numRequiredSignatures - numSigners) * 64 + 1;\n\n try {\n const baseTxSize = isVersioned\n ? tx.serialize().length\n : tx.serialize({ requireAllSignatures: false, verifySignatures: false }).length;\n return baseTxSize + feePayerSize + signaturesSize;\n } catch (error) {\n // tx is overflowing\n return 9999;\n }\n}\n\nexport function getAccountKeys(\n tx: VersionedTransaction | Transaction,\n lookupTableAccounts: AddressLookupTableAccount[],\n): number {\n const isVersioned = isV0Tx(tx);\n\n try {\n if (isVersioned) {\n const message = TransactionMessage.decompile(tx.message, { addressLookupTableAccounts: lookupTableAccounts });\n return message.compileToLegacyMessage().getAccountKeys().length;\n } else {\n return tx.compileMessage().getAccountKeys().length;\n }\n } catch (error) {\n return 9999;\n }\n}\n\n/**\n * Decodes a Solana transaction instruction using the provided Interface Definition Language (IDL).\n * This function utilizes the BorshInstructionCoder to interpret the encoded instruction data.\n *\n * @param idl - The Interface Definition Language object that defines the structure of the instruction.\n * @param encoded - The Buffer containing the encoded instruction data.\n * @returns The decoded instruction object.\n */\nexport function decodeInstruction(idl: Idl, encoded: Buffer): Instruction | null {\n const coder = new BorshInstructionCoder(idl);\n return coder.decode(encoded, \"base58\");\n}\n\n/**\n * Decompiles a VersionedTransaction into a TransactionMessage.\n *\n * @param tx - The VersionedTransaction to be decompiled.\n * @param lookupTableAccounts - An array of AddressLookupTableAccount used for decompiling the transaction message.\n * @returns A TransactionMessage object representing the decompiled transaction.\n */\nexport function decompileV0Transaction(tx: VersionedTransaction, lookupTableAccounts: AddressLookupTableAccount[]) {\n return TransactionMessage.decompile(tx.message, { addressLookupTableAccounts: lookupTableAccounts });\n}\n\n/**\n * Options for updating a transaction.\n * - `feePayer`: Optional public key of the fee payer. Defaults to the transaction's fee payer.\n * - `blockhash`: Optional blockhash for the transaction. Defaults to the transaction's recent blockhash.\n * - `addressLookupTables`: Optional array of address lookup table accounts for the transaction.\n * - `additionalIxs`: Optional array of additional transaction instructions to include.\n */\ntype UpdateTxOptions = {\n feePayer?: PublicKey;\n blockhash?: string;\n addressLookupTables?: AddressLookupTableAccount[];\n additionalIxs?: TransactionInstruction[];\n replaceOnly?: boolean;\n};\n\n/**\n * Converts a legacy Solana transaction to a versioned transaction. *\n * @param transaction - The legacy transaction to be converted.\n * @param opts - Optional parameters for the conversion process.\n * @returns A VersionedTransaction object representing the converted transaction.\n * @throws Will throw an error if the fee payer or blockhash is not provided.\n */\nexport function legacyTxToV0Tx(transaction: Transaction, opts?: UpdateTxOptions): VersionedTransaction {\n const feePayer = opts?.feePayer ?? transaction.feePayer;\n const blockhash = opts?.blockhash ?? transaction.recentBlockhash;\n const additionalIxs = opts?.additionalIxs ?? [];\n const addressLookupTables = opts?.addressLookupTables ?? [];\n\n if (!feePayer || !blockhash) {\n throw new Error(\"Fee payer and blockhash are required\");\n }\n\n const ixs = transaction.instructions;\n const versionedMessage = new TransactionMessage({\n instructions: [...additionalIxs, ...ixs],\n payerKey: feePayer,\n recentBlockhash: blockhash,\n });\n return new VersionedTransaction(versionedMessage.compileToV0Message(addressLookupTables));\n}\n\n/**\n * Updates a VersionedTransaction with new options.\n *\n * This function allows you to modify a given VersionedTransaction by providing\n * additional transaction instructions, address lookup tables, a new fee payer,\n * and a new blockhash. It decompiles the existing transaction, applies the updates,\n * and recompiles it into a new VersionedTransaction.\n *\n * @param transaction - The VersionedTransaction to be updated.\n * @param opts - Optional parameters for updating the transaction.\n * @returns A new VersionedTransaction object with the applied updates.\n * @throws Will throw an error if the fee payer or blockhash is not provided.\n */\nexport function updateV0Tx(transaction: VersionedTransaction, opts?: UpdateTxOptions): VersionedTransaction {\n const additionalIxs = opts?.additionalIxs ?? [];\n const addressLookupTables = opts?.addressLookupTables ?? [];\n let instructions: TransactionInstruction[] = [];\n\n const message = decompileV0Transaction(transaction, addressLookupTables);\n const feePayer = opts?.feePayer ?? message.payerKey;\n const blockhash = opts?.blockhash ?? message.recentBlockhash;\n\n if (additionalIxs.length > 0) {\n instructions = replaceV0TxInstructions(additionalIxs, message.instructions, opts?.replaceOnly);\n } else {\n instructions = message.instructions;\n }\n\n const versionedMessage = new TransactionMessage({\n instructions,\n payerKey: feePayer,\n recentBlockhash: blockhash,\n });\n return new VersionedTransaction(versionedMessage.compileToV0Message(addressLookupTables));\n}\n\n/**\n * Checks if two transaction instructions are identical by comparing their data, program IDs, and account keys.\n *\n * @param ix1 - First transaction instruction to compare\n * @param ix2 - Second transaction instruction to compare\n * @returns True if instructions are identical, false otherwise\n */\nexport function compareInstructions(ix1: TransactionInstruction, ix2: TransactionInstruction): boolean {\n const dataCompare = ix1.data.equals(ix2.data);\n const programIdCompare = ix1.programId.equals(ix2.programId);\n const keysCompare =\n ix1.keys.length === ix2.keys.length &&\n ix1.keys.every((key, index) => {\n const key2 = ix2.keys[index];\n return key.pubkey.equals(key2.pubkey) && key.isSigner === key2.isSigner && key.isWritable === key2.isWritable;\n });\n\n // Instructions are identical only if all components match\n return dataCompare && programIdCompare && keysCompare;\n}\n\nexport function replaceV0TxInstructions(\n additionalInstructions: TransactionInstruction[],\n instructions: TransactionInstruction[],\n replaceOnly?: boolean,\n): TransactionInstruction[] {\n let updatedAdditionalIxs: TransactionInstruction[] = additionalInstructions;\n\n const updatedInstructions = instructions.map((ix) => {\n const programId = ix.programId;\n const additionalIxs = additionalInstructions.filter((a) => a.programId.equals(programId));\n\n if (additionalIxs.length > 0) {\n // TODO add bundle tip check\n if (ix.programId.equals(ComputeBudgetProgram.programId)) {\n const decoded = decodeComputeBudgetInstruction(ix);\n const updatedCuPriceIx = additionalIxs.find(\n (a) => decodeComputeBudgetInstruction(a).instructionType === \"SetComputeUnitPrice\",\n );\n\n const updatedCuLimitIx = additionalIxs.find(\n (a) => decodeComputeBudgetInstruction(a).instructionType === \"SetComputeUnitLimit\",\n );\n // replace priority fee instruction\n if (decoded.instructionType === \"SetComputeUnitPrice\" && updatedCuPriceIx) {\n //subtract the additional instruction from the additional instructions array\n updatedAdditionalIxs = updatedAdditionalIxs.filter((a) => !compareInstructions(a, updatedCuPriceIx));\n return updatedCuPriceIx;\n }\n\n // replace compute budget instruction\n if (decoded.instructionType === \"SetComputeUnitLimit\" && updatedCuLimitIx) {\n //subtract the additional instruction from the additional instructions array\n updatedAdditionalIxs = updatedAdditionalIxs.filter((a) => !compareInstructions(a, updatedCuLimitIx));\n return updatedCuLimitIx;\n }\n }\n }\n return ix;\n });\n\n return [...(replaceOnly ? [] : updatedAdditionalIxs), ...updatedInstructions];\n}\n\nexport function replaceV0TxBlockhash(transaction: VersionedTransaction, blockhash: string): VersionedTransaction {\n const message = transaction.message;\n message.recentBlockhash = blockhash;\n return new VersionedTransaction(message);\n}\n\n/**\n * Enhances a given transaction with additional metadata.\n *\n * @param transaction - The transaction to be enhanced, can be either VersionedTransaction or Transaction.\n * @param options - An object containing optional metadata:\n * - signers: An array of Signer objects that are associated with the transaction.\n * - addressLookupTables: An array of AddressLookupTableAccount objects for address resolution.\n * - unitsConsumed: A number representing the compute units consumed by the transaction.\n * - type: The type of the transaction, as defined by TransactionType.\n * @returns A SolanaTransaction object that includes the original transaction and the additional metadata.\n */\nexport function addTransactionMetadata<T extends Transaction | VersionedTransaction>(\n transaction: T,\n options: ExtendedTransactionProperties,\n): T & ExtendedTransactionProperties {\n return Object.assign(transaction, options);\n}\n\ntype ComputeBudgetInstructionType =\n | \"RequestUnits\"\n | \"RequestHeapFrame\"\n | \"SetComputeUnitLimit\"\n | \"SetComputeUnitPrice\"\n | \"SetLoadedAccountsDataSizeLimit\";\n\nfunction identifyComputeBudgetInstruction(data: Buffer): ComputeBudgetInstructionType {\n const discriminator = data.readUInt8(0); // First byte identifies the instruction type\n\n switch (discriminator) {\n case 0:\n return \"RequestUnits\";\n case 1:\n return \"RequestHeapFrame\";\n case 2:\n return \"SetComputeUnitLimit\";\n case 3:\n return \"SetComputeUnitPrice\";\n case 4:\n return \"SetLoadedAccountsDataSizeLimit\";\n default:\n throw new Error(\"Unknown ComputeBudget instruction discriminator.\");\n }\n}\n\n/**\n * Decodes a ComputeBudget program instruction into a readable format.\n *\n * @param instruction - The ComputeBudget program instruction to decode\n * @returns An object containing the decoded instruction data with fields depending on the instruction type:\n * - RequestUnits: { instructionType: string, units: number, additionalFee: number }\n * - RequestHeapFrame: { instructionType: string, bytes: number }\n * - SetComputeUnitLimit: { instructionType: string, units: number }\n * - SetComputeUnitPrice: { instructionType: string, microLamports: string }\n * - SetLoadedAccountsDataSizeLimit: { instructionType: string, accountDataSizeLimit: number }\n * @throws Error if the instruction data is invalid or the instruction type is unknown\n */\nexport function decodeComputeBudgetInstruction(instruction: TransactionInstruction) {\n const data = Buffer.from(instruction.data || instruction);\n const instructionType = identifyComputeBudgetInstruction(data);\n switch (instructionType) {\n case \"RequestUnits\": {\n if (data.length !== 9) {\n throw new Error(\"Invalid data length for RequestUnits\");\n }\n const units = data.readUInt32LE(1);\n const additionalFee = data.readUInt32LE(5);\n return { instructionType, units, additionalFee };\n }\n case \"RequestHeapFrame\": {\n if (data.length !== 5) {\n throw new Error(\"Invalid data length for RequestHeapFrame\");\n }\n const bytes = data.readUInt32LE(1);\n return { instructionType, bytes };\n }\n case \"SetComputeUnitLimit\": {\n if (data.length !== 5) {\n throw new Error(\"Invalid data length for SetComputeUnitLimit\");\n }\n const units = data.readUInt32LE(1);\n return { instructionType, units };\n }\n case \"SetComputeUnitPrice\": {\n if (data.length !== 9) {\n throw new Error(\"Invalid data length for SetComputeUnitPrice\");\n }\n const microLamports = data.readBigUInt64LE(1);\n return { instructionType, microLamports: microLamports.toString() };\n }\n case \"SetLoadedAccountsDataSizeLimit\": {\n if (data.length !== 5) {\n throw new Error(\"Invalid data length for SetLoadedAccountsDataSizeLimit\");\n }\n const accountDataSizeLimit = data.readUInt32LE(1);\n return { instructionType, accountDataSizeLimit };\n }\n default:\n throw new Error(\"Unknown ComputeBudget instruction type.\");\n }\n}\n\nconst DEFAULT_COMPUTE_BUDGET_IX = 200_000;\n\nexport function getComputeBudgetUnits(tx: SolanaTransaction): number | undefined {\n let instructions: TransactionInstruction[] = [];\n\n if (isV0Tx(tx)) {\n const addressLookupTableAccounts = tx.addressLookupTables ?? [];\n const message = decompileV0Transaction(tx, addressLookupTableAccounts);\n instructions = message.instructions;\n } else {\n instructions = tx.instructions;\n }\n\n const computeBudgetIxs = instructions.filter((ix) => ix.programId.equals(ComputeBudgetProgram.programId));\n\n if (computeBudgetIxs.length === 0) {\n return Math.min(instructions.length * DEFAULT_COMPUTE_BUDGET_IX, 1_400_000);\n }\n\n const decoded = computeBudgetIxs.map((ix) => decodeComputeBudgetInstruction(ix));\n const limit = decoded.find((ix) => ix.instructionType === \"SetComputeUnitLimit\");\n\n return limit?.units ?? instructions.length * DEFAULT_COMPUTE_BUDGET_IX;\n}\n\n/**\n * Converts a priority fee from UI units (SOL) to micro-lamports per compute unit\n * @param ui - Priority fee amount in SOL\n * @param limitCU - Compute unit limit, defaults to 1.4M CU\n * @returns Priority fee in micro-lamports per compute unit\n */\nexport const uiToMicroLamports = (ui: number, limitCU: number = 1_400_000) => {\n const priorityFeeMicroLamports = ui * LAMPORTS_PER_SOL * 1_000_000;\n return priorityFeeMicroLamports / limitCU;\n};\n\n/**\n * Converts a priority fee from micro-lamports per compute unit to UI units (SOL)\n * @param microLamports - Priority fee in micro-lamports per compute unit\n * @param limitCU - Compute unit limit, defaults to 1.4M CU\n * @returns Priority fee amount in SOL, truncated to 9 decimal places\n */\nexport const microLamportsToUi = (microLamports: number, limitCU: number = 1_400_000) => {\n const priorityFeeMicroLamports = microLamports * limitCU;\n const priorityFeeUi = priorityFeeMicroLamports / (LAMPORTS_PER_SOL * 1_000_000);\n return Math.trunc(priorityFeeUi * LAMPORTS_PER_SOL) / LAMPORTS_PER_SOL;\n};\n\n/**\n * Splits your instructions into as many VersionedTransactions as needed\n * so that none exceed MAX_TX_SIZE.\n */\nexport function splitInstructionsToFitTransactions(\n mandatoryIxs: TransactionInstruction[],\n ixs: TransactionInstruction[],\n opts: {\n blockhash: string;\n payerKey: PublicKey;\n luts: AddressLookupTableAccount[];\n },\n): VersionedTransaction[] {\n const result: VersionedTransaction[] = [];\n let buffer: TransactionInstruction[] = [];\n\n function buildTx(\n mandatoryIxs: TransactionInstruction[],\n extraIxs: TransactionInstruction[],\n opts: {\n blockhash: string;\n payerKey: PublicKey;\n luts: AddressLookupTableAccount[];\n },\n ): VersionedTransaction {\n const messageV0 = new TransactionMessage({\n payerKey: opts.payerKey,\n recentBlockhash: opts.blockhash,\n instructions: [...mandatoryIxs, ...extraIxs],\n }).compileToV0Message(opts.luts);\n\n return new VersionedTransaction(messageV0);\n }\n\n for (const ix of ixs) {\n // Try adding this ix to the current buffer\n const trial = buildTx(mandatoryIxs, [...buffer, ix], opts);\n if (getTxSize(trial) <= MAX_TX_SIZE) {\n buffer.push(ix);\n } else {\n // If buffer is empty, this single ix won't fit even alone\n if (buffer.length === 0) {\n throw new Error(\"Single instruction too large to fit in a transaction\");\n }\n // Flush current buffer as its own tx\n const tx = buildTx(mandatoryIxs, buffer, opts);\n result.push(tx);\n\n // Start new buffer with this ix\n buffer = [ix];\n\n // And check if that alone fits\n const solo = buildTx(mandatoryIxs, buffer, opts);\n if (getTxSize(solo) > MAX_TX_SIZE) {\n throw new Error(\"Single instruction too large to fit in a transaction\");\n }\n }\n }\n\n // Flush any remaining\n if (buffer.length > 0) {\n const tx = buildTx(mandatoryIxs, buffer, opts);\n result.push(tx);\n }\n\n return result;\n}\n","import type { Connection, GetRecentPrioritizationFeesConfig, RecentPrioritizationFees } from \"@solana/web3.js\";\n\nexport type TransactionBroadcastType = \"BUNDLE\" | \"RPC\" | \"DYNAMIC\";\n\nexport type TransactionPriorityType = \"NORMAL\" | \"HIGH\" | \"MAMAS\";\n\nexport type MaxCapType = \"DYNAMIC\" | \"MANUAL\";\n\nexport type TransactionSettings = {\n broadcastType: TransactionBroadcastType;\n priorityType: TransactionPriorityType;\n maxCapType: MaxCapType;\n maxCap: number;\n};\n\n// easy to use values for user convenience\nexport enum PriotitizationFeeLevels {\n LOW = 2500,\n MEDIAN = 5000,\n HIGH = 7500,\n MAX = 10000,\n}\n\n// extending the original interface to include the percentile and fallback options and maintain compatibility\ninterface GetRecentPrioritizationFeesByPercentileConfig extends GetRecentPrioritizationFeesConfig {\n percentile?: PriotitizationFeeLevels | number;\n fallback?: boolean;\n}\n\ninterface RpcResponse {\n jsonrpc: string;\n id?: string;\n result?: [];\n error?: any;\n}\n\ntype PriorityFeeCapByPercentileResponse = {\n min: RecentPrioritizationFees;\n max: RecentPrioritizationFees;\n mean: number;\n median: number;\n};\n\nexport const getCalculatedPrioritizationFeeByPercentile = async (\n connection: Connection,\n config: GetRecentPrioritizationFeesByPercentileConfig,\n slotsToReturn?: number,\n): Promise<PriorityFeeCapByPercentileResponse> => {\n const fees = await getRecentPrioritizationFeesByPercentile(connection, config, slotsToReturn);\n\n // Calculate min, max, mean\n const { min, max, sum } = fees.reduce(\n (acc, fee) => ({\n min: fee.prioritizationFee < acc.min.prioritizationFee ? fee : acc.min,\n max: fee.prioritizationFee > acc.max.prioritizationFee ? fee : acc.max,\n sum: acc.sum + fee.prioritizationFee,\n }),\n { min: fees[0], max: fees[0], sum: 0 },\n );\n\n const mean = Math.ceil(sum / fees.length);\n\n // Calculate median\n const sortedFees = [...fees].sort((a, b) => a.prioritizationFee - b.prioritizationFee);\n const midIndex = Math.floor(fees.length / 2);\n\n const median =\n fees.length % 2 === 0\n ? Math.ceil((sortedFees[midIndex - 1].prioritizationFee + sortedFees[midIndex].prioritizationFee) / 2)\n : sortedFees[midIndex].prioritizationFee;\n\n return {\n min,\n max,\n mean,\n median,\n };\n};\n\nexport const getMinPrioritizationFeeByPercentile = async (\n connection: Connection,\n config: GetRecentPrioritizationFeesByPercentileConfig,\n slotsToReturn?: number,\n): Promise<number> => {\n const recentPrioritizationFees = await getRecentPrioritizationFeesByPercentile(connection, config, slotsToReturn);\n\n const minPriorityFee = recentPrioritizationFees.reduce((min, current) => {\n return current.prioritizationFee < min.prioritizationFee ? current : min;\n });\n\n return minPriorityFee.prioritizationFee;\n};\n\nexport const getMaxPrioritizationFeeByPercentile = async (\n connection: Connection,\n config: GetRecentPrioritizationFeesByPercentileConfig,\n slotsToReturn?: number,\n): Promise<number> => {\n const recentPrioritizationFees = await getRecentPrioritizationFeesByPercentile(connection, config, slotsToReturn);\n\n const maxPriorityFee = recentPrioritizationFees.reduce((max, current) => {\n return current.prioritizationFee > max.prioritizationFee ? current : max;\n });\n\n return maxPriorityFee.prioritizationFee;\n};\n\nexport const getMeanPrioritizationFeeByPercentile = async (\n connection: Connection,\n config: GetRecentPrioritizationFeesByPercentileConfig,\n slotsToReturn?: number,\n): Promise<number> => {\n const recentPrioritizationFees = await getRecentPrioritizationFeesByPercentile(connection, config, slotsToReturn);\n\n const mean = Math.ceil(\n recentPrioritizationFees.reduce((acc, fee) => acc + fee.prioritizationFee, 0) / recentPrioritizationFees.length,\n );\n\n return mean;\n};\n\nexport const getMedianPrioritizationFeeByPercentile = async (\n connection: Connection,\n config: GetRecentPrioritizationFeesByPercentileConfig,\n slotsToReturn?: number,\n): Promise<number> => {\n const recentPrioritizationFees = await getRecentPrioritizationFeesByPercentile(connection, config, slotsToReturn);\n\n recentPrioritizationFees.sort((a, b) => a.prioritizationFee - b.prioritizationFee);\n\n const half = Math.floor(recentPrioritizationFees.length / 2);\n\n if (recentPrioritizationFees.length % 2) {\n return recentPrioritizationFees[half].prioritizationFee;\n }\n\n return Math.ceil(\n (recentPrioritizationFees[half - 1].prioritizationFee + recentPrioritizationFees[half].prioritizationFee) / 2,\n );\n};\n\n// this function gets the recent prioritization fees from the RPC. The `rpcRequest` comes from webjs.Connection\nconst getRecentPrioritizationFeesFromRpc = async (config: any, rpcRequest: any) => {\n const accounts = config?.lockedWritableAccounts?.map((key: { toBase58: () => any }) => key.toBase58());\n const args = accounts?.length ? [accounts] : [[]];\n config.percentile && args.push({ percentile: config.percentile });\n\n const response = await rpcRequest(\"getRecentPrioritizationFees\", args);\n\n return response;\n};\n\nexport const getRecentPrioritizationFeesByPercentile = async (\n connection: Connection,\n config: GetRecentPrioritizationFeesByPercentileConfig,\n slotsToReturn?: number,\n): Promise<RecentPrioritizationFees[]> => {\n const { fallback = true, lockedWritableAccounts = [] } = config || {};\n slotsToReturn = slotsToReturn && Number.isInteger(slotsToReturn) ? slotsToReturn : -1;\n\n const promises: Array<Promise<void>> = [];\n\n let tritonRpcResponse: RpcResponse | undefined;\n let fallbackRpcResponse: RpcResponse | undefined;\n\n // @solana/web3.js uses the private method `_rpcRequest` internally to make RPC requests which is not exposed by TypeScript\n // it is available in JavaScript, however, TypeScript enforces it as unavailable and complains, the following line is a workaround\n\n /* @ts-ignore */\n const rpcRequest = connection._rpcRequest;\n\n // to save fallback roundtrips if your RPC is not Triton, both RPCs are called in parallel to minimize latency\n promises.push(\n getRecentPrioritizationFeesFromRpc(config, rpcRequest).then((result) => {\n tritonRpcResponse = result;\n }),\n );\n\n if (fallback) {\n promises.push(\n getRecentPrioritizationFeesFromRpc({ lockedWritableAccounts }, rpcRequest).then((result) => {\n fallbackRpcResponse = result;\n }),\n );\n }\n\n await Promise.all(promises);\n\n // satisfying typescript by casting the response to RpcResponse\n const tritonGRPFResponse = tritonRpcResponse as unknown as RpcResponse;\n const fallbackGRPFResponse = fallbackRpcResponse as unknown as RpcResponse;\n\n let recentPrioritizationFees: RecentPrioritizationFees[] = [];\n\n if (tritonGRPFResponse?.result) {\n recentPrioritizationFees = tritonGRPFResponse.result!;\n }\n\n if (fallbackGRPFResponse?.result && !tritonGRPFResponse?.result) {\n recentPrioritizationFees = fallbackGRPFResponse.result!;\n }\n\n if (fallback && fallbackGRPFResponse.error) {\n return fallbackGRPFResponse.error;\n }\n\n if (tritonGRPFResponse?.error) {\n return tritonGRPFResponse.error;\n }\n\n // sort the prioritization fees by slot\n recentPrioritizationFees.sort((a, b) => a.slot - b.slot);\n\n // return the first n prioritization fees\n if (slotsToReturn > 0) return recentPrioritizationFees.slice(0, slotsToReturn);\n\n return recentPrioritizationFees;\n};\n","import {HOURS_PER_YEAR} from \"@/constants\";\n\n// ================ interest rate helpers ================\n\n/**\n * Formula source: http://www.linked8.com/blog/158-apy-to-apr-and-apr-to-apy-calculation-methodologies\n *\n * @param apy {Number} APY (i.e. 0.06 for 6%)\n * @param compoundingFrequency {Number} Compounding frequency (times a year)\n * @returns {Number} APR (i.e. 0.0582 for APY of 0.06)\n */\nconst apyToApr = (apy: number, compoundingFrequency: number = HOURS_PER_YEAR): number =>\n ((1 + apy) ** (1 / compoundingFrequency) - 1) * compoundingFrequency;\n\n/**\n * Formula source: http://www.linked8.com/blog/158-apy-to-apr-and-apr-to-apy-calculation-methodologies\n *\n *\n * @param apr {Number} APR (i.e. 0.0582 for 5.82%)\n * @param compoundingFrequency {Number} Compounding frequency (times a year)\n * @returns {Number} APY (i.e. 0.06 for APR of 0.0582)\n */\nconst aprToApy = (apr: number, compoundingFrequency: number = HOURS_PER_YEAR, apyCap: number = 3): number =>\n Math.min((1 + apr / compoundingFrequency) ** compoundingFrequency - 1, apyCap);\n\nfunction calculateInterestFromApy(principal: number, durationInYears: number, apy: number): number {\n return principal * apy * durationInYears;\n}\n\nfunction calculateApyFromInterest(principal: number, durationInYears: number, interest: number): number {\n return interest / (principal * durationInYears);\n}\n\nexport { apyToApr, aprToApy, calculateInterestFromApy, calculateApyFromInterest };\n","import type { Address } from \"@coral-xyz/anchor\";\nimport BN from \"bn.js\";\nimport type { PublicKey } from \"@solana/web3.js\";\nimport BigNumber from \"bignumber.js\";\nimport { Decimal } from \"decimal.js\";\nimport type { Amount, WrappedI80F48 } from \"../types\";\n\nconst I80F48_FRACTIONAL_BYTES = 6;\nconst I80F48_TOTAL_BYTES = 16;\nconst I80F48_DIVISOR = new Decimal(2).pow(8 * I80F48_FRACTIONAL_BYTES);\n\nexport function wrappedI80F48toBigNumber(wrapped: WrappedI80F48): BigNumber {\n const bytesLE = wrapped.value;\n if (bytesLE.length !== I80F48_TOTAL_BYTES) {\n throw new Error(`Expected a ${I80F48_TOTAL_BYTES}-byte buffer`);\n }\n\n let bytesBE = bytesLE.slice();\n bytesBE.reverse();\n\n let signChar = \"\";\n const msb = bytesBE[0];\n if (msb & 0x80) {\n signChar = \"-\";\n bytesBE = bytesBE.map((v) => ~v & 0xff);\n }\n\n const hex = signChar + \"0x\" + bytesBE.map((v) => v.toString(16).padStart(2, \"0\")).join(\"\");\n const decoded = new Decimal(hex).dividedBy(I80F48_DIVISOR);\n\n return new BigNumber(decoded.toString());\n}\n\nexport function bigNumberToWrappedI80F48(value: Amount): WrappedI80F48 {\n let decimalValue = new Decimal(value.toString());\n const isNegative = decimalValue.isNegative();\n\n decimalValue = decimalValue.times(I80F48_DIVISOR);\n let wrappedValue = new BN(decimalValue.round().toFixed()).toArray();\n\n if (wrappedValue.length < I80F48_TOTAL_BYTES) {\n const padding = Array(I80F48_TOTAL_BYTES - wrappedValue.length).fill(0);\n wrappedValue.unshift(...padding);\n }\n\n if (isNegative) {\n wrappedValue[wrappedValue.length - 1] |= 0x80;\n wrappedValue = wrappedValue.map((v) => ~v & 0xff);\n }\n\n wrappedValue.reverse();\n\n return { value: wrappedValue };\n}\n\n/**\n * Converts a ui representation of a token amount into its native value as `BN`, given the specified mint decimal amount (default to 6 for USDC).\n */\nexport function toNumber(amount: Amount): number {\n let amt: number;\n if (typeof amount === \"number\") {\n amt = amount;\n } else if (typeof amount === \"string\") {\n amt = Number(amount);\n } else {\n amt = amount.toNumber();\n }\n return amt;\n}\n\n/**\n * Converts a ui representation of a token amount into its native value as `BN`, given the specified mint decimal amount (default to 6 for USDC).\n */\nexport function toBigNumber(amount: Amount | BN): BigNumber {\n let amt: BigNumber;\n if (amount instanceof BigNumber) {\n amt = amount;\n } else {\n amt = new BigNumber(amount.toString());\n }\n return amt;\n}\n\n/**\n * Converts a UI representation of a token amount into its native value as `BN`, given the specified mint decimal amount (default to 6 for USDC).\n */\nexport function uiToNative(amount: Amount, decimals: number): BN {\n const amt = toBigNumber(amount);\n return new BN(amt.times(10 ** decimals).toFixed(0, BigNumber.ROUND_FLOOR));\n}\n\nexport function uiToNativeBigNumber(amount: Amount, decimals: number): BigNumber {\n const amt = toBigNumber(amount);\n return amt.times(10 ** decimals);\n}\n\n/**\n * Converts a native representation of a token amount into its UI value as `number`, given the specified mint decimal amount.\n */\nexport function nativeToUi(amount: Amount | BN, decimals: number): number {\n const amt = toBigNumber(amount);\n return amt.div(10 ** decimals).toNumber();\n}\n\n// shorten the checksummed version of the input address to have 4 characters at start and end\nexport function shortenAddress(pubkey: Address, chars = 4): string {\n const pubkeyStr = pubkey.toString();\n return `${pubkeyStr.slice(0, chars)}...${pubkeyStr.slice(-chars)}`;\n}\n\n/**\n * Converts basis points (bps) to a decimal percentage value.\n */\nexport function bpsToPercentile(bps: number): number {\n return bps / 10000;\n}\n\n/**\n * Prepares transaction remaining accounts by processing bank-oracle groups:\n * 1. Sorts groups in descending order by bank public key (pushes inactive accounts to end)\n * 2. Flattens the structure into a single public key array\n *\n * Stable on most JS implementations (this shouldn't matter since we do not generally have duplicate\n * banks), in place, and uses the raw 32-byte value to sort in byte-wise lexicographical order (like\n * Rust's b.key.cmp(&a.key))\n *\n * @param banksAndOracles - Array where each element is a bank-oracle group: [bankPubkey,\n * oracle1Pubkey, oracle2Pubkey?, ...] Note: SystemProgram keys (111..111)\n * represent inactive accounts\n * @returns Flattened array of public keys with inactive accounts at the end, ready for transaction\n * composition\n */\nexport const composeRemainingAccounts = (banksAndOracles: PublicKey[][]): PublicKey[] => {\n banksAndOracles.sort((a, b) => {\n const A = a[0].toBytes();\n const B = b[0].toBytes();\n // find the first differing byte\n for (let i = 0; i < 32; i++) {\n if (A[i] !== B[i]) {\n // descending: bigger byte should come first\n return B[i] - A[i];\n }\n }\n return 0; // identical keys\n });\n\n // flatten out [bank, oracle…, oracle…] → [bank, oracle…, bank, oracle…, …]\n return banksAndOracles.flat();\n};\n","import numeral from \"numeral\";\n\nclass CustomNumberFormat extends Intl.NumberFormat {\n constructor(locale: string | string[] | undefined, options: Intl.NumberFormatOptions | undefined) {\n super(locale, options);\n }\n\n override format(value: number | bigint) {\n if (value === 0) {\n return \"-\";\n } else {\n return super.format(value);\n }\n }\n}\n\nconst groupedNumberFormatter = new CustomNumberFormat(\"en-US\", {\n useGrouping: true,\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n});\n\nconst numeralFormatter = (value: number) => {\n if (value < 0.01) {\n return \"0\";\n } else {\n return numeral(value).format(\"0.00a\");\n }\n};\n\ninterface dynamicNumeralFormatterOptions {\n minDisplay?: number;\n tokenPrice?: number;\n forceDecimals?: boolean;\n maxDisplay?: number;\n logging?: boolean;\n ignoreMinDisplay?: boolean;\n}\n\nexport const dynamicNumeralFormatter = (value: number, options: dynamicNumeralFormatterOptions = {}) => {\n const {\n minDisplay = 0.00001, // Default minDisplay for backward compatibility\n maxDisplay = 10000, // Default maxDisplay for backward compatibility\n tokenPrice,\n logging = false,\n ignoreMinDisplay = false, // New flag to control ignoring minDisplay\n forceDecimals,\n } = options;\n\n if (value === 0 || isNaN(value)) return \"0\";\n\n const absValue = Math.abs(value);\n\n if (logging) {\n console.log({\n value,\n minDisplay,\n maxDisplay,\n tokenPrice,\n ignoreMinDisplay,\n absValue,\n });\n }\n\n // Backward compatibility: Below the minimum display threshold\n if (!ignoreMinDisplay && absValue < minDisplay) {\n return `<${minDisplay}`;\n }\n\n // Backward compatibility: Above the maximum display threshold\n if (absValue > maxDisplay) {\n return numeral(value).format(forceDecimals ? \"0,0.00a\" : \"0,0.[00]a\");\n }\n\n if (!ignoreMinDisplay && Math.abs(value) >= 0.01) {\n return numeral(value).format(forceDecimals && Math.abs(value) > 0.99 ? \"0,0.00a\" : \"0,0.[0000]a\");\n }\n\n // New behavior: Ensure 3 significant decimal digits when ignoreMinDisplay is true\n if (ignoreMinDisplay) {\n const decimalPart = absValue - Math.floor(absValue);\n const decimalPlaces = decimalPart > 0 ? 3 : 0;\n\n if (absValue >= 1) {\n // For values >= 1, format the number with 3 decimal digits\n return value.toFixed(decimalPlaces).replace(/\\.?0+$/, \"\");\n } else {\n // For values < 1, calculate the significant decimal digits precisely\n const exponent = Math.floor(Math.log10(absValue));\n const significantDecimals = Math.max(3, 2 - exponent); // Ensure 3 significant decimal digits\n return value.toFixed(significantDecimals).replace(/\\.?0+$/, \"\");\n }\n }\n\n if (Math.abs(value) >= minDisplay) {\n const decimalPlaces = Math.max(0, Math.ceil(-Math.log10(minDisplay)));\n return numeral(value).format(`0,0.[${\"0\".repeat(decimalPlaces)}]`);\n }\n\n // Case: Token price takes priority when defined\n if (tokenPrice) {\n const smallestUnit = minDisplay / tokenPrice;\n\n const significantDecimals = Math.max(3, Math.ceil(-Math.log10(smallestUnit)));\n\n return value.toFixed(significantDecimals).replace(/\\.?0+$/, \"\");\n }\n\n return \"0\";\n};\n\nconst groupedNumberFormatterDyn = new Intl.NumberFormat(\"en-US\", {\n useGrouping: true,\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n});\n\nconst usdFormatter = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n signDisplay: \"auto\",\n});\n\nconst usdFormatterDyn = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n signDisplay: \"auto\",\n});\n\nconst percentFormatter = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n});\n\nconst percentFormatterDyn = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n});\n\nconst percentFormatterMod = (\n value: number,\n opts: { minFractionDigits: number; maxFractionDigits: number } = { minFractionDigits: 2, maxFractionDigits: 2 },\n) => {\n const percentFormatter = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n minimumFractionDigits: opts.minFractionDigits,\n maximumFractionDigits: opts.maxFractionDigits,\n });\n\n if (value === 0) {\n return \"0%\";\n } else {\n return percentFormatter.format(value);\n }\n};\n\nconst clampedNumeralFormatter = (value: number) => {\n if (value === 0) {\n return \"0\";\n } else if (value < 0.01) {\n return \"< 0.01\";\n } else {\n return numeral(value).format(\"0.00a\");\n }\n};\n\nconst tokenPriceFormatter = (price: number, style: \"currency\" | \"decimal\" = \"currency\") => {\n if (price === 0) {\n return 0;\n }\n const reformatNum = Number(price.toFixed(20));\n\n if (price === 0) {\n return 0;\n }\n\n if (reformatNum < 0.00000001) {\n return price.toExponential(2);\n }\n\n const { minFractionDigits, maxFractionDigits } =\n reformatNum > 1\n ? { minFractionDigits: 2, maxFractionDigits: 2 }\n : reformatNum > 0.000001\n ? { minFractionDigits: 2, maxFractionDigits: 7 }\n : { minFractionDigits: 7, maxFractionDigits: 10 };\n\n const formatter = new Intl.NumberFormat(\"en-US\", {\n style: style,\n currency: \"USD\",\n minimumFractionDigits: minFractionDigits,\n maximumFractionDigits: maxFractionDigits,\n signDisplay: \"auto\",\n });\n\n return formatter.format(price);\n};\n\nexport {\n CustomNumberFormat,\n groupedNumberFormatter,\n groupedNumberFormatterDyn,\n numeralFormatter,\n clampedNumeralFormatter,\n percentFormatter,\n percentFormatterDyn,\n percentFormatterMod,\n usdFormatter,\n usdFormatterDyn,\n tokenPriceFormatter,\n};\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { z } from "zod";
9
9
  import * as _fogo_sessions_sdk0 from "@fogo/sessions-sdk";
10
10
  import { TransactionResult } from "@fogo/sessions-sdk";
11
11
  import { Storage } from "unstorage";
12
- import { z as z$1 } from "zod/v4-mini";
12
+ import * as z$1 from "zod/v4-mini";
13
13
 
14
14
  //#region rolldown:runtime
15
15
  //#endregion
@@ -8871,7 +8871,10 @@ declare function makeBundleTipIx(feePayer: PublicKey, bundleTip?: number): Trans
8871
8871
  //#region src/services/price/utils/compute.utils.d.ts
8872
8872
  declare function getPriceWithConfidence(oraclePrice: OraclePrice, weighted: boolean): PriceWithConfidence;
8873
8873
  declare function getPrice(oraclePrice: OraclePrice, priceBias?: PriceBias, weightedPrice?: boolean): BigNumber;
8874
- declare function parseOraclePriceData(oracleSetup: OracleSetup, rawData: Buffer, logger?: TLogger, shardId?: number): OraclePrice;
8874
+ declare const supportedOracleSetups: readonly [OracleSetup.PythLegacy, OracleSetup.PythPushOracle, OracleSetup.StakedWithPythPush, OracleSetup.SwitchboardV2, OracleSetup.SwitchboardPull];
8875
+ type SupportedOracleSetup = (typeof supportedOracleSetups)[number];
8876
+ declare function isOracleSetupSupported(oracleSetup: OracleSetup): oracleSetup is SupportedOracleSetup;
8877
+ declare function parseOraclePriceData(oracleSetup: SupportedValueType, rawData: Buffer, logger?: TLogger, shardId?: number): OraclePrice;
8875
8878
  //#endregion
8876
8879
  //#region src/services/price/utils/deserialize.utils.d.ts
8877
8880
  declare function dtoToOraclePrice(dto: OraclePriceDto): OraclePrice;
@@ -9077,7 +9080,7 @@ type FetchGroupDataFn = (props: {
9077
9080
  commitment?: Commitment;
9078
9081
  overrideBankAddresses?: PublicKey[];
9079
9082
  overrideBanksMetadata?: BanksExtendedMetadataOverrideMap;
9080
- metadataService: IMetadataService;
9083
+ metadataService: MetadataService;
9081
9084
  dataFetcher: DataFetcher;
9082
9085
  }) => Promise<{
9083
9086
  lendrGroup: LendrGroup;
@@ -9098,7 +9101,7 @@ type LendrClientOptions = {
9098
9101
  addressLookupTableAddresses?: PublicKey[];
9099
9102
  logger?: TLogger;
9100
9103
  storage?: Storage;
9101
- metadataService?: IMetadataService;
9104
+ metadataFetchers?: Array<IMetadataFetcher>;
9102
9105
  dataFetcher?: DataFetcher;
9103
9106
  };
9104
9107
  interface LendrClientFetchOptions {
@@ -9123,7 +9126,7 @@ interface LendrClientProps {
9123
9126
  readonly overrideBankAddresses?: PublicKey[];
9124
9127
  readonly overrideBanksMetadata?: BanksExtendedMetadataOverrideMap;
9125
9128
  readonly bankMetadataMap?: BankMetadataMap;
9126
- metadataService: IMetadataService;
9129
+ metadataService: MetadataService;
9127
9130
  bundleSimRpcEndpoint?: string;
9128
9131
  logger?: TLogger;
9129
9132
  storage?: Storage;
@@ -9150,7 +9153,7 @@ declare class LendrClient {
9150
9153
  bankMetadataMap?: BankMetadataMap;
9151
9154
  readonly overrideBankAddresses?: Array<PublicKey>;
9152
9155
  readonly overrideBanksMetadata?: BanksExtendedMetadataOverrideMap;
9153
- readonly metadataService: IMetadataService;
9156
+ readonly metadataService: MetadataService;
9154
9157
  readonly storage: Storage;
9155
9158
  readonly dataFetcher: DataFetcher;
9156
9159
  constructor({
@@ -9737,42 +9740,85 @@ declare function dtoToGroup(groupDto: LendrGroupTypeDto): LendrGroupType;
9737
9740
  declare function groupToDto(group: LendrGroupType): LendrGroupTypeDto;
9738
9741
  //# sourceMappingURL=serialize.utils.d.ts.map
9739
9742
  //#endregion
9740
- //#region src/services/metadata/fogo.d.ts
9741
- declare class FogoMetadataService extends IMetadataService {
9742
- _fetch(mints: Array<string>): Promise<Record<string, {
9743
+ //#region src/services/metadata/dummy.d.ts
9744
+ declare class DummyMetadataFetcher implements IMetadataFetcher {
9745
+ readonly name = "DummyMetadataFetcher";
9746
+ fetch(mints: Array<string>): Promise<Record<string, {
9743
9747
  name: string;
9744
9748
  symbol: string;
9745
9749
  image: string;
9750
+ uri?: string | undefined;
9746
9751
  }>>;
9747
9752
  }
9748
- //# sourceMappingURL=fogo.d.ts.map
9753
+ //# sourceMappingURL=dummy.d.ts.map
9749
9754
  //#endregion
9750
- //#region src/services/metadata/index.d.ts
9755
+ //#region src/services/metadata/service.d.ts
9751
9756
  declare const metadataSchema: z$1.ZodMiniObject<{
9752
9757
  name: z$1.ZodMiniString<string>;
9753
9758
  symbol: z$1.ZodMiniString<string>;
9754
9759
  image: z$1.ZodMiniString<string>;
9760
+ uri: z$1.ZodMiniOptional<z$1.ZodMiniString<string>>;
9755
9761
  }, z$1.core.$strip>;
9756
9762
  type TMetadata = z$1.infer<typeof metadataSchema>;
9757
- declare abstract class IMetadataService {
9763
+ interface IMetadataFetcher {
9764
+ readonly name: string;
9765
+ fetch(mints: Array<string>): Promise<Record<string, TMetadata>>;
9766
+ }
9767
+ interface MetadataServiceProps {
9768
+ storage: Storage;
9769
+ fetchers: Array<IMetadataFetcher>;
9770
+ logger: TLogger;
9771
+ overrides?: BanksExtendedMetadataOverrideMap;
9772
+ }
9773
+ declare class MetadataService {
9758
9774
  /** NOTE: record key is base58 of mint public key */
9759
9775
  readonly overrides: BanksExtendedMetadataOverrideMap;
9760
9776
  private _storage;
9761
- constructor(storage: Storage, overrides?: BanksExtendedMetadataOverrideMap);
9777
+ private readonly _fetchers;
9778
+ private _logger;
9779
+ constructor({
9780
+ storage,
9781
+ logger,
9782
+ fetchers,
9783
+ overrides
9784
+ }: MetadataServiceProps);
9762
9785
  forMints(mints: Array<PublicKey>): Promise<{
9763
9786
  [x: string]: {
9764
9787
  name: string;
9765
9788
  symbol: string;
9766
9789
  image: string;
9790
+ uri?: string | undefined;
9767
9791
  };
9768
9792
  }>;
9769
9793
  forMint(mint: PublicKey): Promise<{
9770
9794
  name: string;
9771
9795
  symbol: string;
9772
9796
  image: string;
9797
+ uri?: string | undefined;
9773
9798
  }>;
9774
- abstract _fetch(mints: Array<string>): Promise<Record<string, TMetadata>>;
9799
+ _fetch(mints: Array<string>): Promise<Record<string, {
9800
+ name: string;
9801
+ symbol: string;
9802
+ image: string;
9803
+ uri?: string | undefined;
9804
+ }>>;
9805
+ }
9806
+ //# sourceMappingURL=service.d.ts.map
9807
+ //#endregion
9808
+ //#region src/services/metadata/metaplex.d.ts
9809
+ declare class MetaplexMetadataFetcher implements IMetadataFetcher {
9810
+ readonly name = "MetaplexMetadataFetcher";
9811
+ private readonly _umi;
9812
+ constructor(rpcEndpoint: string);
9813
+ fetch(mints: Array<string>): Promise<Record<string, {
9814
+ name: string;
9815
+ symbol: string;
9816
+ image: string;
9817
+ uri?: string | undefined;
9818
+ }>>;
9819
+ private _getImage;
9775
9820
  }
9821
+ //# sourceMappingURL=metaplex.d.ts.map
9776
9822
  //#endregion
9777
9823
  //#region src/services/native-stake/types/stake.types.d.ts
9778
9824
  type ValidatorStakeGroup = {
@@ -10083,7 +10129,7 @@ declare const fetchBanksExtendedMetadata: ({
10083
10129
  mint: PublicKey;
10084
10130
  owner: PublicKey;
10085
10131
  }>;
10086
- metadataService: IMetadataService;
10132
+ metadataService: MetadataService;
10087
10133
  logger: TLogger;
10088
10134
  overrideBanksMetadata?: BanksExtendedMetadataOverrideMap;
10089
10135
  }) => Promise<BankExtendedMetadataMap>;
@@ -10099,5 +10145,5 @@ type BankMetadataMap = {
10099
10145
  //# sourceMappingURL=bank-metadata.d.ts.map
10100
10146
 
10101
10147
  //#endregion
10102
- export { AccountFlags, AccountType, ActionEmodeImpact, ActiveStakePoolMap, Amount, AssetTag, BUNDLE_TX_SIZE$1 as BUNDLE_TX_SIZE, Balance, BalanceRaw, BalanceType, BalanceTypeDto, Bank, BankAddress, BankConfig, type BankConfigCompactRaw, BankConfigDto, BankConfigOpt, type BankConfigOptRaw, type BankConfigRaw, BankConfigRawDto, BankConfigType, BankExtendedMetadata, BankExtendedMetadataMap, BankExtendedMetadataOverride, BankMap, BankMetadata, BankMetadataMap, type BankRaw, BankRawDto, BankType, BankTypeDto, BankVaultType, BanksExtendedMetadataOverrideMap, BroadcastMethodType, CustomNumberFormat, DEFAULT_CLUSTER, DEFAULT_COMMITMENT, DEFAULT_CONFIRM_OPTS, DEFAULT_ORACLE_MAX_AGE, DEFAULT_PROCESS_TX_OPTS, DEFAULT_PROCESS_TX_STRATEGY, DEFAULT_SEND_OPTS, DISABLED_FLAG, DUMMY_USDC_MINT, DataFetcher, EmodeConfigRaw, EmodeConfigRawDto, EmodeEntry, EmodeEntryDto, EmodeEntryFlags, EmodeFlags, EmodeImpact, EmodeImpactStatus, EmodePair, EmodeSettings, EmodeSettingsDto, EmodeSettingsRaw, EmodeSettingsRawDto, EmodeSettingsType, EmodeTag, Environment, ExtendedTransaction, ExtendedTransactionProperties, ExtendedV0Transaction, FLASHLOAN_ENABLED_FLAG, FetchGroupDataFn, FetchRawBanksArgs, FlashLoanArgs, FlashloanActionResult, FogoMetadataService, GROUP_PK, HOURS_PER_YEAR, HealthCache, HealthCacheFlags, HealthCacheRaw, HealthCacheSimulationError, HealthCacheType, HealthCacheTypeDto, IMetadataService, InstructionsWrapper, InterestRateConfig, InterestRateConfigDto, type InterestRateConfigRaw, JUPITER_V6_PROGRAM, LENDR_IDL, LENDR_PROGRAM, LENDR_SPONSORED_SHARD_ID, LST_MINT, LUT_PROGRAM_AUTHORITY_INDEX, LendingAccountDepositOrRepayWithSessionAccounts, LendingAccountWithdrawOrBorrowWithSessionAccounts, LendrAccount, LendrAccountRaw, LendrAccountType, LendrAccountTypeDto, LendrAccountWrapper, LendrClient, LendrClientFetchOptions, LendrClientOptions, LendrClientProps, LendrConfig, LendrGroup, type LendrGroupRaw, LendrGroupType, LendrGroupTypeDto, LendrIdlType, LendrProgram, LendrRequirementType, LendrRequirementTypeRaw, LogFn, LoopProps, LoopTxProps, MAX_ACCOUNT_KEYS, MAX_CONFIDENCE_INTERVAL_RATIO, MAX_TX_SIZE$1 as MAX_TX_SIZE, MAX_U64, MPL_METADATA_PROGRAM_ID, MakeBorrowIxOpts, MakeBorrowWithSessionIxOpts, MakeDepositIxOpts, MakeDepositWithSessionIxOpts, MakeRepayIxOpts, MakeRepayWithSessionIxOpts, MakeWithdrawIxOpts, MakeWithdrawWithSessionIxOpts, MaxCapType, MintData, MintDataMap, NodeWallet, OperationalState, type OperationalStateRaw, OracleConfigOpt, type OracleConfigOptRaw, OraclePrice, OraclePriceDto, OraclePriceMap, OracleSetup, type OracleSetupRaw, PDA_BANK_FEE_VAULT_AUTH_SEED, PDA_BANK_FEE_VAULT_SEED, PDA_BANK_INSURANCE_VAULT_AUTH_SEED, PDA_BANK_INSURANCE_VAULT_SEED, PDA_BANK_LIQUIDITY_VAULT_AUTH_SEED, PDA_BANK_LIQUIDITY_VAULT_SEED, PRIORITY_TX_SIZE$1 as PRIORITY_TX_SIZE, PROGRAM_ID, PYTH_PRICE_CONF_INTERVALS, PYTH_PUSH_ORACLE_ID, PYTH_SPONSORED_SHARD_ID, PriceBias, PriceWithConfidence, PriceWithConfidenceDto, PriorityFees, PriotitizationFeeLevels, ProcessTransactionError, ProcessTransactionErrorType, ProcessTransactionOpts, ProcessTransactionStrategy, ProcessTransactionsClientOpts, Program$1 as Program, ProgramError, ProgramErrorWithDescription, ProgramReadonly, PythPushFeedIdMap, RepayWithCollateralProps, RepayWithCollateralTxProps, RiskTier, type RiskTierRaw, SINGLE_POOL_PROGRAM_ID, SKIP_SIMULATION, STAKE_CONFIG_ID, STAKE_PROGRAM_ID, SWB_PRICE_CONF_INTERVALS, SYSTEM_PROGRAM_ID, SYSVAR_CLOCK_ID, SYSVAR_RENT_ID, SYSVAR_STAKE_HISTORY_ID, SimulationResult, SolanaTransaction, SpecificBroadcastMethod, SpecificBroadcastMethodType, StakeAccount, StakePoolMevMap, TLogger, TMetadata, TRANSFER_ACCOUNT_AUTHORITY_FLAG, TransactionArenaKeyMap, TransactionBroadcastType, TransactionBuilderResult, TransactionConfigMap, TransactionOptions, TransactionPriorityType, TransactionSettings, TransactionType, USDC_DECIMALS, USDC_MINT, ValidatorRateData, ValidatorStakeGroup, ValidatorStakeGroupDto, WSOL_EXTENDED_METADATA, WSOL_MINT, Wallet, WalletToken, WrappedI80F48, accountFlagToBN, addOracleToBanksIx, addTransactionMetadata, aprToApy, apyToApr, balanceToDto, bankConfigRawToDto, bankExtendedMetadataOverrideSchema, bankRawToDto, bigNumberToWrappedI80F48, bpsToPercentile, buildFeedIdMap, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, computeAccountValue, computeActiveEmodePairs, computeAssetUsdValue, computeBalanceUsdValue, computeBaseInterestRate, computeClaimedEmissions, computeEmodeImpacts, computeFreeCollateral, computeFreeCollateralLegacy, computeHealthAccountMetas, computeHealthCheckAccounts, computeHealthComponents, computeHealthComponentsLegacy, computeHealthComponentsWithoutBiasLegacy, computeInterestRates, computeLiabilityUsdValue, computeLoopingParams, computeMaxLeverage, computeNetApy, computeQuantity, computeQuantityUi, computeRemainingCapacity, computeTotalOutstandingEmissions, computeTvl, computeUsdValue, computeUtilizationRate, confirmTransaction, crankPythOracleIx, createLendrAccountTx, createUpdateFeedIx, decodeAccountRaw, decodeBankRaw, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dtoToBalance, dtoToBank, dtoToBankConfig, dtoToBankConfigRaw, dtoToBankRaw, dtoToEmodeSettings, dtoToEmodeSettingsRaw, dtoToGroup, dtoToHealthCache, dtoToInterestRateConfig, dtoToLendrAccount, dtoToOraclePrice, dtoToValidatorStakeGroup, dynamicNumeralFormatter, emodeSettingsRawToDto, feedIdToString, fetchBanksExtendedMetadata, fetchLendrAccountAddresses, fetchLendrAccountData, fetchMultipleBanks, fetchNativeStakeAccounts, fetchOracleData, fetchPythOracleData, fetchStakeAccount, fetchStakePoolActiveStates, fetchStakePoolMev, fetchSwbOracleData, findOracleKey, findPythPushOracleAddress, floor, freezeBankConfigIx, getAccountKeys, getActiveAccountFlags, getActiveEmodeEntryFlags, getActiveEmodeFlags, getActiveHealthCacheFlags, getActiveStaleBanks, getAssetQuantity, getAssetShares, getAssetWeight, getBalanceUsdValueWithPriceBias, getBankVaultAuthority, getBankVaultSeeds, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getConfig, getConfigPda, getHealthCacheStatusDescription, getLiabilityQuantity, getLiabilityShares, getLiabilityWeight, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getPrice, getPriceFeedAccountForProgram, getPriceWithConfidence, getRecentPrioritizationFeesByPercentile, getTotalAssetQuantity, getTotalLiabilityQuantity, getTreasuryPda, getTxSize, getValueInsensitive, groupToDto, groupedNumberFormatter, groupedNumberFormatterDyn, hasAccountFlag, hasEmodeEntryFlag, hasEmodeFlag, hasHealthCacheFlag, healthCacheToDto, index_d_exports$2 as index_d_exports, instructions, isV0Tx, isWeightedPrice, legacyTxToV0Tx, lendrAccountToDto, makeAddPermissionlessStakedBankIx, makeBundleTipIx, makeDisableAccountTransferForAccountIx, makeDisableFlashLoanForAccountIx, makeEnableAccountTransferForAccountIx, makeEnableFlashLoanForAccountIx, makePoolAddBankIx, makePoolConfigureBankIx, makePriorityFeeIx, makePriorityFeeMicroIx, makePulseHealthIx, makeTxPriorityIx, makeUnwrapSolIx, makeVersionedTransaction, makeWrapSolIxs, median, metadataSchema, microLamportsToUi, nativeToUi, numeralFormatter, oraclePriceToDto, parseBalanceRaw, parseBankConfigRaw, parseBankRaw, parseBanksMetadataOverride, parseEmodeTag, parseErrorFromLogs, parseLendrAccountRaw, parseOperationalState, parseOraclePriceData, parseOracleSetup, parseRiskTier, parseTransactionError, percentFormatter, percentFormatterDyn, percentFormatterMod, processTransactions, replaceV0TxBlockhash, replaceV0TxInstructions, serializeBankConfigOpt, serializeOperationalState, serializeOracleSetup, serializeOracleSetupToIndex, serializeRiskTier, setTimeoutPromise, shortenAddress, simulateAccountHealthCache, simulateAccountHealthCacheWithFallback, simulateTransactions, sleep, splitInstructionsToFitTransactions, toBankConfigDto, toBankDto, toBigNumber, toEmodeSettingsDto, toInterestRateConfigDto, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, validatorStakeGroupToDto, wrappedI80F48toBigNumber };
10103
- //# sourceMappingURL=index-CMK6wLry.d.cts.map
10148
+ export { AccountFlags, AccountType, ActionEmodeImpact, ActiveStakePoolMap, Amount, AssetTag, BUNDLE_TX_SIZE$1 as BUNDLE_TX_SIZE, Balance, BalanceRaw, BalanceType, BalanceTypeDto, Bank, BankAddress, BankConfig, type BankConfigCompactRaw, BankConfigDto, BankConfigOpt, type BankConfigOptRaw, type BankConfigRaw, BankConfigRawDto, BankConfigType, BankExtendedMetadata, BankExtendedMetadataMap, BankExtendedMetadataOverride, BankMap, BankMetadata, BankMetadataMap, type BankRaw, BankRawDto, BankType, BankTypeDto, BankVaultType, BanksExtendedMetadataOverrideMap, BroadcastMethodType, CustomNumberFormat, DEFAULT_CLUSTER, DEFAULT_COMMITMENT, DEFAULT_CONFIRM_OPTS, DEFAULT_ORACLE_MAX_AGE, DEFAULT_PROCESS_TX_OPTS, DEFAULT_PROCESS_TX_STRATEGY, DEFAULT_SEND_OPTS, DISABLED_FLAG, DUMMY_USDC_MINT, DataFetcher, DummyMetadataFetcher, EmodeConfigRaw, EmodeConfigRawDto, EmodeEntry, EmodeEntryDto, EmodeEntryFlags, EmodeFlags, EmodeImpact, EmodeImpactStatus, EmodePair, EmodeSettings, EmodeSettingsDto, EmodeSettingsRaw, EmodeSettingsRawDto, EmodeSettingsType, EmodeTag, Environment, ExtendedTransaction, ExtendedTransactionProperties, ExtendedV0Transaction, FLASHLOAN_ENABLED_FLAG, FetchGroupDataFn, FetchRawBanksArgs, FlashLoanArgs, FlashloanActionResult, GROUP_PK, HOURS_PER_YEAR, HealthCache, HealthCacheFlags, HealthCacheRaw, HealthCacheSimulationError, HealthCacheType, HealthCacheTypeDto, IMetadataFetcher, InstructionsWrapper, InterestRateConfig, InterestRateConfigDto, type InterestRateConfigRaw, JUPITER_V6_PROGRAM, LENDR_IDL, LENDR_PROGRAM, LENDR_SPONSORED_SHARD_ID, LST_MINT, LUT_PROGRAM_AUTHORITY_INDEX, LendingAccountDepositOrRepayWithSessionAccounts, LendingAccountWithdrawOrBorrowWithSessionAccounts, LendrAccount, LendrAccountRaw, LendrAccountType, LendrAccountTypeDto, LendrAccountWrapper, LendrClient, LendrClientFetchOptions, LendrClientOptions, LendrClientProps, LendrConfig, LendrGroup, type LendrGroupRaw, LendrGroupType, LendrGroupTypeDto, LendrIdlType, LendrProgram, LendrRequirementType, LendrRequirementTypeRaw, LogFn, LoopProps, LoopTxProps, MAX_ACCOUNT_KEYS, MAX_CONFIDENCE_INTERVAL_RATIO, MAX_TX_SIZE$1 as MAX_TX_SIZE, MAX_U64, MPL_METADATA_PROGRAM_ID, MakeBorrowIxOpts, MakeBorrowWithSessionIxOpts, MakeDepositIxOpts, MakeDepositWithSessionIxOpts, MakeRepayIxOpts, MakeRepayWithSessionIxOpts, MakeWithdrawIxOpts, MakeWithdrawWithSessionIxOpts, MaxCapType, MetadataService, MetadataServiceProps, MetaplexMetadataFetcher, MintData, MintDataMap, NodeWallet, OperationalState, type OperationalStateRaw, OracleConfigOpt, type OracleConfigOptRaw, OraclePrice, OraclePriceDto, OraclePriceMap, OracleSetup, type OracleSetupRaw, PDA_BANK_FEE_VAULT_AUTH_SEED, PDA_BANK_FEE_VAULT_SEED, PDA_BANK_INSURANCE_VAULT_AUTH_SEED, PDA_BANK_INSURANCE_VAULT_SEED, PDA_BANK_LIQUIDITY_VAULT_AUTH_SEED, PDA_BANK_LIQUIDITY_VAULT_SEED, PRIORITY_TX_SIZE$1 as PRIORITY_TX_SIZE, PROGRAM_ID, PYTH_PRICE_CONF_INTERVALS, PYTH_PUSH_ORACLE_ID, PYTH_SPONSORED_SHARD_ID, PriceBias, PriceWithConfidence, PriceWithConfidenceDto, PriorityFees, PriotitizationFeeLevels, ProcessTransactionError, ProcessTransactionErrorType, ProcessTransactionOpts, ProcessTransactionStrategy, ProcessTransactionsClientOpts, Program$1 as Program, ProgramError, ProgramErrorWithDescription, ProgramReadonly, PythPushFeedIdMap, RepayWithCollateralProps, RepayWithCollateralTxProps, RiskTier, type RiskTierRaw, SINGLE_POOL_PROGRAM_ID, SKIP_SIMULATION, STAKE_CONFIG_ID, STAKE_PROGRAM_ID, SWB_PRICE_CONF_INTERVALS, SYSTEM_PROGRAM_ID, SYSVAR_CLOCK_ID, SYSVAR_RENT_ID, SYSVAR_STAKE_HISTORY_ID, SimulationResult, SolanaTransaction, SpecificBroadcastMethod, SpecificBroadcastMethodType, StakeAccount, StakePoolMevMap, SupportedOracleSetup, TLogger, TMetadata, TRANSFER_ACCOUNT_AUTHORITY_FLAG, TransactionArenaKeyMap, TransactionBroadcastType, TransactionBuilderResult, TransactionConfigMap, TransactionOptions, TransactionPriorityType, TransactionSettings, TransactionType, USDC_DECIMALS, USDC_MINT, ValidatorRateData, ValidatorStakeGroup, ValidatorStakeGroupDto, WSOL_EXTENDED_METADATA, WSOL_MINT, Wallet, WalletToken, WrappedI80F48, accountFlagToBN, addOracleToBanksIx, addTransactionMetadata, aprToApy, apyToApr, balanceToDto, bankConfigRawToDto, bankExtendedMetadataOverrideSchema, bankRawToDto, bigNumberToWrappedI80F48, bpsToPercentile, buildFeedIdMap, calculateApyFromInterest, calculateInterestFromApy, ceil, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, chunks, clampedNumeralFormatter, compareInstructions, composeRemainingAccounts, computeAccountValue, computeActiveEmodePairs, computeAssetUsdValue, computeBalanceUsdValue, computeBaseInterestRate, computeClaimedEmissions, computeEmodeImpacts, computeFreeCollateral, computeFreeCollateralLegacy, computeHealthAccountMetas, computeHealthCheckAccounts, computeHealthComponents, computeHealthComponentsLegacy, computeHealthComponentsWithoutBiasLegacy, computeInterestRates, computeLiabilityUsdValue, computeLoopingParams, computeMaxLeverage, computeNetApy, computeQuantity, computeQuantityUi, computeRemainingCapacity, computeTotalOutstandingEmissions, computeTvl, computeUsdValue, computeUtilizationRate, confirmTransaction, crankPythOracleIx, createLendrAccountTx, createUpdateFeedIx, decodeAccountRaw, decodeBankRaw, decodeComputeBudgetInstruction, decodeInstruction, decompileV0Transaction, dtoToBalance, dtoToBank, dtoToBankConfig, dtoToBankConfigRaw, dtoToBankRaw, dtoToEmodeSettings, dtoToEmodeSettingsRaw, dtoToGroup, dtoToHealthCache, dtoToInterestRateConfig, dtoToLendrAccount, dtoToOraclePrice, dtoToValidatorStakeGroup, dynamicNumeralFormatter, emodeSettingsRawToDto, feedIdToString, fetchBanksExtendedMetadata, fetchLendrAccountAddresses, fetchLendrAccountData, fetchMultipleBanks, fetchNativeStakeAccounts, fetchOracleData, fetchPythOracleData, fetchStakeAccount, fetchStakePoolActiveStates, fetchStakePoolMev, fetchSwbOracleData, findOracleKey, findPythPushOracleAddress, floor, freezeBankConfigIx, getAccountKeys, getActiveAccountFlags, getActiveEmodeEntryFlags, getActiveEmodeFlags, getActiveHealthCacheFlags, getActiveStaleBanks, getAssetQuantity, getAssetShares, getAssetWeight, getBalanceUsdValueWithPriceBias, getBankVaultAuthority, getBankVaultSeeds, getCalculatedPrioritizationFeeByPercentile, getComputeBudgetUnits, getConfig, getConfigPda, getHealthCacheStatusDescription, getLiabilityQuantity, getLiabilityShares, getLiabilityWeight, getMaxPrioritizationFeeByPercentile, getMeanPrioritizationFeeByPercentile, getMedianPrioritizationFeeByPercentile, getMinPrioritizationFeeByPercentile, getPrice, getPriceFeedAccountForProgram, getPriceWithConfidence, getRecentPrioritizationFeesByPercentile, getTotalAssetQuantity, getTotalLiabilityQuantity, getTreasuryPda, getTxSize, getValueInsensitive, groupToDto, groupedNumberFormatter, groupedNumberFormatterDyn, hasAccountFlag, hasEmodeEntryFlag, hasEmodeFlag, hasHealthCacheFlag, healthCacheToDto, index_d_exports$2 as index_d_exports, instructions, isOracleSetupSupported, isV0Tx, isWeightedPrice, legacyTxToV0Tx, lendrAccountToDto, makeAddPermissionlessStakedBankIx, makeBundleTipIx, makeDisableAccountTransferForAccountIx, makeDisableFlashLoanForAccountIx, makeEnableAccountTransferForAccountIx, makeEnableFlashLoanForAccountIx, makePoolAddBankIx, makePoolConfigureBankIx, makePriorityFeeIx, makePriorityFeeMicroIx, makePulseHealthIx, makeTxPriorityIx, makeUnwrapSolIx, makeVersionedTransaction, makeWrapSolIxs, median, metadataSchema, microLamportsToUi, nativeToUi, numeralFormatter, oraclePriceToDto, parseBalanceRaw, parseBankConfigRaw, parseBankRaw, parseBanksMetadataOverride, parseEmodeTag, parseErrorFromLogs, parseLendrAccountRaw, parseOperationalState, parseOraclePriceData, parseOracleSetup, parseRiskTier, parseTransactionError, percentFormatter, percentFormatterDyn, percentFormatterMod, processTransactions, replaceV0TxBlockhash, replaceV0TxInstructions, serializeBankConfigOpt, serializeOperationalState, serializeOracleSetup, serializeOracleSetupToIndex, serializeRiskTier, setTimeoutPromise, shortenAddress, simulateAccountHealthCache, simulateAccountHealthCacheWithFallback, simulateTransactions, sleep, splitInstructionsToFitTransactions, supportedOracleSetups, toBankConfigDto, toBankDto, toBigNumber, toEmodeSettingsDto, toInterestRateConfigDto, toNumber, tokenPriceFormatter, uiToMicroLamports, uiToNative, uiToNativeBigNumber, updateV0Tx, usdFormatter, usdFormatterDyn, validatorStakeGroupToDto, wrappedI80F48toBigNumber };
10149
+ //# sourceMappingURL=index-Bi6sw5qC.d.cts.map