import type { Address } from "../types.js"; /** Address registry labels that may receive ERC-20 allowances from a user. */ export declare const ERC20_ALLOWANCE_RECIPIENTS: readonly ["blue", "permit2"]; /** Address registry label that may receive an ERC-20 allowance from a user. */ export type Erc20AllowanceRecipient = (typeof ERC20_ALLOWANCE_RECIPIENTS)[number]; /** Input shape for a user's token holding and allowance state. */ export interface IHolding { user: Address; token: Address; erc20Allowances: { [key in Erc20AllowanceRecipient]: bigint; }; erc2612Nonce?: bigint; canTransfer?: boolean; balance: bigint; } /** Represents a user's balance and allowance state for one token. */ export declare class Holding implements IHolding { /** * The user of this holding. */ readonly user: Address; /** * The token in which this holding is denominated. */ readonly token: Address; /** * Whether the user is allowed to transfer this holding's balance. */ canTransfer?: boolean; /** * ERC20 allowance for this token from the user to the allowance recipient. */ readonly erc20Allowances: { [key in Erc20AllowanceRecipient]: bigint; }; /** * ERC-2612 Permit nonce of the user for this token. * `undefined` if the token does not support ERC-2612. */ erc2612Nonce?: bigint; /** * Allows to customize the setter behavior in child classes. */ protected _balance: bigint; constructor({ user, token, erc20Allowances, balance, erc2612Nonce, canTransfer, }: IHolding); /** * The balance of the user for this token. */ get balance(): bigint; set balance(value: bigint); }