import { BN } from "@coral-xyz/anchor"; import { PublicKey } from "@solana/web3.js"; export declare class MintPolicy { lockupPeriod: number; maxCap: BN; minSubscription: BN; minRedemption: BN; reserved: BN; allowlist: PublicKey[] | null; blocklist: PublicKey[] | null; static _layout: any; constructor(lockupPeriod: number, maxCap: BN, minSubscription: BN, minRedemption: BN, reserved: BN, allowlist: PublicKey[] | null, blocklist: PublicKey[] | null); static decode(buffer: Buffer): MintPolicy; encode(): Buffer; } export declare class JupiterSwapPolicy { maxSlippageBps: number; swapAllowlist: PublicKey[] | null; maxDeviationBps: number; constructor(maxSlippageBps: number, swapAllowlist: PublicKey[] | null, maxDeviationBps?: number); static decode(buffer: Buffer): JupiterSwapPolicy; encode(): Buffer; } export declare class TransferPolicy { allowlist: PublicKey[]; static _layout: any; constructor(allowlist: PublicKey[]); static decode(buffer: Buffer): TransferPolicy; encode(): Buffer; } export declare class KaminoLendingPolicy { marketsAllowlist: PublicKey[]; borrowAllowlist: PublicKey[]; static _layout: any; constructor(marketsAllowlist: PublicKey[], borrowAllowlist: PublicKey[]); static decode(buffer: Buffer): KaminoLendingPolicy; encode(): Buffer; } export declare class KaminoVaultsPolicy { vaultsAllowlist: PublicKey[]; static _layout: any; constructor(vaultsAllowlist: PublicKey[]); static decode(buffer: Buffer): KaminoVaultsPolicy; encode(): Buffer; } export declare class JupiterEarnPolicy { mintsAllowlist: PublicKey[]; static _layout: any; constructor(mintsAllowlist: PublicKey[]); static decode(buffer: Buffer): JupiterEarnPolicy; encode(): Buffer; } export declare class JupiterBorrowPolicy { vaultsAllowlist: PublicKey[]; collateralMintsAllowlist: PublicKey[]; borrowMintsAllowlist: PublicKey[]; static _layout: any; constructor(vaultsAllowlist: PublicKey[], collateralMintsAllowlist: PublicKey[], borrowMintsAllowlist: PublicKey[]); static decode(buffer: Buffer): JupiterBorrowPolicy; encode(): Buffer; } export declare class LoopscaleBorrowMarketPolicy { market: PublicKey; maxBorrowAmount: BN; maxTotalBorrowAmount: BN; maxLtvBps: number; durationIndexesAllowlist: number[]; static _layout: any; constructor(market: PublicKey, maxBorrowAmount: BN, maxTotalBorrowAmount: BN, maxLtvBps: number, durationIndexesAllowlist?: number[]); static encodedSize(policy: LoopscaleBorrowMarketPolicy): number; } export declare class LoopscaleLendingMarketPolicy { market: PublicKey; maxDepositAmount: BN; maxTotalDepositAmount: BN; minLoanApyCbps: number; maxLtvBps: number; durationIndexesAllowlist: number[]; collateralAssetAllowlist: PublicKey[]; static _layout: any; constructor(market: PublicKey, maxDepositAmount: BN, maxTotalDepositAmount: BN, minLoanApyCbps: number, maxLtvBps: number, durationIndexesAllowlist?: number[], collateralAssetAllowlist?: PublicKey[]); static encodedSize(policy: LoopscaleLendingMarketPolicy): number; } export declare class LoopscaleSellLedgerPolicy { maxDiscountBps: number; maxSlippageBps: number; static _layout: any; constructor(maxDiscountBps?: number, maxSlippageBps?: number); } export declare class LoopscaleBorrowPolicy { collateralAllowlist: PublicKey[]; principalAllowlist: PublicKey[]; marketPolicies: LoopscaleBorrowMarketPolicy[]; static _layout: any; constructor(collateralAllowlist?: PublicKey[], principalAllowlist?: PublicKey[], marketPolicies?: LoopscaleBorrowMarketPolicy[]); static decode(buffer: Buffer): LoopscaleBorrowPolicy; encode(): Buffer; } export declare class LoopscaleVaultPolicy { vaultAllowlist: PublicKey[]; static _layout: any; constructor(vaultAllowlist?: PublicKey[]); static decode(buffer: Buffer): LoopscaleVaultPolicy; encode(): Buffer; } export declare class LoopscaleLendingPolicy { principalAllowlist: PublicKey[]; collateralAllowlist: PublicKey[]; marketPolicies: LoopscaleLendingMarketPolicy[]; sellLedgerPolicy: LoopscaleSellLedgerPolicy; static _layout: any; constructor(principalAllowlist?: PublicKey[], collateralAllowlist?: PublicKey[], marketPolicies?: LoopscaleLendingMarketPolicy[], sellLedgerPolicy?: LoopscaleSellLedgerPolicy); static decode(buffer: Buffer): LoopscaleLendingPolicy; encode(): Buffer; } export declare class PhoenixPolicy { marketsAllowlist: PublicKey[]; allowedOrderTypes: number[]; requireReduceOnlyOrders: boolean; maxPriceDeviationBps: number; maxReferencePriceAgeSecs: number; constructor(marketsAllowlist: PublicKey[], allowedOrderTypes: number[], requireReduceOnlyOrders: boolean, maxPriceDeviationBps: number, maxReferencePriceAgeSecs?: number); static decode(buffer: Buffer): PhoenixPolicy; encode(): Buffer; } export declare class WhirlpoolsPolicy { whirlpoolsAllowlist: PublicKey[]; tokenMintsAllowlist: PublicKey[]; maxDeviationBps: number; static _layout: any; constructor(whirlpoolsAllowlist: PublicKey[], tokenMintsAllowlist: PublicKey[], maxDeviationBps?: number); static decode(buffer: Buffer): WhirlpoolsPolicy; encode(): Buffer; } export declare class CctpPolicy { allowedDestinations: { domain: number; address: PublicKey; }[]; static _layout: any; constructor(allowedDestinations: { domain: number; address: PublicKey; }[]); static decode(buffer: Buffer): CctpPolicy; encode(): Buffer; get domainToAddressesMap(): Map; } export declare enum RouteManagementMode { UnmanagedOnly = 0, ManagedOnly = 1, Either = 2 } export type LayerzeroOftRoute = { sourceMint: PublicKey; destinationChain: number; destinationRecipient: PublicKey; providerProgram: PublicKey; managementMode: RouteManagementMode; minAmount: BN; maxAmount: BN; }; export declare class LayerzeroOftPolicy { routes: LayerzeroOftRoute[]; static _layout: any; constructor(routes: LayerzeroOftRoute[]); static decode(buffer: Buffer, _staging?: boolean): LayerzeroOftPolicy; encode(): Buffer; } export declare enum PeriodType { Day = 0, Week = 1, Month = 2 } export interface AssetRateLimit { mint: PublicKey; periodType: number; amount: BN; } export interface DelegateRateLimit { delegate: PublicKey; limits: AssetRateLimit[]; } export declare class TransferRateLimitPolicy { vaultDefaults: AssetRateLimit[]; delegateOverrides: DelegateRateLimit[]; static _layout: any; constructor(vaultDefaults: AssetRateLimit[], delegateOverrides: DelegateRateLimit[]); static decode(buffer: Buffer): TransferRateLimitPolicy; encode(): Buffer; /** * Derive the TransferTracker PDA address for a given vault state, signer, and mint. */ static getTransferTrackerPda(glamState: PublicKey, signer: PublicKey, mint: PublicKey, programId: PublicKey): [PublicKey, number]; }