import { type Abi } from "viem"; import { type EvmAddress } from "../evm.js"; import { jbMultiTerminalAbi, jbPermissionsAbi, revLoansAbi } from "./abis.js"; import type { ContractWriteIntent, EncodedWriteIntent, RevnetBorrowContext, RevnetBorrowPermissionMode, RevnetBorrowPlan, RevnetLoanSource, RevnetReadClient } from "./types.js"; type RevnetPayArgs = readonly [ projectId: bigint, token: EvmAddress, amount: bigint, beneficiary: EvmAddress, minReturnedTokens: bigint, memo: string, metadata: `0x${string}` ]; type RevnetCashOutArgs = readonly [ holder: EvmAddress, projectId: bigint, cashOutCount: bigint, tokenToReclaim: EvmAddress, minTokensReclaimed: bigint, beneficiary: EvmAddress, metadata: `0x${string}` ]; type RevnetGrantLoanPermissionArgs = readonly [ account: EvmAddress, { operator: EvmAddress; projectId: bigint; permissionIds: readonly number[]; } ]; type RevnetBorrowArgs = readonly [ projectId: bigint, source: RevnetLoanSource, minBorrowAmount: bigint, collateralCount: bigint, beneficiary: EvmAddress, prepaidFeePercent: bigint ]; export type RevnetPayIntent = ContractWriteIntent; export type RevnetCashOutIntent = ContractWriteIntent; export type RevnetGrantLoanPermissionIntent = ContractWriteIntent; export type RevnetBorrowIntent = ContractWriteIntent; export type RevnetWriteIntent = RevnetPayIntent | RevnetCashOutIntent | RevnetGrantLoanPermissionIntent | RevnetBorrowIntent; export declare function buildRevnetPayIntent(params: { terminalAddress: EvmAddress; projectId?: bigint; amount?: bigint; paymentAmount?: bigint; token?: EvmAddress; paymentToken?: EvmAddress; beneficiary: EvmAddress; minReturnedTokens?: bigint; memo?: string; metadata?: `0x${string}`; }): RevnetPayIntent; export declare function buildRevnetCashOutIntent(params: { terminalAddress: EvmAddress; holder: EvmAddress; projectId?: bigint; cashOutCount: bigint; tokenToReclaim: EvmAddress; minTokensReclaimed?: bigint; beneficiary?: EvmAddress; metadata?: `0x${string}`; }): RevnetCashOutIntent; export declare function buildRevnetGrantLoanPermissionIntent(params: { permissionsAddress: EvmAddress; account: EvmAddress; operator: EvmAddress; projectId?: bigint; permissionIds?: readonly number[]; }): RevnetGrantLoanPermissionIntent; export declare function buildRevnetBorrowIntent(params: { revLoansAddress: EvmAddress; projectId?: bigint; source: RevnetLoanSource; collateralCount: bigint; beneficiary: EvmAddress; prepaidFeePercent: bigint | number; minBorrowAmount?: bigint; }): RevnetBorrowIntent; export declare function buildRevnetBorrowPlan(params: { account: EvmAddress; projectId?: bigint; loanSource?: RevnetLoanSource; source?: RevnetLoanSource; collateralCount: bigint; prepaidFeePercent: bigint | number; needsPermission: boolean; permissionsAddress: EvmAddress; revLoansAddress: EvmAddress; beneficiary?: EvmAddress; minBorrowAmount?: bigint; borrowableAmount?: bigint | null; borrowableContext?: RevnetBorrowContext["borrowableContext"]; revPrepaidFeePercent?: bigint | number; maxPrepaidFeePercent?: bigint | number; permissionMode?: RevnetBorrowPermissionMode; }): RevnetBorrowPlan; export declare function buildRevnetBorrowPlanFromContext(context: RevnetBorrowContext, params: { prepaidFeePercent: bigint | number; beneficiary?: EvmAddress; minBorrowAmount?: bigint; permissionMode?: RevnetBorrowPermissionMode; }): RevnetBorrowPlan; export declare function buildRevnetBorrowPlanFromClient(client: RevnetReadClient, params: { projectId?: bigint; account: EvmAddress; collateralCount: bigint; prepaidFeePercent: bigint | number; beneficiary?: EvmAddress; minBorrowAmount?: bigint; permissionMode?: RevnetBorrowPermissionMode; preferredBaseToken?: string; preferredLoanToken?: string; }): Promise>; export declare function encodeWriteIntent(intent: ContractWriteIntent): EncodedWriteIntent; export {};