import { Address } from 'viem'; import { LoanV4, LoanV5, LoanV6 } from '../blockchain'; import * as model from '../model'; import { Optional } from '../utils/types'; export declare const BPS = 10000n; export declare const renegotiationToMslRenegotiation: (renegotiation: model.RenegotiationOffer, loanId: bigint) => { loanId: bigint; strictImprovement: boolean; lender: `0x${string}`; signer: `0x${string}`; fee: bigint; trancheIndex: bigint[]; targetPrincipal: bigint[]; duration: import("../generated/graphql").Scalars["BigInt"]; principalAmount: import("../generated/graphql").Scalars["BigInt"]; aprBps: import("../generated/graphql").Scalars["BigInt"]; renegotiationId: import("../generated/graphql").Scalars["BigInt"]; expirationTime: import("../generated/graphql").Scalars["BigInt"]; requiresLiquidation?: import("../generated/graphql").InputMaybe | undefined; lenderAddress: import("../generated/graphql").Scalars["Address"]; signerAddress?: import("../generated/graphql").InputMaybe | undefined; offerHash: import("../generated/graphql").Scalars["Hash"]; feeAmount: import("../generated/graphql").Scalars["BigInt"]; isAddNewTranche?: import("../generated/graphql").InputMaybe | undefined; private?: import("../generated/graphql").Scalars["Boolean"] | undefined; signature: import("../blockchain").Signature; }; export type LoanToMslLoanType = Optional | Optional | Optional; export declare const loanToMslLoan: (loan: LoanToMslLoanType) => { startTime: bigint; contractStartTime: bigint; duration: bigint; nftCollateralAddress: `0x${string}`; source: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: unknown; borrower: `0x${string}`; nftCollateralTokenId: bigint; principalAddress: `0x${string}`; principalAmount: bigint; contractAddress: Address; } | { startTime: bigint; contractStartTime: bigint; duration: bigint; nftCollateralAddress: `0x${string}`; source: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: unknown; borrower: `0x${string}`; nftCollateralTokenId: bigint; principalAddress: `0x${string}`; principalAmount: bigint; contractAddress: Address; } | { startTime: bigint; contractStartTime: bigint; duration: bigint; nftCollateralAddress: `0x${string}`; source: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; tranche: readonly { loanId: bigint; floor: bigint; principalAmount: bigint; lender: `0x${string}`; accruedInterest: bigint; startTime: bigint; aprBps: bigint; }[]; protocolFee: bigint; lenderRefinanceDisabled: unknown; borrower: `0x${string}`; nftCollateralTokenId: bigint; principalAddress: `0x${string}`; principalAmount: bigint; contractAddress: Address; }; export declare const getMslLoanId: (loan: LoanToMslLoanType) => bigint; export declare const getRemainingSeconds: (loan: Pick) => number; export declare const isLoanVersion: (address: Address, chainId: number) => { isV1: boolean; isV2: boolean; isV3: boolean; isV3_1: boolean; isV3_2: boolean; }; interface TrancheOwed { principalAmount: bigint; accruedInterest: bigint; aprBps: bigint; startTime: bigint; } export declare const getTotalOwed: (loan: { tranche: readonly TrancheOwed[]; } | { source: readonly TrancheOwed[]; }, bufferSeconds: bigint) => bigint; /** Computes total repayment at a block timestamp, rounding interest up for each tranche. */ export declare const getTotalOwedAt: (loan: { tranche: readonly TrancheOwed[]; } | { source: readonly TrancheOwed[]; }, timestamp: bigint) => bigint; export {};