/**
 * Position Delegate Utilities
 *
 * Helpers for registering an off-chain authorization delegate on a position.
 * The delegate lets a Safe-as-borrower delegate LIT Action auth signing to a
 * hot agent EOA without making that EOA a Safe owner. The delegate is read by
 * the LIT Action authorization verifier as a third recovery arm after the
 * EOA `position.borrower` check and the EIP-1271 smart-account fallback.
 *
 * State lives on `PositionDelegateRegistry` (a standalone contract), not on
 * PositionManager — PositionManager is at the 24 KiB Spurious Dragon limit
 * and cannot carry the additional storage + setter without going over.
 */
import { type Signer, type Provider, type TransactionResponse } from "ethers";
/**
 * Register (or revoke) the off-chain authorization delegate for a position.
 *
 * Must be called by the position's current `borrower` — for Safe-as-borrower
 * setups, that means the call must go through `safe.execTransaction(...)` or
 * `agentModule.execute(...)` so that `msg.sender` at the registry equals the
 * Safe. Pass `ethers.constants.AddressZero` as `delegate` to revoke.
 *
 * @param positionId Position identifier (bytes32).
 * @param delegate New delegate EOA, or zero address to clear.
 * @param signer Ethers signer that will be `msg.sender` at the registry.
 * @param registryAddress Deployed `PositionDelegateRegistry` address for the chain.
 * @returns The submitted transaction response.
 */
export declare function setPositionDelegate(positionId: string, delegate: string, signer: Signer, registryAddress: string): Promise<TransactionResponse>;
/**
 * Read the currently registered delegate for a position.
 *
 * Returns the zero address when no delegate has been registered. Pure view;
 * any provider works (signer not required).
 *
 * @param positionId Position identifier (bytes32).
 * @param provider Ethers provider or signer.
 * @param registryAddress Deployed `PositionDelegateRegistry` address.
 * @returns The delegate EOA, or zero address if none.
 */
export declare function getPositionDelegate(positionId: string, provider: Provider | Signer, registryAddress: string): Promise<string>;
