const instruction = await account.buildComposable({
type: "default",
data: {
chainId: 8453,
to: lendingProtocol,
abi: lendingAbi,
functionName: "borrow",
args: [amount],
conditions: [
// Condition 1: Sufficient collateral
createCondition({
targetContract: collateralToken,
functionAbi: erc20Abi,
functionName: "balanceOf",
args: [userAddress],
value: minCollateral,
type: ConditionType.GTE
}),
// Condition 2: Healthy position
createCondition({
targetContract: lendingProtocol,
functionAbi: lendingAbi,
functionName: "getHealthFactor",
args: [userAddress],
value: parseUnits("1.5", 18),
type: ConditionType.GTE
}),
// Condition 3: Protocol not paused
createCondition({
targetContract: lendingProtocol,
functionAbi: lendingAbi,
functionName: "paused",
args: [],
value: 0n,
type: ConditionType.EQ
})
]
}
});