import { type MarketInput } from "@morpho-org/midnight-sdk"; import { type Address } from "viem"; import { type Metadata, type MidnightRepayWithdrawCollateralAction, type Transaction } from "../../types/index.js"; /** Parameters for encoding a Midnight repay and/or collateral withdrawal bundle. */ export interface MidnightRepayWithdrawCollateralParams { readonly chainId: number; readonly market: MarketInput; readonly repayAssets: bigint; readonly withdrawCollateralAssets: bigint; readonly onBehalf: Address; readonly collateralIndex?: bigint; /** Bundle execution deadline timestamp. Pass `maxUint256` explicitly for no expiry. */ readonly deadline: bigint; readonly metadata?: Metadata; } /** * Encodes a Midnight bundle that repays debt, withdraws collateral, or both. * * Prefer `client.morpho.midnight(chainId).repayWithdrawCollateral(...)` in app * flows so loan-token approval and Midnight authorization requirements are * resolved first. Use this low-level builder only when those requirements and * collateral-index checks are already handled by the caller. * * @param params.chainId - Chain id used to resolve `MidnightBundles`. * @param params.market - Midnight market whose position is updated. * @param params.repayAssets - Loan assets repaid; may be zero when only withdrawing collateral. * @param params.withdrawCollateralAssets - Collateral assets withdrawn; may be zero when only repaying. * @param params.onBehalf - Position owner. * @param params.collateralIndex - Optional collateral index for withdrawal; defaults to `0n`. * @param params.deadline - Bundle execution deadline timestamp; pass `maxUint256` explicitly for no expiry. * @param params.metadata - Optional analytics metadata appended to calldata. * @returns A deep-frozen `Transaction` targeting `MidnightBundles`. * @throws {NegativeInputError} when any amount, collateral index, or deadline is negative. * @throws {NonPositiveInputError} when both repay and withdrawal amounts are zero. * @throws {ChainIdMismatchError} when the market targets another chain. * @throws {MidnightMarketAddressMismatchError} when the market targets another Midnight deployment. * @throws {UnknownCollateralIndexError} when a positive withdrawal targets an unconfigured collateral index. * @example * ```ts * import { maxUint256 } from "viem"; * import { midnightRepayWithdrawCollateral } from "@morpho-org/morpho-sdk"; * * const tx = midnightRepayWithdrawCollateral({ * chainId: 8453, * market: marketData.params, * repayAssets: 1_000_000n, * withdrawCollateralAssets: 0n, * onBehalf: user, * deadline: maxUint256, * }); * ``` */ export declare const midnightRepayWithdrawCollateral: (params: MidnightRepayWithdrawCollateralParams) => Readonly>;